Newsgroup: it.comp.sicurezza.crittografia
Titolo: One Time Pad

Ciao a tutti.
Ritorno sulla questione OTP per un paio di appunti che spero possano essere
condivisi da tutti.
La crittografia OTP è, dal punto di vista della teoria matematica, la più
sicura in assoluto. Anzi è dimostrata matematicamente la sua inviolabilità.
Detto questo, qualcuno (Lapo Lucchini) argomenta contro l'utilizzo di questo
sistema per un paio di motivi:
- la chiave deve essere effettivamente casuale (una chiave pseudocasuale
potrebbe compromettere la sicurezza del sistema);
- l'anello debole della catena è l'uomo, per cui è inutile utilizzare un
sistema inattaccabile, ma più complesso da usare rispetto ad altri (e.g. PGP o
GPG): la complessità di utilizzo del sistema potrebbe rendere assolutamente
insicuro il sistema (e.g. mando la chiave per posta).
Spero di aver riassunto chiaramente e correttamente le obiezioni di Lapo: se
così non fosse lo invito a correggermi.
Queste obiezioni sono assolutamente ragionevoli e le condivido in pieno, ma
credo comunque che la crittazione OTP possa essere proficuamente usata, a
patto che chi la usa sia ben cosciente di come farlo: la chiave creata deve
essere casuale e non pseduocasuale; la chiave deve essere scambiata tramite un
canale sicuro (sostanzialmente, a mano)
A sostegno di questa mia affermazione ipotizzo alcuni scenari di utilizzo
della crittografia OTP.
Una società con due sedi nel mondo deve scambiarsi dei dati via internet. I
dati sono di importanza vitale (per puro esempio, potrebbe essere una società
che sta sviluppando una tecnologia medica all'avanguardia, per cui un
ipotetico attaccante potrebbe anche essere un servizio segreto che possiede
tecniche di decrittazione avanzate e a noi sconosciute). Le due sedi si
scambiano costantemnte e-mail contenenti risultati scientifici, mentre ogni
tre mesi il proprietario dell'azienda si reca dalla sede principale a quella
secondaria. In tale situazione si potrebbe pensare di affidare un DVD contente
la chiave al proprietario, che la consegnerà alla sede secondaria durante uno
dei suo viaggi.
Vedo un mio amico ogni anno a Natale. Entrambi siamo paranoici...
Infine, l'esempio più importante: l'utilizzo congiunto alla crittografia
quantistica (che, ricordo, utilizza proprio il sistema OTP).
Ora, dopo questo lungo post, spero aver convinto qualcuno dell'utilità di un
programma di crittazione OTP!
Infatti, qualche settimana fa ho contatto l'autore di un programma di
crittazione OTP, segnalandogli un bug.
L'autore mi ha risposto dicendo che il programma non è più sviluppato da due
anni, ma che se voglio rilascerà il codice sotto licenza aperta (GPL o BSD) in
modo da poterlo mantenere.
Il programma è scritto in C su piattaforma Linux.
Io sono entusiasta, ma non sono qualificato per svilupparlo: sono in grado di
scrivere programmi in C che bene o male funzionano ma non ho nessuna
esperienza di programmazione _sicura_ (buffer overflow etc.). Potrei al
massimo essere un beta-tester.
Se esistono:
- sviluppatori;
- esperti di programmazione sicura per l'audit del codice;
- beta tester;
- esperti in crittografia per analisi e critiche;
interessati a collaborare al mantenimento e allo sviluppo del progetto, mi
possono contattare (dopo aver tolto l'antispam) all'indirizzo email: debian
(punto) potato LEVAMIDAQUI (chiocciola) libero (punto) it
Ciao,
Gio

[MEGACUT]
In merito al tuo contatto volevo chiderti una cosetta, di dove sei ? Se 
è possibile saerlo ;)
-- 
[CapoBecchino]
Cimiteri Associati & Co.
ULTIME OFFERTE !!!!
Muori oggi ed avrai uno sconto del 50% / Muori domani ed avrai una 
sepoltura GRATIS!!!

 la chiave creata deve essere casuale e non pseduocasuale
Su come raccogilere 4.8Gb di entropia se ne discute a parte al limite ;)
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkGh5pUACgkQaJiCLMjyUvvHsACfeNThsP/VLGVw7YfC5KFk0xGD
xrQAn0ThubN1TuqoZJd/Z05tvX2wXIvJ
=y2qH
-----END PGP SIGNATURE-----

 è possibile saerlo ;)
Brescia e provincia di Brescia (non ho il dono dell'ubiquità :) sono
semplicemente un pendolare)...
Ciao,
Gio

 Su come raccogilere 4.8Gb di entropia se ne discute a parte al limite ;)
Già... ho fatto alcune prove con /etc/random e anche "smousando" (atto del
muovere il mouse) da matti i risultati non sono il massimo... Stavo pensando a
quegli "acceleratori crittografici" incorporati su certe schede a cui avevi
accennato in passato.
Ciao,
Gio

 accennato in passato.
VIA C5
VIA ha implementato in questa CPU un generatore di numeri casuali 
realmente random (più AES, SHA1, SHA256 e MD5, se non ricordo male).
In un benchmark, un C5 a 1 GHz faceva AES 15x rispetto ad un Pentium 4 
a 2 GHz (e la CPU usata era del 50%).
Mirco

Da quanto ricordo il One Time Pad era utilizzato tra Mosca e Washington
durante la guerra fredda per le comunicazioni diplomatiche.
Riguardo la chiave secondo me č essenzialmente scorretta l'ipotesi di
scambiarsi manualmente la chiave. Questa deve essere diversa tutte le volte
e se due persone si scambiano la chiave personalmente tanto vale che si
scambino il messaggio :)
Generalmente come chiave si puň usare una sequenza binaria ricavata da un
codice genetico (dna), anche se a livelli non militari anche la sequenza
binaria di un qualunque file abbastanza grosso puň essere sufficiente.

 binaria di un qualunque file abbastanza grosso può essere sufficiente.
Non dipende certo dalla dimensione del file, ma dal suo contenuto e dal
fatto che sia un file "pubblico" è che nessun'altro a part ei due
destinatari lo abbiano.
Quindi, no, sotto nessuna ipotesi va bene un file "qualunque"...
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkHAxv0ACgkQaJiCLMjyUvukhACgsk2oHNVH/1gYs4JNR5YMg6pK
6asAn2xN5FFf/TEoTyWdRxc8qf9nYVW3
=yvHc
-----END PGP SIGNATURE-----

 Quindi, no, sotto nessuna ipotesi va bene un file "qualunque"...
file abbastanza grosso = in grado di generare una chiave suff. lunga (almeno
quanto il testo)
file qualunque = qualunque tipo di file (audio, video, immagine, testuale,
...) da cui ricavare una sequenza
A parte che nessuno ha parlato pubblico. In ogni caso, il fatto che un file
sia pubblico nn significa che sia pubblicamente noto che sia utilizzato come
chiave da x(otp è simmetric key, nn public), nn c'è nessuna etichetta con su
scritto 'chiave di tizio'.

 scritto 'chiave di tizio'.
sì, ma se i file esistenti sono N, allora usaer un file QUALSIASI come
chiave ti permette, al più, una sicurezza di "ln2 N" bit.
Valore che difficilmente supera i 40-50 bit.
Utilizzare un file qualsiasi ti rende, in pratica, meno sicuro che non
usare un bel DES a 56 bit.
Usare AES da 128 bit e sapere a memoria la chiave è sicuramente più
sicuro che usare OTP la cui chiave non sia stata CREATA AD HOC,
masterizzata e messa in cassaforte...
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkHFnx0ACgkQaJiCLMjyUvvGQwCfXYhru3mHma1J7Mhte5PDwL0i
a9sAoJheVausa6Ji0EHXe/PNkeBSSAkM
=TYV2
-----END PGP SIGNATURE-----

ti ripeto che il semplice fatto che un file sia pubblico nn significa che
sia pubblicamente noto che sia la mia chiave. Idem per un capelllo... nn c'è
sopra un'etichetta che ti dice "questa è la mia chiave". Io potrei
tranquillamente usare la sequenza binaria estratta dal codice html di
yahoo.com
. 6 milioni di visitatori unici al giorno senza saperlo avrebbero
la mia chiave. cio nn significa che questi 6 milioni di persone sappiano che
sia effettivamente la mia chiave.
L'one time pad nn è public key. nn puoi partire dal presupposto di sapere
quale file sia la mia chiave, se no tanto vale darti direttamente il
messaggio nn cifrato...
p.s.
esistono banche dati genetiche, nn devi certo metterti tu ad estrarla.
L'esempio del dna era semplicemente riferito al fatto che assicura una
sequenza *unica*, quindi mai uguale (requisito dell'otp).

 sequenza *unica*, quindi mai uguale (requisito dell'otp).
Credo proprio che i requisiti dell'OTP non ti siano molto chiari.
Cosa significa, secondo te "unico"?
Qualcosa che è in un sito non è "unico" per nessuna definizione di unico
che mi venga in mente: come minimo esiste, oltre che nel sito, anche in
un milione di copie di backup/cache di visitatori di quel sito.
Quando poi si parla di "dati" e non di "oggetto" il concetto stesso di
"unicità" mi sfugge abbastanza.
La definizione di OTP non parla di "dato unico", dice semplicemente che:
a. la chiave deve essere lunga quanto il messaggio
b. la chiave non deve essere utilizzata più volte
Poi c'è una terza richiesta, sulla chiave privata, che non è data dalla
definizione dell'OTP ma è valida per tutti gli algortimi a chiave
segreta (quasi, oserei dire, per definizione):
c. la chiave deve essere segreta
Con segreta si intende "non conosciuta dall'attaccante".
Dato che l'attaccante non la consoce, dovrà provare (una alla volta)
tutte le chiavi possibili. Se l'attaccante non è stupido le proverà in
ordine "a partire dalla più probabile".
Per approssimare la "sicurezza" della tua chiave devi quindi calcolare
l'insieme "universo" che l'attaccante può pensare tu abbia usato e fare
il logaritmo in base due dell'inverso di quel numero.
Ad esempio la chiave "ocmgk" può avere una sicurezza "stimata" (dato che
una misura assoluta nno esiste) di 23.50 bit, dato che il più ristretto
insieme che la contiene è quello delle "stringhe alfabetiche di 5
caratteri", che ha cardinalità 11.881.376.
Continuando il ragionamente una "qualsiasi pagina internet", scelta come
chiave, ha una sicurezza di circa 33 bit (come numero di pagine ho usato
la "stima Google", 8.058.044.651 ad oggi).
Come valore assoluto è CERTAMENTE grande (otto miliardi di pagine, un
numero che la nsotra mente NON riesce a concepire), ma come sicurezza
non è certo un gran che.
Ti consiglio un po' di letteratura sull'argomento, ad esempio (ma è
sicruamente un elenco incompleto): [2], [3], [4] o pagina 21 del libro
"Hanbook of applied Cryptography", disponibile in PDF su [5].
Lapo
1. 
http://it.wikipedia.org/wiki/Sicurezza_tramite_segretezza
2. 
http://www.ranum.com/security/computer_security/papers/otp-faq/
3. 
http://en.wikipedia.org/wiki/One-time_pad
4. 
http://www.liceofoscarini.it/studenti/crittografia/critto/vernam.html
5. 
http://www.cacr.math.uwaterloo.ca/hac/about/chap1.pdf
- --
L a p o   L u c h i n i
l a p o @ l a p o . i t
w w w . l a p o . i t /
http://www.megatokyo.it
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.6 (Cygwin)
Comment: Using GnuPG with Thunderbird - 
http://enigmail.mozdev.org
iEYEARECAAYFAkHJy5UACgkQaJiCLMjyUvvp+gCgm6YNvdeYpWgfok0fZdFSlhFo
KxUAnRh0Sla+1Vn4K0oY2Buzguxa6i0y
=mKy2
-----END PGP SIGNATURE-----