¿Qué tan seguro es el cifrado Vigenere para datos aleatorios?

5

Situación tradicional

Es fácil descifrar un texto cifrado cifrado por Cifrado Vigenere , si sabe que el texto en claro está en Un lenguaje natural como el inglés. Hay dos métodos para descubrir la clave utilizada para cifrar el texto plano. O conoce las frecuencias de ciertos caracteres que aparecerán con más frecuencia que otras ( e para inglés) o conoce una palabra que aparecerá en el texto plano ( the , a , etc. para inglés).

Aleatorio criptográficamente seguro

¿Qué pasa si el texto sin formato es en realidad datos CSR (aleatorios criptográficamente seguros), y los cifra utilizando el cifrado Vigenere con una clave CSR?

Digamos que reutilizamos la clave cuatro veces (¿para tener en cuenta las fallas si el azar no es CSR?). Además, la clave es lo suficientemente grande como para que la fuerza bruta no sea una opción (por ejemplo, la clave puede ser de 1 KB y, por lo tanto, el cifrado y el texto sin formato son 4 KB).

¿Es posible descifrar eso, aunque esté reutilizando la misma clave (la clave también es CSR) pero no tan grande como los datos de texto sin formato?

o: ¿qué grado de seguridad tiene esto en relación con otros métodos de cifrado / descifrado?

Contexto

En caso de que te preguntes: '¿por qué quieres cifrar datos aleatorios?':

Bueno, si la respuesta es no, y por lo tanto es imposible descifrarla. Eso significaría que una vez que se establezca un secreto compartido entre dos personas, podría establecer una conexión de información teóricamente segura, ¿verdad? Porque una vez que tienes una clave secreta compartida 'A' de 1KB. Luego, puede crear una clave secreta compartida 'B' de 2 KB utilizando 'A' dos veces en los datos generados recientemente de forma aleatoria. Luego, puede usar 1KB de 'B' como teclado de una sola vez en sus comunicaciones de texto simple en inglés. Y podría usar los otros 1KB de 'B' para comunicar de forma segura la siguiente clave de tamaño de 2KB y así sucesivamente.

    
pregunta Yeti 16.05.2014 - 21:10
fuente

1 respuesta

4

Estoy de acuerdo en que sería difícil (posiblemente imposible) romper un cifrado Vigenere en datos aleatorios que nunca se utilizan y son simplemente aleatorios.

Pero su esquema en el que utiliza esos datos aleatorios como un teclado de una sola vez no tendría una seguridad teórica perfecta como un teclado de una sola vez.

Tendrá la seguridad de un cifrado Vigenere, el eslabón más débil de la cadena. No podría atacar directamente el cifrado Vigenere en los datos aleatorios, pero podría atacar fácilmente la combinación.

Me equivoqué al recordar el cifrado Vigenere por error. Su operación principal es XOR y no espacio de caracteres de módulo de adición. Mi error hace que el ataque a tu esquema sea trivial debido a las propiedades de XOR. Llamaré a mi esquema erróneo VigenereXOR.

El ejemplo anterior usando VigenereXOR:

 import scipy
 rand_bytes=[scipy.random.random_integers(256) for i in range(512)] # 512 random bytes
 vig_key = "MYSECRET"*64
 vig_key_bytes = [ord(c) for c in vig_key] 
 encrypted_random = [(r ^ vk) for r,vk in zip(rand_bytes, vig_key_bytes)]
 message = "But your scheme where you use that random data as a one-time-pad would not have informational theoretic perfect security like a one-time-pad."
 message_bytes = [ord(c) for c in message]
 encrypted_message = [(r ^ m) for r,m in zip(rand_bytes, message_bytes)]

Ahora, si un atacante observa tanto encrypted_random como encrypted_message , pueden XOR juntarlos, en cuyo punto tendrían el mensaje original simplemente cifrado con el cifrado Vigenere como (A XOR B) XOR (B XOR C) = A XOR C; por lo tanto, todos los ataques de frecuencia en el mensaje Vigenere podrían aplicarse directamente.

En el cifrado Vigenere real:

 encrypted_random = [(r + vk) % 256 for r,vk in zip(rand_bytes, vig_key_bytes)]

puede haber ataques sofisticados en él. Como mínimo, obviamente no tiene una seguridad perfecta del esquema. Si el esquema tuviera una seguridad perfecta, entonces la longitud de la clave Vigenere sería irrelevante y, obviamente, no lo es, se podría usar una clave de un carácter, lo que sería un ataque trivial. Puede observar que aún puede construir (A + B mod 256) XOR (B XOR C) = ((A + B mod 256) XOR B) XOR C. (A + B mod 256) XOR B no está distribuido al azar ( por ejemplo, si A = 8, entonces las únicas posibilidades para (A + B mod 256) XOR B son 8,24,56,120,248 después de probar los 256 valores de B). Es probable que se pueda hacer un avance de este tipo para hacer que este ataque sea mucho mejor que la fuerza bruta.

Es un resultado común de un libro de texto (con una prueba directa) de que no se puede obtener una seguridad perfecta de la teoría de la información si su espacio de claves (lo que se intercambió antes del cifrado) no es al menos tan grande como su espacio de mensajes. Consulte documento clásico de Shannon de 1949 .

    
respondido por el dr jimbob 16.05.2014 - 21:23
fuente

Lea otras preguntas en las etiquetas