Decripta il testo cifrato crittografato con lo stesso tasto one time pad

6

Ho due cifrari cifrati con un codice stream usando la stessa chiave.

Come faccio a recuperare il testo in chiaro di entrambi i messaggi di testo cifrato senza conoscere la chiave utilizzata?

    
posta Alan Coromano 29.06.2013 - 10:37
fonte

2 risposte

11

Se i due messaggi crittografati utilizzano lo stesso codice di flusso e la stessa chiave,

C1 xor C2 risulta in M1 xor M2 dove C1 e C2 sono i rispettivi testi cifrati e M1 e M2 sono i testi in chiaro corrispondenti.

Puoi quindi recuperare il testo in chiaro usando una tecnica nota come trascinamento della greppia. Prendi una parola o frase comune che può apparire nel testo in chiaro (come "il") e xor quella contro il risultato di M1 xor M2 . Se uno dei testi in chiaro aveva il testo della culla ("il" nel nostro esempio), allora il risultato dello xor è ciò che l'altro testo in chiaro aveva in quella posizione. Se nessuno dei testi in chiaro contiene il testo della culla, è molto probabile che il risultato della xor sia solo privo di senso.

Continua questa tecnica fino a quando non recuperi abbastanza testo in chiaro per completare in modo intelligente il resto.

    
risposta data 29.06.2013 - 10:56
fonte
3

Questo è noto come attacco di riutilizzo della chiave OTP ; puoi trovare la risposta ("trascinamento del criptato") in qui . Più messaggi hai (più la chiave è stata riutilizzata), meglio è. Con un corpus abbastanza grande potresti addirittura non aver bisogno del trascinamento del testo in cript.

That is, you take a guess of a common phrase that may appear in one of the plaintexts (the classical example against ASCII english is the 5 letter " the "), and exclusive-or that against the XOR of the two original messages in various locations. If one of the plaintexts had the text of the crib (" the " in our example), then the result of the exclusive-or is what the other plaintext had in that position; if neither plaintext had that, it's likely that the result of the exclusive-or is just gibberish. And, once you have a plausible short section, you can extend it (for example, if you know that one of the plaintexts is " na**", you can go through the dictionary of all words that start with "na", use those as cribs, and see which makes the other plaintext make sense).

Naturalmente, puoi usare la lunghezza minima più breve di diversi messaggi: se hai un 1500 byte, uno 1000 e uno 500, hai tre riutilizzi per i primi 500 byte , un due tasti per il prossimo 500 e l'ultimo 500 non può essere attaccato.

A meno che l'OTP sia anche riutilizzato "nel tempo", cioè periodicamente (non è più un OTP, ma si potrebbe obiettare che non era in primo luogo, dal momento che è riutilizzato ...). Questo tipo di errore è stato eseguito su una marca di dischi rigidi crittografati, ognuno dei quali aveva una chiave OTP diversa che è stato poi utilizzato per ogni singolo settore (compresi quelli azzerati - una forma estrema di presepe), che porta a una forza di crittografia efficace di zero. Quindi, se la sequenza OTP originale è inclusa in tutti i messaggi per i quali è presente la duplicazione, è possibile recuperare la chiave da quelli , quindi continuare a decodificare tutto il resto .

    
risposta data 29.06.2013 - 11:02
fonte

Leggi altre domande sui tag