Szyfrowanie > Rodzaje szyfrowania > Szyfrowanie AES
Czym jest szyfrowanie AES?
AES w kryptografii oznacza Advanced Encryption Standard (zaawansowany standard szyfrowania) – szybki, wydajny i bezpieczny algorytm szyfrowania certyfikowany przez amerykański Narodowy Instytut Standaryzacji i Technologii (NIST). Jest to szyfr symetryczny, który używa tego samego klucza zarówno do szyfrowania, jak i do odszyfrowywania danych. Jest to stosunkowo szybkie rozwiązanie, co czyni je idealnym do szyfrowania dużych ilości przechowywanych danych.
Ze względu na swoją siłę i niezawodność AES jest jednym z najpopularniejszych i najpowszechniejszych rodzajów szyfrowania stosowanych w zabezpieczeniach sieci bezprzewodowych, szyfrowaniu danych i szyfrowaniu dysków, systemach płatności online, chmurowej przestrzeni dyskowej, zarządzaniu hasłami, a nawet w aplikacjach rządowych i wojskowych. Rząd USA używa szyfrowania AES do zabezpieczania swoich informacji niejawnych, co przyczyniło się do popularności tego standardu.

Czy algorytm AES jest bezpieczny?
Tak. W 2000 roku, po bardzo dokładnym(nowe okno) i otwartym procesie selekcji, NIST ogłosił, że AES (znany do tej pory jako algorytm Rijndael, stworzony przez Vincenta Rijmena i Joana Daemena) zastąpi standard DES jako zalecany(nowe okno) „jawny, publicznie ujawniony algorytm szyfrowania zdolny do ochrony wrażliwych informacji rządowych w kolejnym stuleciu”.
Według NIST wszystkie długości klucza algorytmu AES są uznawane za „wystarczające” do ochrony informacji niejawnych do poziomu „tajne”. W przypadku informacji „ściśle tajne” wymagany jest standard AES-192 lub AES-256.

Ataki brute force
Najprostszą formą ataku na dowolny szyfr jest atak brute force, który polega na sprawdzaniu wszystkich możliwych kombinacji kluczy aż do znalezienia właściwej.
Frontier(nowe okno) to najpotężniejszy publicznie znany superkomputer na świecie. Gdyby przeznaczył całą swoją moc obliczeniową na łamanie zabezpieczeń AES-128 metodą brute force, i tak potrzebowałby około 10–12 bilionów lat, aby sprawdzić wszystkie możliwe kombinacje dla AES-128. To znacznie dłużej niż wiek wszechświata. Zatem nawet przy mniejszych rozmiarach bitowych AES jest wysoce odporny na ataki brute force ze strony konwencjonalnych komputerów.
Złamanie zabezpieczeń AES-256 metodą brute force jest 340 miliardów miliardów miliardów miliardów (2¹²⁸) razy trudniejsze niż w przypadku AES-128.
Choć algorytm Grovera(nowe okno) teoretycznie zmniejsza bezpieczeństwo kluczy symetrycznych o połowę w obliczu zagrożeń kwantowych, są one nadal stosunkowo odporne na ataki kwantowe, zwłaszcza przy użyciu klucza 256-bitowego.
Ataki na klucze
Na przestrzeni lat kryptografowie opublikowali szereg teoretycznych ataków na klucze AES, ale wszystkie są albo niewykonalne w praktyce, albo skuteczne jedynie wobec implementacji AES, które używają zmniejszonej liczby rund (patrz niżej).
Najbardziej udaną próbą był teoretyczny atak biclique(nowe okno) opublikowany w 2011 roku, który może skrócić czas potrzebny do złamania AES metodą brute force czterokrotnie. Mimo to nadal potrzeba byłoby miliardów lat, aby złamać AES metodą brute force na jakimkolwiek obecnym lub możliwym do przewidzenia sprzęcie komputerowym.
Żaden znany atak na klucz nie jest praktyczny wobec poprawnie zaimplementowanego AES-128 lub wyższego.
Ataki boczne
Atak boczny próbuje zmniejszyć liczbę kombinacji wymaganych do przeprowadzenia skutecznego ataku brute force poprzez szukanie wskazówek w komputerze wykonującym obliczenia szyfrowania. Wskazówki można uzyskać, badając:
- Czas działania — ile czasu komputer potrzebuje na wykonanie operacji
- Wycieki elektromagnetyczne
- Wskazówki dźwiękowe
- Wskazówki wizualne (wychwycone za pomocą kamery o wysokiej rozdzielczości).
W szczególności ataki cache-timing okazały się dość skuteczne w skutecznym łamaniu AES. W najbardziej znaczącym przykładzie badacze w 2016 roku byli w stanie odzyskać(nowe okno) klucz AES-128 przy użyciu „zaledwie około 6–7 bloków zwykłego tekstu lub szyfrogramu (teoretycznie wystarczyłby nawet pojedynczy blok)”.
Można jednak zrobić wiele, aby ograniczyć zagrożenie atakami bocznymi:
- Poprawnie zaimplementowany AES może zapobiegać sposobom, na jakie dane mogą wyciekać.
- Sprzęt integrujący zestaw instrukcji AES dodatkowo zmniejsza powierzchnię ataku bocznego dla AES.
- Techniki randomizacji można stosować, aby zaburzyć zależność między danymi chronionymi przez AES a wszelkimi danymi z wycieku, które mogłyby zostać zebrane przy użyciu ataku bocznego.
W wielu przypadkach ataki boczne wymagają, aby atakujący znajdował się blisko urządzenia lub miał do niego fizyczny dostęp podczas odszyfrowywania danych, chociaż zdalne ataki są możliwe, jeśli na urządzeniu zainstalowano złośliwe oprogramowanie, szczególnie w przypadku ataków opartych na czasie.
Jak działa AES
AES to szyfr blokowy, który szyfruje i odszyfrowuje dane w blokach 128-bitowych przy użyciu kluczy 128-bitowych, 192-bitowych lub 256-bitowych. Jak wspomniano wcześniej, do szyfrowania i odszyfrowywania danych używany jest ten sam klucz. AES używający klucza 128-bitowego jest często określany jako AES-128, i analogicznie w przypadku AES-192 oraz AES-256.

Dane są szyfrowane w wielu rundach, z których każda składa się z serii operacji matematycznych.
Proces rozpoczyna się od użycia algorytmu harmonogramu kluczy Rijndaela w celu wygenerowania serii nowych kluczy rund z oryginalnego klucza tajnego. Proces ten jest znany jako rozszerzanie klucza.
Każda runda składa się z jednej lub kilku (bądź kombinacji) następujących operacji:
1. Dodawanie klucza rundy (Add Round Key): wykonywana jest operacja XOR(nowe okno) w celu połączenia danych do zaszyfrowania (szyfrogramu) z każdym kluczem rundy.

2. Sub Bytes: tabela podstawień jest używana do dalszego mieszania danych. Pomyśl zasadniczo o prostych szyfrach podstawieniowych, których używałeś w dzieciństwie, gdy zastępowałeś każdą literę w wiadomości inną, znajdującą się o określoną liczbę miejsc dalej w alfabecie.

3. Shift Rows: każdy 128-bitowy blok danych składa się z 16-bajtowego bloku 4x4. Ta operacja przesuwa każdy bajt w wierszu bloku o określone przesunięcie w lewo.

4. Mieszanie kolumn (Mix Columns): na każdej kolumnie w bloku wykonywana jest dodatkowa odwracalna transformacja liniowa.

Ta seria przekształceń stanowi jedną rundę, która jest następnie powtarzana na danych określoną liczbę razy, zależnie od rozmiaru klucza:
- AES-128 — 10 rund
- AES-192 — 12 rund
- AES 256 — 14 rund
Aby odszyfrować dane, wszystkie kroki użyte do ich szyfrowania są po prostu wykonywane w odwrotnej kolejności. Wymaga to oryginalnego tajnego klucza do odwrócenia procesu przy użyciu każdego odwrotnego klucza rundy.
Dlaczego AES-256 jest preferowany względem AES-192 lub AES-128?
Złamanie zabezpieczeń AES-128 metodą brute force przy użyciu obecnej i przewidywalnej technologii zajęłoby więcej czasu, niż wynosi wiek wszechświata. Legendary cryptographer Bruce Schneier twierdził(nowe okno) nawet, że AES-128 może być silniejszy niż AES-256 dzięki silniejsemu harmonogramowi kluczy – algorytmowi, który oblicza wszystkie klucze rund na podstawie oryginalnego klucza tajnego.
Mimo to standard AES-256 stał się de facto złotym standardem szyfrowania symetrycznego. Jest on często (choć budzi to pewne kontrowersje) postrzegany jako bezpieczniejszy wybór, ponieważ większy rozmiar klucza zapewnia dodatkowy margines bezpieczeństwa, dzięki czemu zaszyfrowane dane pozostaną bezpieczne, nawet jeśli zostanie znaleziony sposób na znaczne osłabienie algorytmu. Argument ten zyskuje na sile w miarę jak potrzeba odporności postkwantowej staje się coraz bardziej paląca.
AES-CBC a AES-GCM
Jeszcze do niedawna AES był zwykle używany w trybie cipher block chaining (CBC), w którym każdy blok zwykłego tekstu jest poddawany operacji XOR z poprzednim blokiem szyfrogramu przed zaszyfrowaniem. W przypadku użycia w trybie CBC do weryfikacji danych wymagany jest algorytm haszujący HMAC(nowe okno), taki jak HMAC-SHA256.
Coraz częściej jednak AES jest używany w trybie Galois/counter (GCM), który wykorzystuje tryb licznika(nowe okno) szyfrowania. Jego główną zaletą jest to, że wykorzystuje pole Galois(nowe okno) do weryfikacji danych bez potrzeby stosowania zewnętrznego algorytmu. Jest więc wydajniejszy niż użycie osobnego algorytmu uwierzytelniania, który może powodować duży narzut obliczeniowy.
Chociaż AES-CBC z uwierzytelnianiem HMAC jest ogólnie uważany za bezpieczny, CBC jest potencjalnie podatny na ataki paddingowe(nowe okno), takie jak POODLE(nowe okno). GCM nie jest.
AES ze sprzętowym przyspieszeniem
Większość nowoczesnych procesorów obsługuje zestaw instrukcji Advanced Encryption Standard New Instructions (AES-NI(nowe okno)) – zestaw instrukcji sprzętowych, które wykonują operacje AES bezpośrednio w procesorze. Dzięki temu AES działa znacznie szybciej, a także pomaga zapobiegać atakom bocznotonowym opartym na analizie czasu. Operacje te odbywają się w bezpiecznych jednostkach wykonawczych procesora, więc istnieje mniej zauważalnych różnic w czasie, które atakujący mógłby wykorzystać.
Proton i AES
Szeroko wykorzystujemy AES do zabezpieczania produktów Proton:
Wydarzenia i kontakty są zabezpieczane przy użyciu AES-256 w połączeniu z ECC do wymiany kluczy, aby zapewnić Ci prywatność dzięki szyfrowaniu end-to-end.
Proton VPN koncentruje się głównie na szybkim i wydajnym protokole VPN WireGuard® (który używa ChaCha20), ale połączenia OpenVPN używają AES-256.
Proton Pass przechowuje hasła, notatki, tożsamości i inne elementy w Twoim bezpiecznym sejfie przy użyciu AES-256.
Proton Drive szyfruje wszystkie przesłane pliki end-to-end przy użyciu AES-256 i ECC do wymiany kluczy. Proton Docs i Proton Sheets również używają AES-256 z opartą na ECC wymianą kluczy, chociaż ich implementacja szyfrowania różni się od ogólnego schematu szyfrowania plików w Proton Drive.
Proton Mail przechowuje wiadomości i załączniki przy użyciu AES-256 za pośrednictwem standardu OpenPGP. Nawet Twój klucz prywatny, który odblokowuje Twoje wiadomości, jest szyfrowany przy użyciu AES-256 przed zapisaniem na serwerze.
Proton Meet używa Messaging Layer Security (MLS) do szyfrowania dźwięku, obrazu i wiadomości na czacie, zapewniając forward secrecy (PFS) oraz post-compromise security (PCS) dla całej komunikacji. Wszystkie dane spotkań są zaszyfrowane end-to-end przy użyciu AES-256-GCM.
Ograniczanie ataków na szyfrowanie AES
Bezpieczeństwo jest tylko tak silne, jak jego najsłabsze ogniwo, którym zazwyczaj jest Twoje hasło. Oznacza to, że metody socjotechniki, ataki phishingowe oraz keyloggery(nowe okno) również stanowią zagrożenie dla danych zaszyfrowanych za pomocą AES. Dlatego nawet gdy korzystasz z AES, powinieneś podjąć następujące środki ostrożności:
- Używaj zaszyfrowanego menadżera haseł
- Używaj sprzętowych kluczy zabezpieczających (takich jak YubiKey) jako dodatkowej warstwy ochrony
- Jeśli należysz do organizacji, przeprowadzaj regularne szkolenia pracowników z zakresu bezpieczeństwa, aby zapobiegać atakom phishingowym
Przejmij kontrolę nad swoimi danymi
Proton został stworzony, aby chronić Twoje dane od samego początku. Dzięki szyfrowaniu end-to-end, aplikacjom open-source i niezależnym audytom, Twoje informacje pozostają Twoje.
Często zadawane pytania dotyczące szyfrowania AES
- Co jest lepsze: AES czy DES?
- Co jest lepsze: AES czy RSA?
- Jak silne jest bezpieczeństwo AES?
Dowiedz się więcej o szyfrowaniu
Słowniczek pojęć związanych z szyfrowaniem


