¿Es seguro tener la sal igual a IV?

3

Si estoy usando AES-256 CBC para cifrar, obteniendo la clave de 32 bytes usando múltiples iteraciones de la función PBKDF2 con una sal de 16 bytes, ¿es seguro que permita que IV sea igual a la sal?

( Editar: la sal se genera aleatoriamente cada vez. Esto, por supuesto, también generaría la IV al azar cada vez. )

¿Cuánta seguridad se pierde al hacer esto? Si hago esto, la ventaja es que solo tendré que almacenar el salt en el archivo cifrado final, no tanto el salt como el IV (¡lo que hace que el archivo sea 16 bytes más pequeño!)

    
pregunta user21203 26.02.2013 - 00:41
fuente

4 respuestas

7

No hay ningún problema conocido con la reutilización de la sal utilizada en PBKDF2 para el IV del cifrado CBC, y sería un poco sorprendente si tuviera un impacto porque la sal ingresa como entrada para las funciones hash , y la salida se utiliza como clave para el cifrado de bloque. Por lo tanto, hay "dos capas" entre la sal y la IV. Sin embargo, las sorpresas ocurren a veces. La reutilización de cualquier elemento de datos para dos roles es, como regla básica, potencialmente peligroso.

Dado que PBKDF2 es una Función de Derivación de Clave que puede producir una salida de longitud arbitraria, parece más seguro simplemente hacerlo generar la clave y el IV. Eso es lo que se suele hacer en estos asuntos.

De forma alternativa, si la clave obtenida de la contraseña y el archivo de sal se usará solo para un archivo uno , entonces usted podría usar un IV convencional fijo (los problemas con IV en CBC comienzan en el segundo uso de la clave, por lo que tolera un IV todo a cero si y solo si la clave se usa solo una vez). Aún sería mejor reemplazar el CBC con un modo de cifrado autenticado como EAX o GCM , que tiene menos restricciones en IV (con EAX o GCM, es "obvio" que un IV convencional no es un problema, siempre y cuando la clave se use una vez) y le dará integridad además de la confidencialidad.

    
respondido por el Thomas Pornin 26.02.2013 - 12:29
fuente
4

El IV debe ser único para cada invocación de CBC. La sal para generar su clave a través de PBKDF2 será constante, de lo contrario estaría generando claves diferentes.

Entonces, no.

    
respondido por el Stephen Touset 26.02.2013 - 00:50
fuente
1

Ejecutaría PBKDF2 en la contraseña + salt para obtener una clave maestra. Luego derive una clave y una IV de esa llave maestra. Gracias a la sal cada llave maestra será utilizada solo una vez. De esa manera, no es necesario almacenar la IV junto con el cifrado.

    
respondido por el CodesInChaos 26.02.2013 - 10:53
fuente
1

Se requiere que tanto la IV como la sal sean únicas y aleatorias. Por lo tanto, mientras mantengan estos criterios, nunca he visto (ni se me ocurre) ninguna razón por la que no puedan ser iguales.

Referencia:

respondido por el Mahdi 26.02.2013 - 10:50
fuente

Lea otras preguntas en las etiquetas