Forzado a usar un IV estático (AES)

25

Hemos tenido que ampliar nuestro sitio web para comunicar las credenciales de los usuarios a un sitio web de proveedores (en la cadena de consulta) mediante AES con una clave de 256 bits, sin embargo, están utilizando un IV estático al descifrar la información.

He advertido que la IV no debe ser estática y que no está en nuestras normas hacerlo, pero si la cambian, incurriremos en los costos [grandes], por lo que hemos aceptado aceptar esto como un Riesgo de seguridad y uso del mismo IV (para mi frustración extrema).

Lo que quería saber es, ¿cuánta es una amenaza para la seguridad? Necesito poder comunicarlo de manera efectiva a la gerencia para que sepan exactamente lo que están acordando.

También estamos usando la misma CLAVE en todo.

Gracias

    
pregunta Mantorok 10.12.2010 - 16:44
fuente

3 respuestas

34

Depende del modo de encadenamiento. AES es un cifrado de bloque, se aplica en bloques de 16 bytes (exactamente). El modo de encadenamiento define cómo los datos de entrada se convierten en varios de estos bloques y cómo se juntan los bloques de salida. La mayoría de los modos de encadenamiento necesitan trabajar con algún tipo de "valor de inicio", que no es secreto pero debería cambiar para cada mensaje: ese es el IV.

Reutilizar el mismo IV es mortal si usas el modo de encadenamiento CTR. En el modo CTR, AES se usa en una secuencia de valores de contador sucesivos (comenzando con el IV), y la secuencia resultante de bloques encriptados se combina (mediante XOR a nivel de bits) con los datos para cifrar (o descifrar). Si usas el mismo IV, obtienes la misma secuencia, que es la infame "almohadilla dos veces". Básicamente, al XORAR dos cadenas encriptadas juntas, se obtiene el XOR de los dos datos de texto claro. Esto se abre a una gran cantidad de ataques, y básicamente todo está roto.

Las cosas son menos graves si usas CBC. En CBC, los datos en sí se dividen en bloques de 16 bytes. Cuando se debe cifrar un bloque, primero se XOR con el bloque encriptado anterior. El IV tiene la función del bloque "-1" (el bloque cifrado anterior para el primer bloque). La principal consecuencia de reutilizar el IV es que si dos mensajes comienzan con la misma secuencia de bytes, entonces los mensajes cifrados también serán idénticos para algunos bloques. Esto filtra datos y abre la posibilidad de algunos ataques.

Para resumir, no hagas eso. El uso de la misma IV con la misma tecla siempre ha vencido a todo el propósito de la IV, la razón por la que se utilizó un modo de encadenamiento con IV en primer lugar.

    
respondido por el Thomas Pornin 10.12.2010 - 17:54
fuente
7

Usar el mismo IV para todos los datos es equivalente a no usar un IV en absoluto: el primer bloque de texto cifrado será idéntico para el texto sin formato idéntico. Me interesaría saber por qué su proveedor quiere usar un IV constante, pero eso no viene al caso. El punto es que el sistema es susceptible de esta manera: si un atacante puede configurar sus propias credenciales y observar el texto cifrado que se genera, puede compararlo con otras credenciales cifradas para obtener información sobre la clave.

    
respondido por el user185 10.12.2010 - 17:46
fuente
2

No soy un tipo de criptografía, pero entiendo que si el IV no cambia y el mismo valor se vuelve a cifrar, la salida sería la misma. Por lo tanto, sería posible inferir el contenido buscando valores que se repiten, como una credencial que se pasa con cada solicitud.

Una vez más, sin embargo, no soy un tipo de criptografía, por lo que podría estar equivocado.

    
respondido por el Steve 10.12.2010 - 17:32
fuente

Lea otras preguntas en las etiquetas