AES-256-versleuteling uitgelegd: wat het betekent voor je gegevens
AES-256 uitgelegd: hoe het cijfer werkt, waarom 256-bits sleutels ertoe doen, wat GCM-modus toevoegt en wat je controleert als een app AES-256-versleuteling claimt.
Wat is AES-256?
AES-256 is een symmetrisch blokcijfer: de Advanced Encryption Standard met een sleutel van 256 bits. Eén sleutel versleutelt en ontsleutelt. Het cijfer verwerkt gegevens in blokken van 128 bits in 14 rondes, en NIST standaardiseerde het in 2001 als FIPS 197.
De naam bestaat uit drie gegevens. AES noemt het algoritme, dat NIST in 2001 koos uit de inzending Rijndael. 256 is de sleutellengte in bits. Die bepaalt hoeveel sleutels een brute-force-aanvaller moet proberen. Een modus zoals GCM of CBC, meestal achter de naam geschreven als AES-256-GCM, bepaalt hoe blokken aan elkaar worden gekoppeld en of de versleutelde tekst op manipulatie wordt gecontroleerd. AES-256 alleen vertelt je het cijfer en de sleutelgrootte. Het vertelt je niet de modus, en ook niet wie de sleutel heeft.
AES-256 is de Advanced Encryption Standard met een sleutel van 256 bits, in 2001 door NIST gestandaardiseerd als FIPS 197. Het is het symmetrische versleutelingsalgoritme dat de Amerikaanse overheid gebruikt voor geclassificeerde informatie, banken voor financiële transacties en beveiligingsgerichte apps voor gegevens in opslag en onderweg. AES-256 heeft 2^256 mogelijke sleutels, een getal dat groter is dan het geschatte aantal atomen in het waarneembare heelal. Geen bekende aanval verkleint die sleutelruimte tot een zoektocht die rekenkundig haalbaar is.
Deze handleiding legt uit wat AES-256 echt doet, waarom de sleutelgrootte ertoe doet, wat de verschillende modi betekenen (ECB, CBC, GCM) en waar je op let als een app zegt AES-256-versleuteling te gebruiken.
Wat AES echt doet
AES is een symmetrisch blokcijfer. "Symmetrisch" betekent dat dezelfde sleutel versleutelt en ontsleutelt. "Blokcijfer" betekent dat het gegevens verwerkt in blokken van vaste grootte: 128 bits (16 bytes).
Het algoritme neemt je gegevens (platte tekst), combineert die met een sleutel en maakt er via een reeks wiskundige transformaties onleesbare uitvoer van (versleutelde tekst). Die transformaties (vervangen, verschuiven, mengen en sleutel toevoegen) herhalen zich een vast aantal rondes. AES-256 gebruikt 14 rondes.
Elke ronde voert vier bewerkingen uit:
- SubBytes: elke byte wordt vervangen via een vaste vervangingstabel (S-box), wat niet-lineariteit toevoegt.
- ShiftRows: de bytes in elke rij schuiven een verschillend aantal posities op, zodat gegevens over posities worden verspreid.
- MixColumns: kolommen worden gemengd via matrixvermenigvuldiging in een eindig lichaam, zodat wijzigingen zich over bytes verspreiden.
- AddRoundKey: de rondesleutel (afgeleid van de hoofdsleutel) wordt met de gegevens ge-XOR'd.
Na 14 rondes is de platte tekst grondig door elkaar gehusseld. Met de juiste sleutel draai je de bewerkingen terug en krijg je de oorspronkelijke gegevens. Zonder de sleutel is de versleutelde tekst niet te onderscheiden van willekeurige ruis.
Waarom 256 bits ertoe doen
De "256" in AES-256 slaat op de sleutellengte: 256 bits. Die bepaalt hoeveel mogelijke sleutels een aanvaller moet proberen om de versleuteling met brute kracht te breken.
| Sleutelgrootte | Mogelijke sleutels | Tijd voor brute force (1 biljoen gokken per seconde) |
|---|---|---|
| 56 bits (DES) | 7,2 x 10^16 | ~20 uur |
| 128 bits (AES-128) | 3,4 x 10^38 | 10^13 jaar (10 biljoen jaar) |
| 256 bits (AES-256) | 1,16 x 10^77 | 10^51 jaar |
Ter vergelijking: het heelal is ongeveer 1,38 x 10^10 jaar oud. AES-256 met brute kracht breken zou ruwweg 10^41 keer langer duren dan de leeftijd van het heelal, zelfs bij een biljoen gokken per seconde.
AES-128 is met brute kracht al rekenkundig onhaalbaar. AES-256 geeft een extra marge tegen toekomstige vooruitgang in rekenkracht, ook tegen kwantumcomputers. Het algoritme van Grover (een kwantumaanval) halveert in feite de sleutellengte. Daarmee zakt AES-256 naar het niveau van AES-128, en dat blijft onhaalbaar. AES-128 zou zakken naar 64 bits effectieve beveiliging, en dat is mogelijk kwetsbaar. Daarom kiezen toepassingen waar beveiliging cruciaal is voor AES-256.
AES-modi: waarom ze ertoe doen
AES zelf versleutelt maar één blok van 128 bits tegelijk. Voor echte gegevens (foto's, documenten, video's) heb je een "werkingsmodus" nodig die gegevens groter dan 16 bytes aankan. De modus bepaalt hoe blokken aan elkaar worden gekoppeld en heeft grote gevolgen voor de beveiliging.
ECB (Electronic Codebook): niet gebruiken
Elk blok wordt apart versleuteld met dezelfde sleutel. Identieke blokken platte tekst leveren identieke blokken versleutelde tekst op. Zo lekken patronen in de gegevens. Het klassieke voorbeeld: versleutel je een bitmapafbeelding met ECB, dan blijft de structuur van de afbeelding zichtbaar in de versleutelde tekst en is de inhoud herkenbaar. ECB staat in de standaard, maar gebruik het nooit voor gegevens met structuur of herhalende patronen (en dat zijn vrijwel alle echte gegevens).
CBC (Cipher Block Chaining): verouderd
Elk blok wordt vóór het versleutelen ge-XOR'd met het vorige blok versleutelde tekst. Dat haalt het patroonlek van ECB weg. CBC was decennialang de standaardmodus, maar GCM heeft het voor de meeste toepassingen vervangen. CBC heeft een willekeurige initialisatievector (IV) nodig en biedt geen ingebouwde authenticatie (je kunt niet zien of iemand de versleutelde tekst heeft gewijzigd).
GCM (Galois/Counter Mode): de huidige standaard
GCM combineert versleuteling in countermodus met authenticatie via een Galois-lichaam. Het biedt geauthenticeerde versleuteling: het versleutelt de gegevens EN maakt een authenticatietag die elke wijziging van de versleutelde tekst aan het licht brengt. Wordt één bit gewijzigd, dan mislukt het ontsleutelen in plaats van dat er beschadigde platte tekst uitkomt.
NIST standaardiseerde GCM in SP 800-38D (2007). Het is de aanbevolen modus voor nieuwe implementaties.
AES-256-GCM is AES met een sleutel van 256 bits in Galois/Counter Mode. Dit hoort een toepassing te gebruiken waar beveiliging cruciaal is, en dit gebruikt Vaultaire om de inhoud van foto's en bestanden te versleutelen.
| Modus | Patroonlek | Authenticatie | Huidig advies |
|---|---|---|---|
| ECB | Ja (ernstig) | Nee | Niet gebruiken |
| CBC | Nee | Nee (aparte MAC nodig) | Verouderd; aanvaardbaar met HMAC |
| GCM | Nee | Ja (ingebouwd) | Aanbevolen voor nieuwe implementaties |
Wat AES-256 betekent voor foto-opslag
Claimt een fotokluis-app "AES-256-versleuteling", dan horen drie dingen waar te zijn:
De inhoud van bestanden is versleuteld met AES-256. De ruwe fotogegevens (pixels, metadata, miniatuur) worden met een sleutel van 256 bits omgezet in versleutelde tekst.
Elk bestand gebruikt een unieke initialisatievector (IV). Worden twee identieke foto's met dezelfde sleutel versleuteld, dan hoort de versleutelde tekst te verschillen. Daarvoor is per bestand een unieke IV nodig. Zonder die IV kan statistische analyse patronen blootleggen.
De modus biedt authenticatie (GCM of gelijkwaardig). Zonder authenticatie kan een aanvaller de versleutelde tekst ongemerkt wijzigen. Het ontsleutelde resultaat is dan beschadigde gegevens in plaats van een foutmelding.
Wat "AES-256" op een marketingpagina je niet vertelt
AES-256 is nodig, maar niet genoeg. Een aantal andere factoren bepaalt of de versleuteling je gegevens echt beschermt:
Sleutelafleiding telt. Hoe wordt de sleutel van 256 bits gemaakt? Wordt hij met een zwakke KDF afgeleid van een viercijferige pincode, dan is de werkelijke beveiliging vier cijfers (10.000 combinaties), niet 256 bits. Een sterke implementatie gebruikt PBKDF2 met een hoog aantal iteraties, of Argon2 met passende geheugen- en tijdparameters. Vaultaire gebruikt PBKDF2 met HMAC-SHA512 en 600.000 iteraties om een lokale kluissleutel af te leiden uit het gekozen 5x5-patroon en een salt van het apparaat. PBKDF2 maakt elke gok duurder; het verhoogt de entropie van het patroon niet tot 256 bits.
Sleutelopslag telt. Waar staat de sleutel? Staat hij als platte tekst in de sandbox van de app, dan kan malware met bestandstoegang hem lezen. De Secure Enclave van Apple ondersteunt specifieke sleutelbewerkingen die niet exporteerbaar zijn, geen willekeurige AES-sleutels die een app aanlevert. Ontwerpen met symmetrische sleutels leunen in plaats daarvan vaak op de sleutelhanger en gegevensbescherming. Documentatie hoort daarom de precieze API en beschermingsklasse te noemen in plaats van alleen "hardwarematig beschermd".
Wat er versleuteld wordt, telt. Sommige apps versleutelen de inhoud van bestanden maar laten bestandsnamen, miniaturen en metadata onversleuteld. Een forensisch onderzoeker ziet dan misschien je foto niet, maar wel "vakantie-strand-2025.jpg" in de bestandslijst. Volledige versleuteling dekt metadata apart af.
De levensduur van sleutels telt. Hoe lang blijft ontsleuteld sleutelmateriaal beschikbaar? Vaultaire laat de actieve kluis- en hoofdsleutelstatus vallen bij vergrendelen of sluiten en vraagt dan een nieuwe ontgrendeling. Zolang een kluis open is, staan symmetrische sleutelbytes noodzakelijkerwijs in het app-geheugen, en Swift en iOS laten een app niet bewijzen dat elke tijdelijke kopie is overschreven.
AES-256 in de praktijk: wie het gebruikt
| Partij | Toepassing | Modus |
|---|---|---|
| Amerikaanse overheid (NSA) | Geclassificeerde informatie | GCM (of CTR met aparte authenticatie) |
| Apple (iCloud ADP) | End-to-end-versleuteling in iCloud | GCM |
| Signal | Versleuteling van berichten | CBC (met HMAC voor authenticatie) |
| Banken | Versleuteling van financiële transacties | GCM |
| 1Password | Wachtwoordkluis | GCM |
| Vaultaire | Kluis voor foto's en bestanden | GCM |
| VeraCrypt | Schijfversleuteling | XTS (geoptimaliseerd voor schijfblokken) |
Veelvoorkomende misvattingen
"Versleuteling van militaire kwaliteit" betekent niets specifieks. Marketingpagina's gebruiken die term omdat hij indrukwekkend klinkt. Legers gebruiken AES-256. Ze gebruiken ook AES-128. De term zegt niets over de modus, de sleutelafleiding, de sleutelopslag of welke gegevens echt versleuteld worden.
"256-bits versleuteling" hoeft geen AES-256 te zijn. Andere cijfers gebruiken ook sleutels van 256 bits (ChaCha20, Twofish, Serpent). Controleer welk algoritme wordt genoemd. AES-256-GCM is de huidige standaard.
AES-256 beschermt niet tegen een zwak wachtwoord. Is je wachtwoord "1234" en is de sleutelafleiding zwak, dan heeft de versleuteling in feite de beveiliging van vier cijfers, hoe sterk het cijfer ook is. De keten breekt bij de zwakste schakel.
AES-256 beschermt geen gegevens die in gebruik zijn. Bekijk je een foto, dan moet die in het geheugen worden ontsleuteld. Op dat moment staat hij als platte tekst in het RAM. Een goede implementatie houdt dat moment zo kort mogelijk en wist ontsleutelde gegevens snel.
Veelgestelde vragen
Waar staat AES-256 voor?
Advanced Encryption Standard, gebruikt met een sleutel van 256 bits. AES is het cijfer dat NIST in 2001 als FIPS 197 standaardiseerde, na de keuze voor het ontwerp Rijndael. De 256 is de sleutellengte in bits. Een toevoeging zoals AES-256-GCM noemt de werkingsmodus. Die modus is een aparte keuze, los van het cijfer en de sleutelgrootte.
Kan AES-256 worden gekraakt?
Geen bekende aanval kraakt AES-256 door de volledige sleutelruimte te verkleinen. De beste bekende aanval (een biclique-aanval van Bogdanov, Khovratovich en Rechberger, 2011) brengt AES-256 terug van 2^256 bewerkingen naar 2^254,4. Dat is een theoretische verbetering die in de praktijk rekenkundig geen verschil maakt. AES-256 is niet gebroken.
Is AES-256 bestand tegen kwantumcomputers?
Grotendeels wel. Het kwantumalgoritme van Grover halveert de effectieve sleutellengte: AES-256 staat tegenover kwantumaanvallen dan gelijk aan 128-bits beveiliging. AES-128 zou zakken naar 64 bits effectieve beveiliging, en dat is mogelijk kwetsbaar. Een Grover-zoektocht tegen AES-256 zou nog steeds ongeveer 2^128 bewerkingen vergen, wat niet praktisch is.
Wat is het verschil tussen AES-128 en AES-256?
AES-128 gebruikt een sleutel van 128 bits (10 rondes). AES-256 gebruikt een sleutel van 256 bits (14 rondes). Beide gelden als veilig tegen de huidige aanvallen. AES-256 geeft een grotere marge tegen toekomstige ontwikkelingen, vooral kwantumcomputers. Door de extra rondes is AES-256 ongeveer 40% trager dan AES-128, maar hardwareversnelling maakt dat verschil op moderne apparaten verwaarloosbaar.
Maakt AES-256-versleuteling mijn telefoon trager?
Bij normaal gebruik merk je het niet. Moderne Apple-processors versnellen AES in hardware via de cryptografische bibliotheken van het systeem. Dat betekent niet dat de AES-bewerking van een app in de Secure Enclave draait. De tijd hangt nog steeds af van bestandsgrootte, apparaat, opslag en implementatie. Een beveiligingsclaim hoort dus op metingen te steunen, niet op één universeel getal in milliseconden.
Hoe weet ik of een app echt AES-256 gebruikt?
Controleer de beveiligingsdocumentatie van de app, niet alleen de marketingpagina. Zoek naar het precieze algoritme en de modus, de sleutelhiërarchie, de afleidingsparameters, hoe de sleutelhanger (Keychain) of Secure Enclave precies wordt gebruikt, de omgang met nonces, de herstelroute en of metadata ook versleuteld zijn. Open-sourcecode en onafhankelijke audits maken deze beweringen gemakkelijker te verifiëren.
Conclusie
AES-256 is een veelgebruikt symmetrisch cijfer, gestandaardiseerd door NIST, zonder bekende praktische aanval; een kwantumcomputer met het algoritme van Grover zou nog steeds ongeveer 2^128 werk moeten verzetten. Beoordeel je apps die AES-256-versleuteling claimen, kijk dan verder dan het cijfer: controleer de modus (GCM), de sleutelafleiding (PBKDF2/Argon2 met een hoog aantal iteraties), de sleutelopslag (een benoemde sleutelhanger en gegevensbeschermingsklasse) en welke gegevens echt versleuteld worden (inhoud plus metadata).
Vaultaire gebruikt AES-256-GCM voor bestandsinhoud, headers, metadata, indexen en miniaturen. PBKDF2 met HMAC-SHA512 leidt een lokale kluissleutel af van het patroon en een salt per apparaat uit de sleutelhanger; die sleutel pakt een willekeurige hoofdsleutel uit waarmee de bestanden worden versleuteld. De symmetrische bewerkingen draaien via CryptoKit in het app-proces, en de iOS-sleutelhanger en gegevensbescherming beschermen de herstelgegevens als het apparaat vergrendeld is. De volledige hiërarchie staat in het beveiligingsmodel.