¿Cuándo dejó de almacenar Unix las contraseñas en texto claro?

37

¿Cuándo se alejó Unix de almacenar contraseñas de texto claro en passwd? Además, ¿cuándo se introdujo el archivo shadow?

ZDOSA
fuente
¿Buscaste algo?
Ken Sharp

Respuestas:

62

Para conocer el historial inicial de almacenamiento de contraseñas de Unix, lea Robert Morris y Ken Thompson Password Security: A Case History . Explican por qué y qué tan temprano los sistemas Unix adquirieron la mayoría de las características que todavía se consideran hoy en día como las características importantes del almacenamiento de contraseñas (pero mejor).

  • Los primeros sistemas Unix almacenaron contraseñas en texto sin formato. Unix Third Edition introdujo la cryptfunción que codifica la contraseña. Se describe como "cifrado" en lugar de "hash" porque la terminología criptográfica moderna aún no se había establecido y utilizaba un algoritmo de cifrado, aunque de manera poco convencional. En lugar de cifrar la contraseña con una clave, que sería trivial deshacer cuando tenga la clave (que debería almacenarse en el sistema), utilizan la contraseña como clave.
  • Cuando Unix cambió de un cifrado anterior al DES moderno en ese momento , también se hizo más lento iterando DES varias veces. No sé exactamente cuándo sucedió eso: ¿V6? V7?
  • El simple hecho de cambiar la contraseña es vulnerable a los ataques de múltiples objetivos: hash todas las contraseñas más comunes de una vez por todas, y busca una coincidencia en la tabla de contraseñas. Incluir una sal en el mecanismo de hash, donde cada cuenta tiene una sal única, derrota esta precomputación. Unix adquirió una sal en la Séptima Edición en 1979 .
  • Unix también adquirió reglas de complejidad de contraseña, como una longitud mínima en la década de 1970.

Originalmente, el hash de contraseña estaba en el archivo de lectura pública /etc/passwd. Poner el hash en un archivo separado al /etc/shadowque solo el sistema (y el administrador del sistema) podían acceder fue una de las muchas innovaciones que surgieron de Sun, que data de alrededor de SunOS 4 a mediados de la década de 1980. Se extendió gradualmente a otras variantes de Unix (en parte a través de la suite de sombra de terceros cuyo descendiente todavía se usa en Linux hoy en día) y no estuvo disponible en todas partes hasta mediados de la década de 1990 más o menos.

Con los años, ha habido mejoras en el algoritmo de hash. El mayor salto fue el algoritmo basado en MD5 de Poul-Henning Kamp en 1994, que reemplazó el algoritmo basado en DES por uno con un mejor diseño. Eliminó la limitación a 8 caracteres de contraseña y 2 caracteres de sal y aumentó la lentitud. Vea IEEE's Developing with open source software , enero-febrero. 2004, p. 7–8 . Los algoritmos basados ​​en SHA-2 que son el estándar de facto hoy en día se basan en el mismo principio, pero con un diseño interno ligeramente mejor y, lo más importante, un factor de lentitud configurable.

Gilles 'SO- deja de ser malvado'
fuente
Por cierto, la sal es lo que se está cifrando.
Joshua
Para aquellos que no tienen un visor PostScript, encontré una copia en pdf del documento de Morris & Thompson aquí
grahamj42
8

Todavía no tengo una fuente primaria, pero de acuerdo con esta publicación TrustedSec (énfasis mío):

Los primeros sistemas almacenaban las contraseñas en texto sin formato, pero finalmente se reemplazó por formas más seguras de almacenamiento de contraseñas. Robert Morris desarrolló la cripta basada en la máquina de cifrado m-209 y apareció en la Versión 3 de Unix , aunque Crypt no se usó para almacenar contraseñas hasta la 6ta Edición de Unix (1974).

Según múltiples fuentes, la versión 3 de UNIX se lanzó en febrero de 1973 .

Del documento original de Thompson y Morris , podemos confirmar que el almacenamiento de texto sin formato se utilizó originalmente:

El sistema UNIX se implementó primero con un archivo de contraseña que contenía las contraseñas reales de todos los usuarios y, por esa razón, el archivo de la contraseña tenía que estar muy protegido contra la lectura o la escritura.

/ etc / shadow apareció en varias ramas de UNIX como se señaló en otras respuestas.

Royce Williams
fuente
6

De acuerdo con la sección Historia en la página passwd de la wikipedia ,

El sombreado de contraseñas apareció por primera vez en sistemas Unix con el desarrollo de SunOS a mediados de la década de 1980, [10] System V Release 3.2 en 1988 y BSD4.3 Reno en 1990. Pero, los proveedores que habían realizado puertos de versiones anteriores de UNIX no siempre incluían las nuevas funciones de ocultación de contraseñas en sus versiones, dejando a los usuarios de esos sistemas expuestos a ataques de archivos de contraseñas

Los administradores del sistema también pueden organizar el almacenamiento de contraseñas en bases de datos distribuidas como NIS y LDAP, en lugar de en archivos en cada sistema conectado. En el caso de NIS, el mecanismo de contraseña oculta a menudo todavía se usa en los servidores NIS; En otros mecanismos distribuidos, el problema de acceso a los diversos componentes de autenticación de usuarios es manejado por los mecanismos de seguridad del repositorio de datos subyacente.

En 1987, la autora de Shadow Password Suite original, Julie Haugh, experimentó un robo informático y escribió el lanzamiento inicial de Shadow Suite que contenía los comandos login, passwd y su. El lanzamiento original, escrito para el sistema operativo SCO Xenix, se transfirió rápidamente a otras plataformas. Shadow Suite fue portado a Linux en 1992 un año después del anuncio original del proyecto Linux, y se incluyó en muchas distribuciones iniciales, y continúa incluyéndose en muchas distribuciones actuales de Linux.

VGe0rge
fuente
55
Almacenamiento de contraseñas no ocultas! = Almacenamiento de texto plano sin mostrar
rackandboneman