"I generatori di pseudo casuali sono veloci ma prevedibili": bene, questo è vero solo in un senso etereo, matematico. In pratica, se il tuo PRNG è crittograficamente sicuro e seminato con una certa casualità di entropia abbastanza grande (128 bit sono sufficienti), allora non sarà prevedibile. Tuttavia, se è coinvolto un PRNG, questo non è vero "One-Time Pad" ma un semplice "stream cipher".
L'OTP è un bel giocattolo teorico ma non ha alcun vantaggio pratico rispetto a un codice di flusso correttamente utilizzato. Per qualche ragione, molte persone hanno fantasie di OTP come la risposta definitiva per il mondo reale, e questo porta a molti progetti sbagliati.
Il principale problema pratico di OTP è che la chiave deve essere grande quanto il messaggio, il che è sconveniente: solitamente usiamo la crittografia per ridurre i problemi ridurre : applichiamo la crittografia per ridurre il problema di garantire la riservatezza di un file da 10 GB al problema di garantire la riservatezza di una chiave da 16 byte, che può essere gestita molto più facilmente (può anche essere ricordata e digitata da un essere umano). Se la chiave è grande quanto i dati, non si è verificata alcuna riduzione. Nel migliore dei casi, OTP può portare un vantaggio basato sul tempo: scambia la chiave in anticipo , quando le condizioni lo consentono, consentendo in seguito la trasmissione sicura. Ecco come funzionava il telefono rosso : nastri pieni di bit casuali scambiati su base settimanale (da speciali piani), in modo che la comunicazione sicura immediata possa essere effettuata in qualsiasi momento senza latenza.
Ovviamente, OTP si basa sul flusso di chiavi per essere segreto . Non ha senso usare i dati pubblici come flusso chiave. L'intera sicurezza di OTP si basa sulla segretezza della chiave.
Tuttavia, un protocollo di scambio di chiavi generico che funziona con un pubblico fonte di dati simile alle "stazioni numeriche".
Funziona così:
- Alice e Bob ascoltano le stazioni numeriche e annotano, a intervalli casuali, alcuni dei numeri e l'"indice" di questi numeri. Ad esempio, Alice ricorda che "171 ° numero era 40, 236 ° numero era 91, 406 ° numero era 38, ..." mentre Bob fa lo stesso con altri numeri scelti a caso nella sequenza pubblica.
- Alla fine della giornata, Alice invia a Bob l'elenco degli indici che ha ricordato ("Ho numeri 171, 236, 406 ...") e Bob risponde con la sua lista di indici. Con alta probabilità, hanno alcuni indici in comune, quindi useranno i numeri corrispondenti come chiave condivisa.
Un intercettatore, tuttavia, dovrebbe ricordare tutti , o almeno la maggior parte dei numeri, al fine di ricordare anche gli stessi numeri. Se la "stazione numerica" è sufficientemente veloce (ad esempio, emette 1 terabyte di dati al secondo e Alice e Bob raccolgono numeri scelti casualmente durante un giorno intero), allora il requisito di archiviazione per l'attaccante può diventare proibitivo.
Il protocollo Cachin-Maurer è un ottimo esempio di algoritmo crittografico teoricamente sicuro ma grossolanamente impraticabile. Proprio come OTP.