Vigenere Cipher - aiuto con la decrittazione (a mano)

4

Quindi questo è un testo cifrato di 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

L'indice di coincidenza ha dato uno spostamento di sei (6): so che è giusto (ho usato un'applet Java online per decifrare il tutto usando la chiave "QUARTZ").

Tuttavia, in questa domanda ci viene solo detta la prima e l'ultima lettera della chiave: "Q" e "TZ."

Finora ho diviso il testo cifrato in sezioni usando questo fantastica applet. Quindi la prima fetta è 0, k, 2k, 3k, 4k; il secondo è 1, k + 1, 2k + 1, 3k + 1; et cetera.

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

La mia idea era di calcolare la lettera con la frequenza più alta in ogni blocco, sperando che la lettera più frequente mi desse qualche indizio su come trovare "U", "A" e "R." Tuttavia, le lettere più frequenti in questi blocchi sono:

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

Che produce QCNVHM o QUNVHM (essendo generosi), nessuno dei quali è quello vicino a QUARTZ. Ci sono applet online che possono decifrare questo problema, quindi non deve essere un testo troppo corto per ottenere risultati decenti conteggi di frequenza dai blocchi.

Credo che dovrei avvicinarmi a questo nel modo sbagliato. Speravo solo che qualcuno di voi fosse in grado di offrire qualche indizio su dove sto andando male.

Grazie per l'aiuto!

    
posta eggonlegs 23.06.2011 - 15:44
fonte

3 risposte

7

Ti stai avvicinando a questo nel modo sbagliato. Quello che hai qui è il testo cifrato. Ciò significa che la lettera più frequente in ciascun blocco corrisponderà (o dovrebbe) alla lettera più frequente nel testo in chiaro. Con un testo abbastanza lungo, si può presumere che questa sia la lettera "E". La lettera più frequente in ogni posizione non è la lettera della parola chiave.

Questo significa che puoi trovare ogni lettera della chiave usando la lettera più frequente in una posizione e il suo offset dalla lettera "E". Sapendo che la lettera 'A' ti darà un offset di 0, e la lettera 'Z' ti darà un offset di 25, è banale indovinare la chiave originale.

Tuttavia , funziona solo per i testi più lunghi, dal momento che la distribuzione delle lettere è abbastanza facile da rovinare in quelli più brevi. Usando il testo chiaro della tua domanda, la lettera più frequente è, in effetti, "O", non "E". Inoltre, poiché il testo è così breve, le frequenze delle lettere in ciascuna delle posizioni della chiave sono ancora più distorte.

Non sono sicuro di come sei riuscito a decodificarlo automaticamente. L'unico modo che posso pensare sarebbe quello di controllare le parole del dizionario sia nella chiave che nell'output risultante, ignorando le chiavi che non hanno senso.

In generale, il codice Vigenere può essere facilmente decifrato per testi più lunghi con chiavi più corte. Se hai un breve testo (come qui), o una chiave più lunga, allora diventa più difficile. Idealmente, useresti una chiave casuale più lunga del testo in chiaro, quindi non si ripeterà mai, il che garantisce che il testo cifrato non possa essere decodificato senza la chiave.

    
risposta data 23.06.2011 - 17:25
fonte
6

Copia la mia risposta su da StackOverflow :

Non ho una soluzione programmatica per decifrare il testo cifrato originale, ma sono riuscito a risolverlo con un po 'di energia mentale e qualche utile JavaScript.

Ho iniziato utilizzando questa pagina (ora non funzionante) e il informazioni fornite. Fornire il testo cifrato, una lunghezza della chiave di 6 e premere inizializza. La cosa bella dell'approccio qui è che le incognite nel testo in chiaro o nella chiave sono lasciate come trattini.

Aggiorna la chiave, aggiungendo solo ciò che sai Q---TZ e fai clic su "Aggiorna testo semplice". A questo punto sappiamo:

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

Ecco dove ho applicato un po 'di potere del cervello. Inizi a riconoscere pezzi del testo in chiaro. the , now e off fanno un'apparizione. Alla fine, c'è ght - questo mi ha fatto pensare che la lettera precedente sia probabilmente una vocale. Ad esempio light o thought . Ho sostituito il trattino corrispondente con u e ho fatto clic su Aggiorna parola chiave per trovare quale lettera avrebbe prodotto quella combinazione. La lettera di corrispondenza risulta essere F . Penso che abbia aggiornato il testo in chiaro per vedere i risultati. Non sembravano promettenti. Così ho provato i invece che ha provocato:

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

Ora stiamo andando da qualche parte. All'inizio vedo qualcosa che potrebbe essere usual , e più avanti vedo int--cept e vicino alla fine w--nesd-- at mi--ight . Ecco. Compilando le lettere per wednesday e aggiornando la parola chiave resa QUARTZ .

... Quindi, come portare questo approccio al codice? Non sono sicuro del modo migliore per farlo ancora. L'idea di usare i caratteri noti nella chiave, in parte decrittografando il testo cifrato e il bruto forzando il resto è allettante. Ma senza un dizionario a portata di mano, non sono sicuro di quale sarebbe il miglior metodo di forzatura bruta ...

Continua (forse) ...

    
risposta data 24.06.2011 - 01:30
fonte
0

Stai lavorando su ciò che Tails ha trovato sopra:

o - usua - ROPO - loca - onha - eenc - prom - edth - ACEA - Eint - CEPT - gour - MMUN - azio - WEWI - beus- -gthe - cond - yloc - ionf - mnow - thed - poff - semplice - INSW - nesd - ATMI - estra

Vedo questo come segue semplicemente indovinando le lettere mancanti:

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
    
risposta data 15.05.2013 - 01:44
fonte

Leggi altre domande sui tag