Advanced Encryption Standard
Het populairste en meest gebruikte symmetrische encryptie-algoritme dat je tegenwoordig waarschijnlijk tegenkomt is de Advanced Encryption Standard (AES). Het is minstens zes keer sneller dan triple DES.
Een vervanging voor DES was nodig omdat de sleutelgrootte te klein was. Met de toenemende rekenkracht werd het kwetsbaar geacht voor een uitputtende zoekaanval op sleutels. Triple DES werd ontworpen om dit nadeel te ondervangen, maar het werd traag bevonden.
De kenmerken van AES zijn als volgt –
- Symmetrische bloksleutel
- 128-bit data, 128/192/256-bit sleutels
- Sterker en sneller dan Triple-DES
- Volledige specificatie en ontwerpdetails
- Software implementeerbaar in C en Java
Werking van AES
AES is een iteratief in plaats van Feistel-cijfer. Het is gebaseerd op een “substitutie-permutatie netwerk”. Het bestaat uit een reeks gekoppelde bewerkingen, waarvan sommige inputs vervangen door specifieke outputs (substituties) en andere bits door elkaar husselen (permutaties).
Interessant is dat AES al zijn berekeningen op bytes uitvoert in plaats van bits. Daarom behandelt AES de 128 bits van een onbewerkt tekstblok als 16 bytes. Deze 16 bytes worden gerangschikt in vier kolommen en vier rijen voor verwerking als een matrix –
In tegenstelling tot DES is het aantal rondes bij AES variabel en afhankelijk van de lengte van de sleutel. AES gebruikt 10 rondes voor 128-bits sleutels, 12 rondes voor 192-bits sleutels en 14 rondes voor 256-bits sleutels. Elk van deze rondes gebruikt een andere 128-bits rondesleutel, die wordt berekend uit de oorspronkelijke AES-sleutel.
Het schema van de AES-structuur wordt in de volgende illustratie gegeven –
Encryptieproces
Hier beperken we ons tot de beschrijving van een typische AES-versleutelingsronde. Elke ronde bestaat uit vier subprocessen. Het proces van de eerste ronde wordt hieronder afgebeeld –
Byte Substitution (SubBytes)
De 16 invoertytes worden gesubstitueerd door een vaste tabel (S-box) op te zoeken die in het ontwerp is gegeven. Het resultaat staat in een matrix van vier rijen en vier kolommen.
Shiftrows
Elke van de vier rijen van de matrix wordt naar links verschoven. Alle enters die “wegvallen” worden opnieuw aan de rechterkant van de rij geplaatst. De verschuiving wordt als volgt uitgevoerd –
-
Eerste rij wordt niet verschoven.
-
Tweede rij wordt één (byte-)positie naar links verschoven.
-
Derde rij wordt twee posities naar links verschoven.
-
Vierde rij wordt drie posities naar links verschoven.
-
Het resultaat is een nieuwe matrix die uit dezelfde 16 bytes bestaat, maar dan verschoven ten opzichte van elkaar.
MixColumns
Elke kolom van vier bytes wordt nu getransformeerd met behulp van een speciale wiskundige functie. Deze functie neemt als invoer de vier bytes van een kolom en voert vier geheel nieuwe bytes uit, die de oorspronkelijke kolom vervangen. Het resultaat is weer een nieuwe matrix bestaande uit 16 nieuwe bytes. Opgemerkt moet worden dat deze stap niet in de laatste ronde wordt uitgevoerd.
Addroundkey
De 16 bytes van de matrix worden nu beschouwd als 128 bits en worden ge-XORed aan de 128 bits van de ronde-sleutel. Als dit de laatste ronde is, is de uitvoer de cijfertekst. Anders worden de resulterende 128 bits geïnterpreteerd als 16 bytes en beginnen we aan een nieuwe soortgelijke ronde.
Ontcijferingsproces
Het ontcijferingsproces van een AES-cijfertekst is gelijk aan het vercijferingsproces in omgekeerde volgorde. Elke ronde bestaat uit de vier processen die in omgekeerde volgorde worden uitgevoerd –
- Sleutel toevoegen
- Kolommen mengen
- Rijen verschuiven
- Byte-substitutie
Omdat de subprocessen in elke ronde in omgekeerde volgorde worden uitgevoerd, moeten, in tegenstelling tot bij een Feistel Cipher, de vercijferings- en ontcijferingsalgoritmen afzonderlijk worden geïmplementeerd, hoewel ze zeer nauw verwant zijn.
AES-analyse
In de huidige cryptografie wordt AES veel gebruikt en ondersteund, zowel in hardware als in software. Tot op heden zijn er geen praktische cryptanalytische aanvallen tegen AES ontdekt. Bovendien heeft AES een ingebouwde flexibiliteit van sleutellengte, die een zekere mate van ‘future-proofing’ mogelijk maakt tegen de vooruitgang in het vermogen om uitputtende sleutelzoekopdrachten uit te voeren.
Hoewel, net als voor DES, de veiligheid van AES alleen verzekerd is als het correct geïmplementeerd is en goed sleutelbeheer wordt toegepast.