Szyfrowanie AES-256 wyjaśnione: co to oznacza dla twoich danych
AES-256 wyjaśnione: jak działa szyfr, dlaczego klucze 256-bitowe mają znaczenie, co dodaje tryb GCM i co sprawdzić, gdy aplikacja twierdzi, że używa szyfrowania AES-256.
AES-256 to Advanced Encryption Standard z kluczem 256-bitowym, ustandaryzowany przez NIST jako FIPS 197 w 2001 roku. Jest to symetryczny algorytm szyfrowania używany przez rząd USA do informacji niejawnych, przez banki do transakcji finansowych oraz przez aplikacje nastawione na bezpieczeństwo do ochrony danych w spoczynku i w tranzycie. AES-256 ma 2^256 możliwych kluczy -- liczba większa niż szacowana liczba atomów w obserwowalnym wszechświecie. Żaden znany atak nie redukuje tej przestrzeni kluczy do obliczeniowo wykonalnego przeszukiwania.
Ten poradnik wyjaśnia, co AES-256 faktycznie robi, dlaczego rozmiar klucza ma znaczenie, co oznaczają różne tryby (ECB, CBC, GCM) i na co zwrócić uwagę, gdy aplikacja twierdzi, że używa szyfrowania AES-256.
Co AES faktycznie robi
AES to symetryczny szyfr blokowy. „Symetryczny" oznacza, że ten sam klucz szyfruje i deszyfruje. „Szyfr blokowy" oznacza, że przetwarza dane w blokach o stałym rozmiarze 128 bitów (16 bajtów).
Algorytm bierze twoje dane (tekst jawny), łączy je z kluczem i tworzy zaszyfrowane wyjście (tekst zaszyfrowany) poprzez serię transformacji matematycznych. Te transformacje -- podstawienie, przesunięcie, mieszanie i dodawanie klucza -- powtarzają się przez stałą liczbę rund. AES-256 używa 14 rund.
Każda runda stosuje cztery operacje:
- SubBytes: Każdy bajt jest zastępowany przy użyciu stałej tablicy podstawień (S-box), wprowadzając nieliniowość.
- ShiftRows: Bajty w każdym wierszu są przesuwane o różne przesunięcia, rozkładając dane po pozycjach.
- MixColumns: Kolumny są mieszane przez mnożenie macierzowe w skończonym polu, dyfundując zmiany między bajtami.
- AddRoundKey: Klucz rundy (wyprowadzony z klucza głównego) jest XORowany z danymi.
Po 14 rundach tekst jawny jest dokładnie zaszyfrowany. Odwrócenie tych operacji z prawidłowym kluczem odzyskuje oryginalne dane. Bez klucza tekst zaszyfrowany jest nieodróżnialny od losowego szumu.
Dlaczego 256 bitów ma znaczenie
Cyfra „256" w AES-256 odnosi się do długości klucza: 256 bitów. Określa to liczbę możliwych kluczy, które atakujący musi wypróbować, aby złamać szyfrowanie metodą brute force.
| Rozmiar klucza | Możliwe klucze | Czas brute force (1 bilion prób/sek.) |
|---|---|---|
| 56-bitowy (DES) | 7,2 x 10^16 | ~20 godzin |
| 128-bitowy (AES-128) | 3,4 x 10^38 | 10^13 lat (10 bilionów lat) |
| 256-bitowy (AES-256) | 1,16 x 10^77 | 10^51 lat |
Dla kontekstu: wszechświat ma około 1,38 x 10^10 lat. Brute force AES-256 trwałby mniej więcej 10^41 razy dłużej niż wiek wszechświata, nawet przy bilione prób na sekundę.
AES-128 jest już obliczeniowo niewykonalny do złamania metodą brute force. AES-256 zapewnia dodatkowy margines wobec przyszłych postępów w obliczeniach, w tym obliczeń kwantowych. Algorytm Grovera (atak z obliczeniami kwantowymi) efektywnie zmniejsza długość klucza o połowę -- redukując AES-256 do odpowiednika AES-128, co jest nadal niewykonalne. AES-128 zostałby zredukowany do 64-bitowego efektywnego bezpieczeństwa, które jest potencjalnie podatne. Dlatego aplikacje krytyczne bezpieczeństwa preferują AES-256.
Tryby AES: dlaczego mają znaczenie
Sam AES szyfruje tylko jeden 128-bitowy blok na raz. Dla prawdziwych danych (zdjęć, dokumentów, filmów) potrzebujesz „trybu operacyjnego", który obsługuje dane większe niż 16 bajtów. Tryb określa, jak bloki są ze sobą łączone i ma istotne implikacje bezpieczeństwa.
ECB (Electronic Codebook) -- nie używać
Każdy blok jest szyfrowany niezależnie tym samym kluczem. Identyczne bloki tekstu jawnego tworzą identyczne bloki tekstu zaszyfrowanego. Wycieka to wzorce w danych. Klasyczna demonstracja: szyfrowanie bitmapy za pomocą ECB zachowuje strukturę obrazu w tekście zaszyfrowanym, czyniąc treść rozpoznawalną. ECB jest zawarty w standardzie, ale nigdy nie powinien być używany do danych mających strukturę lub powtarzające się wzorce (co obejmuje praktycznie wszystkie dane z rzeczywistego świata).
CBC (Cipher Block Chaining) -- starsze rozwiązanie
Każdy blok jest XORowany z poprzednim blokiem tekstu zaszyfrowanego przed szyfrowaniem. Eliminuje to wyciek wzorców ECB. CBC był standardowym trybem przez dziesięciolecia, ale został zastąpiony przez GCM w większości zastosowań. CBC wymaga losowego wektora inicjalizacyjnego (IV) i nie zapewnia wbudowanego uwierzytelniania (nie można wykryć, czy tekst zaszyfrowany został zmanipulowany).
GCM (Galois/Counter Mode) -- obecny standard
GCM łączy szyfrowanie w trybie licznikowym z uwierzytelnianiem pola Galois. Zapewnia uwierzytelnione szyfrowanie: szyfruje dane ORAZ generuje znacznik uwierzytelniający, który wykrywa jakąkolwiek modyfikację tekstu zaszyfrowanego. Jeśli zmieni się jeden bit, deszyfrowanie kończy się błędem, a nie uszkodzonymi danymi.
NIST ustandaryzował GCM w SP 800-38D (2007). Jest to zalecany tryb dla nowych implementacji.
AES-256-GCM to AES z 256-bitowym kluczem w trybie Galois/Counter Mode. To jest to, czego powinny używać aplikacje krytyczne bezpieczeństwa i co Vaultaire używa do szyfrowania zawartości zdjęć i plików.
| Tryb | Wyciek wzorców | Uwierzytelnianie | Aktualne zalecenie |
|---|---|---|---|
| ECB | Tak (poważny) | Nie | Nie używać |
| CBC | Nie | Nie (wymaga osobnego MAC) | Starsze; akceptowalne z HMAC |
| GCM | Nie | Tak (wbudowane) | Zalecane dla nowych implementacji |
Co AES-256 oznacza dla przechowywania zdjęć
Gdy aplikacja-skarbiec twierdzi, że używa „szyfrowania AES-256", trzy rzeczy powinny być prawdą:
Zawartość pliku jest zaszyfrowana za pomocą AES-256. Surowe dane zdjęcia (piksele, metadane, miniatura) są przekształcane w tekst zaszyfrowany przy użyciu 256-bitowego klucza.
Każdy plik używa unikalnego wektora inicjalizacyjnego (IV). Jeśli dwa identyczne zdjęcia są zaszyfrowane tym samym kluczem, tekst zaszyfrowany powinien być inny. Wymaga to unikalnego IV na plik. Bez tego analiza statystyczna może ujawnić wzorce.
Tryb zapewnia uwierzytelnianie (GCM lub odpowiednik). Bez uwierzytelniania atakujący może modyfikować tekst zaszyfrowany bez wykrycia. Odszyfrowany wynik byłby uszkodzonymi danymi, a nie błędem.
Czego „AES-256" na stronie marketingowej ci nie mówi
AES-256 jest konieczny, ale nie wystarczający. Kilka krytycznych czynników określa, czy szyfrowanie naprawdę chroni twoje dane:
Wyprowadzanie klucza ma znaczenie. Jak generowany jest 256-bitowy klucz? Jeśli jest wyprowadzany z 4-cyfrowego PIN-u przy użyciu słabego KDF, efektywne bezpieczeństwo to 4 cyfry (10 000 kombinacji), a nie 256 bitów. Silna implementacja używa PBKDF2 z wysoką liczbą iteracji lub Argon2 z odpowiednimi parametrami pamięci/czasu. Vaultaire używa PBKDF2 z HMAC-SHA512, wyprowadzając klucz z wzoru na siatce 5x5 z miliardami możliwych wejść.
Przechowywanie klucza ma znaczenie. Gdzie żyje klucz? Jeśli klucz jest przechowywany w postaci jawnej w piaskownicy aplikacji, każde złośliwe oprogramowanie z dostępem do pliku może go odczytać. Właściwe przechowywanie klucza używa mechanizmów sprzętowych, takich jak Apple Secure Enclave, gdzie klucze istnieją w dedykowanym koprocesotze z własną zaszyfrowaną pamięcią.
Co jest zaszyfrowane, ma znaczenie. Niektóre aplikacje szyfrują zawartość pliku, ale pozostawiają nazwy plików, miniatury i metadane niezaszyfrowane. Śledczy może nie widzieć twojego zdjęcia, ale może zobaczyć „wakacje-plaza-2025.jpg" w liście plików. Kompleksowe szyfrowanie obejmuje również metadane osobno.
Cykl życia klucza ma znaczenie. Czy klucz jest usuwany z pamięci po zamknięciu aplikacji? Jeśli klucz pozostaje w pamięci, zrzut pamięci może go wyodrębnić. Vaultaire usuwa klucze z pamięci przy każdym zamknięciu aplikacji i wymaga świeżego wprowadzenia wzoru przy każdym uruchomieniu.
AES-256 w praktyce: kto go używa
| Podmiot | Przypadek użycia | Tryb |
|---|---|---|
| Rząd USA (NSA) | Informacje niejawne | GCM (lub CTR z osobnym uwierzytelnianiem) |
| Apple (iCloud ADP) | Szyfrowanie end-to-end iCloud | GCM |
| Signal | Szyfrowanie wiadomości | CBC (z HMAC do uwierzytelniania) |
| Banki | Szyfrowanie transakcji finansowych | GCM |
| 1Password | Skarbiec haseł | GCM |
| Vaultaire | Skarbiec zdjęć i plików | GCM |
| VeraCrypt | Szyfrowanie dysku | XTS (zoptymalizowane dla bloków dyskowych) |
Częste nieporozumienia
„Szyfrowanie klasy wojskowej" nic konkretnego nie oznacza. Strony marketingowe używają tego zwrotu, bo brzmi imponująco. AES-256 jest używany przez wojska. Podobnie jak AES-128. Zwrot nie mówi nic o trybie, wyprowadzaniu klucza, przechowywaniu klucza ani o tym, co faktycznie jest zaszyfrowane.
„Szyfrowanie 256-bitowe" może nie oznaczać AES-256. Inne szyfry również używają 256-bitowych kluczy (ChaCha20, Twofish, Serpent). Sprawdź, który algorytm jest określony. AES-256-GCM to obecny standard.
AES-256 nie chroni przed słabym hasłem. Jeśli twoje hasło to „1234" i wyprowadzanie klucza jest słabe, szyfrowanie jest efektywnie 4-cyfrowe niezależnie od siły szyfru. Łańcuch pęka przy najsłabszym ogniwie.
AES-256 nie chroni danych w użyciu. Kiedy przeglądasz zdjęcie, musi ono zostać odszyfrowane w pamięci. W tym momencie istnieje w postaci jawnej w RAM. Właściwe implementacje minimalizują to okno i niezwłocznie usuwają odszyfrowane dane.
Najczęściej zadawane pytania
Czy AES-256 można złamać?
Żaden znany atak nie łamie AES-256 przez zredukowanie pełnej przestrzeni kluczy. Najlepszy znany atak (atak biclique Bogdanova, Khowratovitcha i Rechbergera, 2011) redukuje AES-256 z 2^256 operacji do 2^254,4 -- teoretyczna poprawa, która jest obliczeniowo bez znaczenia w praktyce. AES-256 pozostaje niezłamany.
Czy AES-256 jest odporny na ataki kwantowe?
Zasadniczo tak. Algorytm kwantowy Grovera zmniejsza efektywną długość klucza o połowę: AES-256 staje się odpowiednikiem 128-bitowego bezpieczeństwa przeciwko atakom kwantowym. AES-128 zostałby zredukowany do 64-bitowego efektywnego bezpieczeństwa, które jest potencjalnie podatne. NIST rekomenduje AES-256 dla długoterminowego bezpieczeństwa wobec postępów w obliczeniach kwantowych.
Jaka jest różnica między AES-128 a AES-256?
AES-128 używa 128-bitowego klucza (10 rund). AES-256 używa 256-bitowego klucza (14 rund). Oba są uważane za bezpieczne przeciwko obecnym atakom. AES-256 zapewnia większy margines wobec przyszłych postępów, szczególnie w obliczeniach kwantowych. AES-256 jest około 40% wolniejszy niż AES-128 ze względu na dodatkowe rundy, ale akceleracja sprzętowa sprawia, że jest to pomijalny na nowoczesnych urządzeniach.
Czy szyfrowanie AES-256 spowalnia mój telefon?
Nie zauważalnie. Nowoczesne iPhone'y zawierają dedykowaną akcelerację sprzętową AES w Secure Enclave i procesorze. Szyfrowanie lub deszyfrowanie zdjęcia zajmuje milisekundy. AES jest specjalnie zaprojektowany pod kątem wydajności implementacji sprzętowej.
Jak sprawdzić, czy aplikacja naprawdę używa AES-256?
Sprawdź dokumentację bezpieczeństwa aplikacji, nie tylko jej stronę marketingową. Szukaj: konkretnego algorytmu i trybu (AES-256-GCM, nie tylko „AES" lub „256-bitowy"), metody wyprowadzania klucza (PBKDF2, Argon2), mechanizmu przechowywania klucza (Secure Enclave, sprzętowo zabezpieczone) i czy metadane są również zaszyfrowane. Aplikacje open-source umożliwiają niezależną weryfikację.
Podsumowanie
AES-256 to złoty standard szyfrowania symetrycznego, ustandaryzowany przez NIST, używany przez rządy i instytucje finansowe, odporny na wszystkie znane ataki w tym obliczenia kwantowe. Oceniając aplikacje twierdzące, że używają szyfrowania AES-256, patrz poza szyfr: sprawdź tryb (GCM), wyprowadzanie klucza (PBKDF2/Argon2 z wysoką liczbą iteracji), przechowywanie klucza (sprzętowo zabezpieczone) i jakie dane są faktycznie zaszyfrowane (zawartość + metadane).
Vaultaire używa AES-256-GCM do szyfrowania plików, PBKDF2 z HMAC-SHA512 do wyprowadzania kluczy, ChaCha20 do szyfrowania metadanych i Apple Secure Enclave do zarządzania kluczami. Szyfrowanie to nie jest język marketingowy. To matematyka.