Crittografia e sicurezza
Ogni volta che compri qualcosa online, la matematica scherma i tuoi dati dall'intero internet. Come fa un segreto a restare segreto in pubblico?
Messaggi segreti e lucchetti inviolabili!
Livello Base — linguaggio semplice, senza matematica
Diciamo che vuoi passare un biglietto a un amico attraverso una stanza affollata dove tutti adorerebbero leggerlo. Ricorri a un cifrario — un codice segreto. Il trucco più antico del manuale, usato da Giulio Cesare duemila anni fa, sposta semplicemente ogni lettera di una quantità fissa: A diventa D, B diventa E, e così via. Il tuo amico, che conosce lo spostamento, lo legge all'istante; tutti gli altri vedono un'assurdità.
Ma c'è un intoppo che ha tormentato i creatori di codici per millenni: come dici al tuo amico lo spostamento in primo luogo senza che qualcuno origli? La risposta, trovata solo negli anni '70, sembra un gioco di prestigio — la crittografia a chiave pubblica. Immagina un lucchetto che chiunque può far scattare chiuso ma di cui solo tu hai la chiave per aprirlo. Spedisci quel lucchetto aperto al mondo intero; chiunque può chiudervi dentro un messaggio e rispedirlo, e solo tu puoi aprirlo, anche se non hai mai condiviso un segreto.
È così che funziona ogni sito sicuro. Quando il lucchettino compare nel tuo browser, il tuo computer e il server stanno evocando un segreto condiviso allo scoperto — proprio sotto il naso di qualsiasi origliatore, che se ne va comunque con nulla. Nella simulazione qui sotto, guarda quello scambio di chiavi dispiegarsi un passo alla volta.
Da sapere
- L'HTTPS cifra oggi oltre il 95% del traffico web. La matematica che protegge le tue password era sostanzialmente inesistente prima del 1976.
- L'algoritmo RSA, inventato nel 1977, deriva la sua sicurezza dal fatto che moltiplicare due grandi primi richiede millisecondi, ma fattorizzare il risultato richiede più tempo dell'età dell'universo.
- I computer quantistici potrebbero rompere la cifratura RSA — ed è per questo che i governi di tutto il mondo stanno già passando a standard di crittografia "post-quantistica".
RSA, Diffie-Hellman e la matematica delle funzioni a senso unico
Livello Studente — le equazioni principali
L'RSA (Rivest–Shamir–Adleman, 1977) poggia su una bella asimmetria: moltiplicare due grandi primi è istantaneo, ma smoltiplicare il risultato — fattorizzarlo — si crede sia praticamente impossibile. Scegli i primi \(p, q\), poni \(n = pq\) e \(\varphi(n) = (p-1)(q-1)\), scegli un esponente pubblico \(e\), e calcola il privato \(d \equiv e^{-1} \pmod{\varphi(n)}\). Poi cifratura e decifratura sono solo potenze modulari: \(c = m^e \bmod n\) e \(m = c^d \bmod n\). Si annullano a vicenda perché il teorema di Eulero garantisce \(m^{\varphi(n)} \equiv 1 \pmod n\), quindi \(m^{ed} \equiv m\). Recuperare \(d\) dalla coppia pubblica \((e, n)\) si crede sia difficile quanto fattorizzare \(n\) — non dimostrato, ma sicuro a 2048 bit.
Il Diffie–Hellman (1976) è il trucco che permette a due sconosciuti di concordare un segreto in piena vista di tutti. Alice e Bob fissano pubblicamente un primo \(p\) e un generatore \(g\); Alice tiene un segreto \(a\) e invia \(g^a \bmod p\), Bob tiene \(b\) e invia \(g^b \bmod p\). Ciascuno eleva ciò che ha ricevuto al proprio segreto, ed entrambi atterrano sulla stessa chiave \(K = g^{ab} \bmod p\). Un origliatore vede \(g, p, g^a, g^b\) e ancora non può ottenere \(K\) senza risolvere il problema del logaritmo discreto — facile da calcolare in avanti, creduto irrealizzabile da invertire.
La matematica a chiave pubblica è lenta, quindi si usa con parsimonia. Le connessioni reali fanno un approccio ibrido: Diffie–Hellman (o il suo cugino a curve ellittiche) concorda una chiave, poi un veloce cifrario simmetrico come AES cifra il traffico effettivo. A tenere tutto insieme ci sono le funzioni di hash (SHA-256, SHA-3), che schiacciano qualsiasi input in un'impronta di dimensione fissa che è a senso unico, resistente alle collisioni e selvaggiamente sensibile — capovolgi un bit di input e circa metà dei bit di output cambiano. Quelle impronte sono ciò che rende possibili firme digitali, certificati e blockchain.
Formule chiave
| Cifratura RSA | \(c = m^e \bmod n\) | |
|---|---|---|
| Decifratura RSA | \(m = c^d \bmod n,\quad d \equiv e^{-1}\!\!\pmod{\varphi(n)}\) | |
| Teorema di Eulero | \(m^{\varphi(n)} \equiv 1 \pmod n \;\Rightarrow\; m^{ed} \equiv m\) | |
| Segreto condiviso DH | \(K = g^{ab} \bmod p\) | |
| Funzione di hash | \(H:\{0,1\}^{*} \to \{0,1\}^{256}\) | a senso unico, resistente alle collisioni |
| Limite del compleanno | \(\text{collisione dopo } \sim\!\sqrt{2^{256}} = 2^{128} \text{ query}\) | |
Da sapere
- La chiave di cifratura RSA-2048 ha 617 cifre decimali. Fattorizzarla col miglior algoritmo noto su tutti i computer attuali richiederebbe più tempo dell'età dell'universo.
- La connessione HTTPS del tuo telefono usa Elliptic Curve Diffie-Hellman (ECDH) — fornendo sicurezza equivalente a RSA con chiavi 20 volte più piccole, grazie alla difficoltà del logaritmo discreto su curve ellittiche.
- Il NIST standardizzò i suoi primi algoritmi di crittografia post-quantistica nel 2024 — CRYSTALS-Kyber per lo scambio di chiavi e CRYSTALS-Dilithium per le firme — entrambi basati su problemi reticolari.
Sicurezza teorico-informativa, crittografia reticolare e prove a conoscenza zero
Livello Esperto — profondità matematica completa
01La segretezza perfetta e il suo prezzo impossibile
Shannon (1949) fissò il soffitto teorico: un cifrario è perfettamente segreto quando il testo cifrato non tradisce assolutamente nulla sul messaggio, \(P(M=m \mid C=c) = P(M=m)\) per ogni \(m, c\). Il cifrario a blocco monouso (one-time pad) — XOR del messaggio con una chiave davvero casuale usata esattamente una volta, \(c = m \oplus k\) — lo raggiunge, e Shannon dimostrò che è essenzialmente l'unica cosa che lo fa. La stangata è nel requisito: la chiave deve essere lunga quanto il messaggio e mai riusata, quindi per inviare segretamente un gigabyte devi aver già condiviso segretamente un gigabyte. La segretezza perfetta è reale, e quasi inutile.
02Barattare la perfezione con la praticità
Tutto ciò che è usabile scende quindi alla sicurezza computazionale: un cifrario è "sicuro" se nessun avversario limitato al tempo polinomiale può fare meglio che trascurabilmente meglio del tirare a indovinare. Questo rilocalizza in silenzio tutta la crittografia su terreno non dimostrato — l'RSA si appoggia sulla difficoltà della fattorizzazione, il Diffie–Hellman sui logaritmi discreti, e nessuno di questi è dimostrato intrattabile; una dimostrazione risolverebbe \(P\) contro \(NP\). Stiamo, in effetti, scommettendo internet su congetture che hanno semplicemente resistito a ogni attacco finora.
03La minaccia quantistica e la risposta reticolare
Quella scommessa ha una data di scadenza nota. L'algoritmo di Shor permette a un grande computer quantistico di fattorizzare e prendere logaritmi discreti in tempo polinomiale, demolendo in silenzio l'RSA e il Diffie–Hellman classico. Il rimpiazzo di punta è la crittografia reticolare, costruita su Learning With Errors: dati molti campioni rumorosi \(b_i = \langle a_i, s\rangle + e_i \bmod q\), recuperare il segreto \(s\) appare difficile persino per una macchina quantistica. I primi standard post-quantistici del NIST (2024) sono schemi reticolari, e la migrazione è già in corso.
04Calcolare su dati che non puoi leggere
I reticoli sbloccarono qualcosa un tempo ritenuto impossibile: la cifratura completamente omomorfa (Gentry, 2009), dove un server calcola direttamente sul testo cifrato, \(f(\mathrm{Enc}(x)) = \mathrm{Enc}(f(x))\), e restituisce una risposta cifrata che non ha mai effettivamente visto. Puoi eseguire una ricerca, addestrare un modello o interrogare un database con i dati che restano sigillati per tutto il tempo. La prima FHE era un milione di volte troppo lenta; gli schemi moderni l'hanno riportata verso qualche centinaio di volte, spostandola da esperimento mentale verso il dispiegamento.
05Dimostrare di conoscere un segreto senza rivelarlo
Le prove a conoscenza zero (Goldwasser–Micali–Rackoff, 1985) realizzano un vero paradosso: un dimostratore convince un verificatore che un'affermazione è vera pur rivelando nulla oltre la sua verità. Le tre richieste sono completezza (le prove oneste convincono sempre), solidità (le affermazioni false quasi mai passano) e conoscenza zero (il verificatore non impara nulla che non avrebbe potuto inventarsi da solo). Puoi dimostrare di conoscere una password senza pronunciarla, o che una transazione è valida senza svelarne l'importo.
06Prove succinte e dove sta andando tutto ciò
I cavalli da tiro moderni sono le zk-SNARK — prove che sono sia non interattive sia sorprendentemente compatte, una costante \(O(1)\) in dimensione e verificabili in millisecondi per quanto vasto sia il calcolo che attestano. Già alimentano valute che preservano la privacy, credenziali anonime e calcolo esternalizzato verificabile, e stanno strisciando verso il dimostrare che uno specifico modello di IA ha prodotto uno specifico output senza esporre il modello o l'input. Una curiosità un tempo liquidata come pura teoria si sta trasformando in infrastruttura fondamentale.
Formule chiave
| Segretezza perfetta | \(P(M=m \mid C=c) = P(M=m)\quad \forall\, m,c\) | |
|---|---|---|
| Cifrario a blocco monouso | \(c = m \oplus k,\quad |k| = |m|\) | k uniforme, usata una volta |
| Campione LWE | \(b_i = \langle a_i, s\rangle + e_i \pmod q\) | e_i piccolo rumore |
| Proprietà omomorfa | \(f(\mathrm{Enc}(x)) = \mathrm{Enc}(f(x))\) | |
| Garanzie ZKP | \(\text{completezza} + \text{solidità} + \text{conoscenza zero}\) | |
| Dimensione prova zk-SNARK | \(|\pi| = O(1)\) | indipendente dalla dimensione del circuito |
Da sapere
- Una prova zk-SNARK che una rete neurale ha prodotto uno specifico output può essere generata e verificata — senza rivelare i pesi del modello o i dati di input.
- Il problema LWE è così difficile che persino un computer quantistico che esegue l'algoritmo di Shor (che rompe RSA) non può risolverlo — non si conosce alcuna accelerazione quantistica.
- Il premio Turing 2012 andò a Silvio Micali e Shafi Goldwasser per aver inventato le prove a conoscenza zero — originariamente considerate una curiosità puramente teorica.