AES-256-encryptie gids: bestandsbeveiliging op militair niveau
Begrijp AES-256-encryptie en waarom het de gouden standaard is. Leer hoe dit militair cipher uw overdrachten beveiligt.
AES-256 is een symmetrisch blokcipher dat door de Amerikaanse NSA is goedgekeurd voor TOP SECRET-gegevens onder CNSSP-15. Het versleutelt 128-bits blokken met een 256-bits sleutel via 14 ronden van substitutie-, permutatie- en mengbewerkingen. Het brute-forcen van één AES-256-sleutel zou gemiddeld ongeveer 2^255 bewerkingen vereisen — een getal zo groot dat alle computers op aarde die draaien voor de leeftijd van het universum het niet zouden kraken. Dat is waarom elke serieuze bestandsoverdrachtsservice, van SwissTransfer tot Tresorit, AES-256 gebruikt als bulkcipher. Zo werkt het precies.
Waar de "256" vandaan komt
AES is er in drie sleutelgroottes: 128, 192 en 256 bits. Het getal verwijst alleen naar de sleutellengte, niet naar de blokgrootte (die altijd 128 bits is). De sleutelgrootte bepaalt hoeveel ronden het cipher loopt: 10 voor AES-128, 12 voor AES-192, 14 voor AES-256.
Meer ronden betekenen meer diffusie — elke uitvoerbit is afhankelijk van meer invoerbits — en meer weerstand tegen cryptanalytische aanvallen zoals de biclique-aanval gepubliceerd in 2011, die theoretisch de effectieve veiligheid van AES-256 reduceerde van 256 naar 254,4 bits. Dat is nog steeds ver buiten het bereik van elke praktische aanval.
Federal Information Processing Standard FIPS 197 definieert AES, en NIST SP 800-38A tot 800-38G definiëren de werkingsmodi.
Werkingsmodi: GCM versus CBC versus ECB
AES is een blokcipher, wat betekent dat het alleen weet hoe het één 128-bits blok versleutelt. Om een bestand van willekeurige grootte te versleutelen, heb je een werkingsmodus nodig. De keuze is van enorm belang:
- ECB (Electronic Codebook): identieke plaintext-blokken produceren identieke versleutelde tekst. Gebruik dit nooit. De beruchte "ECB-pinguïn"-afbeelding toont de omtrek van Tux zichtbaar via ECB-versleutelde pixels.
- CBC (Cipher Block Chaining): XOR-verbindt elk blok met de vorige versleutelde tekst. Veilig als gekoppeld met HMAC voor authenticatie, maar CBC alleen is kwetsbaar voor padding oracle-aanvallen (POODLE trof SSL in 2014).
- GCM (Galois/Counter Mode): versleutelt met een teller en produceert een 128-bits authenticatietag in dezelfde pas. Manipulatie van de versleutelde tekst breekt het ontsleutelen luidruchtig. Dit is wat moderne services gebruiken.
AES-256-GCM is de standaard in TLS 1.3, Signal, WireGuard en elke geloofwaardige bestandsoverdrachtsservice. Als een service "AES-256" vermeldt zonder de modus te specificeren, ga dan uit van GCM en controleer.
De IV (nonce) die je nooit mag hergebruiken
GCM vereist een unieke 96-bits initialisatievector per versleuteling met een gegeven sleutel. Hergebruik een IV met dezelfde sleutel zelfs één keer, en een aanvaller kan twee versleutelde teksten XOR-verbinden om plaintext te herstellen — een catastrofale mislukking beroemd uitgebuit tegen WEP Wi-Fi.
Beste praktijk: genereer de IV met een cryptografisch veilige RNG (crypto.getRandomValues() in browsers, /dev/urandom op Linux) en voeg hem vooraan aan de versleutelde tekst toe. Een 96-bits willekeurige IV heeft een botsingskans van ongeveer 2^-48 na het versleutelen van 2^32 bestanden — acceptabel voor een bestandsoverdrachtsservice. Voor hergebruik van sleutels over miljarden bestanden, gebruik in plaats daarvan een deterministische teller.
Sleutelafleiding: wachtwoorden omzetten naar sleutels
Gebruikers willen wachtwoorden zoals mijnhond2024. AES wil 256 bits uniforme willekeurigheid. De brug is een sleutelafleidingsfunctie (KDF). Drie zijn in gemeenschappelijk gebruik:
- PBKDF2 met HMAC-SHA-256 en 600.000 iteraties (OWASP 2023-aanbeveling). Breed ondersteund, beschikbaar in de Web Crypto API.
- scrypt voegt geheugenmoeilijkheid toe, waardoor GPU-aanvalskosten stijgen. Bitcoin en LastPass gebruiken het.
- Argon2id is de huidige beste praktijk, winnaar van de Password Hashing Competition 2015. Parameters:
memory=64 MB, iterations=3, parallelism=4.
Een willekeurig wachtwoord van 12 tekens door Argon2id neemt een moderne GPU ruwweg een miljard jaar om te brute-forcen. Een zwak wachtwoord zoals wachtwoord123 valt in milliseconden ongeacht de KDF.
AES in de browser: de Web Crypto API
Browsers stellen AES-256-GCM native beschikbaar via window.crypto.subtle. Een typische flow:
const key = await crypto.subtle.generateKey(
{ name: "AES-GCM", length: 256 },
true,
["encrypt", "decrypt"]
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: "AES-GCM", iv },
key,
fileBytes
);
Moderne CPU's hebben AES-NI-instructies die dit versnellen tot ongeveer 3–5 GB/s per kern. Een bestand van 1 GB versleutelt in minder dan een seconde op een mid-range laptop. Op mobiel bevatten Apple A-series en Qualcomm Snapdragon-chips ARMv8 Crypto Extensions voor vergelijkbare doorvoer.
Wat AES-256 beschermt (en niet beschermt)
AES-256 lost één specifiek probleem op: vertrouwelijkheid van gegevens in rust of in transit, gegeven dat de sleutel geheim is. Het lost niet op:
- Sleutelbeheer. Als je het wachtwoord naast het bestand e-mailt, voegt AES-256 niets toe.
- Compromis van het eindpunt. Malware die de plaintext leest vóór versleuteling omzeilt het cipher volledig.
- Implementatiebugs. De BEAST-, CRIME- en Lucky13-aanvallen uit 2018 waren allemaal gericht op TLS-implementaties, niet op AES zelf.
- Zijkanaalaanvallen. Cache-timing en vermogensanalyse hebben AES-sleutels geëxtraheerd uit beperkte apparaten. AES-NI verhelpt dit grotendeels op desktops.
AES-256 bewijst ook niet wie het bestand heeft verzonden. Combineer het daarvoor met digitale handtekeningen via Ed25519 of ECDSA.
Waarom "militair niveau" grotendeels marketing is
De uitdrukking wordt rondgeslingerd omdat NSA CNSSP-15 AES-256 in 2003 goedkeurde voor TOP SECRET-gegevens. Dat is echt, maar het is inmiddels ook meer dan 20 jaar oud — AES-128 is goedgekeurd voor SECRET en zou de meeste civiele gebruikssituaties identiek bedienen. De sprong van 128 naar 256 is een afdekking tegen toekomstige vooruitgang in kwantumcomputing: Grover's algoritme halveert theoretisch de symmetrische sleutelbeveiliging, waardoor de effectieve sterkte van AES-256 naar 128 bits wordt gereduceerd, wat nog steeds veilig is.
In de praktijk kost AES-256 misschien 40% meer CPU dan AES-128 met AES-NI en wordt het universeel ondersteund, dus het is de standaard geworden zelfs wanneer 128 voldoende zou zijn.
Verifiëren of een service werkelijk AES-256-GCM gebruikt
Drie manieren om te controleren:
- Lees het beveiligingswitboek. Geloofwaardige services (Tresorit, Proton Drive, SwissTransfer, HexaTransfer) publiceren de exacte modus en IV-afhandeling.
- Inspecteer de clientcode. Open DevTools, zoek in de JavaScript-bundel naar
AES-GCMofaes-256-gcm. Je zou het expliciet moeten zien. - Controleer op audits door derden. Cure53, NCC Group en Trail of Bits publiceren audits die de beoordeelde algoritmen noemen.
Rode vlaggen: "bank-grade encryptie" zonder gespecificeerde modus, "eigen algoritme" van welke aard dan ook, of verwijzingen naar AES-128-ECB.
Aan de slag
Voor het verzenden van een gevoelig bestand vandaag: kies een service die AES-256-GCM expliciet vermeldt, een 96-bits willekeurige IV per bestand gebruikt en de versleuteling in je browser uitvoert (niet op hun server). Combineer dat met een wachtzin van 16+ tekens afgeleid via Argon2id of PBKDF2 bij 600.000+ iteraties.
Probeer het op hexatransfer.com — gratis, zonder account, tot 10 GB.
Verstuur grote bestanden veilig met end-to-end-versleuteling
Draag bestanden tot 10 GB gratis over met end-to-end-versleuteling. Geen account nodig. Uw bestanden worden in uw browser versleuteld voordat ze worden geüpload — niemand anders kan ze lezen.
Een bestand verzenden