Modifiche articoli e css
Deploy / trigger (push) Successful in 39s

This commit is contained in:
2026-05-26 11:28:26 +02:00
parent 2552d25980
commit 716a081f7a
12 changed files with 358 additions and 53 deletions
@@ -0,0 +1,77 @@
# 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.
---