Vai al contenuto
HexaTransfer
Torna al blog
Crittografia e sicurezza

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:

  1. Il mittente genera una chiave AES casuale a 256 bit (la "session key" o "file key").
  2. Il file viene cifrato con AES-256-GCM usando quella chiave.
  3. La chiave AES stessa viene cifrata con la chiave pubblica del destinatario (RSA-OAEP o ECIES).
  4. Sia il testo cifrato che la chiave cifrata viaggiano verso il destinatario.
  5. 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