Il messaggio di solito rappresenta una chiave di cifratura simmetrica utilizzata per la cifratura e decifratura del vero contenuto che si vuole trasmettere tra i due soggetti comunicanti.
Il Diffie-Hellman key exchange nasce nell’anno 1976 e, seppur non permettendo la formazione di un canale sicuro, consente lo scambio, in totale sicurezza, di una chiave segreta comune.
Jim e Sandra – per originalità rispetto agli ormai convenzionali Bob e Alice – vogliono scambiarsi un messaggio criptato, come possono fare? Vediamo più nel dettaglio la questione scambio Diffie-Hellman e sicurezza, al fine di poter rispondere a tale interrogativo.
Scambio Diffie-Hellman: come funziona?
Per prima cosa, Jim e Sandra dovranno condividere due numeri “a” e “p”, i quali rappresenteranno il punto di inizio di tutto il processo. Mentre il numero “p” dovrà essere un numero primo molto grande deciso in modo del tutto casuale, il numero “a” dovrà essere deciso in modo che sia una radice primitiva del numero primo “p” e corrisponda ad una permutazione dei numeri compresi tra 0 e (“p”-1).
Dopo aver condiviso i numeri “a” e “p”, Jim e Sandra potranno avviare l’algoritmo al fine di condividere la chiave segreta comune “K”, la quale non potrà essere aprioristicamente conosciuta.
L’algoritmo D.H., quindi, semplifica tutto il processo di scambio chiavi, permettendo ad ogni parte di formare una componente pubblica della chiave, che potrà essere trasferita all’altro corrispondente con facilità. Inoltre, ogni partecipante, dovrà creare due componenti distinte chiamate (X chiamata chiave privata e Y chiamata chiave pubblica) della chiave comune, con conseguente scambio di Y.
Sandra (pedice A) avrà le seguenti funzioni:
- condividere i numeri “a” e “p” con Jim;
- scegliere Xa, inferiore a “p”;
- calcolare Ya = A(Xa) mod “p”;
- mantenere segreta Xa, ma inviare a Jim la componente Ya.
Jim (pedice B), invece, dovrà:
- condividere i numeri “a” e “p” con Sandra;
- scegliere Xb, inferiore a “p”;
- calcolare Yb = A(Xb) mod “p”;
- mantenere segreta Xb, ma inviare a Sandra la componente Yb.
La chiave comune, denominata Kc, potrà essere calcolata indipendentemente da Jim e Sandra, semplicemente ponendo in essere le seguenti operazioni, le quali condurranno al medesimo risultato:
- Sandra calcola Kc= Yb (Xa) mod “p”;
- Jim calcola Kc=Ya (Xb) mod “p”.
Pertanto, i partecipanti potranno creare la chiave comune Kc senza delegare la formazione nè a Jim nè a Sandra. Diversamente, un hacker, il quale sarà sprovvisto delle chiavi private Xa e Xb non avrà modo di ricavare la chiave comune Kc.
Le debolezze dell’algoritmo Diffie-Hellman
L’unica grande debolezza dello scambio D.H. è l’assenza di una autenticazione. Tale aspetto pone Jim e Sandra nella condizione di essere ingannati facilmente da un hacker in posizione c.d. Man-in-the-middle, in grado di modificare e intercettare le componenti pubbliche scambiate.
Senza autenticazione della componente pubblica, quindi, Jim e Sandra potrebbero erroneamente credere di aver scambiato la chiave comune Kc, quando invece hanno partecipato inconsapevolmente ad uno scambio con l’hacker.
Tuttavia, tramite implementazione dell’algoritmo D.F. è possibile evitare l’attacco.