¿Dónde guardan sus contraseñas los sistemas operativos (por ejemplo, Windows)? ¿Los almacenan en texto plano? ¿Utilizan módulos de hardware como TPM? ¿Estos métodos generalmente se consideran seguros?
Windows almacena sus contraseñas en lo que se llama la base de datos Security Accounts Manager o la base de datos SAM. Este es un archivo que existe en el registro y el acceso a él está estrechamente controlado mientras se ejecuta Windows; sin embargo, los administradores locales que pueden ejecutar procesos como NT AUTHORITY\SYSTEM
pueden acceder a él - vea dónde NT almacena la base de datos SAM ? .
En cuanto a los hashes utilizados, son LM o NTLM hash. Se han hecho varios intentos para romper NTLM; sin embargo, se sabe que LM no funciona, por lo que Vista no lo usa de manera predeterminada, aunque sí lo hacen las versiones anteriores de Windows. Microsoft también aparentemente cifra la base de datos para que sea más difícil de analizar fuera de línea.
La clave para la seguridad de las contraseñas en los sistemas operativos es reducir la posibilidad de intercepción, por lo que también vale la pena estudiar quién y qué puede acceder a esto. En términos de Windows, LSASS o Servicio de subsistema de autoridad de seguridad local es responsable de verificar y crear las credenciales de usuario. Por lo tanto, cualquier intento de enganchar o reemplazar LSASS es un intento de obtener la entrada de contraseña.
En términos de la pantalla de inicio de sesión, solía ser posible rediseñarla utilizando GINA DLLS - muchas personas hicieron esto para admitir la autenticación de huellas digitales, por ejemplo. Sin embargo, las GINA personalizadas son, entre muchas cosas, bastante difíciles de escribir y plantean un posible riesgo de seguridad, por lo que Microsoft reconstruye eso en Vista: consulte marco del proveedor de credenciales que elimina el nivel de código personalizado 1 de los objetos de la GUI, lo cual es mucho más seguro (Vista sí contiene mejoras, para la crítica de todas las personas).
Ahora, Linux. Probablemente sea mejor comenzar con la arquitectura de autenticación de Linux: la mayoría de las distribuciones modernas de Linux utilizan módulos de autenticación conectables que pueden configurarse para varias bases de datos, remotas, locales, etc. Pueden configurarse para ser opcionales u obligatorias, o "una de las muchas opciones " Si te gusta. El módulo pam predeterminado valida a los usuarios cuyos metadatos existen en /etc/passwd
(para que cualquier programa pueda consultarlos de solo lectura, por ejemplo, para encontrar el directorio de inicio de los usuarios) y las contraseñas se almacenan por separado en /etc/shadow
. Directamente desde wikipedia ( contraseña de sombra ):
/ etc / shadow usualmente contiene la siguiente información de usuario:
Nombre de inicio de sesión del usuario
sal y contraseña con hash O un valor de excepción de estado, por ejemplo:
$id$salt$encrypted
, donde$id
es el algoritmo de hashing utilizado (en linux,$1$
significa MD5,$2$
es Blowfish,$5$
es SHA-256 y$6$
es SHA-512, consulte la página de manual de crypt (3) ."NP" o "!" o nulo - Sin contraseña, la cuenta no tiene contraseña.
- "LK" o "*": la cuenta está bloqueada, el usuario no podrá iniciar sesión "!!" - la contraseña ha caducado
- Días desde la época del último cambio de contraseña
- Días hasta que se permita el cambio
- días antes del cambio requerido
- Advertencia de días de caducidad
- Días antes de la cuenta inactiva
- Días desde la época en que caduca la cuenta
- Reservado
Entonces, como puede ver, lo que puede usar para su algoritmo de hash en Linux es completamente opcional. La seguridad de la base de datos /etc/shadow
depende completamente de si puede convertirse en root, ya que al usuario root se le otorga acceso.
Ambos sistemas operativos esencialmente procesan contraseñas de hash usando una variedad de técnicas (crypt () en el modo de DES predeterminado, creo que fue uno de los primeros en aplicar repetidamente un hash para hacer que la comprobación de hashes sea más lenta): esto es fundamental, ya que las contraseñas cifradas podrían ser Trivialmente invertido al encontrar la clave de cifrado. Claramente, en ambos casos, la seguridad de la entrada de las contraseñas depende de su capacidad para penetrar en áreas altamente privilegiadas; a partir de entonces, las contraseñas se incluyen con hash y se deben descifrar mediante técnicas de reversión de hash, como las tablas de arco iris, cuyo diseño de hash está diseñado para contrarrestar.
Lea otras preguntas en las etiquetas operating-systems