Tengo dos fragmentos de texto cifrado cifrados con un cifrado de flujo usando la misma clave.
¿Cómo recupero el texto sin formato de ambos mensajes de texto cifrado sin saber la clave utilizada?
Tengo dos fragmentos de texto cifrado cifrados con un cifrado de flujo usando la misma clave.
¿Cómo recupero el texto sin formato de ambos mensajes de texto cifrado sin saber la clave utilizada?
Si los dos mensajes cifrados utilizan el mismo cifrado de flujo y la misma clave,
C1 xor C2
da como resultado M1 xor M2
donde C1 y C2 son el texto cifrado respectivo y M1 y M2 son el texto plano correspondiente.
Luego, puede recuperar el texto sin formato utilizando una técnica conocida como arrastre de cuna. Toma una palabra o frase común que puede aparecer en el texto sin formato (como "the") y xor que contra el resultado de M1 xor M2
. Si uno de los textos tenía el texto de la cuna ("el" en nuestro ejemplo), entonces el resultado del xor es lo que el otro texto sin formato tenía en esa posición. Si ninguno de los dos textos en claro contiene el texto de la cuna, es muy probable que el resultado del xor sea simplemente incomprensible.
Simplemente continúas con esta técnica hasta que recuperes la cantidad suficiente del texto sin formato para completar el resto de manera inteligente.
Esto se conoce como OTP key reuse attack ; puede encontrar la respuesta ("cribtext drag") en here . Cuantos más mensajes tenga (cuanto más se haya reutilizado la clave), mejor. Con un corpus lo suficientemente grande, es posible que ni siquiera necesite arrastrar el texto del texto.
Es decir, adivina una frase común que puede aparecer en una de los plaintexts (el ejemplo clásico contra ASCII inglés es el 5 letra "the"), y exclusiva, o que contra el XOR de los dos Mensajes originales en varios lugares. Si uno de los plaintexts tuviera El texto de la cuna ("el" en nuestro ejemplo), luego el resultado del exclusivo, o es lo que el otro texto simple tenía en esa posición; Si ni el texto en claro tenía eso, es probable que el resultado de la Exclusivo, o es simplemente un galimatías. Y, una vez que tenga un corto plausible sección, puede ampliarla (por ejemplo, si sabe que uno de los plaintexts es "na **", puede ir a través del diccionario de todas las palabras que comienzan con "na", úselos como cunas y vean cuál hace que otro texto en claro tiene sentido).
Por supuesto, solo puede utilizar la longitud común más corta de varios mensajes: si tiene un 1500 bytes, un 1000 y un 500, tiene una reutilización de tres para los primeros 500 bytes. , dos teclas para las siguientes 500, y las últimas 500 no pueden ser atacadas.
A menos que la OTP también sea también reutilizada "a tiempo", es decir, periódicamente (ya no es una OTP, pero entonces se podría argumentar que no fue así en primer lugar, ya que se está reutilizando ...). Este tipo de error se cometió en una marca de discos duros cifrados, cada uno de los cuales tenía una clave OTP diferente que luego se usó para todos los sectores (incluidos los puestos a cero, una forma extrema de cuna), lo que lleva a un nivel de cifrado efectivo de cero. Luego, si la secuencia OTP original está incluida en todos los mensajes para los que tiene duplicación, puede recuperar la clave de esos , y luego continuar descifrando todo lo demás .
Lea otras preguntas en las etiquetas cryptography encryption one-time-pad