Hur fungerar krypteringsalgoritmen Rijndael?
Även känd under förkortningen AES
Att överföra strikt konfidentiell information på ett säkert sätt utan att obehöriga får åtkomst har alltid varit en utmaning. Tidiga ”hemliga språk” – till exempel enkla bokstavsförskjutningar – kan med dagens beräkningskapacitet knäckas utan större ansträngning. I dag skyddar vi data med kryptografiska metoder som är matematiskt precist definierade och vars säkerhet har granskats offentligt.
Sådana metoder använder en nyckel som bara avsändare och mottagare känner till. Kryptering och dekryptering följer en krypteringsalgoritm – ett tydligt beskrivet matematiskt förfarande.
Password Depot krypterar konfidentiella data med algoritmen Rijndael, som har standardiserats som AES (Advanced Encryption Standard).
Nedan förklaras algoritmen och dess tekniska kontext.
Advanced Encryption Standard (AES) – den standardiserade varianten av Rijndael
USA:s National Bureau of Standards (numera NIST) standardiserade 1977 DES; denna standard drog NIST tillbaka 2005 eftersom den inte längre ansågs tillräckligt säker (NIST-meddelande). Som efterträdare valde NIST 2001 Rijndael och standardiserade utifrån den Advanced Encryption Standard (AES) (FIPS 197).
Viktigt: AES är en delmängd av Rijndael-familjen. AES låser blockstorleken till 128 bitar och tillåter nycklar på 128, 192 eller 256 bitar (NIST-notis, FIPS 197 (PDF)).
AES är godkänd för skydd av amerikansk myndighetsinformation upp till nivån TOP SECRET (se CNSSP-15-faktabladet och den aktuella CNSA-2.0-FAQ från NSA).
Så fungerar Rijndael/AES (översikt)
Rijndael är en chiffer av typen substitution-permutation network (SPN). Grundidéerna är byte-visa substitutioner, linjära transformationer och XOR-operationer.
Flöde på blocknivå (128-bitars ”State”)
- Nyckelutvidgning (Key Schedule): Från nyckeln härleds Nr + 1 rundnycklar (t.ex. 11 för AES-128, 13 för AES-192, 15 för AES-256). Källa: FIPS 197.
- Initial runda: AddRoundKey – klartextblocket (representerat som en 4×4-bytesmatris) XOR:as med den första rundnyckeln.
- Rundor 1 … Nr:
- SubBytes: Varje byte ersätts via en S-box (multiplikativ invers i GF(28) plus en affin transformation med konstanten
0x63). Källa: FIPS 197. - ShiftRows: Raderna i state-matrisen roteras cykliskt.
- MixColumns: Kolumnerna blandas genom matrismultiplikation över GF(28).
- AddRoundKey: XOR med respektive rundnyckel.
Observera: I den sista rundan utförs inte MixColumns. Antalet rundor är 10/12/14 för nycklar med längden 128/192/256 bitar (FIPS 197). - SubBytes: Varje byte ersätts via en S-box (multiplikativ invers i GF(28) plus en affin transformation med konstanten
AES kan implementeras i mjukvara, firmware eller hårdvara (FIPS 197). För praktisk användning används olika driftslägen, t.ex. CBC, CTR eller GCM (autentiserad kryptering). Rekommendationer finns i NIST SP 800-38A och NIST SP 800-38D (GCM/GMAC).
Viktigt för sammanhanget: AES är ett symmetriskt chiffer för datakryptering. Nyckelutbyte sker vanligtvis med asymmetriska metoder ((EC)DH/RSA). AES kan emellertid kapsla in nycklar säkert (”Key Wrap”) – se NIST SP 800-38F.
Officiell specifikation
Referensen finns här: https://csrc.nist.gov/files/pubs/fips/197/final/docs/fips-197.pdf
Brute-force-attacker
Brute-force innebär att en angripare provar alla möjliga nycklar. Klassiska algoritmer som DES med endast 56-bitars nycklar kan i dag praktiskt taget knäckas på detta sätt – därför drog NIST tillbaka DES 2005 (NIST).
Moderna algoritmer som AES med nyckellängder på 128/192/256 bitar har däremot ett astronomiskt stort nyckelutrymme. I praktiken är det därför mindre algoritmen i sig som är avgörande och mer hur nyckeln härleds från lösenord samt kvaliteten på huvudlösenordet.
Password Depot försvårar brute-force-attacker ytterligare genom en fördröjningsfunktion: efter ett felaktigt huvudlösenord låses programmet i några sekunder.
Slutsats: Med korrekt implementation, lämpliga driftslägen (t.ex. GCM) och tillräcklig nyckellängd anses AES i dag vara mycket säkert på lång sikt.
Mer om brute-force-attacker.
Fördjupande källor
- FIPS 197 – Advanced Encryption Standard (AES)
- FIPS 197 – PDF (originalspecifikation)
- NIST: AES är en delmängd av Rijndael (blockstorlek 128 bitar)
- NIST SP 800-38A – driftslägen (ECB/CBC/CFB/OFB/CTR)
- NIST SP 800-38D – GCM/GMAC (autentiserad kryptering)
- NIST SP 800-38F – AES Key Wrap
- CNSSP-15 Fact Sheet – användning av AES för hemlig/strängt hemlig information
- NSA: CNSA 2.0 FAQ – aktuella krav
- NIST: avveckling av DES (bakgrund)