Cryptology Academy · Lektion

Designet bag Salsa20 og ChaCha20

Gennemgå ChaCha20's quarter-round og hastigheden på mobil hardware.

Lektion 3 af 413 trin

Designet bag Salsa20 og ChaCha20 er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 3 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 er det dominerende strømchiffer i moderne systemer – det bruges i TLS 1.3, WireGuard, Signal og mange andre. Lad os gennemgå det elegante design.

ChaCha20's oprindelse

Daniel J. Bernstein designede Salsa20 i 2005 og forbedrede det derefter til ChaCha20 i 2008. Præfikset 'Cha' angiver 8 ekstra forbedringer af diffusionen. Det blev standardiseret i RFC 7539 (2015) og RFC 8439 (2018).

ChaCha20-tilstand

ChaCha20 arbejder på en 4×4-matrix af ord på 32 bit (512 bit i alt): - Ord 0-3: konstanter ('expa', 'nd 3', '2-by', 'te k') - Ord 4-11: nøgle på 256 bit (8 ord) - Ord 12: bloktæller på 32 bit - Ord 13-15: nonce på 96 bit

Kvartomgangen

ChaCha20's kerneoperation – kvartomgangen på (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). S-bokse er ikke nødvendige – hurtigt på al hardware.

20 omgange

ChaCha20 anvender 20 omgange: skiftevis kolonneomgange og diagonalomgange, hver med 4 kvartomgange. 8 omgange = ChaCha8 (hurtigt), 12 omgange = ChaCha12 (afbalanceret). ChaCha20 er det sikre standardvalg.

Generering af nøglestrøm

1. Initialiser tilstanden ud fra nøgle + nonce + tæller 2. Anvend 20 omgange med kvartomgange 3. Læg den oprindelige tilstand til den roterede tilstand (forhindrer omvendelse) 4. Udsend en nøglestrømsblok på 64 byte 5. Øg tælleren for den næste blok

ARX-sikkerhedsfordele

ARX-chifre (Add, Rotate, XOR) har naturligt konstant kørselstid på de fleste CPU'er. Ingen tabelopslag betyder ingen sidekanaler baseret på cache-timing. Det er afgørende for sikre implementeringer.

ChaCha20-ydeevne

Uden AES-NI er ChaCha20 cirka 3 gange hurtigere end AES-CBC. På telefoner (ARM Cortex-A) er ChaCha20 det hurtigere valg. Med AES-NI (moderne x86) er AES-GCM hurtigere. TLS 1.3 indeholder begge.

Salsa20 kontra ChaCha20

ChaCha20 forbedrer Salsa20 med bedre diffusion i de tidlige omgange, hvilket giver større modstandsdygtighed over for differentialkryptanalyse. Initialiseringen af tilstanden er forskellig. Begge er sikre; ChaCha20 er den nuværende standard.

ChaCha20 i 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: Udvidet nonce

ChaCha20 bruger en 96-bit nonce. XChaCha20 udvider den til 192 bit ved hjælp af HChaCha20-funktionen. Større noncer gør det muligt at generere dem tilfældigt uden risiko for kollisioner. libsodium bruger XChaCha20-Poly1305.

Hurtigt tjek

Hvorfor fjerner ChaCha20's ARX-design cache-tidsbaserede sidekanaler?

Opsummering

ChaCha20 er elegant og sikker. Nu ser vi, hvordan den anvendes i TLS 1.3 som AEAD-chiffersuiten ChaCha20-Poly1305.
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 “Designet bag Salsa20 og ChaCha20” gratis?

Ja — hele teksten til “Designet bag Salsa20 og ChaCha20” 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 “Designet bag Salsa20 og ChaCha20”?

Gennemgå ChaCha20's quarter-round og hastigheden på mobil hardware. 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 3 af 4.

Hvor lang tid tager lektionen “Designet bag Salsa20 og ChaCha20”?

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