L'articolo di WikiPedia ha una descrizione abbastanza buona sui punti deboli pratici di OTP, e perché non usato nel calcolo moderno.
Ad esso posso solo aggiungere che anche sulle reti moderne la trasmissione non è perfetta ei bit possono capovolgere, e quindi i messaggi vengono controllati (credo includendo un hash del messaggio originale) per verificare che il messaggio sia stato consegnato intatto. Senza di esso, non ci sarebbe alcun modo per verificare che il messaggio ricevuto sia effettivamente passato attraverso il filo intatto e sia quindi un messaggio valido. Questo, inturn, toglierebbe il segreto perfetto poiché ora può essere forzato bruto (con successo della forza bruta valutata facendo corrispondere l'hash all'originale).
Ad esempio, esaminiamo l'esempio nell'articolo nella sezione "Tentativo di crittanalisi" che illustra che l'autore dell'attacco non può sapere se "LATER" è il messaggio originale per una potenziale chiave bruta-forzata "TQURI".
Lascia che una funzione di hash della convalida della trasmissione (a.k.a. decrittografia) sia definita come H = Sum(characters) Mod Count(characters)
, che somma tutti i caratteri del messaggio e quindi la divisione dei moduli per numero di caratteri.
Con tale funzione di hashing, il messaggio originale HELLO
verrebbe codificato con il codice hash (7 + 4 + 11 + 11 + 14) % 5 = 2
. Il destinatario del messaggio prenderebbe quindi un messaggio decrittografato, ricalcolare l'hash sui dati ricevuti e verificare che il risultato sia 2
.
Ora, valutando la potenziale chiave bruta forzata TQURI
, il testo decrittografato è LATER
. Senza il codice hash per convalidare il messaggio, l'intercettore non ha modo di sapere se la chiave TQURI
effettivamente ha funzionato o meno (sicurezza perfetta). Con la chiave hash, l'intercettore può ora convalidare calcolando la chiave hash per LATER
che è (11 + 0 + 19 + 4 + 17) % 5 = 1
. Poiché il codice hash calcolato 1
non corrisponde all'hashcode% del2
del messaggio originale, l'interceptor ora sa che il messaggio originale non è LATER
e la chiave TQURI
non è una chiave valida, quindi continua ad enumerare e brute-force chiavi finché un tasto non produce un codice hash corrispondente (non una sicurezza perfetta a causa dell'abilità bruta-forzante).