Does this mean that when using such a technique you would essentially have to have a list of all previously used ones to ensure you don't reuse any?
Questo deve essere visto nel contesto originale in cui due parti condividono un libro di codici composto da una lunga sequenza casuale.
Normalmente usi una sequenza data - devi inviare un messaggio di 1000 caratteri, usi i primi caratteri OTP inutilizzati nel libro dei codici, e poi li distruggi . Prendi nota della posizione nella chiave OTP e invialo. Il tuo controllo ha il libro dei codici intatto e può ricostruire il messaggio.
Se non distruggi fisicamente la chiave che hai appena usato, esponi te stesso alla decrittografia dei messaggi passati se il libro viene catturato.
Per ottenere un nuovo libro di codici, era necessario averlo consegnato in qualche modo, ed era un business rischioso. Quindi c'era la tentazione di riutilizzare una vecchia chiave - e a quel punto, il codice OTP smette di essere perfettamente sicuro. Più usi la stessa chiave, meno sicura diventa.
Se il nemico intercetta un messaggio di 2000 caratteri con la chiave 15273 (usando OTP 15273 a 17272) e un messaggio di 1000 caratteri con la chiave 16517 (usando OTP 16517 a 17516), ha ora due sequenze da 16517 a 17272 che erano codificato con gli stessi caratteri.
Modello molto semplificato
Supponiamo di utilizzare un OTP di base 10 con numeri e di immaginare di "codificare" utilizzando la somma modulare. Quindi 7 codificato dal tasto 5 diventa 7 + 5 mod 10 = 2.
Se intercetti un "2" cifrato sai che è stato generato da A + B = 2, ma qual era il valore di A? Che dire di B? Non puoi saperlo Entrambi 7 + 5 e 8 + 4 ti danno 2 ... in effetti hai tutte e dieci le possibilità , e quindi, un codice perfetto. Senza conoscere la chiave, il messaggio può essere qualsiasi messaggio .
Ma ora intercetti un "4" cifrato e sai che è stato generato da C + D = 4, ma a causa del riutilizzo delle chiavi, B è lo stesso di D, quindi sai anche che C + B = 4.
Sottraendo la seconda relazione dal primo
A+B = 2
C+B = 4
concludiamo che A + BCB = AC = -2, ovvero il carattere n-esimo del primo messaggio e il carattere m-es del secondo messaggio differiscono di 2. Poiché entrambi i messaggi devono avere senso , non è più vero che possono essere qualsiasi messaggio , e con un po 'di tentativi ed errori sarai in grado di leggere entrambi - non è più complesso di Sudoku:
First message : ATTACK AT DAWN
Second message shifted using A-C rule: BQF ORXTNABERN <-- 1st msg can't be it
First message : HELLO WORLD OF
Second message shifted using A-C rule: QUEAMISH OSSIF <-- now we're somewhere