Mentre le risposte sopra sono per lo più corrette, ci sono delle eccezioni. Come accennato, il One Time Pad è irriconoscibile, se usato correttamente (testo completamente randomizzato in pad, nessun pad riutilizzato, pad distrutti dopo l'uso e mantenuto al 100% sicuro in ogni momento).
Quando qualcuno dice che l'OTP è stato rotto, leggi la stampa fine e troverai un problema di sicurezza fisica (il pad non è stato distrutto o è stato recuperato fisicamente).
La sicurezza fisica (distribuzione, salvaguardia del pad) è sicuramente l'anello debole dello schema.
Ma ci sono modi per creare un pad OTP. Anche se l'opposizione conosce il metodo generale, se non conosce gli specifici input per quel metodo (di fare l'OTP), potrebbe non essere incrinato.
Ecco un metodo che ho trovato--
1. Due sorgenti di testo in chiaro non correlate vengono codificate (TRANSPOSITION) l'una contro l'altra per derivare il pad OTP. Probabilmente sarebbe relativamente facile comunicare queste fonti, come sarebbero i titoli di libri, EULA di programmi, discorsi, articoli, ecc. Innocentemente in una conversazione. Ricorda, queste fonti possono essere utilizzate una sola volta.
2. Quindi, uno ad uno, AGGIUNGA il valore numerico di ciascun carattere del testo libero (A = 1, B = 2, ecc.) Sul valore numerico di ciascun carattere nel pad, MOD 26, quindi converti il numero in una lettera. Questo porta a SOSTITUZIONE.
Potresti fermarti lì ed è stato crittografato. Ma l'analisi della frequenza probabilmente rivelerà ancora la lingua. Per evitare questa possibilità, aggiungo un terzo passaggio:
3. Contare l'occorrenza di ogni lettera dell'alfabeto all'interno del testo crittografato. Prendi il numero più grande e calcola quante lettere devi inserire nel testo per renderlo 'omofonico' (frequenza neutra). Inietta queste lettere in eccesso in base a un modello impostato, che realizza OBFUSCATION.
Per decifrare, prima vengono estratte le lettere omofoniche (quindi anche il destinatario deve conoscere questo modello). Quindi il pad deve essere costruito, come al punto # 1. Quindi, SOTTRAI valore numerico di ogni personaggio dal valore numerico di ciascun carattere nel pad, ignora qualsiasi segno '-' e converti in lettere. Voila.
(Nota: ci sono vari modi per eseguire il passo di trasposizione (n. 1). Potresti usare Viginere, Rail Fence o qualche altro metodo di trasposizione, ma il metodo che ho trovato è guardare la tua lettera nel il primo testo, trova dove si trova nel secondo testo, poi trova di nuovo il carattere in quella posizione nel primo testo .Questa è la tua lettera. Ci sono molti altri modi per farlo anche questo.)
La trasposizione da sola è orribile. Quindi è la sostituzione. Ma se si usa la trasposizione per eseguire la sostituzione, e quindi renderla neutra alla frequenza con l'iniezione omofonica, anche un computer quantistico non potrebbe craccarlo. --Gordon