3.3 KiB
L'Algoritmo Diffie And Hellman
La crittografia simmetrica come sappiamo aveva un enorme problema: lo scambio sicuro della chiave simmetrica
Questo problema, apparentemente impossibile, è stato risolto nel 1976 da Whitfield Diffie e Martin Hellman grazie al loro rivoluzionario Protocollo di scambio delle chiavi Diffie-Hellman.
La Base del Funzionamento: il Logaritmo Discreto
Nel caso di Diffie-Hellman come funzione si usa l'elevamento a potenza in aritmetica modulare.
L'operazione matematica unidirezionale alla base di Diffie-Hellman è la seguente: dati un numero base g, un esponente x e un modulo primo p, è molto facile calcolare:
Y = g^x \pmod p
Tuttavia, se conosciamo solo Y, g e p, trovare l'esponente x è un problema computazionalmente complesso quando i numeri sono molto elevati. Questo problema prende il nome di Problema del Logaritmo Discreto.
Il Funzionamento dell'Algoritmo
Vediamo come si svolge lo scambio numerico tra Alice e Bob.
1 - Scelta di p e r
Vengono scelti due numeri noti a entrambi gli utenti:
p: Un numero primo elevato e crittograficamente sicuro.g: Un intero chiamato generatore (o base), che è una radice primitiva dip.
2 - Calcolo della chiavi dell'utente 1 (Alice)
-
L'utente Alice sceglie un numero intero segreto
a(la sua chiave privata) e poi calcola la sua chiave pubblicakpbAe la invia a Bob:kpb = g^a \pmod p -
L'utente Bob riceve i dati e sceglie un numero intero segreto
b(la sua chiave privata). Poi calcola la sua chiave pubblicakpbBe la invia ad Alice:kpb = g^b \pmod p
Calcolo della chiave condivisa
Ciascuno dei due unisce la chiave pubblica ricevuta con la propria chiave privata.
-
Alice riceve
kpbBe calcola la chiave segretaK:K = B^a \pmod p -
Bob riceve
kpbAe calcola la chiave segretaK:K = A^b \pmod p
Dimostrazione dell'uguaglianza delle chiavi
Sostituiamo le definizioni di A e B nelle formule del segreto condiviso:
- Per Alice:
K = B^a \pmod p = (g^b)^a \pmod p = g^{ba} \pmod p - Per Bob:
K = A^b \pmod p = (g^a)^b \pmod p = g^{ab} \pmod p
Poiché nell'esponente la proprietà commutativa della moltiplicazione è valida (ab = ba), ne consegue che:
g^{ab} \pmod p = g^{ba} \pmod p
Alice e Bob hanno calcolato lo stesso identico numero K. Questo numero verrà ora utilizzato come chiave simmetrica per cifrare il resto della loro sessione di comunicazione.
Esempio Didattico con Valori Ristretti
Proviamo il protocollo con cifre contenute:
- Parametri Pubblici: Scegliamo il numero primo
p = 23e il generatoreg = 5. - Alice:
- Sceglie il segreto privato
a = 6. - Calcola la chiave pubblica:
A = 5^6 \pmod{23} = 15625 \pmod{23} = 8. - Invia
A = 8a Bob.
- Sceglie il segreto privato
- Bob:
- Sceglie il segreto privato
b = 15. - Calcola la chiave pubblica:
B = 5^{15} \pmod{23} = 19. - Invia
B = 19ad Alice.
- Sceglie il segreto privato
- Calcolo della chiave comune
K:- Alice calcola:
K = B^a \pmod{23} = 19^6 \pmod{23} = 2. - Bob calcola:
K = A^b \pmod{23} = 8^{15} \pmod{23} = 2.
- Alice calcola:
Entrambi hanno ottenuto autonomamente il numero 2. Un malintenzionato che ha ascoltato la conversazione conosce solo p=23, g=5, A=8, B=19, ma senza risolvere il logaritmo discreto non può risalire al valore 2.