23.3.4 Protocollo Diffie-Hellman

Il protocollo Diffie-Hellman (dal nome degli autori) è utilizzato per lo scambio di chiavi simmetriche attraverso un canale insicuro. Si basa sulle seguenti considerazioni: siano p un numero primo e g un numero intero (generatore) tale che g < p e  A n  (- [1,p - 1]  E z  (- N : n = gz modp. Tali valori sono conosciuti da chiunque (pubblici). Sia V = {1,...,p - 2}< N.

Si supponga che due persone A e B vogliano scambiarsi un messaggio in maniera sicura su un canale inscuro. Secondo il protocollo Diffie-Hellman, A sceglie un numero as  (- V (valore privato) con il quale genera un valore pubblico

     as
ap = g mod p

In maniera analoga, B sceglie un numero bs  (- V (valore privato) con il quale genera un valore pubblico

     bs
bp = g mod p

Quindi A e B si scambiano i relativi valori pubblici ap e bp. In questo modo A può calcolare

bas= gasbs mod p = k
 p

e B può calcolare

abs= gasbs mod p = k
 p

ovvero entrambi sono in grado di ricavare la chiave comune k.


pict
Figura 23.4: Schematizzazione della comunicazione col protocollo Diffie-Hellman.

La sicurezza dipende dal fatto che è computazionalmente complesso calcolare k = gasbs modp dati i valori pubblici ap = gas modp e bp = gbs modp, se p è un numero primo sufficientemente grande (Maurer ha dimostrato che rompere la cifratura Diffie-Hellman equivale al calcolo dei logaritmi discreti6).

Il protocollo di scambio di chiavi Diffie-Hellman è vulnerabile ad attacchi di tipo man-in-the-middle. Infatti, si supponga che C intercetti il valore pubblico di A, ap ed invii a B il suo valore pubblico cp in modo che B creda che sia ap. Allo stesso modo, se C intercetta il valore pubblico di B, bp, inoltra ad A il suo valore pubblico cp in modo che A creda che sia bp. In questo modo A e C si scambiano una chiave e C e B se ne scambiano un’altra e C può decifrare i messaggi che A crede di inviare a B (e magare inoltrarli a B cifrati con la chiave scambiata con B) ed i messaggi che B crede di inviare ad A (e magare inoltrarli ad A cifrati con la chiave scambiata con A). Il protocollo Diffie-Hellman di base non fornisce nessun meccanismo di autenticazione dei partecipanti.

Esiste anche una versione modificata del protocollo, detta authenticated Diffie-Hellman key agreement protocol o protocollo STS (Station-to-Station), sviluppato da W. Diffie, P. Van Oorschot e M. Wiener nel 1992 ed utilizza la firma digitale ed i certificati digitali. Prima di eseguire lo scambio di chiavi con il protocollo precedentemente descritto, A e B sono ognuno in possesso di una coppia di chiavi (pubbica/privata) ed un certificato digitale relativo alla chiave pubbilca. Durante lo scambio, A esegue una firma dei messaggi inviati che contengono la sua chiave pubblica ap e lo stesso fa B. In questo modo anche se C riceve i messaggi di A e B non è in grado di firmarli a nome degli altri, quindi se li modifica, A e B si accorgono che i messaggi che ricevono non corrispondono a quelli inviati dal mittente.

[da completare ...]