Vigenere Cipher - ayuda con el descifrado (a mano)

4

Así que este es un texto cifrado Vigenere

EORLL TQFDI HOEZF CHBQN IFGGQ MBVXM SIMGK NCCSV
WSXYD VTLQS BVBMJ YRTXO JCNXH THWOD FTDCC RMHEH
SNXVY FLSXT ICNXM GUMET HMTUR PENSU TZHMV LODGN
MINKA DTLOG HEVNI DXQUG AZGRM YDEXR TUYRM LYXNZ
ZGJ

El índice de coincidencia dio un cambio de seis (6): Sé que es correcto (usé un applet de Java en línea para descifrar todo usando la tecla "CUARZO").

Sin embargo, en esta pregunta solo se nos dicen las primeras y últimas dos letras de la Clave: 'Q' y 'TZ'.

Hasta ahora he dividido el texto cifrado en segmentos utilizando esto applet impresionante. Así que la primera porción es 0, k, 2k, 3k, 4k; el segundo es 1, k + 1, 2k + 1, 3k + 1; etcétera.

KeyPos=0: EQEQQSCXQJJHDEYIUTSVMTVUMTYJ
KeyPos=1: OFZNMICYSYCWCHFCMUULILNGYUX
KeyPos=2: RDFIBMSDBRNOCSLNERTONOIADYN
KeyPos=3: LICFVGVVVTXDRNSXTPZDKGDZERZ
KeyPos=4: LHHGXKWTBXHFMXXMHEHGAHXGXMZ
KeyPos=5: TOBGMNSLMOTTHVTGMNMNDEQRRLG

Mi idea fue calcular la letra de mayor frecuencia en cada bloque, con la esperanza de que la letra más frecuente me diera alguna pista sobre cómo encontrar "U", "A" y "R". Sin embargo, las letras más frecuentes en estos bloques son:

KeyPos=0: Q,4 T,3 E,3, J,3
KeyPos=1: C,4 U,3 Y,3
KeyPos=2: N,4 O,3 R,3 D,3 B,2
KeyPos=3: V,4 D,3 Z,3
KeyPos=4: H,6 X,6 M,3 G,3
KeyPos=5: M,4 T,4 N,3 G,3

Lo que produce QCNVHM, o QUNVHM (siendo generoso), ninguno de los cuales está tan cerca del CUARZO. Hay applets en línea que pueden resolver este problema sin problemas, por lo que no debe ser un texto demasiado corto para obtener resultados decentes. recuentos de frecuencia de los bloques.

Supongo que debo estar abordando esto de manera incorrecta. Solo esperaba que uno de ustedes pudiera ofrecer alguna pista de dónde voy mal.

¡Gracias por cualquier ayuda!

    
pregunta eggonlegs 23.06.2011 - 15:44
fuente

3 respuestas

7

Te estás acercando a esto de manera incorrecta. Lo que tienes aquí es el texto cifrado. Esto significa que la letra más frecuente en cada bloque corresponderá (o debería) a la letra más frecuente en el texto claro. Con un texto lo suficientemente largo, puede asumir que esta es la letra 'E'. La letra más frecuente en cada posición no es la letra de la palabra clave.

Esto significa que puede encontrar cada letra de la tecla utilizando la letra más frecuente en una posición y su desplazamiento desde la letra 'E'. Sabiendo que la letra 'A' le dará una compensación de 0, y que la letra 'Z' le dará una compensación de 25, es trivial adivinar la clave original.

Sin embargo , esto solo funciona para textos más largos, ya que la distribución de letras es bastante fácil de desordenar en los más cortos. Usando el texto claro de su pregunta, la letra más frecuente es, de hecho, 'O', no 'E'. Además, debido a que el texto es muy corto, las frecuencias de las letras en cada una de las posiciones de la clave son aún más torcidas.

No estoy seguro de cómo logró descodificar esto automáticamente. La única forma en la que puedo pensar sería verificar las palabras del diccionario tanto en la clave como en la salida resultante, ignorando cualquier clave que no tenga sentido.

En general, el cifrado Vigenere se puede descifrar fácilmente para textos más largos con claves más cortas. Si tiene un texto corto (como aquí), o una tecla más larga, entonces se vuelve más difícil. Lo ideal sería utilizar una clave aleatoria que sea más larga que el texto plano, de modo que nunca se repita, lo que garantiza que el texto cifrado no se puede descodificar sin la clave.

    
respondido por el Soumya 23.06.2011 - 17:25
fuente
6

Copiando mi respuesta en de StackOverflow :

No tengo una solución programática para descifrar el texto cifrado original, pero pude resolverlo con un poco de poder mental y algo de JavaScript útil.

Comencé usando esta página (ahora no funcional) y la información que usted proporcionó. Proporcione el texto cifrado, una longitud de clave de 6 y pulse inicializar. Lo bueno del enfoque aquí es que las incógnitas, ya sea en el texto plano o en la clave, se dejan como guiones.

Actualice la clave, agregue solo lo que sabe Q---TZ y haga clic en 'actualizar texto sin formato'. En este punto sabemos:

  

o --- sua --- opo --- oca --- nha --- enc --- rom --- dth --- ama --- int --- ept --- nuestra-- -mun --- tio --- ewi --- eus --- el --- ond --- loc --- onf --- ahora --- hed --- off --- ere --- nsw --- esd --- tmi --- ght

Aquí es donde apliqué un poco de poder cerebral. Comienzas a reconocer los bits del texto plano. the , now y off hacen su aparición. Al final, hay ght ; esto me hizo pensar que la letra anterior es probablemente una vocal. Por ejemplo, light o thought . Reemplacé el guión correspondiente con u e hice clic en la palabra clave de actualización para encontrar qué letra habría producido esa combinación. La letra coincidente resulta ser F . Creo que actualicé el texto en claro para ver los resultados. No parecían prometedores. Así que intenté i en lugar de lo que resultó en:

  

o - usua - ropo - loca - onha - eenc - prom - edth - eama - eint - cept - gour - mmun - atio - wewi - beus- -gthe - cond - yloc - ionf - mnow - thed - poff - mere - insw - nesd - atmi - ight

Ahora estamos llegando a alguna parte. Al comienzo veo algo que podría ser usual , y más adelante veo int--cept y cerca del final w--nesd-- at mi--ight . Voila Completar las letras para wednesday y actualizar la palabra clave produjo QUARTZ .

... Entonces, ¿cómo portar este enfoque al código? No estoy seguro de la mejor manera de hacerlo todavía. La idea de utilizar los caracteres conocidos en la clave, descifrar parcialmente el texto cifrado y forzar el resto de manera bruta es atractiva. Pero sin un diccionario a la mano, no estoy seguro de cuál sería el mejor método de fuerza bruta ...

Continuará (quizás) ...

    
respondido por el Tails 24.06.2011 - 01:30
fuente
0

Resolviendo lo que Tails ha encontrado arriba:

o - usua - ropo - loca - onha - eenc - prom - edth - eama - eint - cept - gour - mmun - atio - wewi - beus- -gthe - cond - yloc - ionf - mnow - thed - poff - mere - insw - nesd - atmi - ight

Veo esto como lo siguiente simplemente adivinando las letras que faltan:

oUR
usuaAL
ropo--
locaTIon
haS
Been
cOMpromISed
th--eama--e
intERceptINg
our
COmmunICatioNS
we
wiLL
be
usINg
the
--cond--y
locATion
fROm
now
ON
the
dROp
off
--mere--insw--nesd--
at
miDNight
    
respondido por el NULLZ 15.05.2013 - 01:44
fuente

Lea otras preguntas en las etiquetas