¿Es “sal real” lo mismo que “vectores de inicialización”?

31

En la pregunta sobre sal real contra falsa , las respuestas describen Cómo la sal real 'perturba el algoritmo de encriptación'. Sé aproximadamente cómo funcionan los vectores de inicialización; ¿Es este el mismo concepto, o algo completamente diferente?

    
pregunta Bryan Agee 09.08.2011 - 20:39
fuente

2 respuestas

39

Un salt y un initialization vector son casi lo mismo en el siguiente sentido: son datos públicos, que deben generarse de nuevo para cada instancia (cada contraseña con hash , cada mensaje encriptado). Una sal es acerca de poder usar la misma contraseña varias veces sin abrir puntos débiles; o, si lo prefiere, evitar que un atacante comparta los costos de ataque de contraseña en caso de que la misma contraseña se haya usado en varias instancias, que es todo lo que las tablas precomputadas (rainbow) están a punto. El punto de una IV en, digamos, cifrado simétrico con CBC, es tolerar el uso de la misma clave para cifrar varios mensajes distintos.

El nombre "vector de inicialización" alude a un proceso repetitivo en un estado interno dado, siendo el IV lo que el estado se inicializa. Por ejemplo, la función de hash MD5 se define como la acción repetida de una función de compresión que toma como ingrese el estado actual (128 bits) y el siguiente bloque de mensajes (512 bits), y genera el siguiente valor de estado; al principio, el estado se inicializa a un valor convencional que se llama "el IV". En ese sentido, la mayoría de las "sales" utilizadas en el procesamiento de contraseñas no son "vectores de inicialización". Pero esto es un poco de una interpretación excesiva de la expresión.

Sin embargo, nombrar cosas es principalmente una cuestión de tradición. Una "sal" es un tipo de IV que:

  • está involucrado en el procesamiento de una contraseña;
  • debe ser distinto para cada instancia de procesamiento (no puede ser un valor convencional fijo);
  • solo necesita singularidad ("no se repite"), no selección uniforme entre el espacio de posibles sales (aunque la selección aleatoria uniforme es una forma buena y barata de obtener singularidad con una probabilidad abrumadora, suponiendo que las sales son lo suficientemente largas).

Los detalles (cómo se inserta exactamente la sal / IV y en qué punto del algoritmo) son una pista falsa.

    
respondido por el Thomas Pornin 09.08.2011 - 21:24
fuente
3

La respuesta anterior es correcta cuando se discute "sal" en el contexto de las contraseñas. Sin embargo, el término "sal" también se usa para otros usos de valores aleatorios pero no secretos.

Para un tratamiento muy riguroso de la sal, relacionado con los extractores de aleatoriedad, lea Extracción criptográfica y Derivación de claves: el esquema HKDF . Existe cierta teoría acerca de por qué el uso de sal es obligatorio para obtener extractores genéricos de aleatoriedad, aunque esto no es muy relevante en el caso de las contraseñas.

    
respondido por el Nakedible 09.08.2011 - 23:00
fuente

Lea otras preguntas en las etiquetas