Articles

Zaawansowany standard szyfrowania

Ogłoszenia

Popularniejszym i szeroko przyjętym symetrycznym algorytmem szyfrowania, z którym można się spotkać w dzisiejszych czasach, jest Advanced Encryption Standard (AES). Jest on co najmniej sześć razy szybszy niż potrójny DES.

Zastąpienie DES było potrzebne, ponieważ rozmiar klucza był zbyt mały. Wraz z rosnącą mocą obliczeniową uznano, że jest on podatny na atak wyczerpującego wyszukiwania kluczy. Potrójny DES został zaprojektowany, aby przezwyciężyć tę wadę, ale okazał się powolny.

Właściwości AES są następujące –

  • Symetryczny szyfr blokowy z kluczem symetrycznym
  • 128-bitowe dane, 128/192/256-bitowe klucze
  • Solidniejszy i szybszy niż Triple-DES
  • Podajemy pełną specyfikację i szczegóły projektu
  • Program możliwy do zaimplementowania w C i Javie

Operacja AES

AES jest szyfrem iteracyjnym, a nie Feistela. Jest on oparty na „sieci substytucji-permutacji”. Składa się on z serii powiązanych ze sobą operacji, z których niektóre polegają na zastępowaniu danych wejściowych określonymi danymi wyjściowymi (substytucje), a inne na tasowaniu bitów (permutacje).

Co ciekawe, AES wykonuje wszystkie swoje obliczenia na bajtach, a nie na bitach. Stąd, AES traktuje 128 bitów bloku tekstu jawnego jako 16 bajtów. Te 16 bajtów jest ułożone w czterech kolumnach i czterech wierszach do przetworzenia jako macierz –

W przeciwieństwie do DES, liczba rund w AES jest zmienna i zależy od długości klucza. AES używa 10 rund dla kluczy 128-bitowych, 12 rund dla kluczy 192-bitowych i 14 rund dla kluczy 256-bitowych. Każda z tych rund używa innego 128-bitowego klucza, który jest obliczany na podstawie oryginalnego klucza AES.

Schemat struktury AES jest przedstawiony na poniższym rysunku –

Sztuka AES

Proces szyfrowania

Tutaj ograniczamy się do opisu typowej rundy szyfrowania AES. Każda runda składa się z czterech podprocesów. Proces pierwszej rundy jest przedstawiony poniżej –

Proces pierwszej rundy

Zastępowanie bajtów (SubBytes)

16 bajtów wejściowych jest zastępowanych przez sprawdzenie stałej tablicy (S-box) podanej w projekcie. Rezultatem jest macierz składająca się z czterech wierszy i czterech kolumn.

Przesunięcia

Każdy z czterech wierszy macierzy jest przesuwany w lewo. Wszystkie wpisy, które „odpadną” są ponownie wstawiane po prawej stronie wiersza. Przesunięcie odbywa się w następujący sposób –

  • Pierwszy rząd nie jest przesuwany.

  • Drugi rząd jest przesuwany o jedną (bajtową) pozycję w lewo.

  • Trzeci rząd jest przesuwany o dwie pozycje w lewo.

  • Czwarty rząd jest przesuwany o trzy pozycje w lewo.

  • Wynikiem jest nowa macierz składająca się z tych samych 16 bajtów, ale przesuniętych względem siebie.

MixColumns

Każda kolumna składająca się z czterech bajtów jest teraz przekształcana przy użyciu specjalnej funkcji matematycznej. Funkcja ta przyjmuje jako dane wejściowe cztery bajty z jednej kolumny i wyprowadza cztery zupełnie nowe bajty, które zastępują oryginalną kolumnę. Wynikiem jest kolejna nowa macierz składająca się z 16 nowych bajtów. Należy zauważyć, że ten krok nie jest wykonywany w ostatniej rundzie.

Addroundkey

16 bajtów macierzy jest teraz traktowanych jako 128 bitów i jest XORowane ze 128 bitami okrągłego klucza. Jeśli jest to ostatnia runda, to wyjściem jest szyfrogram. W przeciwnym razie, wynikowe 128 bitów jest interpretowane jako 16 bajtów i rozpoczynamy kolejną podobną rundę.

Proces deszyfrowania

Proces deszyfrowania szyfrogramu AES jest podobny do procesu szyfrowania w odwrotnej kolejności. Każda runda składa się z czterech procesów wykonywanych w odwrotnej kolejności –

  • Dodaj klucz rundy
  • Mieszaj kolumny
  • Przesuń wiersze
  • Zastępowanie bajtów

Ponieważ podprocesy w każdej rundzie przebiegają w odwrotny sposób, w przeciwieństwie do szyfru Feistela, algorytmy szyfrowania i deszyfrowania muszą być oddzielnie zaimplementowane, chociaż są bardzo blisko powiązane.

Analiza AES

W dzisiejszej kryptografii, AES jest szeroko przyjęty i wspierany zarówno w sprzęcie jak i oprogramowaniu. Do tej pory nie odkryto żadnych praktycznych ataków kryptoanalitycznych na AES. Dodatkowo, AES posiada wbudowaną elastyczność długości klucza, co pozwala w pewnym stopniu „zabezpieczyć się na przyszłość” przed postępem w zakresie zdolności do wyczerpującego przeszukiwania klucza.

Jednakże, podobnie jak w przypadku DES, bezpieczeństwo AES jest zapewnione tylko wtedy, gdy jest on poprawnie zaimplementowany i stosowane jest dobre zarządzanie kluczami.

Reklamy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *