español best algorithms security encryption cryptography

security - best - ¿Por qué es una vulnerabilidad usar un IV no aleatorio con modo CBC?



methods of encryption (3)

Entiendo el propósito de un IV. Específicamente en modo CBC, esto asegura que el primer bloque de 2 mensajes cifrados con la misma clave nunca serán idénticos. Pero, ¿por qué es una vulnerabilidad si los IV son secuenciales? Según CWE-329 , las IV no aleatorias permiten la posibilidad de un ataque de diccionario. Sé que en la práctica los protocolos como WEP no hacen ningún esfuerzo por ocultar el IV. Si el atacante tiene el IV y un mensaje de texto de cifrado, esto abre la puerta para un ataque de diccionario contra la clave. No veo cómo un iv aleatorio cambia esto. (Sé que los ataques contra wep son más complejos que esto).

¿Qué ventaja de seguridad tiene un iv aleatorio? ¿Sigue siendo un problema con un "Cifrado de bloque ideal"? (Un cifrado de bloque perfectamente seguro sin posibles debilidades).


Las otras respuestas son buenas, aunque altamente técnicas.

¿Por qué es una vulnerabilidad usar un IV no aleatorio con modo CBC?

Cuando cifra datos con una clave, si los datos y la clave son los mismos (no han cambiado), los datos cifrados serán los mismos. Si los datos encriptados son los mismos, los conjuntos de datos cifrados se pueden analizar en busca de patrones que luego se pueden utilizar para obtener información sobre los datos encriptados.

CBC (Cipher Block Chaining) resuelve este problema mediante la XORing los datos cifrados del bock anterior con los datos que se cifrarán. Esto significa que los bloques con los mismos datos serán diferentes si los datos cifrados del bloque anterior son diferentes, incluso si las claves son las mismas.

El problema con CBC es qué hacer con el primer bloque, ya que no hay un bloque anterior para obtener los datos cifrados. En cambio, los datos se XORed con un bloque de bits aleatorios llamado IV (Vector de inicialización).

Puede considerar que la seguridad de IV es la misma que la seguridad de los bloques de datos cifrados. En otras palabras, si se les puede dar los datos encriptados, entonces también se les puede dar el IV.


Los IV predecibles pueden explotarse mediante texto simple elegido.

Imagina que Eve es un DBA en una compañía de seguros. La compañía recopila historiales médicos de los beneficiarios que incluyen una gran cantidad de casillas de verificación verdadero / falso sobre las afecciones médicas. Esta empresa también le sucede a su propio proveedor de seguro de salud. Eve se da cuenta de que Alice podría ser chantajeada si descubre que Alice tiene una condición médica particularmente embarazosa. Sin embargo, el valor en cada uno de estos campos está encriptado, por lo tanto, aunque Eve es la DBA, solo tiene acceso al texto de cifrado.

En CBC, el IV es XORed (indicado por "⊕" a continuación) con el texto plano, luego se ejecuta a través del cifrado de bloque: C 1 = E k (IV ⊕ P 1 ).

Como Eve es beneficiaria de la compañía de seguros, puede elegir el texto sin formato para su propio registro médico y, dado que ella es la DBA, puede examinar el texto de cifrado de cualquier persona. Además de utilizar IV predecibles, el desarrollador de aplicaciones descuidado hizo un mal trabajo al validar las entradas de la aplicación. Si Eve puede predecir los IV que se aplicarán a su registro ( víspera IV) y a Alice (IV alice ) de antemano, puede elegir el texto simple para su propio registro como este: Pve = IV víspera ⊕ IV alice ⊕ "falso "

La aplicación encripta este texto simple como este:

C eve = E k (IV evePve ) = E k (IV víspera IV (IV víspera ⊕ IV alice ⊕ "falso"))

La víspera IV IV se cancela, lo que significa que Cve = E k (IV alice ⊕ "falso")

Ahora Eva puede comparar C eve y C alice . Si son diferentes, ella sabe que Alice debe haber ingresado "verdadera" para esa condición médica.

Hacer IVs impredecibles frustra este ataque, y una manera fácil de hacerlos impredecibles es elegirlos al azar después de que se haya proporcionado el texto sin formato.


Quiero explicar su pregunta utilizando WEP que es vulnerable y ahora se usan otros protocolos como WPA2.

la regla simple IEEE dice que:

La regla básica es nunca usar una tecla + IV dos veces, nunca

Una de las razones por las que WEP está comprometido se debe a la razón de la generación IV.

Como se ve en la imagen, cuando apareció por primera vez WEP, la longitud del IV fue de 24 bits (más tarde se aumentó 48 bits) si el atacante conoce cómo se generan los IV o en esta situación los IV son lo suficientemente pequeños para que el atacante explote el mensajes.

Si alguien sabe acerca de la generación del IV o se superpone (porque los IV son 24 bits significa 2 ^ 24 IV) durante la transmisión de los paquetes, el atacante que está olfateando el tráfico puede: si los IV son secuenciales significa que todavía hay una posibilidad de que los IV se superpongan en algún momento.

asumamos,

passphrase key Kp initialization vector Ivi plaintext data D1, D2 (for separateblocks) Traffic Key:Kti=Kp||Ivi Ciphertext: E(Kti,Di)=RC4(Kti) xor Di

y asumir que

IV1=IV2 (created sequentially and from 0 to 2^24 again returns back)

El atacante tiene,

(RC4(Kt1) xor D1) Xor (RC4(Kt1) xor D2) = D1 XOR D2

Esto se puede romper usando Aircrack-NG usando trazas de red. La idea que mostré es la suposición básica más compleja que se puede hacer, una vez más, nunca utilices la misma IV que se superpondrá.