Cryptology Academy · Lektion

ChaCha20-Poly1305 AEAD i TLS 1.3

Se, hvordan ChaCha20 anvendes som AEAD-chiffer i moderne TLS.

Lektion 4 af 413 trin

ChaCha20-Poly1305 AEAD i TLS 1.3 er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Velkommen

ChaCha20-Poly1305 kombinerer strømchifferet ChaCha20 med Poly1305-MAC'en for at skabe en sikker AEAD-chiffersuite, der bruges i TLS 1.3, WireGuard og mobilapplikationer.

Oversigt over Poly1305-MAC

Poly1305 er en MAC til engangsbrug, designet af Bernstein. Den godkender en meddelelse ved hjælp af polynomiel evaluering over primtallet 2^130-5. Engangsbrug betyder, at hver anvendelse kræver en ny nøgle på 32 byte.

Poly1305-sikkerhed

Poly1305 giver 128-bit sikkerhed, hvis nøglen aldrig genbruges. MAC-nøglen udledes på ny for hver meddelelse fra ChaCha20's nøglestrøm. Kombinationen er bevist sikker.

Konstruktion af ChaCha20-Poly1305

1. Generér en nøglestrøm på 64 byte fra ChaCha20-blok 0 2. De første 32 byte = Poly1305-nøgle 3. De resterende 32 byte kasseres 4. Krypter klarteksten med ChaCha20-blokkene 1,2,3,... 5. Beregn Poly1305-MAC over AAD + chiffertekst

RFC 8439-struktur

Outputformat: chiffertekst || autentificeringsmærke (16 byte) MAC-input: AAD || udfyldning1 || chiffertekst || udfyldning2 || længde(AAD) || længde(chiffertekst) Udfyldning: udfyld med nuller til 16-byte-justering. Længder kodes som little-endian-heltal på 64 bit.

Chiffersuiter i TLS 1.3

Obligatoriske chiffersuiter i TLS 1.3: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 CHACHA20_POLY1305 foretrækkes til klienter uden hardwareacceleration til AES.

WireGuard bruger ChaCha20-Poly1305

WireGuard bruger udelukkende ChaCha20Poly1305 til al kryptering af tunnelen. Ingen forhandling af chiffer — én velanalyseret algoritme. Denne enkelhed reducerer angrebsfladen markant.

libsodium secretbox

libsodium's crypto_secretbox_easy() bruger XSalsa20-Poly1305 (varianten med udvidet nonce): ciphertext = crypto_secretbox_easy(message, nonce, key) API på højt niveau: fungerer korrekt uden valg af parametre.

Ydeevne på mobilenheder

Android- og iOS-enheder mangler ofte AES-NI. Googles analyse fra 2014 viste, at ChaCha20-Poly1305 var 3× hurtigere end AES-GCM på ARM. Derfor gjorde Google det obligatorisk i Android og Chrome.

Implementering i 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)

Sammenligning: AES-GCM og ChaCha20-Poly1305

AES-GCM: hurtigere med AES-NI, 96-bit nonce, risiko for forfalskning af GCM-mærket, hvis noncen genbruges. ChaCha20-Poly1305: hurtigere uden hardwareacceleration, 96-bit nonce, Poly1305-nøglen er ny for hver meddelelse. Begge er fremragende. Brug AES-GCM på servere og ChaCha20-Poly1305 på mobilenheder.

Hurtigt tjek

Hvordan genereres Poly1305-nøglen i ChaCha20-Poly1305?

Opsummering

ChaCha20-Poly1305 er det mobiloptimerede AEAD-valg. Nu undersøger vi Diffie-Hellman-nøgleudveksling — hvordan to parter etablerer en fælles hemmelighed over en usikker kanal.
Gratis at komme i gang

Lær Cryptology Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “ChaCha20-Poly1305 AEAD i TLS 1.3” gratis?

Ja — hele teksten til “ChaCha20-Poly1305 AEAD i TLS 1.3” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “ChaCha20-Poly1305 AEAD i TLS 1.3”?

Se, hvordan ChaCha20 anvendes som AEAD-chiffer i moderne TLS. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “ChaCha20-Poly1305 AEAD i TLS 1.3”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?

Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Begreber inden for strømchifre og PRNG
  2. RC4: Design, svagheder og WEP-angreb
  3. Designet bag Salsa20 og ChaCha20
  4. ChaCha20-Poly1305 AEAD i TLS 1.3
← Tilbage til Cryptology Academy