Web Analytics
Privacy Policy Cookie Policy Terms and Conditions Cifrario di Vernam - Wikipedia

Cifrario di Vernam

Da Wikipedia, l'enciclopedia libera.

Esempio di cifrario di Vernam
Ingrandisci
Esempio di cifrario di Vernam

Il cifrario di Vernam è un sistema crittografico basato sul cifrario di Vigénère, al quale aggiunge il requisito che la chiave sia lunga quanto il testo e non riutilizzabile (per questo viene spesso chiamato OTP, acronimo per l'inglese "One Time Pad", letteralmente "blocco monouso", cfr. immagine). Il cifrario di Vernam è l'unico sistema crittografico la cui sicurezza è comprovata da una dimostrazione matematica.

Si può facilmente capire quanto sia scomodo distribuire in modo sicuro chiavi di tale dimensione, ciò nonostante è stato utilizzato per le comunicazioni con le spie, che venivano equipaggiati di taccuini ("pad" in inglese) contenenti una lunga chiave per ogni pagina, da poter strappare una volta utilizzata ("one time", ovvero "un solo uso").

La sua forma più classica è quella dove la chiave ha la stessa forma del testo (a ogni lettera viene associato il numero corrispondente A=0 B=1 C=2) e che sfrutta l'operazione di somma circolare (quella per cui dopo la lettera Z c'è di nuovo la lettera A, quindi A+C=0+2=2=C, B+C=1+2=3=D, Z+C=25+2=27=1=B, Z+Z=25+25=50=24=Y).

Testo in chiaro: C I A O
Chiave:          A J R F
------------------------
Testo cifrato:   C R R T

È importante ribadire che questo tipo di chiave deve essere lunga quanto il messaggio che cifra e può essere utilizzata una sola volta, pena la perdita della validità delle ipotesi iniziali e la riduzione da sistema "inattaccabile" a sistema "facilmente attaccabile" dal metodo Kasiski, una specializzazione del metodo crittanalitico di analisi delle frequenze.

[modifica] L'apice della tecnica OTP

Probabilmente l'apice del modello di crittazione a chiave infinita, è stato raggiunto durante la guerra fredda. Il sistema si basava su di un cifrario di parole rappresentato da cifre a 4 numeri, accorpate poi in gruppi di cinque cifre e sommate ad un numero casuale. Se l’ultimo gruppo di accorpamento a cinque cifre non è completo (cioè a meno di 5 cifre), la sequenza doveva essere completata a destra con degli zeri (es. 123 => 12300).

Es 1. Cifrario
1024 = cane, 1056 = gatto, 2345 = lavoro, (spazio bianco) = 3000, . = 4000, etc..

Il cifrario era a disposizione sia del ricevente che del mittente, così come la sequenza dei numeri casuali utilizzati (che venivano tabulati su pagine numerate e il primo gruppo di cifre del codice cifrato trasmesso rappresentava proprio i numeri di pagine e dunque la sequenza dei numeri casuali). In tutto il processo è fondamentale, come detto, utilizzare una ed una sola volta una data sequenza di numeri casuali per cifrare i messaggi .

Es. del meccanismo di accorpamento da 4 a 5 cifre
1) partiamo dalla frase “cane gatto lavoro .”
2) trasformiamo la frase attraverso il cifrario 10241056234530004000
3) accorpiamo le cifre in gruppi di 5: 10241 05623 45300 04000

La sequenza dei numeri casuali utilizzata andrà sommata ai gruppi di 5 cifre precedentemente preparati partendo dal cifrario.

Es. Ipotizziamo di avere la sequenza di numeri casuali : 45693, 89765, 77746, 93486

Riprendendo la sequenza dell’esempio precedente facciamo la somma dei numeri senza riporto:

Derivato da cifrario            10241 05623 45300 04000
Numeri casuali                  45693 89765 77746 93486
Risultato (somma senza riporto) 55834 84388 12046 97486

A questo punto il codice è cifrato, ma i sovietici fecero un passo ulteriore con il solo scopo di facilitarne la trasmissione via telefax, ovvero associarono una lettera ai numeri da 0 a 9. Dunque la forma finale del messaggio era una sequenza di gruppi di 5 lettere. Questo meccanismo è a tutt’oggi indecifrabile. In moltissimi anni di ricerca (all’incirca 20 - progetto Venona) gli americani riuscirono a decifrare solo una minima parte dei messaggi registrati (sino all'apertura degli archivi del Cremlino) e solo perché i mittenti utilizzarono per più di una volta le sequenze di numeri casuali, o perché sequenze delle stesse furono sequestrate a spie arrestate.

I sovietici erano talmente sicuri di questo sistema (effettivamente indecifrabile) che trasmisero i messaggi “in chiaro”, ovvero senza sovracifrature. E’ proprio attraverso queste trasmissioni che i segreti della bomba atomica filtrarono dall’Ovest all’Est. La decifrazione del messaggio è semplicissima e si fonda sul processo inverso a quello sin qui presentato. Ovvero si devono sottrarre i numeri cifrati alla sequenza casuale di numeri utilizzati nella cifratura e nel caso la sottrazione dia un valore negativo bisogna sommare il valore 10. Infine bisogna riaggregare le cifre in gruppi di 4 per poi utilizzare il cifrario per identificare la parola.

Es. Utilizziamo la cifratura della frase inizialmente proposta e la relativa sequenza di numeri casuali. Trattiamo singolarmente, come esempio, un paio di cifre.

Numero di cifratura                            5 5 8  3 4
Numero casuale                                 4 5 6  9 3
Primo Risultato Sottrazione                    1 0 2 -6 1
Eventuale somma di 10 per valori negativi             4
Risultato finale                               1 0 2  4 1
Numero di cifratura                            1  2  0 4 6
Numero casuale                                 7  7  7 4 6
Primo Risultato Sottrazione                   -6 -5 -7 0 0
Eventuale somma di 10 per valori negativi      4  5  3
Risultato finale                               4  5  3 0 0

Infine otteniamo di nuovo “10241056234530004000”, che suddiviso in gruppi di 4 cifre diventa 1024 1056 2345 3000 4000. Dal cifrario si riottiene la frase completa. Per il meccanismo di riempimento di zeri a destra di cui abbiamo parlato in precedenza (123 => 12300), nel riaccorpamento a 4 cifre potrebbe capitare di avere una serie di zeri come ultima cifra. Si intende che questa va semplicemente ignorata.

[modifica] Collegamenti esterni

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu