Cryptology Academy · Lekcja

Konstrukcja Salsa20 i ChaCha20

Prześledzić operację quarter-round w ChaCha20 i poznać jej szybkość na urządzeniach mobilnych

Lekcja 3 z 413 kroki

Konstrukcja Salsa20 i ChaCha20 to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Wprowadzenie

ChaCha20 to dominujący szyfr strumieniowy we współczesnych systemach — jest używany w TLS 1.3, WireGuard, Signal i wielu innych rozwiązaniach. Przeanalizujmy jego elegancki projekt.

Początki ChaCha20

Daniel J. Bernstein zaprojektował Salsa20 w 2005 roku, a następnie ulepszył go do postaci ChaCha20 w 2008 roku. Przedrostek „Cha” wskazuje na 8 dodatkowych ulepszeń dyfuzji. Szyfr został ustandaryzowany w RFC 7539 (2015) i RFC 8439 (2018).

Stan ChaCha20

ChaCha20 działa na macierzy 4×4 słów 32-bitowych (łącznie 512 bitów): - Słowa 0–3: stałe („expa”, „nd 3”, „2-by”, „te k”) - Słowa 4–11: klucz 256-bitowy (8 słów) - Słowo 12: 32-bitowy licznik bloku - Słowa 13–15: 96-bitowy nonce

Runda ćwierćblokowa

Podstawowa operacja ChaCha20 — runda ćwierćblokowa dla (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). Nie są potrzebne tablice S-box — szyfr działa szybko na każdym sprzęcie.

20 rund

ChaCha20 wykonuje 20 rund: naprzemiennie rundy kolumnowe i diagonalne, po 4 rundy ćwierćblokowe każda. 8 rund = ChaCha8 (szybki), 12 rund = ChaCha12 (zrównoważony). ChaCha20 jest bezpiecznym wyborem domyślnym.

Generowanie strumienia klucza

1. Zainicjalizuj stan na podstawie klucza, nonce i licznika 2. Wykonaj 20 rund operacji ćwierćblokowych 3. Dodaj stan początkowy do obróconego stanu (zapobiega odwróceniu operacji) 4. Wygeneruj 64-bajtowy blok strumienia klucza 5. Zwiększ licznik dla następnego bloku

Zalety bezpieczeństwa ARX

Szyfry ARX (Add, Rotate, XOR) są naturalnie stałoczasowe na większości procesorów. Brak odwołań do tablic oznacza brak kanałów bocznych opartych na pomiarze czasu dostępu do pamięci podręcznej. Ma to kluczowe znaczenie dla bezpiecznych implementacji.

Wydajność ChaCha20

Bez AES-NI: ChaCha20 jest około 3 razy szybszy niż AES-CBC. Na telefonach (ARM Cortex-A) ChaCha20 jest szybszym wyborem. Z AES-NI (współczesne procesory x86) AES-GCM jest szybszy. TLS 1.3 zawiera oba rozwiązania.

Salsa20 a ChaCha20

ChaCha20 ulepsza Salsa20 dzięki lepszej dyfuzji we wczesnych rundach — zapewnia większą odporność na kryptoanalizę różnicową. Inicjalizacja stanu przebiega inaczej. Oba szyfry są bezpieczne, ale obecnym standardem jest ChaCha20.

ChaCha20 w Pythonie

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: rozszerzony nonce

ChaCha20 używa nonce o długości 96 bitów. XChaCha20 rozszerza go do 192 bitów za pomocą funkcji HChaCha20. Większy nonce umożliwia losowe generowanie bez obaw o kolizje. libsodium używa XChaCha20-Poly1305.

Szybki test

Dlaczego konstrukcja ARX ChaCha20 eliminuje kanały boczne związane z czasem dostępu do pamięci podręcznej?

Podsumowanie

ChaCha20 jest elegancki i bezpieczny. Następnie zobaczymy jego zastosowanie w TLS 1.3 jako AEAD ChaCha20-Poly1305.
Bezpłatny start

Ucz się Cryptology Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
67
Lekcje
261

Często zadawane pytania

Czy lekcja „Konstrukcja Salsa20 i ChaCha20” jest bezpłatna?

Tak — pełny tekst „Konstrukcja Salsa20 i ChaCha20” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Konstrukcja Salsa20 i ChaCha20”?

Prześledzić operację quarter-round w ChaCha20 i poznać jej szybkość na urządzeniach mobilnych Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Konstrukcja Salsa20 i ChaCha20”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Koncepcje szyfrów strumieniowych i PRNG
  2. RC4: konstrukcja, słabości i ataki na WEP
  3. Konstrukcja Salsa20 i ChaCha20
  4. ChaCha20-Poly1305 AEAD w TLS 1.3
← Powrót do Cryptology Academy