Cryptology Academy · Lezione

ChaCha20-Poly1305 AEAD in TLS 1.3

Scopra come ChaCha20 viene utilizzato come cifrario AEAD nei moderni protocolli TLS.

Lezione 4 di 413 passaggi

ChaCha20-Poly1305 AEAD in TLS 1.3 è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 4 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.

Benvenuto

ChaCha20-Poly1305 combina il cifrario a flusso ChaCha20 con il MAC Poly1305 per creare una suite di cifratura AEAD sicura, utilizzata in TLS 1.3, WireGuard e nelle applicazioni mobili.

Panoramica del MAC Poly1305

Poly1305 è un MAC monouso progettato da Bernstein. Autentica un messaggio utilizzando la valutazione di polinomi sul primo 2^130-5. Monouso: ogni utilizzo richiede una nuova chiave di 32 byte.

Sicurezza di Poly1305

Poly1305 raggiunge una sicurezza di 128 bit se la chiave non viene mai riutilizzata. La chiave MAC viene derivata nuovamente per ogni messaggio dal keystream di ChaCha20. La combinazione è dimostrabilmente sicura.

Costruzione di ChaCha20-Poly1305

1. Generare un keystream di 64 byte dal blocco 0 di ChaCha20 2. I primi 32 byte costituiscono la chiave Poly1305 3. Scartare i 32 byte rimanenti 4. Cifrare il testo in chiaro con i blocchi 1,2,3,... di ChaCha20 5. Calcolare il MAC Poly1305 su AAD + testo cifrato

Struttura RFC 8439

Formato dell'output: testo cifrato || tag (16 byte) Input del MAC: AAD || pad1 || testo cifrato || pad2 || len(AAD) || len(testo cifrato) Padding: riempimento con zeri fino all'allineamento a 16 byte. Le lunghezze sono codificate come interi a 64 bit in formato little-endian.

Suite di cifratura TLS 1.3

Suite di cifratura obbligatorie di TLS 1.3: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 CHACHA20_POLY1305 è preferito per i client privi di accelerazione hardware AES.

WireGuard utilizza ChaCha20-Poly1305

WireGuard utilizza esclusivamente ChaCha20Poly1305 per la cifratura di tutti i tunnel. Nessuna negoziazione del cifrario: un unico algoritmo sottoposto a un'analisi approfondita. Questa semplicità riduce drasticamente la superficie d'attacco.

secretbox di libsodium

crypto_secretbox_easy() di libsodium utilizza XSalsa20-Poly1305 (variante con nonce esteso): ciphertext = crypto_secretbox_easy(message, nonce, key) API di alto livello: funziona correttamente senza dover scegliere i parametri.

Prestazioni sui dispositivi mobili

I dispositivi Android e iOS spesso non dispongono di AES-NI. L'analisi di Google del 2014 ha mostrato che ChaCha20-Poly1305 era 3 volte più veloce di AES-GCM su ARM. Per questo Google ne ha imposto l'uso in Android e Chrome.

Implementazione in Python

from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 import os key = ChaCha20Poly1305.generate_key() nonce = os.urandom(12) aad = b'header_data' cipher = ChaCha20Poly1305(key) ct = cipher.encrypt(nonce, b'plaintext', aad) pt = cipher.decrypt(nonce, ct, aad)

Confronto: AES-GCM e ChaCha20-Poly1305

AES-GCM: più veloce con AES-NI, nonce di 96 bit, possibilità di falsificare il tag GCM se si riutilizza il nonce. ChaCha20-Poly1305: più veloce senza accelerazione hardware, nonce di 96 bit, chiave Poly1305 rinnovata per ogni messaggio. Entrambi sono eccellenti. Utilizzi AES-GCM sui server e ChaCha20-Poly1305 sui dispositivi mobili.

Verifica rapida

In ChaCha20-Poly1305, come viene generata la chiave Poly1305?

Riepilogo

ChaCha20-Poly1305 è la scelta AEAD ottimizzata per i dispositivi mobili. Ora studiamo lo scambio di chiavi Diffie-Hellman, ovvero come due parti stabiliscono un segreto condiviso su un canale non sicuro.
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 «ChaCha20-Poly1305 AEAD in TLS 1.3» è gratuita?

Sì — il testo completo di «ChaCha20-Poly1305 AEAD in TLS 1.3» è 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 «ChaCha20-Poly1305 AEAD in TLS 1.3»?

Scopra come ChaCha20 viene utilizzato come cifrario AEAD nei moderni protocolli TLS. 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 4 di 4.

Quanto tempo richiede la lezione «ChaCha20-Poly1305 AEAD in TLS 1.3»?

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