Reklama
Dzisiaj jest 10 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama
Reklama
Reklama

Advanced Encryption Standard

|grafika = AES-SubBytes.svg
|opis grafiki =
|rodzaj = symetryczny szyfr blokowy
|data = 1998
|autorzy = Vincent Rijmen, Joan Daemen
|blok wejściowy = 128
|blok wyjściowy = 128
|klucz = 128, 192, 256
|rundy = zależna od klucza:
* 10 dla 128-bitowego
* 12 dla 192-bitowego
* 14 dla 256-bitowego
|data złamania =
|złamany przez =
|ataki =
}}
(krócej , nazwa oryginalna: Rijndael) – symetryczny szyfr blokowy przyjęty przez NIST jako standard FIPS-197 w wyniku konkursu ogłoszonego w 1997 roku. W 2001 roku został przyjęty jako standard.
AES jest oparty na algorytmie Rijndaela, którego autorami są belgijscy kryptografowie, Joan Daemen i Vincent Rijmen. Zaprezentowali oni swoją propozycję szyfru Instytucji NIST w ramach ogłoszonego konkursu. Rijndael jest rodziną szyfrów o różnych długościach klucza oraz różnych wielkościach bloków.
W przypadku AES, NIST wybrał trzy algorytmy z rodziny Rijndaela, z których każdy miał tę samą wielkość bloku (128 bitów), ale miały różne długości klucza: 128, 192 i 256 bitów.
AES został przyjęty przez rząd amerykański i obecnie jest używany na całym świecie. Jest on następcą algorytmu DES, opracowanego w 1977. AES jest szyfrem symetrycznym, tzn. do szyfrowania i do odszyfrowywania wykorzystywany jest ten sam klucz.
W Stanach Zjednoczonych AES został ogłoszony przez NIST jako PUB 197 (FIPS 197) 26 listopada 2001; przed tym wydarzeniem co 5 lat odbywały się procesy normalizacji, w trakcie których piętnaście różnych rozwiązań było prezentowanych i ulepszanych.
AES stał się standardem rządu federalnego 26 maja 2002, gdy został zaaprobowany przez Sekretarza Handlu. Szyfr ten jest dostępny w wielu różnych pakietach. Ponadto jest pierwszym (i jedynym) dostępnym publicznie szyfrem, który był zatwierdzony i wykorzystywany przez NSA do ochrony ściśle tajnych informacji.
Nazwa Rijndael jest kombinacją nazwisk twórców szyfru.

Reklama

Standardy

AES jest zdefiniowany w standardach:
* (ogłoszony 26 listopada 2001.)
*

Konkurs

Bezpośrednią przyczyną rozpisania konkursu była niewystarczająca siła algorytmu DES. W roku 1997 organizacja EFF była w stanie złamać wiadomość zaszyfrowaną DES-em w ciągu 3 dni sprzętem o wartości 250 tysięcy dolarów; obecnie można złamać DES-a jeszcze szybciej i taniej.
Do finału konkursu zakwalifikowało się pięć algorytmów szyfrujących (Rijndael, RC6, Mars, Serpent oraz Twofish), ze szczególnym wskazaniem na algorytm Rijndael. Możliwe jest w nim użycie kluczy o długościach 128, 192 i 256 bitów i operuje on na blokach danych o długości 128 bitów (oryginalna specyfikacja Rijndael dopuszczała również bloki 192- i 256-bitowe).

Reklama

Algorytm

AES bazuje na zasadzie, zwanej siecią substytucji-permutacji. Wykazuje się dużą szybkością pracy zarówno w przypadku sprzętu komputerowego, jak i oprogramowania. W przeciwieństwie do swego poprzednika, algorytmu DES, AES nie używa Sieci Feistela. AES posiada określony rozmiar bloku – 128 bitów, natomiast rozmiar klucza wynosi 128, 192, lub 256 bitów. Funkcja substytucyjna ma bardzo oryginalną konstrukcję, która uodparnia ten algorytm na znane ataki kryptoanalizy różnicowej i liniowej.
Odmiany algorytmu Rijndael niebędące standardem AES, w zależności od długości klucza i bloku danych wykonują 12 lub 14 rund szyfrujących.
AES operuje na macierzy bajtów o wymiarach 4×4, nazywaną stanem. Jednak niektóre wersje algorytmu dysponują większym rozmiarem bloku oraz dodatkowymi
kolumnami w macierzy. Większość obliczeń AES dokonywanych jest w konkretnym ciele skończonym.
Przykładowo, jeżeli mamy 16 bajtów, b0,b1,...,b15, są one reprezentowane w przedstawionej macierzy:
:: \begin{bmatrix} b_0 & b_4 & b_8 & b_{12} \\ b_1 & b_5 & b_9 & b_{13} \\ b_2 & b_6 & b_{10} & b_{14} \\ b_3 & b_7 & b_{11} & b_{15} \end{bmatrix}
Rozmiar klucza używany w algorytmie określa liczbę powtórzeń transformacji, które przekształcają dane wejściowe (czyli tekst jawny) w dane wyjściowe (szyfrogram).
Liczba cykli powtórzeń jest następująca:
* 10 cykli powtórzeń dla klucza 128-bitowego;
* 12 cykli powtórzeń dla klucza 192-bitowego;
* 14 cykli powtórzeń dla klucza 256-bitowego.
Wszystkie rundy składają się z kilku kroków, z których każdy rozłożony jest na cztery podobne (lecz nie identyczne) etapy. Jeden z tych etapów jest zależny od szyfrowania samego klucza.
Wykonując operacje w odwrotnej kolejności, używając tego samego klucza, można przekształcić szyfrogram z powrotem w tekst jawny.

Wysokopoziomowy opis algorytmu

# Rozszerzenie klucza – z głównego klucza algorytmu „tworzy się” kolejne klucze. AES wymaga osobnego klucza 128-bitowego dla każdej rundy, plus jeden dodatkowy.
# runda wstępna
## Dodawanie klucza rundy – każdy bajt macierzy stanu jest mieszany z blokiem rundy za pomocą operatora bitowego XOR.
# Rundy
## Zamiana Bajtów – nieliniowa zamiana, podczas której każdy bajt jest zamieniany innym.
## Zamiana Wierszy – etap transpozycji, podczas którego trzy ostatnie wiersze macierzy stanu są cyklicznie zmieniane określoną ilość razy.
## Mieszanie Kolumn – Operacja odnosi się do kolumn macierzy. Polega na łączeniu czterech bajtów w każdej kolumnie.
## Dodaj klucz rundy
# Final Round (brak operacji Mieszania Kolumn)
## Zamiana Bajtów
## Zamiana Wierszy
## Dodaj klucz rundy.

Kryptoanaliza

W 2006 opublikowana została praca, w której twierdzi się, że AES nie jest w pełni odporny na atak , ale oszacowanie ilości koniecznych obliczeń obarczone jest dużą niepewnością, w związku z tym oceny, na ile skuteczny jest ten atak, są różne.
W 2009 opublikowane zostały dwa nowe ataki z użyciem kluczy pokrewnych (}}) redukujące złożoność AES-256 do 2119. Wobec licznie pojawiających się nowych i mało prawdopodobnych ataków na AES w 2010 roku, Vincent Rijmen opublikował ironiczny artykuł opisujący „atak nazwany praktycznym”.
W grudniu 2009 opublikowano atak na niektóre sprzętowe implementacje AES umożliwiający odtworzenie klucza ze złożonością 232 przez zastosowanie różnicowej analizy błędów (}}).

Zużycie zasobów sprzętowych

Duża szybkość działania oraz niskie zużycie pamięci były głównymi kryteriami, na podstawie których wybierano algorytm. Algorytm AES funkcjonuje prawidłowo na szerokim zakresie urządzeń – zarówno na 8-bitowych kartach mikroprocesorowych, jak i na komputerach o wysokiej mocy obliczeniowej.
W przypadku mikroprocesorów klasy Pentium Pro, szyfrowanie za pomocą AES-a wymaga 18 cykli zegara na każdy bajt, co jest równoznaczne z wydajnością rzędu 11 MB/s dla procesora 200 MHz. Z kolei na procesorze klasy Pentium M o szybkości 1,7 GHz wydajność wynosi ok. 60 MB/s.
Na procesorach Intel Core i3/i5/i7, AMD APU, a także na procesorach AMD FX wspierających zestaw instrukcji AES, wydajność może przekroczyć 700 MB/s na każdy wątek.

Przypisy

Linki zewnętrzne

* [http://www.schneier.com/book-applied-source.html Kody źródłowe różnych algorytmów szyfrowania (także algorytmu Rijndael) na stronie Schneiera]
Kategoria:Szyfry blokowe

Reklama
Reklama