AES
AES (ang. Advanced Encryption Standard) jest powszechnie stosowanym algorytmem szyfrowania symetrycznego, zatwierdzonym jako standard kryptograficzny przez amerykański NIST w 2001 roku. Zastępuje on starszy DES i jego wariant 3DES, oferując wyższy poziom bezpieczeństwa przy jednoczesnym zachowaniu wydajności implementacji sprzętowych i programowych.
Historia
Projektowanie nowego standardu szyfru symetrycznego rozpoczęło się w 1997 roku, gdy NSA i NIST ogłosiły konkurs mający wyłonić następcę DES. Do konkursu zgłoszono 15 algorytmów, z których pięć przeszło pierwszą runde selekcji. Ostatecznie zwyciężył algorytm Rijndael, opracowany przez belgijskich kryptologów Joan Daemen i Vincent Rijmen. Standard został opublikowany w dokumencie FIPS‑197 i formalnie przyjęty w 2001 roku.
Specyfikacja
AES jest algorytmem szyfrowania blokowego o stałej długości bloku 128 bitów. Obsługuje trzy długości klucza: 128, 192 i 256 bitów, co skutkuje odpowiednio 10, 12 i 14 rundami przetwarzania danych.
- Blok danych: 128 bitów
- Długość klucza: 128, 192 lub 256 bitów
- Liczba rund: 10 (128‑bitowy klucz), 12 (192‑bitowy klucz), 14 (256‑bitowy klucz)
- Operacje podstawowe: SubBytes, ShiftRows, MixColumns, AddRoundKey
Algorytm wykorzystuje tzw. S‑boksy (substitucyjne) oraz mieszanie kolumny w przestrzeni Galois’a (GF(28)), co zapewnia silne rozeznawanie różnic pomiędzy sąsiadującymi blokami danych.
Zastosowania
AES znajduje zastosowanie w wielu protokołach i systemach informatycznych, m.in.:
- TLS/SSL – zabezpieczanie połączeń internetowych
- IPsec – szyfrowanie ruchu w sieciach IP
- WPA2 – zabezpieczenia sieci WLAN
- PGP i GnuPG – szyfrowanie wiadomości e‑mail
- BitLocker, FileVault – szyfrowanie dysków twardych
- Systemy płatności elektronicznych oraz aplikacje rządowe i wojskowe
Bezpieczeństwo
Do tej pory AES nie został skutecznie złamany w warunkach praktycznych przy użyciu znanych ataków kryptograficznych, takich jak atak brutalny (brute‑force) czy atak kryptograficzny wykorzystujący słabe implementacje. Najważniejsze zagrożenia dotyczą natomiast:
- Użycia słabych lub powtarzających się kluczy
- Lewych implementacji podatnych na ataki timingowe i kanał boczny
- Niewłaściwego zarządzania wektorami inicjalizacyjnymi (IV) w trybach operacyjnych, takich jak CBC czy CTR
Tryby operacyjne
AES może być używany w różnych trybach operacyjnych, które określają sposób przetwarzania kolejnych bloków danych. Najpopularniejsze z nich to:
- ECB (Electronic Codebook) – najprostszy, ale niezalecany ze względu na brak losowości
- CBC (Cipher Block Chaining) – wprowadza łańcuchowanie bloków
- CFB (Cipher Feedback) – umożliwia szyfrowanie strumieniowe
- OFB (Output Feedback) – podobny do CFB, ale bardziej odporny na błędy transmisji
- CTR (Counter) – bardzo wydajny, szczególnie w implementacjach równoległych
- GCM (Galois/Counter Mode) – zapewnia jednoczesne szyfrowanie i uwierzytelnianie danych
Implementacje i biblioteki
Wiele otwarto‑źródłowych oraz komercyjnych bibliotek implementuje AES, m.in.:
- OpenSSL
- Crypto++
- Bouncy Castle
- Wbudowane funkcje w systemach operacyjnych (CNG, CommonCrypto)
Powiązane pojęcia
Do tematyki AES związane są także następujące zagadnienia:
- Kryptografia
- Klucz symetryczny
- Algorytm
- Szyfrowanie blokowe
- Szyfrowanie strumieniowe
- Atak kryptograficzny
Bibliografia
1. FIPS PUB 197 – Advanced Encryption Standard (AES), National Institute of Standards and Technology, 2001.
2. Daemen, J., Rijmen, V. The Design of Rijndael: AES - The Advanced Encryption Standard. Springer, 2002.
3. NIST Special Publication 800‑38A – Recommendation for Block Cipher Modes of Operation, 2001.