Jak działa algorytm szyfrowania Rijndael?
Znany również pod skrótem AES
Bezpieczne przesyłanie ściśle poufnych informacji w taki sposób, aby osoby nieuprawnione nie uzyskały dostępu, od zawsze stanowi wyzwanie. Wczesne „tajne języki” – na przykład proste przesunięcia liter – przy dzisiejszej mocy obliczeniowej można złamać w sposób trywialny. Obecnie chronimy dane przy użyciu mechanizmów kryptograficznych, które są precyzyjnie zdefiniowane matematycznie, a ich bezpieczeństwo zostało publicznie zweryfikowane.
Takie mechanizmy wykorzystują klucz, który znają wyłącznie nadawca i odbiorca. Szyfrowanie i deszyfrowanie odbywa się zgodnie z algorytmem szyfrowania – jasno opisanym schematem matematycznym.
Password Depot szyfruje Państwa poufne dane za pomocą algorytmu Rijndael, który został znormalizowany jako AES (Advanced Encryption Standard).
Poniżej wyjaśniamy działanie algorytmu i opisujemy jego znaczenie z punktu widzenia technicznego.
Advanced Encryption Standard (AES) – znormalizowana odmiana algorytmu Rijndael
Amerykański National Bureau of Standards (obecnie NIST) w 1977 roku znormalizował algorytm DES; standard ten został w 2005 roku wycofany, ponieważ nie zapewniał już wystarczającego poziomu bezpieczeństwa (komunikat NIST). Jako następcę NIST wybrał w 2001 roku algorytm Rijndael i na jego podstawie zdefiniował standard Advanced Encryption Standard (AES) (FIPS 197).
Ważne: AES jest podzbiorem rodziny algorytmów Rijndael. AES ustala rozmiar bloku na 128 bitów i dopuszcza klucze o długości 128, 192 lub 256 bitów (informacja NIST, FIPS 197 (PDF)).
AES jest dopuszczony do ochrony informacji amerykańskich instytucji rządowych do poziomu TOP SECRET (por. arkusz informacyjny CNSSP-15 oraz aktualny dokument CNSA-2.0-FAQ agencji NSA).
Jak działa Rijndael/AES (krótkie podsumowanie)
Rijndael jest szyfrem sieci podstawień i permutacji (SPN). Kluczowe koncepcje to podstawienia na poziomie bajtów, transformacje liniowe oraz operacje XOR.
Przebieg na poziomie bloku (128-bitowy „State”)
- Rozszerzenie klucza (Key Schedule): Na podstawie klucza generowane jest Nr + 1 kluczy rundowych (np. 11 dla AES-128, 13 dla AES-192, 15 dla AES-256). Źródło: FIPS 197.
- Runda inicjalna: AddRoundKey – blok tekstu jawnego (reprezentowany jako macierz 4×4 bajty) jest łączony operacją XOR z pierwszym kluczem rundowym.
- Rundy 1 … Nr:
- SubBytes: Każdy bajt jest zastępowany przy użyciu S-Box (odwrotność multiplikatywna w GF(28) oraz transformacja afiniczna z wykorzystaniem stałej
0x63). Źródło: FIPS 197. - ShiftRows: Wiersze macierzy stanu są przesuwane cyklicznie.
- MixColumns: Kolumny są mieszane przez mnożenie macierzowe nad GF(28).
- AddRoundKey: operacja XOR z odpowiednim kluczem rundowym.
Uwaga: W ostatniej rundzie etap MixColumns nie jest wykonywany. Liczba rund wynosi odpowiednio 10/12/14 dla kluczy o długości 128/192/256 bitów (FIPS 197). - SubBytes: Każdy bajt jest zastępowany przy użyciu S-Box (odwrotność multiplikatywna w GF(28) oraz transformacja afiniczna z wykorzystaniem stałej
AES można zaimplementować w postaci oprogramowania, firmware’u lub sprzętu (FIPS 197). W praktycznym zastosowaniu wykorzystuje się różne tryby pracy, np. CBC, CTR lub GCM (szyfrowanie uwierzytelnione). Rekomendacje znajdują się w dokumentach NIST SP 800-38A oraz NIST SP 800-38D (GCM/GMAC).
Ważne dla kontekstu: AES jest szyfrem symetrycznym przeznaczonym do szyfrowania danych. Wymiana kluczy jest zwykle realizowana za pomocą algorytmów asymetrycznych ((EC)DH/RSA). AES może jednak bezpiecznie opakowywać klucze („Key Wrap”) – zob. NIST SP 800-38F.
Oficjalna specyfikacja
Odpowiednią specyfikację znajdą Państwo tutaj: https://csrc.nist.gov/files/pubs/fips/197/final/docs/fips-197.pdf
Ataki typu brute-force
Brute-force oznacza, że atakujący próbuje wszystkie możliwe klucze. Klasyczne algorytmy, takie jak DES z kluczami o długości jedynie 56 bitów, można dziś w ten sposób praktycznie złamać – NIST w 2005 roku oficjalnie wycofał DES (NIST).
Nowoczesne algorytmy, takie jak AES z kluczami o długości 128/192/256 bitów, dysponują natomiast astronomicznie dużą przestrzenią kluczy. W praktyce kluczowe znaczenie ma więc mniej sam algorytm, a bardziej pochodzenie klucza z hasła oraz jakość hasła głównego.
Password Depot dodatkowo utrudnia ataki brute-force poprzez funkcję opóźnienia: po błędnym wprowadzeniu hasła głównego program pozostaje zablokowany przez kilka sekund.
Wnioski: Przy poprawnej implementacji, zastosowaniu odpowiednich trybów pracy (np. GCM) oraz wystarczającej długości klucza AES jest z dzisiejszej perspektywy uważany za bardzo bezpieczny w długim horyzoncie czasowym.
Więcej na temat ataków brute-force.
Dalsze materiały
- FIPS 197 – Advanced Encryption Standard (AES)
- FIPS 197 – PDF (oryginalna specyfikacja)
- NIST: AES jest podzbiorem Rijndaela (rozmiar bloku 128 bitów)
- NIST SP 800-38A – tryby pracy (ECB/CBC/CFB/OFB/CTR)
- NIST SP 800-38D – GCM/GMAC (szyfrowanie uwierzytelnione)
- NIST SP 800-38F – AES Key Wrap
- CNSSP-15 Fact Sheet – zastosowanie AES do ochrony informacji tajnych/ściśle tajnych
- NSA: CNSA 2.0 FAQ – aktualne wymagania
- NIST: wycofanie DES (tło techniczne)