linux user group brescia

immagine del castello

Archivio della mailing list

One Time Pad

giorusconi a libero.it giorusconi a libero.it
Sab 4 Dic 2004 18:05:37 UTC
Il Mon, 29 Nov 2004 12:26:45 +0100
marco ghidinelli <marcogh a linux.it> ha scritto:

> > - la chiave deve essere casuale e non solo pseudo-casuale - Verissimo:
> > questo punto è spesso trascurato, ma è importantissimo;
> 
> perche' questa? una chiave pseudocasuale e' anche una chiave casuale
> valida. perche' importantissimo?

Nell'OTP, la chiave deve essere indistinguibile dal "rumore di fondo"; in
altre parole nella chiave non deve essere presente nessuna "struttura". Una
chiave pseudo-casuale possiede una sua struttura. Certo, tutto funziona lo
stesso anche con una chiave pseudo-casuale, ma bisogna porsi la domanda: cosa
farebbe un attaccante di fronte ad un messaggio OTP? Poichè non è possibile
attaccare l'algoritmo, l'unica possibilità è attaccare la chiave.
Linux ha due comodissimi "device": /dev/urandom e /dev/random.
Il primo produce in output (basta un cat) un flusso di dati pseudo-casuali,
mentre il secondo un flusso di dati casuali. Come fa random a dare dei dati
casuali? Mentre noi lavoriamo raccoglie entropia dal sisteme e in base a
questa genera dei numeri casuali. Il problema di /dev/random è che produce
pochi byte casuali (in sostanza, fino a che non raccoglie abbastanza entropia
non può generare i numeri casuali), mentre /dev/urandom produce tutti i byte
che si vuole.
Tornando al problema del perchè la chiave deve essere casuale, riporto qui di
seguito un estratto di man /dev/random, che chiarisce molto la cosa:

       The random number generator  gathers  environmental  noise
       from  device  drivers  and  other  sources into an entropy
       pool.  The generator also keeps an estimate of the  number
       of  bits  of noise in the entropy pool.  From this entropy
       pool random numbers are created.

       When read, the /dev/random device will only return  random
       bytes  within the estimated number of bits of noise in the
       entropy pool.  /dev/random should  be  suitable  for  uses
       that  need  very  high quality randomness such as one-time
       pad or key generation.  When the entropy  pool  is  empty,
       reads  from  /dev/random will block until additional envi­
       ronmental noise is gathered.

       When read, /dev/urandom device will return as  many  bytes
       as are requested.  As a result, if there is not sufficient
       entropy in the entropy pool, the returned values are theo­
       retically  vulnerable  to  a  cryptographic  attack on the
       algorithms used by the driver.  Knowledge  of  how  to  do
       this is not available in the current non-classified liter­
       ature, but it  is  theoretically  possible  that  such  an
       attack  may  exist.  If this is a concern in your applica­
       tion, use /dev/random instead.

 
> > - la cifratura OTP attualmente non gode di grande fortuna - Vero:
> > ultimamente si parla molto di più di cifratura asimmetrica (e.g. GPG);
> 
> infatti, se per mandare un messaggio sicuro devi innanzitutto mandare la
> chiave a quel punto la cifratura simmetrica non ti risolve nulla.

Dipende dagli scenari di utilizzo.
Se si ha la necessità della certezza assoluta dei messaggi, si può anche
essere disposti a pagare una persona fidata per portare dei DVD con la
chiave(4,7 GB  bastano per migliaia di mail).
Se un domani i computer quantici divenissero comuni (e magari sono *già*
comuni alla NSA), l'unica soluzione sarebbe l'OTP.
E poi non dimentichiamoci che la crittografia quantistica (che nulla ha a che
vedere con in computer quantici) sfrutta sì i quanti nella prima fase, ma
nella seconda usa proprio l'OTP.

Ciao,
Gio




Maggiori informazioni sulla lista Lug