Files
cryptoseals/backend/src/main/resources/get/documentazione/DF.md
T
elisabetta 716a081f7a
Deploy / trigger (push) Successful in 39s
Modifiche articoli e css
2026-05-26 11:28:26 +02:00

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 di p.

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 pubblica kpbA e 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 pubblica kpbB e 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 kpbB e calcola la chiave segreta K:

    K = B^a \pmod p
  • Bob riceve kpbA e calcola la chiave segreta K:

    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:

  1. Parametri Pubblici: Scegliamo il numero primo p = 23 e il generatore g = 5.
  2. Alice:
    • Sceglie il segreto privato a = 6.
    • Calcola la chiave pubblica: A = 5^6 \pmod{23} = 15625 \pmod{23} = 8.
    • Invia A = 8 a Bob.
  3. Bob:
    • Sceglie il segreto privato b = 15.
    • Calcola la chiave pubblica: B = 5^{15} \pmod{23} = 19.
    • Invia B = 19 ad Alice.
  4. 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.

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.