0Pricing
Cryptology Academy · Lekcja

ChaCha20-Poly1305 AEAD w TLS 1.3

Zobaczyć, jak ChaCha20 jest używany jako szyfr AEAD we współczesnym TLS

ChaCha20-Poly1305 AEAD w TLS 1.3 to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 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-Poly1305 łączy szyfr strumieniowy ChaCha20 z kodem uwierzytelniającym wiadomości Poly1305 (MAC), tworząc bezpieczny zestaw szyfrów AEAD używany w TLS 1.3, WireGuard i aplikacjach mobilnych.

Przegląd Poly1305 MAC

Poly1305 to jednorazowy MAC zaprojektowany przez Bernsteina. Uwierzytelnia wiadomość za pomocą ewaluacji wielomianu modulo liczby pierwszej 2^130-5. Jednorazowość oznacza, że każde użycie wymaga nowego klucza o długości 32 bajtów.

Bezpieczeństwo Poly1305

Poly1305 zapewnia 128-bitowy poziom bezpieczeństwa, jeśli klucz nigdy nie jest ponownie używany. Klucz MAC jest generowany od nowa dla każdej wiadomości na podstawie strumienia klucza ChaCha20. To połączenie jest formalnie dowiedzione jako bezpieczne.

Konstrukcja ChaCha20-Poly1305

1. Wygeneruj 64-bajtowy strumień klucza z bloku 0 ChaCha20 2. Pierwsze 32 bajty = klucz Poly1305 3. Pozostałe 32 bajty odrzuć 4. Zaszyfruj tekst jawny blokami ChaCha20 1,2,3,... 5. Oblicz MAC Poly1305 dla AAD + ciphertext

Struktura RFC 8439

Format wyjściowy: ciphertext || tag (16 bajtów) Dane wejściowe MAC: AAD || pad1 || ciphertext || pad2 || len(AAD) || len(ciphertext) Wypełnienie: dopełnienie zerami do granicy 16 bajtów. Długości są kodowane jako 64-bitowe liczby całkowite w porządku little-endian.

Zestawy szyfrów TLS 1.3

Obowiązkowe zestawy szyfrów TLS 1.3: - TLS_AES_256_GCM_SHA384 - TLS_AES_128_GCM_SHA256 - TLS_CHACHA20_POLY1305_SHA256 CHACHA20_POLY1305 jest preferowany w przypadku klientów bez sprzętowej akceleracji AES.

WireGuard używa ChaCha20-Poly1305

WireGuard używa wyłącznie ChaCha20Poly1305 do szyfrowania wszystkich tuneli. Brak negocjacji szyfru — jeden dokładnie przeanalizowany algorytm. Ta prostota znacznie zmniejsza powierzchnię ataku.

libsodium secretbox

crypto_secretbox_easy() w libsodium używa XSalsa20-Poly1305 (wariantu z rozszerzonym nonce): ciphertext = crypto_secretbox_easy(message, nonce, key) Wysokopoziomowe API: działa poprawnie bez konieczności wyboru parametrów.

Wydajność na urządzeniach mobilnych

Urządzeniom z Androidem i iOS często brakuje AES-NI. Analiza Google z 2014 roku wykazała, że ChaCha20-Poly1305 był 3× szybszy niż AES-GCM na procesorach ARM. Dlatego Google nakazało jego obsługę w Androidzie i Chrome.

Implementacja w Pythonie

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)

Porównanie: AES-GCM a ChaCha20-Poly1305

AES-GCM: szybszy ze sprzętową obsługą AES-NI, nonce 96-bitowy, możliwość sfałszowania taga GCM po ponownym użyciu nonce. ChaCha20-Poly1305: szybszy bez sprzętowej akceleracji, nonce 96-bitowy, klucz Poly1305 jest generowany od nowa dla każdej wiadomości. Oba rozwiązania są doskonałe. Na serwerach należy używać AES-GCM, a na urządzeniach mobilnych ChaCha20-Poly1305.

Szybki test

Jak w ChaCha20-Poly1305 generowany jest klucz Poly1305?

Podsumowanie

ChaCha20-Poly1305 to zoptymalizowany pod kątem urządzeń mobilnych wybór AEAD. Następnie omówimy wymianę kluczy Diffiego-Hellmana — sposób ustanawiania wspólnego sekretu przez dwie strony za pośrednictwem niezabezpieczonego kanału.

Często zadawane pytania

Czy lekcja „ChaCha20-Poly1305 AEAD w TLS 1.3” jest bezpłatna?

Tak — pełny tekst „ChaCha20-Poly1305 AEAD w TLS 1.3” 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 „ChaCha20-Poly1305 AEAD w TLS 1.3”?

Zobaczyć, jak ChaCha20 jest używany jako szyfr AEAD we współczesnym TLS Ć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 4 z 4.

Ile czasu zajmuje lekcja „ChaCha20-Poly1305 AEAD w TLS 1.3”?

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