Sei sulla pagina 1di 2

- LALGORITMO DIFFIE-HELLMAN

Lutilizzo di una sola chiave per effettuare una trasmissione dati necessita un discreto
livello di sicurezza e affidabilit per far in modo che fonti esterne non possano accedere
alla comunicazione.
Per svolgere questo compito lutilizzo di una chiave singola pu essere rischioso, dato che
pi utenti ne saranno a conoscenza.
Quindi dobbiamo distinguere due fasi e di conseguenza due chiavi:

Key_T: La chiave di chi trasmette e quindi nella fase di criptazione


Key_R: La chiave di chi riceve il messaggio e quindi la fase di decriptazione

Il punto focale di questa tecnica riuscire a rendere impossibile, o almeno rendere


indispensabile una quantit di tempo molto elevata per riuscirci, risalire alla chiave Key_R
partendo da Key_T.
Se questo scopo si raggiunge sar possibile rendere pubblica questultima chiave, di
modo che il mittente la utilizzi per crittografare il proprio messaggio in uscita e il
destinatario inserir la propria Key_R, contenente informazioni riguardanti il mittente e la
sua chiave, per poi decifrare e leggere il messaggio in chiaro in modo corretto.
Un possibile algoritmo per rendere efficace questo metodo stato realizzato al MIT
(Massachusetts Institute of Technology) da Whitfield Diffie e Martin Hellman.
il meccanismo basato su una funzione chiamata discrete-log trapdoor.
Il sistema utilizza due numeri primi molto grandi, superiore alle 100 cifre che rendono quindi
impossibile risalire a loro in un tempo ragionevole e utile.
Per semplicit qui riportato un esempio con due numeri molto bassi:

A e B sono due numeri primi che valgono rispettivamente 3 e 11.

A=3
B = 11

G un numero che viene calcolato moltiplicando in due primi: G = A*B = 33


H un numero dato dalla formula: (A-1)(B-1) = 2*10 = 20

Abbiamo inoltre le due chiavi, una pubblica e una privata KeyR e KeyT.
Dobbiamo far in modo che valga la seguente regola: (KeyR*KeyT) mod H = 1

Poniamo ad esempio che le due chiavi valgano:

KeyR = 3
KeyT = 7

Per criptare un testo in trasmissione dovremo utilizzare la regola: T = (R exp KeyT) mod G
T = testo criptato
R = testo in chiaro
Un'altra regola da rispettare 2 exp N > G, dove N il numero di divisione di bit, ad
esempio: se N = 6 i bit verranno divisi in gruppi da 6.
Se trasmettiamo il messaggio M = ABC, in ASCII corrisponderebbe a 65 - 66 - 67

A = 01000001
B = 01000010
C = 01000011

Avendo N = 6 avremmo i bit suddivisi in questo modo: 010000 - 010100 - 001001 - 000011
Riportandoli in decimale otterremo: 16 - 20 - 9 - 3
Per trasmetterli dobbiamo criptarli usando la regola sopracitata: T = (M exp KeyT) mod G

Cos otterremo: (16 Exp 7) Mod 33, (20 Exp 7) Mod 33, (9 Exp 7) Mod 33, (3 Exp 7) Mod 33
Cio : 268435456 Mod 33, 1280000000 Mod 33, 4782969 Mod 33, 2187 Mod 33

In questo modo trasmetteremo: 25 - 26 - 16 - 9

In ricezione dovremo utilizare la seguente formula: R=(T Exp KEYR) Mod G


Applichiamo la regola: (25 Exp 3) Mod 33, (26 Exp 3) Mod 33, (15 Exp 3) Mod 33, (9 Exp 3)
Mod 33
Risultato Messaggio decodificato R= 16 - 20 - 9 - 3
Che esattamente lo stesso messaggio inviato che se ricostruito risulter ABC.