| LA
CRITTAZIONE A CHIAVE PUBBLICA
Il problema cruciale per la moderna crittografia risiede nella chiave che deve essere modificata e trasmessa assai spesso al fine di proteggere la comunicazione da possibili spie. La cosidetta crittazione a chiave pubblica risolve il problema con due principali procedimenti i quali, come vedremo, si basano sulla funzione resto o modulo che è sostanzialmente unidirezionale.Mi spiego. La funzione modulo fornisce z il quale è il resto di x diviso per y, e si scrive così z = (x mod y)
Questo risultato è facilmente ottenibile, mentre la funzione
che opera nella direzione inversa,
cioè
procura il valore x partendo da
z
e da y, è di fatto irrealizzabile, specie se i numeri in gioco hanno centinaia di
cifre.
Nel 1976, due giovani americani Whitefield Diffie e Martin Hellman
trovarono che si può creare una chiave Facciamo il caso di Alice e Bruno che pubblicamente notificano di lavorare con il numero primo p e l'intero n (1<n<p). Essi procedono nel modo seguente. Alice sceglie il proprio numero segreto a e calcola A=(na mod p). Contemporaneamente Bruno sceglie b, anche questo segreto, e calcola B=(nb mod p). Alice e Bruno si scambiano i risultati. Infine Alice calcola (Bamod p) e Bruno calcola (Abmod p) che danno lo stesso valore, infatti: (Bamod p) = [(na)bmod p] = [(nb)amod p] =(Abmod p) = k I due hanno in mano la chiave segreta k che non è stata trasmessa da nessuno e quindi è assai sicura. Dopo aver intercettato nella rete n e p, e poi A e B, nessuno può trovare k senza conoscere a oppure b. Come esempio numerico supponiamo che in privato Alice scelga a=3 e Bruno b=6. I valori n e p sono rispettivamente 7 ed 11 e pubblicamente noti. Alice calcola 73= 343 che diviso per 11 da 2. Bruno invece calcola 76=117649 che diviso per 11 da come resto 4. I due interlocutori si scambiano i risultati. Alice prende il numero 4 appena ricevuto e calcola 43=64 che diviso per 11 da 9. Bruno calcola 26=64 il quale diviso per 11 da 9. Entrambi ottengono k=9 che adottano come chiave segreta. Ronald Rivest, Adi Shamir e Leonard Adleman nel
L'algoritmo RSA vuole che il messaggio scambiato
sia trattato come un numero, ma questo non è affatto un problema
perché qualsiasi testo, suono e immagine è formato da una stringa di bit.
Per vedere come funziona, facciamo il caso di un venditore in Internet che
stabilisce una chiave formata da
due grandi numeri naturali: N, E, che spedisce pubblicamente all'acquirente.
Questo tratta il proprio messaggio (ad esempio un ordine di acquisto) come
numero binario M e calcola ME, divide il risultato per N ed
infine trova il resto C che spedisce
in modo pubblico al venditore. D=[ Quindi eleva C alla D, lo divide per N ed ottiene il
resto: questo resto è il messaggio originale M
! Facciamo un esempio numerico ovviamente in base decimale. Supponiamo
che quello che scrive l'acquirente corrisponda al
numero 33 C=(33 e lo spedisce al
venditore il quale sa che N è il prodotto dei numeri primi p=73 e q= (73 *151) = 10023 = N Soltanto lui conosce questi valori e calcola: (73 Quindi trova: D=( Con questo risultato arriva a ricostruire il valore vero che
l'acquirente gli ha inviato grazie alla formula finale: M=(CD mod N)=
|