AES (Advanced Encryption Standard)
2/Jan/1997: Call for evaluation criteria.
NIST publicly asked interested parties to propose a criteria to choose a DES successor.
Many submissions received during 3 months.
12/Sep/1997: Call for new algorithms.
Block ciphers 128-bit blocks.
128, 192, and 256-bit keys.
Such ciphers were rare at the time of the call.
Evaluation Rounds
1st round
15 candidate algorithms were evaluated by the community.
Conferences were organized for the evaluation.
Cryptographic weakness were found.
Performance issues were identified.
In a variety of hardware.
PCs, smart cards, hardware implementations.
Constrained environments were evaluated.
Limited memory smart cards, low gate count circuits, FPGAs.
Aug/1999: AES finalists announced
MARS, RC6, Rijndael, Serpent, and Twofish.
2nd round
The 5 finalists continued to be evaluated.
In a final conference the proposal of each algorithm presented their advantage against the other.
2/Oct/2000: AES algorithm was announced
Rijndael was selected.
Proposed by Vincent Rijmen and Joan Daemen.
Family of ciphers with different key and block sizes.
26/Nov/2001: AES was approved by NIST
FIPS PUB 197.
Subset of Rijndael (3 family members).
Now part of the ISO/IEC 18033-3 standard
Architecture
AddRoundKey
128-bit XOR.
Output is a 4x4 byte matrix.
SubBytes
256-element S-box.
Each matrix's bytes are substituted.
ShiftRows
Rows are rotated left.
Byte shift vary (0, 1, 2 and 3).
MixColumns
Each column is transformed.
Not performed in the last round.
CPU Instruction Sets
Intel AES New Instructions (AES-NI).
AESENC | Perform one round of an AES encryption flow. |
AESENCLAST | Perform the last round of an AES encryption flow. |
AESDEC | Perform one round of an AES decryption flow. |
AESDECLAST | Perform the last round of an AES decryption flow. |
AESKEYGENASSIST | Assist in AES round key generation. |
AESIMC | Assist in AES Inverse Mix Columns. |
ARMv8 Cryptographic Extension.
Last updated