Basi della crittografia a chiave pubblica: condivisione sicura
Impara le basi della crittografia a chiave pubblica e come abilita la condivisione sicura. RSA, Diffie-Hellman spiegati.
La crittografia a chiave pubblica — chiamata anche crittografia asimmetrica — usa due chiavi matematicamente collegate: una pubblica che puoi distribuire liberamente e una privata che custodisci. Cifra qualcosa con la mia chiave pubblica e solo la mia chiave privata può leggerlo. Questo risolve il problema più antico della crittografia: come due estranei che non si sono mai incontrati possono condividere un segreto su un canale aperto. Inventata da Diffie e Hellman nel 1976 e resa pratica da RSA un anno dopo, è ora il fondamento di TLS 1.3, Signal, SSH, la firma del codice Ed25519 e ogni servizio di trasferimento file che autentica gli utenti. Ecco come funziona davvero.
La trappola matematica
Tutta la crittografia a chiave pubblica si basa su funzioni "trapdoor" — computazioni facili da eseguire in avanti ma praticamente impossibili da invertire senza informazioni aggiuntive. Due famiglie dominano:
- Fattorizzazione di interi (RSA): moltiplicare due grandi numeri primi è banale; fattorizzare il loro prodotto è esponenzialmente difficile. Una chiave RSA a 2048 bit usa due primi di circa 1024 bit. Il miglior attacco noto, General Number Field Sieve, richiede circa 2^112 operazioni — fuori portata.
- Logaritmi discreti su curve ellittiche (ECDH, ECDSA, Ed25519): calcolare la moltiplicazione di punti su una curva è veloce; invertirla per trovare il moltiplicatore è difficile. Curve a 256 bit come Curve25519 danno una sicurezza equivalente a RSA a 3072 bit.
Entrambi i problemi sono facili per i computer quantistici tramite l'algoritmo di Shor, motivo per cui il NIST ha standardizzato alternative post-quantum (ML-KEM e ML-DSA) in FIPS 203–205 nel 2024.
RSA in pratica
Ron Rivest, Adi Shamir e Leonard Adleman hanno pubblicato RSA nel 1977. Lo schema è elegante:
- Scegli due grandi numeri primi
peq. - Calcola
n = p × q(il modulo) eφ(n) = (p-1)(q-1). - Scegli
ecoprimo conφ(n), comunemente 65537. - Calcola
dtale chee × d ≡ 1 (mod φ(n)). - Chiave pubblica:
(n, e). Chiave privata:(n, d).
Cifratura: ciphertext = message^e mod n. Decifratura: message = ciphertext^d mod n. La matematica funziona grazie al teorema di Eulero.
RSA nel mondo reale usa il padding OAEP (RFC 8017) per prevenire gli attacchi a testo cifrato scelto. RSA testbook è catastroficamente insicuro. RSA-2048 è il minimo attuale per i nuovi sistemi; RSA-3072 o 4096 per tutto ciò che ha una lunga durata.
Diffie-Hellman: segreti condivisi senza trasmettere chiavi
RSA ti permette di cifrare per un destinatario noto. Diffie-Hellman fa qualcosa di sottilmente diverso: permette a due parti di derivare un segreto condiviso su un canale pubblico, senza che nessuna delle due invii il segreto.
La versione classica (DH su interi modulo un grande numero primo):
- Entrambe le parti concordano su un grande primo
pe un generatoreg. - Alice sceglie il segreto
a, inviaA = g^a mod p. - Bob sceglie il segreto
b, inviaB = g^b mod p. - Alice calcola
B^a mod p = g^(ab) mod p. - Bob calcola
A^b mod p = g^(ab) mod p.
Entrambi arrivano a g^ab mod p senza mai inviare a o b. Un intercettatore vede g, p, A, B ma calcolare g^ab da A e B richiede di risolvere il problema del logaritmo discreto.
Il DH moderno usa le curve ellittiche (ECDH). X25519 è la scelta standard: chiavi a 32 byte, segreti condivisi a 32 byte, implementazione indurita contro gli attacchi temporali.
Le curve ellittiche e perché hanno vinto
RSA sembra vecchio perché per lo più lo è. La crittografia a curva ellittica l'ha sostituita per tre ragioni pratiche:
- Chiavi più piccole. Una chiave EC a 256 bit dà la sicurezza di una chiave RSA a 3072 bit. Questo fa 32 byte contro 384 byte.
- Operazioni più veloci. ECDH su Curve25519 richiede circa 70 microsecondi su un CPU moderno. La generazione di chiavi RSA-3072 richiede secondi.
- Migliore resilienza alla casualità. Ed25519 è deterministico — le firme non richiedono nonce casuali per messaggio, evitando il disastro ECDSA della PS3 di Sony del 2010 dove un nonce costante ha rivelato la chiave master.
Le curve NIST (P-256, P-384, P-521) sono ampiamente supportate ma storicamente diffidenti da alcuni crittografi per via di costanti non spiegate. Curve25519 e Ed25519, progettate da Daniel Bernstein, sono i default moderni usati in TLS 1.3, WireGuard, Signal e SSH.
Firme: provare chi ha inviato cosa
La crittografia a chiave pubblica fa qualcosa che la simmetrica non può: provare la paternità. La firma inverte i ruoli di cifratura — "cifri" (firmi) con la tua chiave privata e chiunque abbia la tua chiave pubblica può "decifrare" (verificare). Se verifica, chi firma deve aver detenuto la chiave privata corrispondente.
Le firme reali usano funzioni hash per gestire messaggi di dimensioni arbitrarie:
- Calcola
h = SHA-256(messaggio). - Firma
hcon la chiave privata (RSA-PSS, ECDSA o Ed25519). - Il verificatore fa l'hash del messaggio ricevuto, lo confronta con la firma usando la chiave pubblica.
Applicazioni: certificati TLS (la CA firma la chiave pubblica del sito), firma del codice (notarizzazione Apple, Microsoft Authenticode), firma dei commit Git, gestori di pacchetti software (apt, Homebrew, npm).
Dove il trasferimento di file usa la crittografia a chiave pubblica
Per i trasferimenti anonimi basati su link (SwissTransfer, HexaTransfer), la crittografia a chiave pubblica spesso non appare direttamente — una chiave simmetrica casuale nel frammento URL gestisce tutto. Ma per i servizi basati su account, le chiavi pubbliche sono importanti:
- Autenticazione del server TLS 1.3. Ogni connessione HTTPS inizia con il certificato del server, verificato rispetto a una catena CA. Lo scambio di chiavi ECDHE effimero poi deriva la session key.
- Cifratura da account ad account. Tresorit, Proton Drive e Mega danno agli utenti una coppia di chiavi all'iscrizione. I file condivisi tra account vengono avvolti con la chiave pubblica del destinatario.
- Client e aggiornamenti firmati. Le app desktop verificano gli aggiornamenti con firme Ed25519 o RSA per prevenire attacchi alla supply chain.
- Autenticazione senza password. WebAuthn e Passkeys usano chiavi EC memorizzate in hardware sicuro (Touch ID, Windows Hello, YubiKey).
La distribuzione delle chiavi: il problema rimanente
La crittografia a chiave pubblica risolve un problema di distribuzione delle chiavi ma ne crea un altro: come sai che una chiave pubblica appartiene davvero a chi dice? Tre modelli:
- PKI (Public Key Infrastructure). Le autorità di certificazione firmano le chiavi pubbliche. Usato da TLS con radici in Chrome, Firefox, Safari.
- Web of trust. L'approccio di PGP — gli utenti firmano le chiavi degli altri. Flessibile ma i problemi di scalabilità hanno mantenuto l'adozione di nicchia.
- TOFU (Trust On First Use). L'approccio di SSH — accetta la chiave la prima volta, avvisa se cambia. Semplice ma vulnerabile all'intercettazione iniziale.
- Trasparenza delle chiavi. Log su albero di Merkle dove tutte le chiavi pubbliche sono pubblicamente verificabili. Usato da WhatsApp, iMessage Contact Key Verification e i moderni sistemi passkey.
Per il trasferimento di file a destinatari sconosciuti, la condivisione tramite frammento URL aggira completamente tutto questo — il mittente consegna la chiave al destinatario direttamente tramite il link, e l'autenticità dipende dal canale usato per condividere il link.
Cosa cambiano i computer quantistici
Un computer quantistico su larga scala che esegue l'algoritmo di Shor rompe sia RSA che la crittografia a curva ellittica. Le stime attuali collocano il calendario a 10–20 anni, ma il rischio è immediato per i dati con una lunga durata: gli attacchi "harvest now, decrypt later" registrano il traffico cifrato oggi e lo decifrano nel 2040.
Gli standard post-quantum NIST del 2024:
- FIPS 203 (ML-KEM) — sostituisce Diffie-Hellman / ECDH per lo scambio di chiavi. Basato su problemi di reticolo.
- FIPS 204 (ML-DSA) — sostituisce RSA/ECDSA per le firme.
- FIPS 205 (SLH-DSA) — firma basata su hash come backup.
Cloudflare e Google ora supportano ML-KEM nello scambio di chiavi TLS 1.3. I servizi di trasferimento file seguiranno nei prossimi anni. La crittografia simmetrica (AES-256-GCM) è sostanzialmente non influenzata — l'algoritmo di Grover ne dimezza solo la forza effettiva.
Come mettere tutto insieme
Per i trasferimenti sensibili oggi: TLS 1.3 con scambio di chiavi X25519 protegge la connessione, AES-256-GCM gestisce la cifratura massiva, e per i servizi basati su account, ECDH con Curve25519 avvolge le chiavi per file. I servizi basati su link saltano il layer account ma guadagnano semplicità. Entrambi i modelli offrono una sicurezza robusta quando implementati correttamente.
Provalo su hexatransfer.com — gratis, senza registrazione, fino a 10 GB.
Invia file di grandi dimensioni in modo sicuro con crittografia end-to-end
Trasferisci file fino a 10 GB gratuitamente con crittografia end-to-end. Nessun account necessario. I tuoi file vengono crittografati nel browser prima del caricamento — nessun altro può leggerli.
Invia un file