logo

Zaawansowany standard szyfrowania (AES)

Advanced Encryption Standard (AES) to specyfikacja szyfrowania danych elektronicznych ustanowiona przez Narodowy Instytut Standardów i Technologii Stanów Zjednoczonych (NIST) w 2001 roku. AES jest dziś powszechnie stosowany, ponieważ jest znacznie silniejszy niż DES i potrójny DES, mimo że jest trudniejszy wdrożyć.

Punkty do zapamiętania



  • AES jest szyfrem blokowym.
  • Rozmiar klucza może wynosić 128/192/256 bitów.
  • Szyfruje dane w blokach po 128 bitów każdy.

Oznacza to, że pobiera 128 bitów na wejściu i wyprowadza 128 bitów zaszyfrowanego tekstu zaszyfrowanego na wyjściu. AES opiera się na zasadzie sieci podstawieniowo-permutacyjnej, co oznacza, że ​​jest wykonywany za pomocą szeregu połączonych operacji polegających na zastępowaniu i tasowaniu danych wejściowych.

przykład listy w Javie

Działanie szyfru:
AES wykonuje operacje na bajtach danych, a nie na bitach. Ponieważ rozmiar bloku wynosi 128 bitów, szyfr przetwarza jednocześnie 128 bitów (lub 16 bajtów) danych wejściowych.

Liczba rund zależy od długości klucza w następujący sposób:



  • Klucz 128-bitowy – 10 rund
  • Klucz 192-bitowy – 12 rund
  • Klucz 256-bitowy – 14 rund

Tworzenie okrągłych kluczy:
Algorytm zestawienia kluczy służy do obliczania wszystkich okrągłych kluczy z klucza. Zatem klucz początkowy służy do tworzenia wielu różnych okrągłych kluczy, które będą używane w odpowiedniej rundzie szyfrowania.

Szyfrowanie:
AES traktuje każdy blok jako 16-bajtową siatkę (4 bajty x 4 bajty = 128) w głównym układzie kolumn.



 [ b0 | b4 | b8 | b12 | | b1 | b5 | b9 | b13 | | b2 | b6 | b10| b14 | | b3 | b7 | b11| b15 ]>

Każda runda składa się z 4 kroków:

  • Podbajty
  • ShiftRows
  • Mieszaj kolumny
  • Dodaj okrągły klucz

Ostatnia runda nie obejmuje rundy MixColumns.

SubBytes dokonuje podstawienia, a ShiftRows i MixColumns wykonują permutację w algorytmie.

Podbajty:
Ten krok implementuje podstawienie.

Na tym etapie każdy bajt jest zastępowany innym bajtem. Odbywa się to za pomocą tabeli przeglądowej zwanej także S-boxem. To podstawienie odbywa się w taki sposób, że bajt nigdy nie jest zastępowany przez siebie ani przez inny bajt, który jest uzupełnieniem bieżącego bajtu. Wynikiem tego kroku jest 16-bajtowa (4 x 4) macierz, jak poprzednio.

Następne dwa kroki implementują permutację.

ShiftRows:
Ten krok jest taki, jak się wydaje. Każdy wiersz jest przesuwany określoną liczbę razy.

  • Pierwszy rząd nie jest przesunięty
  • Drugi rząd jest przesunięty raz w lewo.
  • Trzeci rząd jest przesunięty dwukrotnie w lewo.
  • Czwarty rząd jest przesunięty trzykrotnie w lewo.

(Wykonywane jest przesunięcie okrężne w lewo.)

 [ b0 | b1 | b2 | b3 ] [ b0 | b1 | b2 | b3 ] | b4 | b5 | b6 | b7 | ->| b5 | b6 | b7 | b4 | | b8 | b9 | b10 | b11 | | b10 | b11 | b8 | b9 | [ b12 | b13 | b14 | b15 ] [ b15 | b12 | b13 | b14 ]>

Mieszane kolumny:
Ten krok to w zasadzie mnożenie macierzy. Każda kolumna jest mnożona przez określoną macierz, w wyniku czego zmienia się pozycja każdego bajtu w kolumnie.

jak przekonwertować znak na ciąg Java

Ten krok jest pomijany w ostatniej rundzie.

 [ c0 ] [ 2 3 1 1 ] [ b0 ] | c1 | = | 1 2 3 1 | | b1 | | c2 | | 1 1 2 3 | | b2 | [ c3 ] [ 3 1 1 2 ] [ b3 ]>

Dodaj okrągłe klucze:
Teraz wynikowy wynik poprzedniego etapu jest poddawany operacji XOR za pomocą odpowiedniego okrągłego klawisza. W tym przypadku 16 bajtów nie jest traktowane jako siatka, ale jako 128 bitów danych.

Po wszystkich tych rundach na wyjściu zwracane jest 128 bitów zaszyfrowanych danych. Proces ten jest powtarzany, aż wszystkie dane przeznaczone do zaszyfrowania zostaną mu poddane.

Deszyfrowanie:
Etapy rund można łatwo cofnąć, ponieważ etapy te mają swoje przeciwieństwo, które po wykonaniu odwraca zmiany. Każde 128 bloków przechodzi przez 10, 12 lub 14 rund, w zależności od rozmiaru klucza.

Etapy każdej rundy deszyfrowania są następujące:

  • Dodaj okrągły klucz
  • Odwrotne kolumny Mix
  • ShiftRows
  • Odwrotny podbajt

Proces deszyfrowania to proces szyfrowania wykonywany w odwrotnej kolejności, dlatego wyjaśnię kroki z zauważalnymi różnicami.

Odwrotne kolumny Mix :
Ten krok jest podobny do kroku MixColumns w szyfrowaniu, ale różni się matrycą używaną do przeprowadzenia operacji.

 [ b0 ] [ 14 11 13 9 ] [ c0 ] | b1 | = | 9 14 11 13 | | c1 | | b2 | | 13 9 14 11 | | c2 | [ b3 ] [ 11 13 9 14 ] [ c3 ]>

Odwrotne podbajty:
Inverse S-box służy jako tablica przeglądowa i za jej pomocą podmieniane są bajty podczas deszyfrowania.

Aplikacje:

AES jest szeroko stosowany w wielu aplikacjach wymagających bezpiecznego przechowywania i transmisji danych. Niektóre typowe przypadki użycia obejmują:

    Bezpieczeństwo sieci bezprzewodowej: AES służy do zabezpieczania sieci bezprzewodowych, takich jak sieci Wi-Fi, w celu zapewnienia poufności danych i zapobiegania nieautoryzowanemu dostępowi. Szyfrowanie bazy danych: AES można zastosować do szyfrowania wrażliwych danych przechowywanych w bazach danych. Pomaga to chronić dane osobowe, dokumentację finansową i inne poufne dane przed nieupoważnionym dostępem w przypadku naruszenia bezpieczeństwa danych. Bezpieczna komunikacja: AES jest szeroko stosowany w protokołach takich jak komunikacja internetowa, poczta e-mail, komunikatory internetowe i połączenia głosowe/wideo. Zapewnia poufność danych. Przechowywanie danych: AES służy do szyfrowania wrażliwych danych przechowywanych na dyskach twardych, dyskach USB i innych nośnikach pamięci, chroniąc je przed nieautoryzowanym dostępem w przypadku utraty lub kradzieży. Wirtualne sieci prywatne (VPN): AES jest powszechnie używany w protokołach VPN w celu zabezpieczenia komunikacji między urządzeniem użytkownika a zdalnym serwerem. Zapewnia, że ​​dane wysyłane i odbierane przez VPN pozostają prywatne i nie mogą zostać odszyfrowane przez osoby podsłuchujące. Bezpieczne przechowywanie haseł: Do bezpiecznego przechowywania haseł powszechnie stosuje się szyfrowanie AES. Zamiast przechowywać hasła w postaci zwykłego tekstu, przechowywana jest wersja zaszyfrowana. Dodaje to dodatkową warstwę bezpieczeństwa i chroni dane uwierzytelniające użytkownika w przypadku nieautoryzowanego dostępu do magazynu. Szyfrowanie plików i dysków: AES służy do szyfrowania plików i folderów na komputerach, zewnętrznych urządzeniach pamięci masowej i w chmurze. Chroni wrażliwe dane przechowywane na urządzeniach lub podczas przesyłania danych, aby zapobiec nieautoryzowanemu dostępowi.

Streszczenie :
Zestaw instrukcji AES jest teraz zintegrowany z procesorem (oferuje przepustowość kilku GB/s), aby poprawić szybkość i bezpieczeństwo aplikacji korzystających z AES do szyfrowania i deszyfrowania. Mimo że od jego wprowadzenia minęło już 20 lat, nie udało nam się złamać algorytmu AES, gdyż jest to niewykonalne nawet przy obecnej technologii. Jak dotąd jedyna luka pozostaje w implementacji algorytmu.