Cryptology Academy · Lezione

Progettazione di Salsa20 e ChaCha20

Segua il funzionamento del quarter-round di ChaCha20 e la sua velocità sull'hardware mobile.

Lezione 3 di 413 passaggi

Progettazione di Salsa20 e ChaCha20 è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.

Benvenuti

ChaCha20 è il cifrario a flusso dominante nei sistemi moderni: viene utilizzato in TLS 1.3, WireGuard, Signal e molti altri. Analizziamone l'elegante progettazione.

Origini di ChaCha20

Daniel J. Bernstein ha progettato Salsa20 nel 2005 e lo ha poi migliorato trasformandolo in ChaCha20 nel 2008. Il prefisso 'Cha' indica 8 miglioramenti aggiuntivi alla diffusione. Standardizzato in RFC 7539 (2015) e RFC 8439 (2018).

Stato di ChaCha20

ChaCha20 opera su una matrice 4×4 di parole da 32 bit (512 bit in totale): - Parole 0-3: costanti ('expa', 'nd 3', '2-by', 'te k') - Parole 4-11: chiave da 256 bit (8 parole) - Parola 12: contatore di blocco da 32 bit - Parole 13-15: nonce da 96 bit

Il quarter round

L'operazione fondamentale di ChaCha20: il quarter round su (a,b,c,d): a+=b; d^=a; d<<<= 16 c+=d; b^=c; b<<<= 12 a+=b; d^=a; d<<<= 8 c+=d; b^=c; b<<<= 7 Add-Rotate-XOR (ARX). Non sono necessarie S-box: è veloce su qualsiasi hardware.

20 round

ChaCha20 applica 20 round: round alternati sulle colonne e sulle diagonali, con 4 quarter round ciascuno. 8 round = ChaCha8 (veloce), 12 round = ChaCha12 (bilanciato). ChaCha20 è la scelta sicura predefinita.

Generazione del keystream

1. Inizializzare lo stato con chiave + nonce + contatore 2. Applicare 20 round di quarter round 3. Sommare lo stato iniziale allo stato ruotato (impedisce l'inversione) 4. Emettere un blocco di keystream da 64 byte 5. Incrementare il contatore per il blocco successivo

Vantaggi di sicurezza di ARX

I cifrari ARX (Add, Rotate, XOR) sono naturalmente a tempo costante sulla maggior parte delle CPU. L'assenza di accessi a tabelle elimina i canali laterali basati sui tempi della cache. Questo è fondamentale per implementazioni sicure.

Prestazioni di ChaCha20

Senza AES-NI: ChaCha20 è circa 3 volte più veloce di AES-CBC. Sui telefoni (ARM Cortex-A), ChaCha20 è la scelta più veloce. Con AES-NI (x86 moderno), AES-GCM è più veloce. TLS 1.3 include entrambi.

Salsa20 e ChaCha20

ChaCha20 migliora Salsa20 con una diffusione migliore nei primi round, offrendo una maggiore resistenza alla crittoanalisi differenziale. L'inizializzazione dello stato è diversa. Entrambi sono sicuri; ChaCha20 è lo standard attuale.

ChaCha20 in Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) ct = ChaCha20Poly1305(key).encrypt(nonce, b'hello', None)

XChaCha20: nonce esteso

ChaCha20 utilizza un nonce di 96 bit. XChaCha20 lo estende a 192 bit utilizzando la funzione HChaCha20. I nonce più grandi consentono una generazione casuale senza preoccuparsi delle collisioni. libsodium utilizza XChaCha20-Poly1305.

Verifica rapida

Perché il design ARX di ChaCha20 elimina i canali laterali basati sui tempi di accesso alla cache?

Riepilogo

ChaCha20 è elegante e sicuro. Ora vediamo come viene utilizzato in TLS 1.3 come AEAD ChaCha20-Poly1305.
Gratis per iniziare

Impara Cryptology Academy con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
67
Lezioni
261

Domande Frequenti

La lezione «Progettazione di Salsa20 e ChaCha20» è gratuita?

Sì — il testo completo di «Progettazione di Salsa20 e ChaCha20» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.

Cosa imparerò in «Progettazione di Salsa20 e ChaCha20»?

Segua il funzionamento del quarter-round di ChaCha20 e la sua velocità sull'hardware mobile. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cryptology Academy?

Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Progettazione di Salsa20 e ChaCha20»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?

Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Concetti sui cifrari a flusso e PRNG
  2. RC4: progettazione, debolezze e attacchi a WEP
  3. Progettazione di Salsa20 e ChaCha20
  4. ChaCha20-Poly1305 AEAD in TLS 1.3
← Torna a Cryptology Academy