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).

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