One-time pad

Joseph Mauborgne propose un miglioramento al cifrario di Vernam, suggerì di utilizzare una chiave randomica che fosse lunga quanto il messaggio, così che la chiave non si dovesse ripetere. In più, la chiave era usata per crittare/decrittare un solo messaggio, poi veniva distrutta. Ogni nuovo messaggio richiede una nuova chiave. One-time pad non è vulnerabile a nessun attacco. OTP produce un output randomico che genera un testo cifrato che non ha alcun dipendenza statistica con il testo in chiaro.
Un esempio: supponiamo che stiamo usando uno schema di Vigenère con 27 caratteri in cui il 27-esimo carattere è lo spazio, ma con una one-time key che è lunga quanto il messaggio.

ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIURFPLUYTS

Ecco due modi diversi di decrittare la frase con due chiavi diverse:

Ciphertext:ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIURFPLUYTS
Key:pxlmvmsydofuyrvzwc tnlebnecvgdupahfzzlmnyih
Plaintext:mr mustard with the candlestick in the hall
Ciphertext:ANKYODKYUREPFJBYOJDSPLREYIUNOFDOIURFPLUYTS
Key:pftgpmiydgaxgoufhklllmhsqdqogtewbqfgyovuhwt
Plaintext:miss scarlet with the knife in the library

Come fa il cripto-analista a decidere qual è la chiave giusta?
Non c'è nessun modo.

One-time-pad presenta alcune difficoltà:

  1. C'è il problema pratico di generare una grossa quantità di chiavi randomiche
  2. L'altro problema è la distribuzione di tali chiavi. Per ogni messaggio inviato una chiave della stessa lunghezza è necessaria sia dal mittente che dal destinatario.