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:
Kluczowe wyprowadzenie ma znaczenie. W jaki sposób generowany jest klucz 256-bitowy? Jeśli jest wyprowadzany z 4-cyfrowego PIN-u przy użyciu słabego KDF, efektywne zabezpieczenie wynosi 4 cyfry (10 000 kombinacji), a nie 256 bitów. Silna implementacja wykorzystuje PBKDF2 z dużą liczbą iteracji lub Argon2 z odpowiednimi parametrami pamięci i czasu. Vaultaire używa PBKDF2 z HMAC-SHA512 i 600 000 iteracji w celu uzyskania lokalnego klucza skarbca na podstawie wybranego wzorca 5x5 i soli urządzenia. PBKDF2 sprawia, że każde przypuszczenie jest droższe; nie podnosi entropii wzoru do 256 bitów.
Przechowywanie kluczy ma znaczenie. Gdzie mieszka klucz? Jeśli klucz jest przechowywany w postaci zwykłego tekstu w piaskownicy aplikacji, złośliwe oprogramowanie mające dostęp do plików może go odczytać. Apple Secure Enclave obsługuje określone, nieeksportowalne operacje na klawiszach, a nie dowolne klucze AES dostarczane przez aplikację. Zamiast tego można polegać na projektach z kluczem symetrycznym Keychain i ochronę danych, dlatego w dokumentacji należy podać dokładny interfejs API i klasę ochrony, a nie tylko „wsparcie sprzętowe”.
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.
Kluczowe kwestie związane z cyklem życia. Jak długo odszyfrowany materiał klucza pozostaje dostępny? Vaultaire traci swój aktywny skarbiec i stan klucza głównego, gdy blokuje lub zamyka i wymaga nowego odblokowania. Bajty klucza symetrycznego koniecznie istnieją w pamięci aplikacji, gdy skarbiec jest otwarty, a Swift i iOS nie pozwól aplikacji udowodnić, że każda przejściowa kopia została nadpisana.
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 odczuwalnie przy normalnym użytkowaniu. Nowoczesne procesory Apple zapewniają sprzętową akcelerację AES poprzez systemowe biblioteki kryptograficzne. Nie oznacza to, że operacja AES aplikacji działa wewnątrz Secure Enclave. Czas nadal zależy od rozmiaru pliku, urządzenia, miejsca przechowywania i implementacji, dlatego zapewnienie bezpieczeństwa powinno opierać się na pomiarach, a nie na uniwersalnej liczbie milisekund.
Jak sprawdzić, czy aplikacja naprawdę używa AES-256?
Sprawdź dokumentację bezpieczeństwa aplikacji, a nie tylko jej stronę marketingową. Poszukaj konkretnego algorytmu i trybu, hierarchii kluczy, parametrów wyprowadzania, dokładnie Keychain lub Secure Enclave użycia, obsługi jednorazowych, ścieżki odzyskiwania i tego, czy metadane są również szyfrowane. Kod open source i niezależne audyty ułatwiają weryfikację tych twierdzeń.
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’a wykorzystuje AES-256-GCM dla zawartości plików, nagłówków, metadanych, indeksów i miniatur. PBKDF2 z HMAC-SHA512 wyprowadza klucz magazynu lokalnego ze wzorca i całego urządzenia Keychain sól; ten klucz rozpakowuje losowy klucz główny używany do szyfrowania plików. Operacje symetryczne przebiegają w procesie aplikacji CryptoKit, podczas iOS Keychain i Data Protection chronią stan przywracania, gdy urządzenie jest zablokowane. Pełna hierarchia jest udokumentowana w pliku model bezpieczeństwa.