Strona głównaArtykułyAES: Standard Zaawansowanego Szyfrowania

AES: Standard Zaawansowanego Szyfrowania

Za każdym razem, gdy otwierasz bezpieczny serwis internetowy, łączysz się z Wi-Fi lub wysyłasz zaszyfrowane wiadomości, istnieje duża szansa, że Standard Zaawansowanego Szyfrowania cicho chroni Twoje dane za kulisami. AES jest symetrycznym szyfrem blokowym, co oznacza, że ten sam sekretny klucz zarówno zamyka, jak i odblokowuje informacje, a przetwarza dane w stałych fragmentach o rozmiarze 128-bitów zamiast pojedynczych bitów lub bajtów. Przyjęty przez rząd USA w 2001 roku po rygorystycznym konkursie publicznym, AES zastąpił przestarzały Standard Szyfrowania Danych i stał się globalnym standardem w dziedzinie bezpieczeństwa cyfrowego. Jego siła tkwi w powtarzaniu małego zestawu transformacji matematycznych wielokrotnie, co dezorganizuje dane tak bardzo, że nie istnieje praktyczny skrót do odwrócenia tego procesu bez klucza. W tym laboratorium możesz przejść przez te transformacje samodzielnie i zobaczyć dokładnie, jak blok danych w postaci jawnej staje się niezrozumiałą zaszyfrowaną treścią.

mysimulator teamZaktualizowano — czerwiec 2026≈ 8 min czytania▶ Otwórz symulację

Co czyni AES symetrycznym szyfrem blokowym

AES należy do rodziny algorytmów zwanych szyframi blokowymi, które szyfrują dane w stałych fragmentach zamiast nieprzerwanie przesyłać pojedyncze bity. Każdy blok, który AES przetwarza, ma dokładnie 128 bitów, czyli 16 bajtów, niezależnie od wybranej długości klucza. Jest to również szyfr symetryczny, co oznacza, że ten sam sekretny klucz jest używany zarówno do szyfrowania oryginalnego tekstu jawnego, jak i do odszyfrowywania wynikowego tekstu zaszyfrowanego z powrotem do czytelnych danych. Różni się to od kryptografii asymetrycznej lub opartej na kluczu publicznym, w której używane są oddzielne klucze publiczne i prywatne. AES obsługuje trzy rozmiary klucza: 128, 192 i 256 bitów, oferując kompromis między szybkością a marginesem bezpieczeństwa, przy czym większe klucze zapewniają większą odporność na ataki typu brute-force kosztem niewielkiego spadku wydajności. Wewnątrz, 16 bajtów bloku są ułożone w siatkę 4x4 o nazwie stan i to właśnie ta siatka jest powtarzalnie transformowana podczas szyfrowania. Ponieważ ten sam klucz musi być tajnie udostępniony nadawcy i odbiorcy, AES jest zwykle łączony z protokołami wymiany kluczy w systemach rzeczywistych, ale szyfr sam w sobie koncentruje się wyłącznie na efektywnej zaszyfrowywaniu danych po tym, jak obie strony już posiadają udostępniony sekret. To połączenie stałego rozmiaru bloku, symetrii opartej na współdzielonym kluczu i elastycznej długości klucza sprawia, że AES jest wystarczająco szybki do codziennego użytku i wystarczająco silny, aby chronić wrażliwe informacje rządowe, finansowe i osobiste na całym świecie.

Podstawowa Struktura Runder w AES

AES nie szyfruje danych w jednym kroku. Zamiast tego, stosuje się sekwencję prawie identycznych kroków transformacji, zwanych underami, wielokrotnie do siatki 4x4. Liczba underów zależy bezpośrednio od rozmiaru klucza: klucz o długości 128 bitów wykorzystuje 10 underów, klucz o długości 192 bitów wykorzystuje 12 underów, a klucz o długości 256 bitów wykorzystuje 14 underów. Dłuższe klucze wymagają więcej underów, ponieważ każdy under jedynie ograniczało diffunduje i dezorientuje dane, dlatego potrzebne są dodatkowe rundy, aby utrzymać odpowiedni margines bezpieczeństwa w stosunku do większej przestrzeni możliwych kluczy. Każdy under (z wyjątkiem ostatniego) wykonuje cztery różne operacje sekwencyjnie, a każdy under wykorzystuje inny podklucz wygenerowany z oryginalnego klucza. Przed rozpoczęciem pierwszego undera, odbywa się wstępny krok, w którym tekst jawny jest łączony z oryginalnym kluczem. Ostatni under jest nieco specjalny, ponieważ pomija jedną ze standardowych operacji, co stanowi decyzję projektową, która utrzymuje symetrię i wydajność szyfrowania i odszyfrowywania bez osłabiania bezpieczeństwa. Po przejściu danych przez wszystkie rundy, oryginalne wzory i struktura tekstu jawnego są w pełni zatarte, zastąpione wyjściem, które statystycznie jest niezauważalne jako szum, chyba że dysponuje się właściwym kluczem.

Cztery Podstawowe Operacje: SubBytes, ShiftRows, MixColumns, AddRoundKey

Każde turing AES (z drobnymi wyjątkami) stosuje cztery operacje na macierz stanu. SubBytes zastępuje każdy bajt w macierzy za pomocą stałej tabeli wyszukiwania zwanej S-boxem, nieliniową substitucją zaprojektowaną tak, aby odpornieć przeciwko atakom matematycznym poprzez sprawienie, by relacja między wejściem a wyjściem była tak nieprzewidywalna, jak to możliwe. ShiftRows następnie cyklicznie przesuwa każdy wiersz macierzy 4x4 o lewo o różną ilość: wiersz 0 pozostaje niezmieniony, wiersz 1 o jeden bajt, wiersz 2 o dwa baje ty i wiersz 3 o trzy baje ty, rozpraszając wartości bajtów na kolumnach. MixColumns traktuje każdy kolumnę jako mały wektor i mnoży go przez stałą macierz za pomocą arytmetyki w polu skończonym (konkretnie GF(2^8)), dokładnie mieszając baje ty w każdej kolumnie tak, aby pojedynczy bajt wejściowy wpływał na wiele bajtów wyjściowych. Ten krok jest pomijany w ostatniej rundzie. Na koniec AddRoundKey łączy stan z podkluczem specyficznym dla rundy za pomocą prostego bitowego XOR-a, wprowadzając materiał klucza sekretowego do transformacji. Razem SubBytes i ShiftRows/MixColumns pełnią uzupełniające role: substitucja ukrywa relację między kluczem a zaszyfrowanym tekstem, a przesunięcia i mieszanie rozprzestrzeniają wpływ na całą blok tak, że zmiana pojedynczego bita wejściowego ostatecznie wpływa na prawie każdy bajt wyjściowy.

Schemat Kluczy: Generowanie Kluczy Okresowych

AES nigdy nie wykorzystuje oryginalnego sekretnego klucza bezpośrednio w każdym cyklu. Zamiast tego, proces zwany schematem kluczy (lub rozszerzeniem klucza) wyprowadza unikalny klucz okresowy dla każdego cyklu z oryginalnego klucza, tworząc sekwencję kluczy okresowych. Proces ten wykorzystuje operacje podobne do tych w głównym szyfrze, w tym zastąpienie bajtów przez S-boksa i stałą zależną od okręgu, aby zapewnić, że każdy klucz okresowy zasadniczo nie jest powiązany z innymi, nawet jeśli wszystkie pochodzą z tego samego źródła. Celem tego projektu jest uniemożliwienie atakującemu, który w jakikolwiek sposób nauczy się jednego klucza okresowego, łatwego odtworzenia oryginalnego sekretnego klucza lub przewidzenia innych kluczy okresowych. Liczba generowanych kluczy okresowych zawsze jest o jeden większa niż liczba cykli szyfrowania, ponieważ potrzebny jest również świeży klucz do pierwszego kroku AddRoundKey wykonywanego przed rozpoczęciem pierwszego okręgu.

Sieć Zamiany-Substytucji i Przejście od DES do AES

AES klasyfikuje się jako sieć substytucji-zamiany, rodzaj konstrukcji szyfrującej oparty na dwóch alternatywnych typach operacji: etapach substytucji, które zastępują wartości danych zgodnie z ustalonymi zasadami (SubBytes), oraz etapach zamiany, które przemieszczają lub rozpraszają te wartości w bloku (ShiftRows i MixColumns). Powtarzanie etapów substytucji i zamiany na wielu rundach, połączone z nowym materiałem klucza za każdym razem, tworzy silne zakłócenie i rozproszenie, dwie właściwości, które Claude Shannon zidentyfikował kilkadziesiąt lat wcześniej jako niezbędne dla bezpiecznych szyfrów. Początki AES sięgają późnych lat 90-tych, kiedy to Narodowe Laboratorium Standardów i Technologii (NIST) w USA uruchomiło otwarte, publiczne konkurs na znalezienie następcy starzejącego się Szyfru Jednokrotnego Dostępu (DES), którego krótki klucz o długości 56 bitów stał się podatny na ataki siłowe wraz ze wzrostem mocy obliczeniowej. Zostało wpłaconych i publicznie ocenionych piętnastu algorytmów kandydatów od kryptografów z całego świata. W roku 2000 NIST wybrał algorytm o nazwie Rijndael, zaprojektowany przez belgijskich kryptografów Joana Daemena i Vincenta Rijmena, a formalnie przyjęto go jako Szyfr Zaawansowanej Substytucji w 2001 roku. Jego przejrzysty proces wyboru, silna reputacja bezpieczeństwa oraz efektywność na sprzęcie i oprogramowaniu uczyniły go najpowszechniej zaufanym szyfrem symetrycznym na świecie dzisiaj.

Frequently asked questions

Dlaczego AES używa różnych liczb rund dla różnych rozmiarów kluczy?

Większe klucze tworzą większy obszar możliwych wartości dla atakującego do przeszukania, ale pojedyncza tura dodaje jedynie ograniczoną ilość dyfuzji i zamieszania. Potrzebuje się więcej tur z większymi kluczami, aby utrzymać stały margines bezpieczeństwa, dlatego klucze 128-bitowe używają 10 tur, klucze 192-bitowe 12, a klucze 256-bitowe 14.

Czy AES jest takie samo jak szyfrowanie w ogóle?

Nie. AES to konkretny, szeroko stosowany algorytm w szerszym obszarze symetrycznego szyfrowania. Istnieją inne szyfry symetryczne, takie jak starszy DES i Triple DES, ale AES stał się dominującym standardem ze względu na jego silne bezpieczeństwo i wydajność.

Czy AES można złamać przez siłę bruta?

Przy obecnej technologii obliczeniowej, nie. Nawet AES-128 ma 2^128 możliwych kluczy, liczba tak ogromna, że próba każdego zestawu kombinacji zajęłaby dłużej niż wiek wszechświata przy użyciu jakiegokolwiek znanego komputera lub realistycznego sprzętu przyszłości.

Jakie jest różnice między AES a Rijndael?

Rijndael to oryginalny algorytm zgłoszony do konkursu NIST, który faktycznie obsługuje szerszy zakres rozmiarów bloków i kluczy niż AES. AES to zstandardizowana wersja Rijndaela, która została oficjalnie przyjęta przez NIST, ograniczona specjalnie do rozmiaru bloku 128-bitowego z kluczami o długościach 128, 192 lub 256 bitów.

Dlaczego AES zastąpiło DES?

DES używał tylko 56-bitowego klucza, który stał się podatny na brute-force ze względu na wzrost mocy obliczeniowej w latach 90. NIST przeprowadziło otwarty konkurs, aby znaleźć silniejszą, bardziej nowoczesną alternatywę, ostatecznie wybierając Rijndaela, który stał się AES w 2001 roku.

Wypróbuj na żywo

Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz AES: The Advanced Encryption Standard i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.

▶ Otwórz symulację AES: The Advanced Encryption Standard

Co znalazłeś?

Dodaj kroki odtworzenia (opcjonalnie)