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,101 @@
# L'Algoritmo RSA
L'algoritmo RSA è Il primo algoritmo che soddisfa i requisiti della chiave pubblica è stato messo a punto solo nel 1977 da Ron Rivest, Adli Shamir e Leonard Adlemann, ed è noto, dalle iniziali degli autori, come algoritmo RSA.
Ancora oggi è uno dei più utilizzati in tutto il mondo
## La Base dell'Algoritmo: La Fattorizzazione di Interi
La sicurezza di RSA poggia su un concetto matematico noto come **funzione unidirezionale a botola (trapdoor function)**.
Si tratta di un'operazione estremamente facile da eseguire in un senso, ma quasi impossibile da invertire, a meno che non si possieda un'informazione aggiuntiva (la "botola").
* La funzione di complessità “polinomiale” è la **moltiplicazione di due numeri primi p e q molto grandi**;
Poichè noti p e q, il prodotto n = pq si calcola immediatamente.
* La funzione inversa, di complessità "esponenziale", è la **fattorizzazione**;
Se un numero n è il prodotto di due numeri primi “grandi”, la sua fattorizzazione richiede di norma tempi superiori alletà delluniverso. Infatti non si conoscono a tuttoggi (e c’è ragione di ritenere che non si conosceranno mai), algoritmi efficienti di fattorizzazione.
### Esempio pratico
Dati due numeri primi:
$$p = 61 \quad \text{e} \quad q = 53$$
Calcolare il loro prodotto $n$ è un gioco da ragazzi:
$$n = p \times q = 61 \times 53 = 3233$$
Ma se ti dessi direttamente $n = 3233$ e ti chiedessi di trovare i due fattori primi originali $p$ e $q$, ci vorrebbe molto più tempo.
Nella realtà, RSA utilizza numeri primi lunghi migliaia di cifre: un supercomputer impiegherebbe miliardi di anni per trovare i fattori primi partendo da $n$.
---
## Generazione delle Chiavi
Vediamo come un utente (per convenzione Alice) genera la sua coppia di chiavi.
### 1 - Scelta dei numeri primi p e q
Vengono scelti due numeri primi casuali, crittograficamente sicuri e particolarmente grandi, $p$ e $q$.
### 2 - Calcolo del modulo n
Viene calcolato il loro prodotto:
$$n = p \times q$$
Il numero $n$ sarà la lunghezza del nostro "orologio" nell'aritmetica modulare e farà parte della chiave pubblica.
### 3 - Calcolo della funzione Toziente di Eulero phi
Si calcola la funzione $\phi(n)$ (phi di Eulero), che indica quanti numeri interi minori di $n$ sono coprimi con $n$:
$$\phi(n) = (p - 1) \times (q - 1)$$
### 4 - Scelta dell'esponente pubblico e
Viene scelto un intero $e$ (esponente di cifratura) tale che:
* $1 < e < \phi(n)$
* $e$ e $\phi(n)$ siano coprimi (cioè il loro Massimo Comune Divisore sia 1).
*Nota: Nella pratica comune si usa spesso il numero $e = 65537$ perché rende i calcoli veloci.*
### 5 - Calcolo dell'esponente privato d
Alice calcola l'esponente di decifratura $d$ (la chiave privata). Questo numero è l'inverso moltiplicativo di $e$ modulo $\phi(n)$. Significa che deve soddisfare la seguente formula:
$$d \times e \equiv 1 \pmod{\phi(n)}$$
### 6 - Il Mazzo di Chiavi
A questo punto è stato generato un mazzo di chiavi composto da due coppie di numeri:
* **Chiave Pubblica:** Coppia $(e, n)$
* **Chiave Privata:** Coppia $(d, n)$ (mentre $p$, $q$ e $\phi(n)$ devono essere distrutti o nascosti!).
---
## Cifratura e Decifratura
Supponiamo che Bob voglia inviare un messaggio segreto ad Alice.
### Cifratura (Bob)
1. Bob prende la chiave pubblica di Alice: $(e, n)$.
3. Calcola il messaggio cifrato $C$ usando la formula di cifratura:
$$C \equiv M^e \pmod n$$
4. Bob invia il messaggio cifrato $C$ ad Alice.
### Decifratura (Alice)
1. Alice riceve $C$.
2. Usa la sua chiave privata $(d, n)$ per ripristinare il messaggio originale $M$ tramite la formula di decifratura:
$$M \equiv C^d \pmod n$$
Grazie ai teoremi di Eulero e Fermat, l'aritmetica modulare garantisce che l'operazione $(M^e)^d \pmod n$ restituisca esattamente $M$. Un eventuale spia che intercettasse $C$, $e$ ed $n$ non potrebbe calcolare $M$ perché non conosce $d$, e calcolare $d$ richiederebbe la fattorizzazione di $n$ in $p$ e $q$.
---
## Esempio Pratico con Valori Ridotti
1. **Scelta:** Scegliamo $p = 3$ e $q = 11$.
2. **Modulo:** $n = 3 \times 11 = 33$.
3. **Toziente:** $\phi(n) = (3 - 1) \times (11 - 1) = 2 \times 10 = 20$.
4. **Esponente Pubblico:** Scegliamo $e = 3$ (notiamo che $3$ e $20$ non hanno fattori in comune, quindi sono coprimi).
* *Chiave Pubblica: $(e=3, n=33)$*
5. **Esponente Privato:** Cerchiamo un numero $d$ tale che $d \times 3 \equiv 1 \pmod{20}$. Il numero è $d = 7$, infatti $7 \times 3 = 21$, e $21 \div 20$ dà resto $1$.
* *Chiave Privata: $(d=7, n=33)$*
### Il messaggio da cifrare è $M = 9$:
$$C \equiv 9^3 \pmod{33} = 729 \pmod{33}$$
Se dividiamo $729$ per $33$, otteniamo $22$ con il resto di **3**. Quindi $C = 3$.
### Il messaggio da decifrare è $C = 3$:
$$M \equiv 3^7 \pmod{33} = 2187 \pmod{33}$$
Se dividiamo $2187$ per $33$, otteniamo $66$ con il resto di **9**. Abbiamo recuperato il messaggio originale $M = 9$!
---