2010-04-14 20 views
10

¿Cuál es la amenaza de seguridad de usar siempre todos los ceros para el IV? Si permite descifrar el texto encriptado, ¿cómo podría un atacante hacer eso?Para el cifrado AES CBC, ¿cuál es la importancia de la IV?

ACTUALIZACIÓN: Entonces, si el primer bloque de datos no encriptados tenía una marca de tiempo que nunca se repetía, ¿sería necesario un IV?

+2

Como nota al margen, si necesita hacer este tipo de preguntas, probablemente no debería usar criptoprimitives directamente. Considere usar una biblioteca de nivel superior en su lugar. –

+0

@nick Estoy de acuerdo, hice una pregunta anterior sobre una biblioteca de nivel superior con la que podría hacer esto (http://stackoverflow.com/questions/2435479/aes-encryption-library). – Kyle

+0

Si tiene algún tipo de caracteres aleatorios (es decir, una indicación de fecha y hora al azar) en el MUY primer bloque, entonces eso sustituiría la aleatoriedad que proporcionaría el IV. Pero también podrías usar una vía intravenosa porque, ¿qué pasa si termina siendo no aleatorio? Como si decidiera usar la hora actual. – Brain2000

Respuesta

10

Una vez que el atacante tiene un mensaje de texto plano y el texto cifrado correspondiente (tal vez ella lo interceptó en otro lugar, como el destino), ella será una para saber cuándo se envían otros mensajes con la misma secuencia de inicio. Como puede aprender algo sobre el contenido de sus mensajes encriptados, esto no es seguro.

También permite al atacante realizar análisis de frecuencia. Por ejemplo, imagine que sus mensajes de texto plano son comandos para el back-end de una plataforma bursátil, por lo que todos comienzan con "COMMAND=BUY" o "COMMAND=SELL". Esto significa que los mensajes cifrados comienzan con solo dos secuencias de texto cifrado diferentes. El atacante no puede descifrarlos directamente, pero si luego puede observar la cantidad de pedidos de VENTAS que ha realizado al observar los datos del mercado, podrá volver atrás y decidir cuál es cuál, y de ahora en adelante ella ' Sabré exactamente qué órdenes está haciendo cuando las coloca.

El análisis de frecuencia es la forma en que se dividen las cifras de sustitución simple, y esto no es una coincidencia: usar un IV fijo significa que la parte inicial de los mensajes está utilizando efectivamente la sustitución, un bloque a la vez.

3

No es fácil, pero sí expone información sobre los mensajes, que es algo que el cifrado intenta evitar.

Digamos que usa la misma clave y un cero IV. Alguien que olfatea el tráfico puede notar que los mensajes comienzan con el mismo texto cifrado. Esto les da algo de información. Al aleatorizar el IV, esta filtración de información desaparece. Se pueden lanzar ataques más potentes si se conoce más sobre la estructura de los datos de texto sin formato. Además, si envía muchos mensajes de esa manera, un atacante podría obtener lentamente más información acerca de la clave utilizada debido a la reducción en la varianza (solo el texto claro es diferente, en lugar del texto plano y el IV

1

If el IV siempre es cero, todos los mensajes con texto común al inicio (por ejemplo, correos electrónicos con los mismos primeros dos o tres bloques de cifrado para la información 'De' o 'De:') serán encriptados de la misma manera. Esto le da al atacante aprovechando su clave. Eso es incondicionalmente malo. Siempre que use un IV razonablemente aleatorio, el atacante pierde esa influencia. No lo arriesgue

5

El objetivo del CBC es aleatorizar los bloques de entrada, porque un bloque de entrada dado siempre se cifra de la misma manera con una clave dada (AES es determinista). Un bloque de entrada se aleatoriza mediante XORing con el bloque de salida anterior. El primer bloque que no tiene bloque anterior, se aleatoriza mediante XORing con el IV.

Por lo tanto, usar una IV no aleatoria significa que no aleatoriza el primer bloque. Si nunca usa la misma clave dos veces, es decir, usa una nueva clave cada vez que encripta un nuevo mensaje, y luego un IV totalmente cero no es un problema. Los problemas con bloques de entrada no aleatorios son relevantes solo cuando hay dos bloques de entrada no aleatorios que se cifran con la misma clave. Si usa una clave dada para un solo mensaje, entonces solo el primer bloque de ese mensaje será no aleatorio, por lo que no hay problema. Pero eso es un gran "si". En particular, si puede generar una nueva clave para cada mensaje, entonces probablemente también pueda generar una nueva IV para cada mensaje. Se necesitaría un escenario bastante específico para justificar el uso de un IV por completo con CBC.

Cuestiones relacionadas