# Advanced Encryption Standard

In de cryptografie is Advanced Encryption Standard (AES) een computerversleutelingstechniek (encryptie). Het is de opvolger van de "Data Encryption Standard" (DES).
AES is een subset van het Rijndael-algoritme waarbij de blokgrootte 128-bits is, en de sleutel 128, 192 of 256 bits. Rijndael zelf kan alle blokgrootten en sleutels aan die een veelvoud zijn van 32-bit met een minimum van 128-bit en een maximum van 256-bit.
In programma's zoals WinRAR, WinZip, PowerArchiver, e.d. wordt AES als encryptie aangeboden.

## Geschiedenis

DES voldeed niet meer en was te makkelijk te kraken voor de huidige snelle computers. Daarom startte op 2 januari 1997 het Amerikaans Nationaal Instituut voor Standaardisatie en Technologie (NIST) een wereldwijde wedstrijd om tot een nieuwe AES (Advanced Encryption Standard) te komen die de verouderde DES zou vervangen.
Verschillende grote kandidaten, zoals IBM en RSA Security stuurden hun algoritmen in. Op 2 oktober 2000 werd de winnaar bekendgemaakt: Rijndael van Joan Daemen en Vincent Rijmen. Hun algoritme is gekozen vanwege de combinatie van veiligheid, prestatie, efficiëntie, eenvoud en flexibiliteit.

### Beschrijving van de cijfers

AES is gebaseerd op een ontwerpprincipe bekend als een substitutie-permutatienetwerk, en is efficiënt in zowel software als hardware. In tegenstelling tot zijn voorganger DES, gebruikt AES geen Feistelnetwerk. AES is een variant van Rijndael, met een vaste blokgrootte van 128 bits, en een sleutelgrootte van 128, 192 of 256 bits. In tegenstelling hiermee kan Rijndael zelf blok- en sleutelgroottes hebben die elk veelvoud van 32 bits kunnen zijn, met een minimum van 128 en een maximum van 256 bits. De meeste AES-berekeningen worden gedaan in een specifiek eindig veld.
AES werkt op een 4×4 kolommajoor array van 16 bytes, de 'staat' genoemd. De sleutelgrootte gebruikt voor een AES-cijfer specificeert het aantal transformatierondes dat de invoer, de 'plaintext', omzet in de uiteindelijke uitvoer, de 'ciphertext'. Het aantal rondes zijn als volgt:
10 rondes voor 128-bit sleutels. 12 rondes voor 192-bit sleutels. 14 rondes voor 256-bit sleutels. Elke ronde bestaat uit meerdere verwerkingsstappen, waaronder een die afhankelijk is van de encryptiesleutel zelf. Een set van omgekeerde rondes wordt toegepast om de ciphertext terug te transformeren naar de oorspronkelijke plaintext met dezelfde encryptiesleutel.

### Optimalisatie van het cijfer

Op systemen met 32-bit of grotere woorden is het mogelijk de uitvoering van dit cijfer te versnellen door de SubBytes- en ShiftRows-stappen te combineren met de MixColumns-stap door ze om te zetten in een reeks van tabelopzoekingen. Dit vereist vier 256-ingangen 32-bit tabellen (samen 4096 bytes bezettend). Een ronde kan dan worden uitgevoerd met 16 tabelopzoekoperaties en 12 32-bit exclusieve-of-operaties, gevolgd door vier 32-bit exclusieve-of-operaties in de AddRoundKey-stap.

## Beveiliging

De National Security Agency (NSA) heeft alle AES-finalisten beoordeeld, inclusief Rijndael, en verklaard dat ze allemaal veilig genoeg zijn voor Amerikaanse overheidsgegevens die niet geclassificeerd zijn. In juni 2003 kondigde de Amerikaanse overheid aan dat AES gebruikt kan worden om geclassificeerde informatie te beschermen:
Het ontwerp en de sterkte van alle sleutellengtes van het AES-algoritme (d.w.z. 128, 192 en 256) zijn voldoende om geclassificeerde informatie tot het GEHEIM niveau te beschermen. TOPGEHEIME informatie vereist het gebruik van de 192 of 256 sleutellengtes. De implementatie van AES in producten bedoeld om nationale veiligheidssystemen en/of informatie te beschermen moet worden beoordeeld en gecertificeerd door de NSA voordat ze worden verkregen en gebruikt.
AES heeft 10 rondes voor 128-bit sleutels, 12 rondes voor 192-bit sleutels, en 14 rondes voor 256-bit sleutels.

### Zijkanaalaanvallen

Zijkanaalaanvallen vallen de implementaties van het cijfer aan op hardware- of softwaresystemen die onbedoeld gegevens lekken. Er zijn verschillende dergelijke bekende aanvallen op verschillende implementaties van AES.

### Quantumaanvallen

AES-256 wordt als kwantumbestendig beschouwd, omdat het een vergelijkbare kwantumbestendigheid heeft als de weerstand van AES-128 tegen traditionele, niet-kwantum, aanvallen op 128 bits van beveiliging. AES-192 en AES-128 worden niet als kwantumbestendig beschouwd vanwege hun kleinere sleutelgroottes.

## NIST/CSEC-validatie

Het Cryptographic Module Validation Program (CMVP) wordt gezamenlijk beheerd door de Computer Security Division van het National Institute of Standards and Technology (NIST) van de Amerikaanse overheid en het Communications Security Establishment (CSE) van de Canadese overheid. Het gebruik van cryptografische modules die zijn gevalideerd volgens NIST FIPS 140-2 is vereist door de Amerikaanse overheid voor de encryptie van alle gegevens met een classificatie van Sensitive but Unclassified (SBU) of hoger.

## Testvectoren

Testvectoren zijn een reeks bekende cijfers voor een gegeven invoer en sleutel. NIST distribueert de referentie van AES-testvectoren als AES Known Answer Test (KAT) Vectors.

## Prestaties

Hoge snelheid en lage RAM-behoeften waren enkele van de criteria van het AES-selectieproces. Als het gekozen algoritme presteerde AES goed op een breed scala aan hardware, van 8-bit smartcards tot high-performance computers.
* ↑ (en) National Institute of Standards and Technology, ANNOUNCING REQUEST FOR CANDIDATE ALGORITHM NOMINATIONS FOR THE ADVANCED ENCRYPTION STANDARD (AES) 48051-48058. csrc.nist.gov (12 september 1997). Gearchiveerd op 13 mei 2012. Geraadpleegd op 22 juli 2012.