Crittografia > Glossario > ChaCha20
Cos'è ChaCha20?
ChaCha20 aiuta a proteggere i tuoi dati quando invii messaggi, archivi file o navighi privatamente usando un'app o un servizio.
È un moderno algoritmo di crittografia progettato per mantenere riservate le informazioni, rimanendo al contempo veloce ed efficiente su un'ampia gamma di dispositivi.
Scopri come funziona ChaCha20, perché è importante nella crittografia moderna e come si confronta con AES.

Cos'è ChaCha20?
ChaCha20 è un cifrario a chiave simmetrica a 256 bit ad alta velocità, leggero e altamente sicuro, utilizzato per crittografare e decriptare dati. È stato progettato da Daniel J. Bernstein come miglioramento di un cifrario precedente chiamato Salsa20. L'obiettivo era creare qualcosa che fosse sia efficiente che sicuro, soprattutto a livello software.
Come funziona ChaCha20
ChaCha20 crittografa i dati generando un flusso di byte pseudocasuali sicuri e combinando tale flusso con il messaggio originale. Il risultato è un output crittografato che appare casuale a chiunque non disponga della chiave segreta.
Poiché utilizza la stessa chiave per crittografare e decriptare i dati, ChaCha20 è molto più veloce di RSA, un algoritmo asimmetrico che utilizza una chiave pubblica e una chiave privata. L'algoritmo RSA è utile per lo scambio di chiavi e le firme, ma ChaCha20 è migliore per crittografare grandi volumi di traffico internet.

A grandi linee, ChaCha20 richiede tre input: una chiave segreta, un nonce (un numero utilizzato una sola volta, ovvero un valore univoco usato per ogni crittografia) e un contatore (per aiutare a generare diversi blocchi di output). Utilizza questi valori per inizializzare uno stato interno, che viene poi mescolato ripetutamente per generare un flusso di byte pseudocasuali sicuri noto come keystream.
Questo processo di miscelazione si basa su tre semplici operazioni — addizione, XOR e rotazione dei bit — applicate su 20 round per rimescolare a fondo i dati. Il keystream risultante viene quindi combinato con il testo in chiaro per produrre il testo cifrato — i dati crittografati.
Perché ChaCha20 è importante
ChaCha20 risolve un problema pratico della sicurezza moderna: come ottenere una crittografia forte che sia al contempo efficiente e affidabile su molti dispositivi. È molto veloce nei software, ottimo su telefoni, piccoli dispositivi e CPU più vecchie, e si basa su semplici operazioni eseguite facilmente dai computer (addizione, XOR, rotazione).
Queste funzionalità lo rendono interessante in sistemi come TLS, VPN(nuova finestra), SSH e app di messaggistica. Ad esempio, ChaCha20 viene utilizzato dal protocollo WireGuard®(nuova finestra) VPN(nuova finestra) per fornire una crittografia rapida e sicura con prestazioni elevate anche su dispositivi privi di hardware AES dedicato.
ChaCha20 vs AES
Ecco come ChaCha20 si confronta con AES:
Aspetto | ChaCha20 | AES |
|---|---|---|
Tipo di cifrario | Cifrario a flusso | Cifrario a blocchi |
Operazione di base | Addizioni/XOR/rotazioni su parole a 32 bit | Sostituzione-permutazione su blocchi a 128 bit |
Dimensioni standard della chiave | 256 bit | 128, 192, 256 bit |
Prestazioni su CPU senza hardware speciale | Solitamente molto veloce | Spesso più lento di ChaCha20 |
Prestazioni su CPU con accelerazione hardware | In genere perde rispetto ad AES con estensioni crittografiche AES-NI / ARM | Spesso estremamente veloce |
Modalità autenticata tipica | ChaCha20-Poly1305 | AES-GCM |
Casi d'uso comuni | TLS su dispositivi mobili/incorporati, crittografia solo software, WireGuard® | TLS, crittografia del disco, sistemi aziendali, crittografia basata su hardware |
Scelta migliore | Portabilità, velocità software costante, implementazione software più sicura | Massima velocità su hardware moderno, ampia conformità/supporto |
La crittografia AES è lo standard consolidato ed è estremamente veloce sui processori con supporto hardware AES integrato. Per questo motivo, offre prestazioni particolarmente elevate su molti computer desktop, server e chip mobili più recenti. Tuttavia, senza supporto hardware AES, l'AES solo software può essere più lento e talvolta più difficile da implementare in modo sicuro. Al contrario, ChaCha20 è progettato per essere velocissimo nei software comuni perché utilizza operazioni semplici come addizione, XOR e rotazione, che funzionano in modo efficiente su quasi tutti i processori.
Se un'applicazione offre sia AES che ChaCha20, di solito non devi sceglierne una manualmente, poiché la maggior parte delle app moderne seleziona automaticamente l'opzione migliore in base al tuo dispositivo e processore. In generale, l'AES offre le migliori prestazioni sui dispositivi più recenti con supporto AES integrato, mentre ChaCha20 è la scelta ideale sui dispositivi in cui la crittografia viene gestita principalmente a livello software, come alcuni telefoni, hardware a basso consumo o CPU più vecchie.
ChaCha20 è sicuro?
ChaCha20 è considerato sicuro per gli standard moderni se implementato correttamente e utilizzato con un nonce univoco per ogni crittografia.
Crittografia efficace
ChaCha20 utilizza 20 round di operazioni add-rotate-XOR ed è considerato resistente ai noti attacchi pratici.
Buona sicurezza software
Il suo design semplice lo rende efficiente a livello software e può ridurre alcuni rischi di canale laterale riscontrati in determinate implementazioni AES.
Ampiamente distribuito
ChaCha20 è supportato dai principali browser e utilizzato nelle moderne connessioni HTTPS/TLS, SSH e WireGuard®.
Solitamente associato a Poly1305
Viene spesso utilizzato come ChaCha20-Poly1305, che protegge sia la riservatezza che l'integrità del messaggio. ChaCha20-Poly1305 è una delle principali opzioni di crittografia simmetrica utilizzate in TLS 1.3.
Proton VPN e ChaCha20
Con il protocollo WireGuard®(nuova finestra) di Proton VPN, ChaCha20-Poly1305 aiuta a proteggere il tunnel VPN in modo che il tuo traffico internet rimanga privato senza sacrificare la velocità, sia che tu stia navigando privatamente, guardando contenuti in streaming o utilizzando reti WiFi pubbliche in mobilità.



