¿Cuál es el significado del término “cadena simple” para la cadena SALT en la cripta Unix usando SHA-256 y SHA-512?

5

En criptografía de Unix usando SHA-256 y SHA-512 la El autor, Ulrich Drepper, presenta la cadena SALT como la siguiente (resaltado por mí):

  

Para los métodos basados en SHA, la cadena SALT puede ser una cadena simple de   que se utilizan hasta 16 caracteres.

¿Cuál es la razón que llama a esta cadena una cadena simple ? Qué significa eso? ¿Cuáles son las consecuencias? Estoy especialmente interesado en los casos extremos de proporcionar una cadena de 16 bytes NUL, por ejemplo.

    
pregunta hakre 23.07.2013 - 18:00
fuente

2 respuestas

3

El texto significa "simple" por oposición a lo que se usó en el DES basado en DES% basado en DES / a> donde la sal era un valor de 12 bits, representado exactamente como dos caracteres en un conjunto restringido. Ulrich Drepper quiere decir que su creación es menos exigente y puede tomar como sal cualquier secuencia de hasta 16 bytes.

Aunque la función de hash en sí misma puede funcionar con cualquier byte (incluidos los ceros, que no son especiales en modo alguno para una función de hash), el código C que se muestra en el texto al que se vincula utiliza una API basada en cadenas:

char *
sha256_crypt (const char *key, const char *salt)

es decir, la sal se detendrá justo antes del primer byte de valor cero, o justo después del byte 16, lo que ocurra primero. Además, el valor de la sal formará parte de la cadena de salida producida, por lo que la sal debería consistir en caracteres ASCII imprimibles y no incluir el signo crypt() , ya que se utiliza como separador dentro de esa cadena.

Una forma sencilla de generar una "cadena de sal adecuada" para esta función es generar una secuencia de exactamente 12 bytes aleatorios (tomada de un buen PRNG, es decir, '$' ), y codificarlos con Base64 . Esto generará 16 caracteres aleatorios, en un alfabeto que contiene letras (mayúsculas y minúsculas), dígitos, /dev/urandom y '+' , y ninguno más, en particular sin '/' y sin caracteres de control molestos. La sal todavía tendrá 96 bits de entropía, lo que hace que la reutilización de la sal sea considerablemente improbable (por lo que las cosas estarán bien).

    
respondido por el Tom Leek 23.07.2013 - 21:49
fuente
1

En este contexto, una cadena simple es cualquier matriz de caracteres en C, por ejemplo: char[] . El código está realizando un strlen () por lo que se termina en nulo. Una sal debe ser una fuente criptográfica.

    
respondido por el rook 23.07.2013 - 21:19
fuente

Lea otras preguntas en las etiquetas