AES-256 šifriranje objašnjeno: što znači za vaše podatke
AES-256 je standard šifriranja koji američka vlada koristi za tajne podatke. Evo što to zaista znači za vaše datoteke.
AES-256 je simetrični algoritam šifriranja koji Nacionalni institut za standarde i tehnologiju (NIST) standardizirao 2001. Predstavlja zlatni standard za šifriranje podataka u mirovanju i koristi se u svemu, od vladinih komunikacija do aplikacija za pohranu fotografija. Kada aplikacija tvrdi da koristi "šifriranje vojnog razreda", obično misli na AES-256.
Ovaj vodič objašnjava kako AES-256 funkcionira, što razlikuje različite načine rada (GCM nasuprot CBC), zašto duljina ključa nije jedino što je važno i što provjeriti kada aplikacija tvrdi da koristi AES-256 šifriranje.
Što je AES-256?
AES označava Advanced Encryption Standard. 256 se odnosi na duljinu ključa u bitovima. Ključ od 256 bita ima 2^256 mogućih vrijednosti, to je broj s 77 znamenki. Gruba sila cijelog prostora ključeva nije moguća ni s kombiniranom snagom svih računala na Zemlji, čak ni ako su sva radila od nastanka svemira.
AES je blokovna šifra: šifrira podatke u blokovima fiksne veličine od 128 bita (16 bajtova). Veći podaci se dijele na blokove i šifriraju serijski ili paralelno, ovisno o načinu rada.
Sam algoritam primjenjuje 14 rundi matematičkih transformacija na svaki blok: zamjenu bajtova, pomak redaka, miješanje stupaca i dodavanje ključa. Svaka runda koristi dio ključa u obliku koji je izveden iz izvornog 256-bitnog ključa. Bez ključa, obrnuti postupak ovih transformacija računalno nije izvediv.
Zašto je važna duljina ključa
Duljina ključa određuje prostor pretrage za napad grubom silom. Usporedba:
| Duljina ključa | Mogući ključevi | Procijenjeno vrijeme grube sile |
|---|---|---|
| 128 bita | 3,4 × 10^38 | Trilijuni godina na suvremenom hardveru |
| 192 bita | 6,3 × 10^57 | Astronomski dulje |
| 256 bita | 1,2 × 10^77 | Višestruko dulje od starosti svemira |
Praktični napadi ne ciljaju samu šifru. Ciljaju implementaciju: slabo izvođenje ključa iz lozinke, pogrešnu upotrebu inicializacijskih vektora, nesigurno pohranjivanje ključeva ili napade bočnim kanalom. Ovo je razlog zašto "koristimo AES-256" nije dovoljno; cijela implementacija mora biti ispravna.
Načini rada: GCM nasuprot CBC i drugima
AES sama po sebi šifrira jedan 128-bitni blok. Za šifriranje stvarnih datoteka potreban je način rada koji definira kako se šifriraju višestruki blokovi. Najvažniji načini rada su:
AES-CBC (Cipher Block Chaining)
CBC ulančava blokove: svaki blok čistog teksta XOR-ira se s prethodnim šifriranim blokom prije šifriranja. Ovo osigurava da identični blokovi čistog teksta proizvode različit šifrirani tekst. Međutim, CBC ne pruža provjeru autentičnosti: napadač može mijenjati šifrirani tekst i dešifriranje neće primijetiti manipulaciju. Datoteke se mogu oštetiti bez otkrivanja. CBC je zastarjeli izbor za nove implementacije.
AES-GCM (Galois/Counter Mode)
GCM kombinira šifriranje s proverom autentičnosti. Šifrira podatke (povjerljivost) i generira autentifikacijski oznaku (integritet). Ako je bilo koji bit šifriranih podataka promijenjen, dešifriranje ne uspijeva umjesto stvaranja oštećenih podataka. Ovo sprječava napade manipulacijom šifriranog teksta. GCM je specifikacija NIST-a SP 800-38D i preporučeni algoritam za šifriranje s autentifikacijom u aplikacijama visoke sigurnosti.
Vaultaire koristi AES-256-GCM za sve operacije šifriranja datoteka. Svaka datoteka dobiva jedinstveni inicializacijski vektor koji osigurava da identične datoteke proizvode različit šifrirani tekst.
Inicializacijski vektori (IV-ovi) i zašto su važni
IV je nasumični broj koji se koristi kao dodatni ulaz za svaku operaciju šifriranja. Bez jedinstvenosti IV-a, isti ključ + isti čisti tekst = isti šifrirani tekst, što curenje informacija. Kritično pitanje implementacije: da li svaka datoteka dobiva jedinstven IV? Ponovna upotreba IV-ova je ozbiljna sigurnosna ranjivost koja je kompromitirala stvarne implementacije.
Izvođenje ključa: pretvaranje lozinki u ključeve šifriranja
Ključna derivacija je važna. Kako se generira 256-bitni ključ? Ako se izvodi iz 4-znamenkastog PIN-a pomoću slabog KDF-a, efektivna sigurnost je 4 znamenke (10 000 kombinacija), a ne 256 bita. Snažna implementacija koristi PBKDF2 s velikim brojem ponavljanja ili Argon2 s odgovarajućim memorijskim i vremenskim parametrima. Vaultaire koristi PBKDF2 sa HMAC-SHA512 i 600.000 ponavljanja za izvođenje ključa lokalnog trezora iz odabranog uzorka 5x5 i soli uređaja. PBKDF2 čini svaki pogodak skupljim; ne podiže entropiju uzorka na 256 bita.
Uobičajeni KDF-ovi uključuju:
- PBKDF2 (Password-Based Key Derivation Function 2): naveden u RFC 8018. Primjenjuje hash funkciju (obično HMAC-SHA512) iterativno s jedinstvenom kriptografskom soli. Visok broj iteracija (npr. 600.000) čini svaki pokus pogađanja skupim za računanje.
- Argon2: pobjednički algoritam natjecanja za hashing lozinki iz 2015. Otporan na ASIC i GPU napade jer zahtijeva mnogo memorije.
- scrypt: sličan Argon2-u; dobra otpornost na prilagođeni napadački hardver.
Vaultaire koristi PBKDF2 s HMAC-SHA512 i 600.000 iteracija, s jedinstvenom kriptografskom soli po trezoru. Pohrana soli znači da iste lozinke u različitim trezorima ne proizvode iste ključeve. Visok broj iteracija znači da testiranje milijarde uzoraka zahtijeva godine neprekidnog računanja po trezoru.
Što provjeriti kada aplikacija tvrdi da koristi AES-256
Tvrdnja "koristimo AES-256 šifriranje" ne govori ništa o:
- Načinu rada (GCM nasuprot CBC nasuprot ECB, ECB je potpuno nesiguran za slike)
- Jedinstvenosti IV-ova po datoteci
- Metodi izvođenja ključa
- Pohrani ključeva (na uređaju nasuprot poslužiteljima tvrtke)
- Šifriranju metapodataka (nazivi datoteka, datumi)
Šest stvari koje treba provjeriti:
- Naveden je specifičan algoritam i način rada. "AES-256-GCM" je tehnička specifikacija. "Šifriranje vojnog razreda" je marketinški jezik.
- Odakle dolazi ključ? Je li izveden iz vaših vjerodajnica lokalno, ili ga generira i pohranjuje poslužitelj tvrtke?
- Metoda izvođenja ključa. PBKDF2, Argon2 ili scrypt s visokim brojem iteracija. Ako aplikacija ne navodi KDF, lozinka se vjerojatno izravno koristi kao ključ ili prolazi kroz jednu iteraciju hasha.
- Šifriranje metapodataka. Šifriraju li se nazivi datoteka, datumi i duljine? Nešifrirani metapodaci otkrivaju što je pohranjeno čak i ako je sadržaj šifriran.
- Jedinstveni IV-ovi. Svaka datoteka dobiva jedinstven IV pri svakoj operaciji šifriranja. Ponovna upotreba IV-ova kompromitira sigurnost.
- Provjera autentičnosti. Koristite li GCM ili drugu autentificirani šifru? Šifriranje bez provjere autentičnosti dopušta nedetektirane manipulacije.
AES-256 u Vaultaireu
Pohrana ključeva je važna. Gdje živi ključ? Ako je ključ pohranjen u otvorenom tekstu u sandboxu aplikacije, zlonamjerni softver s pristupom datoteci može ga pročitati. Appleova Secure Enclave podržava određene operacije ključeva koje nije moguće izvesti, a ne proizvoljne AES ključeve koje dobiva aplikacija. Dizajni sa simetričnim ključem mogu se umjesto toga oslanjati na Keychain i zaštitu podataka, tako da bi dokumentacija trebala navesti točan API i klasu zaštite, a ne samo "hardverski podržano".
Pročitajte cijelu arhitekturu sigurnosti i objašnjenje šifriranja uzorkom.
Često postavljana pitanja
Je li AES-256 zaista neslomljiv?
AES-256 je neprobojan prema svim poznatim napadima kada se ispravno implementira. Napad grubom silom na 256-bitni ključ zahtijevao bi više energije nego što Sunce može proizvesti za svog ostatka života. Praktični napadi ciljaju implementaciju, a ne samu šifru, slabo izvođenje ključa, ponovna upotreba IV-a, nesigurna pohrana ključeva. Ovo je razlog zašto detalji implementacije jednako vrijede kao i odabir algoritma.
Što je razlika između AES-128 i AES-256?
AES-128 koristi 128-bitne ključeve (3,4 × 10^38 mogućih vrijednosti). AES-256 koristi 256-bitne ključeve (1,2 × 10^77 mogućih vrijednosti). Prostor ključeva AES-256 je kvadrat prostora ključeva AES-128. Oba su sigurna za praktičnu upotrebu; AES-256 pruža veći faktor sigurnosti za scenarije u kojima je dugotrajna zaštita podataka kritična, ili gdje su dostupni kvantni napadi.
Što znači "vojni razred" ili "bankovni razred" šifriranja?
Provjerite sigurnosnu dokumentaciju aplikacije, a ne samo njezinu marketinšku stranicu. Potražite određeni algoritam i način, hijerarhiju ključeva, parametre derivacije, točno Keychain ili Secure Enclave korištenje, jednokratno rukovanje, put oporavka i jesu li metapodaci također šifrirani. Otvoreni kod i neovisne revizije olakšavaju provjeru tih tvrdnji.
Može li kvantno računalo probiti AES-256?
Groverov algoritam teoretski smanjuje efektivnu sigurnost AES-256 na 128 bita na kvantnom računalu. 128-bitna sigurnost i dalje je neprobojna prema bilo kakvom poznatom napadu. AES-256 ostaje siguran u post-kvantnom scenariju. NIST-ovi post-kvantni standardi (objavljeni 2024.) ciljaju asimetrično šifriranje (RSA, ECC), ne simetrično šifriranje poput AES-a.
Zaključak
Vaultaire koristi AES-256-GCM za sadržaj datoteke, zaglavlja, metapodatke, indekse i sličice. PBKDF2 sa HMAC-SHA512 izvodi lokalni ključ trezora iz uzorka i za cijeli uređaj Keychain sol; taj ključ odmotava nasumični glavni ključ koji se koristi za enkripciju datoteke. Simetrične operacije se izvode u procesu aplikacije CryptoKit, dok iOS Keychain i Data Protection štite stanje oporavka kada je uređaj zaključan. Potpuna hijerarhija dokumentirana je u sigurnosni model.