“Conocimiento Problema>contraseñas

¿Qué es Algprithm que Linux usó para decodificar la contraseña?

2011/3/20
Linux no "decodifica" las contraseñas. Utiliza un proceso de hashing y Salting para almacenar contraseñas de forma segura. Aquí hay un desglose del algoritmo y los conceptos relacionados:

1. El objetivo:almacenamiento seguro de contraseña

El principio fundamental es que la contraseña de texto sin formato real está * nunca * almacenada en ningún lado. Si la base de datos que contenía contraseñas se veía comprometida, los atacantes tendrían acceso instantáneamente a todas las cuentas de los usuarios. El hash y el salto evitan esto.

2. Hashing:

* Función unidireccional: Hashing es una operación matemática que transforma la contraseña en una cadena de caracteres de tamaño fijo llamado "hash". Es una función * unidireccional *, lo que significa que es computacionalmente infalible (extremadamente difícil y lento) para revertir el proceso y derivar la contraseña original del hash.

* Resistencia a la colisión: Idealmente, diferentes contraseñas deberían producir diferentes hash. Un buen algoritmo de hashing minimiza la posibilidad de una "colisión", donde dos contraseñas diferentes generan el mismo hash.

* Algoritmos de hashes comunes en Linux:

* bcrypt: A menudo se considera la opción más fuerte y preferida. Incluye una sal incorporada y está diseñado para ser computacionalmente costoso, lo que la hace resistente a los ataques de fuerza bruta.

* argon2: Un algoritmo de hash de contraseña moderno que también está diseñado para ser computacionalmente costoso y difícil de memoria, aumentando aún más la resistencia a los ataques. Se está volviendo más popular.

* Scrypt: Otra función de derivación clave diseñada para ser resistente a los ataques de fuerza bruta.

* sha-512: (Menos común * ahora * para el hash de contraseña directa, pero a menudo se usa como parte de una función de derivación de clave más grande). Históricamente fue utilizado. A veces se usa a veces como parte de las configuraciones de PAM.

* MD5, SHA-1, SHA-256: ¡No uses estos! Estos se consideran anticuados y vulnerables para el hash de contraseña directa. Están demasiado rápidos y se agrietan fácilmente con hardware moderno y mesas de arco iris precomputadas. Se pueden encontrar en sistemas más antiguos, pero deben actualizarse.

3. Salting:

* Agregar aleatoriedad: Una "sal" es una cadena aleatoria de caracteres que es único para cada usuario. La sal se concatena (se agrega a) la contraseña * antes * está hash.

* Preveniendo los ataques de mesa del arco iris: Las tablas de arco iris son tablas de hashes precomputadas para contraseñas comunes. Sin sales, un atacante podría simplemente buscar el hash en una tabla de arco iris para encontrar la contraseña correspondiente. Salting hace que las tablas de arcoiris sean inútiles porque cada contraseña tiene una sal única, lo que resulta en un hash único incluso para contraseñas comunes.

* La sal se almacena con el hash: De manera crucial, la sal en sí se almacena junto con la contraseña hash en el archivo `/etc/shadow` (o en alguna base de datos en sistemas modernos). Esta es * no * una vulnerabilidad de seguridad; La sal es * requerida * para verificar una contraseña.

* ¿Por qué almacenar la sal? Para verificar la contraseña de un usuario, el sistema debe:

1. Recupere la sal almacenada para ese usuario.

2. Concatene la contraseña ingresada con la sal.

3. Hash el resultado utilizando el algoritmo de hash * mismo * utilizado originalmente.

4. Compare el hash recién generado con el hash almacenado. Si coinciden, la contraseña es correcta.

4. El archivo `/etc/shadow (enfoque tradicional)

Tradicionalmente, las contraseñas de usuario y su información asociada se almacenan en el archivo `/etc/shadow`. (Nota:Ver o modificar directamente este archivo generalmente requiere privilegios raíz).

* Permisos: El archivo `/etc/shadow` típicamente solo es legible por el usuario` root`, asegurando que los usuarios regulares no puedan ver las contraseñas hash de otros usuarios.

* Estructura: Cada línea en el archivo `/etc/shadow` representa una cuenta de usuario y tiene el siguiente formato (simplificado):

`` `` ``

Nombre de usuario:Hashed_Password:Last_Change:min_days:max_days:warn_days:inactive_days:expire_date:flags

`` `` ``

* El campo `hashed_password`: Aquí es donde se almacena la contraseña de sal y hash. El formato de este campo generalmente incluye un identificador para el algoritmo de hash utilizado, la sal y el hash real. Por ejemplo:

* `$ 6 $ some_random_salt $ averylonghashedpasswordstring` (esto usa SHA-512)

* `$ 2b $ 10 $ otro_random_salt $ niedLongerhashedPasswordString` (esto usa bcrypt)

* `$ 6` indica sha-512

* `$ 2b` indica bcrypt

*El número (por ejemplo, `10` en BCrypt) indica el *factor de costo *o *factor de trabajo *. Un factor de costo más alto hace que el proceso de hashing sea más costoso computacionalmente, aumentando el tiempo que lleva descifrar la contraseña.

5. Sistemas modernos y PAM (módulos de autenticación conectables)

* bases de datos: Los sistemas modernos a menudo usan bases de datos (por ejemplo, LDAP, Active Directory) para almacenar información de la cuenta de usuario, incluidas las contraseñas de hash.

* Pam: PAM es un marco flexible que permite a los administradores del sistema configurar diferentes mecanismos de autenticación. Se utiliza para manejar el proceso de autenticación, incluidas las contraseñas de hash, verificar contraseñas y realizar otras tareas relacionadas con la seguridad. Los archivos de configuración de PAM (por ejemplo, en `/etc/pam.d/`) determinan qué módulos de autenticación se utilizan y cómo están configurados.

Escenario de ejemplo:Verificación de contraseña de usuario

1. El usuario entra en contraseña: El usuario escribe su contraseña en un mensaje o aplicación de inicio de sesión.

2. El sistema recupera sal: El sistema busca la cuenta del usuario y recupera la sal almacenada de `/etc/shadow` (o la base de datos apropiada).

3. Concatenación y hashing: El sistema concatena la contraseña ingresada con la sal recuperada. Luego, utiliza el algoritmo de hash indicado en la entrada `/etc/shadow` (por ejemplo, sha-512 o bcrypt) para hash la contraseña y la sal combinada.

4. Comparación: El hash recién generado se compara con el hash almacenado en `/etc/shadow`.

5. ESCUCHA DE AUTENTACIÓN/FALLA: Si los dos hashes coinciden, la autenticación es exitosa. De lo contrario, la autenticación falla.

Consideraciones importantes:

* Complejidad de contraseña: Anime a los usuarios a elegir contraseñas seguras que sean largas, complejas y difíciles de adivinar.

* Cambios de contraseña regular: Requerir periódicamente los usuarios para cambiar sus contraseñas pueden ayudar a mitigar el riesgo de compromiso de contraseña.

* Autenticación multifactor (MFA): El uso de MFA agrega una capa adicional de seguridad al exigir a los usuarios que proporcionen múltiples formas de identificación, como una contraseña y un código de su teléfono.

* Auditorías de seguridad: Auditar regularmente a la configuración de seguridad de su sistema puede ayudar a identificar y abordar las posibles vulnerabilidades.

* Mantenerse actualizado: Mantenga su sistema operativo y software actualizado con los últimos parches de seguridad.

En resumen: Linux no "decodifica" las contraseñas. Utiliza una fuerte combinación de sales y hashing para almacenar de forma segura las representaciones de contraseña. Los algoritmos `bcrypt` y` argon2` generalmente se prefieren por su resistencia a los ataques de fuerza bruta. Configurar correctamente PAM y mantener su sistema seguro es crucial para proteger las cuentas de los usuarios.

contraseñas
¿Cómo se elimina las cuentas de computadora antiguas si recuerdas la contraseña?
Si sospecho que mi teléfono Android ha sido pirateado puede cambiar la contraseña.
Cómo eliminar Qustodio sin contraseña de Android
Cómo forzar a Google Chrome a guardar una contraseña
¿Por qué Craigslist me pide que restablezca mi contraseña?
¿Cómo se desarman un sistema de seguridad cuando olvida la contraseña?
Cómo quitar la contraseña de administrador en Windows Vista
¿Qué dos contraseñas diferentes se pueden configurar para bloquear una computadora del acceso no autorizado?
Conocimiento de la computadora © http://www.ordenador.online