¿La versión glibc2 de la función crypt todavía usa DES para métodos de hashing alternativos?

2

Estoy tratando de entender cómo las distribuciones Linux típicas generan el campo de contraseña para las entradas en /etc/shadow . No puedo averiguar qué algoritmo de cifrado se está utilizando para producir la cadena de contraseña cifrada.

Por ejemplo:

$1$CQoPk7Zh$370xDLmeGD9m4aF/ciIlC.

Por lo que entiendo, el primer valor 1 significa que se utilizó un método de hashing MD5 con el segundo valor CQoPk7Zh como la sal. Sin embargo, ¿cuál fue el algoritmo de cifrado utilizado para producir la cadena de contraseña cifrada final 370xDLmeGD9m4aF/ciIlC. ?

La página de manual de Linux para crypt (3) tiene una nota para glibc2 :

  

Si salt es una cadena de caracteres que comienza con los caracteres " $ id $ " seguido de una cadena que termina con "$":

     

$id$salt$encrypted

     

luego, en lugar de utilizar la máquina DES, id identifica el método de cifrado utilizado y esto determina cómo   Se interpreta el resto de la cadena de contraseña.

Creo que la semántica me está desechando: el manual dice id especifica el método de cifrado , pero está especificando el método de hashing .

Creo que el proceso está funcionando así:

password ==> MD5(password+salt) ==> hash ==> encryption-algorithm(hash) ==> encrypted-pass

Entonces, ¿cómo puedo determinar el algoritmo de cifrado? Específicamente, ¿qué algoritmo de cifrado se usa cuando id es 6 ( SHA512 )?

    
pregunta Vilhelm Gray 16.05.2013 - 16:12
fuente

2 respuestas

0

No hay involucrado ningún algoritmo de cifrado. El uso de "cifrado" es un nombre inapropiado, debido a que el algoritmo de hashing de contraseña histórico se basa en DES, que se utiliza principalmente para el cifrado y se conoce como tal. id es de hecho el método de hash, y toda la documentación debe usar correctamente la palabra "hash" en lugar de "cifrar".

Para id = 1, el algoritmo no es MD5 (contraseña + sal), sino una variación en MD5 1000 (sal + contraseña). La cuenta fija de iteraciones (grande en el momento en que se introdujo, pero ahora pequeña) es la razón principal para desaprobar este esquema (también, la variación personalizada).

Con id = 6, se usa SHA-512, de nuevo con muchas iteraciones. Ulrich Drepper, mantenedor de GNU libc, ha escrito una descripción de SHA-2-crypt con una descripción precisa y código de muestra.

Creo que todas las variantes comunes de crypt codifican el hash en una variante base64 (no "la" base 64, sino un conjunto ligeramente diferente de 64 caracteres imprimibles).

    
respondido por el Gilles 16.05.2013 - 16:52
fuente
1

Creo que realmente significan el método de hash para el hash en uso. El formato es:

  

"$ id $ salt $ hashed", donde "$ id" es el algoritmo utilizado (En GNU / Linux, "$ 1 $" significa MD5, "$ 2a $" es Blowfish, "$ 5 $" es SHA- 256 y "$ 6 $" es SHA-512 ...)

la fuente está disponible en wikipedia .

Acabo de consultar el manual y de hecho dice "cifrado método". Definitivamente, estos no son métodos de encriptación como DES, sino funciones hash "de una manera".

    
respondido por el user2213 16.05.2013 - 16:43
fuente

Lea otras preguntas en las etiquetas