Cryptology Academy · Lekcja

GCM i szyfrowanie uwierzytelnione

Dodać do szyfrowania tagi uwierzytelniające, aby zapobiec modyfikacjom

Lekcja 4 z 413 kroki

GCM i szyfrowanie uwierzytelnione 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

AES-GCM to złoty standard szyfrowania uwierzytelnionego. Zapewnia poufność ORAZ integralność w jednej operacji, uniemożliwiając modyfikowanie danych bez potrzeby stosowania osobnego kroku z HMAC.

Problem z samym szyfrowaniem

Szyfrowanie zapewnia poufność, ale NIE zapewnia integralności. Atakujący przechwytujący szyfrogram AES-CBC może zmienić poszczególne bity i zmodyfikować odszyfrowany tekst jawny bez znajomości klucza.

AEAD: szyfrowanie uwierzytelnione z powiązanymi danymi

Schematy AEAD zwracają: szyfrogram + tag uwierzytelniający. Tag uwierzytelnia zarówno szyfrogram, JAK I opcjonalne niezaszyfrowane powiązane dane (AAD). Każda modyfikacja unieważnia tag.

Architektura GCM

AES-GCM wykorzystuje: 1. AES-CTR do szyfrowania 2. GHASH do uwierzytelniania GHASH oblicza kod MAC oparty na wielomianie dla szyfrogramu + AAD, używając mnożenia w GF(2^128).

Wprowadzenie do GHASH

GHASH(H, A, C) = skrót AAD + szyfrogramu z użyciem podklucza H = AES(K, 0^128). Wielomian jest obliczany dla wartości H w GF(2^128). Wynik jest łączony operacją XOR z zaszyfrowanym licznikiem, tworząc tag.

Dane wejściowe i wyjściowe AES-GCM

Dane wejściowe: klucz 128-, 192- lub 256-bitowy, nonce 96-bitowy, tekst jawny, opcjonalne AAD Dane wyjściowe: szyfrogram (o tej samej długości co tekst jawny), 128-bitowy tag uwierzytelniający Tag ma zazwyczaj 16 bajtów. Nie zaleca się skracania go do mniej niż 12 bajtów.

Wymagania dotyczące nonce w GCM

GCM wymaga unikalnej wartości nonce dla każdego szyfrowania przy użyciu tego samego klucza. Standardem jest losowa wartość nonce o długości 96 bitów. Po zaszyfrowaniu 2^32 wiadomości prawdopodobieństwo kolizji przekracza 1%. Wtedy należy zmienić klucz.

Katastrofalne skutki ponownego użycia nonce w GCM

Ponowne użycie pary (klucz, nonce) w GCM umożliwia atakującemu odzyskanie podklucza GHASH i sfałszowanie dowolnego szyfrogramu z prawidłowym tagiem. Całkowicie łamie to zarówno poufność, jak i integralność.

Przypadki użycia powiązanych danych (AAD)

AAD to metadane, które chcesz uwierzytelnić, ale nie szyfrować: - nagłówek HTTP: uwierzytelniany, aby zapobiegać atakom na routing odpowiedzi - identyfikator rekordu w bazie danych: zapewnia odszyfrowanie szyfrogramu we właściwym wierszu - wersja protokołu: zapobiega atakom obniżającym wersję

Pełny przykład AES-GCM w Pythonie

from cryptography.hazmat.primitives.ciphers.aead import AESGCM import os key = AESGCM.generate_key(256) nonce = os.urandom(12) aad = b'user_id=12345' aesgcm = AESGCM(key) ct = aesgcm.encrypt(nonce, b'secret', aad) pt = aesgcm.decrypt(nonce, ct, aad) # raises if tampered

Alternatywy: ChaCha20-Poly1305

ChaCha20-Poly1305 to drugi najważniejszy schemat AEAD. Jest używany w TLS 1.3 na urządzeniach bez AES-NI (ARM/urządzenia mobilne). Zapewnia podobny poziom bezpieczeństwa co AES-GCM, ale działa szybciej w oprogramowaniu bez akceleracji sprzętowej.

Szybkie sprawdzenie

Przed czym chroni tag uwierzytelniający w AES-GCM?

Podsumowanie

AES-GCM to właściwy domyślny wybór dla szyfrowania uwierzytelnionego. Następnie omówimy szyfry strumieniowe: od złamanego RC4 do współczesnego ChaCha20.
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 „GCM i szyfrowanie uwierzytelnione” jest bezpłatna?

Tak — pełny tekst „GCM i szyfrowanie uwierzytelnione” 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 „GCM i szyfrowanie uwierzytelnione”?

Dodać do szyfrowania tagi uwierzytelniające, aby zapobiec modyfikacjom Ć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 „GCM i szyfrowanie uwierzytelnione”?

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. Podstawy szyfrów blokowych i dopełnianie
  2. ECB a CBC: wzorce i wektory IV
  3. Tryb CTR i działanie szyfrów strumieniowych
  4. GCM i szyfrowanie uwierzytelnione
← Powrót do Cryptology Academy