Crittografia simmetrica vs asimmetrica: differenze spiegate
Crittografia simmetrica vs asimmetrica in linguaggio semplice. Comprendi come funziona ciascuna e come si combinano nel trasferimento moderno.
La crittografia simmetrica usa una sola chiave sia per cifrare che per decifrare — pensa ad AES-256-GCM, il cifrario che protegge i tuoi file durante il trasferimento. La crittografia asimmetrica usa una coppia di chiavi: una chiave pubblica che chiunque può vedere e una privata che solo tu detieni, usata da algoritmi come RSA-4096 e Curve25519. La simmetrica è veloce (gigabyte al secondo sui CPU moderni) ma richiede che entrambe le parti condividano lo stesso segreto. L'asimmetrica risolve il problema dello scambio di chiavi ma è 1.000 volte più lenta. Ogni servizio di trasferimento file moderno — HexaTransfer, Tresorit, Proton Drive, SwissTransfer — usa entrambe: l'asimmetrica per scambiare una chiave simmetrica, poi la simmetrica per cifrare il file vero e proprio.
Il mondo a una chiave: crittografia simmetrica
I cifrari simmetrici usano la stessa chiave in entrambe le direzioni. Se cifro un file con la chiave K, hai bisogno della chiave K per decifrarlo. I principali algoritmi simmetrici ancora in uso:
- AES (Rijndael) con chiavi a 128, 192 o 256 bit, standardizzato in FIPS 197.
- ChaCha20 con chiavi a 256 bit, preferito sui dispositivi senza accelerazione hardware AES-NI.
- 3DES — deprecato dal NIST nel 2023, da non usare.
Il throughput è il grande vantaggio. AES-256-GCM gira a circa 3–5 GB/s per core su Intel AES-NI, e ChaCha20-Poly1305 raggiunge 1,5–3 GB/s su telefoni ARM. Cifrare un file da 10 GB richiede secondi.
Il problema: come fai arrivare la chiave all'altra persona? Inviarla via email vanifica lo scopo. Questo è il problema della distribuzione delle chiavi, ed è il motivo per cui esiste la crittografia asimmetrica.
Il mondo a due chiavi: crittografia asimmetrica
Inventata da Diffie e Hellman nel 1976 e realizzata da Rivest, Shamir e Adleman come RSA nel 1977. Ogni utente ha una coppia di chiavi: una chiave pubblica pubblicata apertamente e una privata tenuta segreta. Qualsiasi cosa cifrata con la chiave pubblica può essere decifrata solo con la chiave privata, e viceversa.
Se vuoi inviarmi un file riservato, lo cifri con la mia chiave pubblica. Solo la mia chiave privata può aprirlo — e io non ho mai dovuto condividere nulla di segreto con te. Problema della distribuzione delle chiavi risolto.
Algoritmi asimmetrici attuali:
- RSA-2048 o RSA-4096 — lento ma universalmente supportato, usato nei certificati TLS.
- Curva ellittica (ECDH, ECDSA) su curve come P-256, P-384 o Curve25519 — chiavi più piccole, operazioni più veloci. Una chiave EC a 256 bit equivale alla sicurezza di una chiave RSA a 3072 bit.
- Ed25519 — il default moderno per la firma, usato da SSH e Signal.
Perché l'asimmetrica è troppo lenta per i file
La matematica asimmetrica è costosa. RSA-4096 gira a circa 100–500 operazioni al secondo su un CPU moderno. Ogni operazione gestisce circa 470 byte (la dimensione del blocco RSA meno il padding). Questo fa circa 200 KB/secondo — circa 50.000 volte più lento di AES-256-GCM.
Tentare di cifrare un file da 10 GB con RSA richiederebbe circa 14 ore. Con AES-256-GCM, ci vogliono circa 3 secondi. Questa asimmetria di velocità è il motivo per cui nessuno usa RSA per cifrare file direttamente.
Crittografia ibrida: l'approccio del mondo reale
Ogni protocollo che necessita sia di sicurezza che di velocità combina i due. TLS 1.3, PGP, Signal, Age e ogni servizio di trasferimento file credibile usano questo schema:
- Il mittente genera una chiave AES casuale a 256 bit (la "session key" o "file key").
- Il file viene cifrato con AES-256-GCM usando quella chiave.
- La chiave AES stessa viene cifrata con la chiave pubblica del destinatario (RSA-OAEP o ECIES).
- Sia il testo cifrato che la chiave cifrata viaggiano verso il destinatario.
- Il destinatario decifra la chiave AES con la sua chiave privata, poi la usa per decifrare il file.
Paghi il costo asimmetrico una sola volta per destinatario, per una chiave a 256 bit. Il file in blocco viene gestito simmetricamente a piena velocità. Il meglio di entrambi i mondi.
Come si differenziano i servizi di trasferimento file
I servizi basati su browser affrontano una variante: il destinatario potrebbe non avere una coppia di chiavi. Sta solo cliccando un link. Tre schemi gestiscono questo:
- Solo simmetrica tramite link condiviso (SwissTransfer, HexaTransfer, successori di Firefox Send). Una chiave AES-256 casuale viene generata nel browser del mittente, incorporata nel frammento URL, e il browser del destinatario la legge dal frammento. Non è necessaria crittografia asimmetrica — il frammento è il canale.
- Asimmetrica da account ad account (Tresorit, Proton Drive). Ogni utente ha una coppia di chiavi RSA o ECC generata all'iscrizione. I file cifrati per un destinatario specifico usano la sua chiave pubblica.
- Ibrida con password (molti servizi). Il frammento URL contiene un salt; l'utente digita una password; PBKDF2 o Argon2id deriva la chiave simmetrica. Nessuna crittografia asimmetrica coinvolta, ma la password funge da segreto condiviso.
L'approccio a link condiviso è il più semplice e funziona per destinatari senza account. L'asimmetrica legata all'account è più robusta perché perdere il link non rivela la chiave. Scegli in base al tuo modello di minaccia.
Firme digitali: l'altro compito dell'asimmetrica
La crittografia asimmetrica fa qualcosa che la simmetrica non può: provare la paternità. Se firmo un file con la mia chiave privata, chiunque abbia la mia chiave pubblica può verificare che l'ho firmato io, e sa che non è stato manomesso. La simmetrica può fornire autenticazione (HMAC, tag GCM) ma solo tra parti che già condividono un segreto.
Algoritmi di firma in uso:
- RSA-PSS con SHA-256 — legacy ma ampiamente supportato.
- ECDSA su P-256 o P-384 — approvato dal NIST, usato nei sistemi federali statunitensi.
- Ed25519 — veloce, deterministico, resistente ai cattivi generatori di numeri casuali. La scelta moderna.
La distribuzione software (apt, Homebrew, immagini Docker) si affida a firme Ed25519 o RSA per prevenire manomissioni nella supply chain. I servizi di trasferimento file tipicamente non espongono firme direttamente, ma il tag di autenticazione GCM in AES-256-GCM fornisce integrità all'interno di una singola cifratura.
Dimensioni delle chiavi e livelli di sicurezza equivalenti
Una tabella di conversione rapida per sicurezza equivalente contro i computer classici:
- Simmetrica a 128 bit = RSA a 3072 bit = EC a 256 bit (P-256 o Curve25519)
- Simmetrica a 192 bit = RSA a 7680 bit = EC a 384 bit (P-384)
- Simmetrica a 256 bit = RSA a 15360 bit = EC a 512 bit (P-521)
La raccomandazione attuale del NIST per i nuovi sistemi: almeno 112 bit di sicurezza, ovvero RSA-2048 o P-256. Le agenzie federali usano 128 bit (RSA-3072, P-384) come minimo fino al 2030.
Contro i futuri computer quantistici, le chiavi simmetriche perdono circa metà della loro forza (algoritmo di Grover), mentre RSA e ECC si rompono completamente (algoritmo di Shor). Il NIST ha standardizzato sostituzioni post-quantum nel 2024: ML-KEM (ex Kyber) per lo scambio di chiavi e ML-DSA (ex Dilithium) per le firme. La migrazione è in corso ma lenta.
Quando usare quale approccio
Una guida pratica alle decisioni:
- Cifrare un file per te stesso (backup, archivio): AES-256-GCM simmetrica con una password robusta tramite Argon2id. Nessuna asimmetrica necessaria.
- Inviare un file a un destinatario noto: ibrida — AES-256-GCM per il file, wrap con chiave pubblica per la session key.
- Inviare a più destinatari: cifra il file una sola volta con AES, poi avvolgi la chiave separatamente con la chiave pubblica di ogni destinatario. Aggiunge circa 300 byte per destinatario.
- Provare la paternità: firma Ed25519 sul testo cifrato.
- Condivisione una tantum tramite link: simmetrica con la chiave nel frammento URL.
Come combinare tutto in pratica
Per i trasferimenti sensibili oggi, uno stack pragmatico: AES-256-GCM per la cifratura massiva, X25519 ECDH per lo scambio di chiavi se i destinatari hanno identità, PBKDF2 o Argon2id per le chiavi derivate da password, e TLS 1.3 come layer di trasporto. Questa combinazione è ciò che i servizi moderni con audit certificati implementano.
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