Advanced Encryption Standard

First Post:

Last Update:

Word Count:
413

Read Time:
2 min

Advanced Encryption Standard

Intro

The Advanced Encryption Standard(AES), also known by its orignal name Rijndael, is a specification for the encryption of electronic data established by the U.S. National Institute of Standards and Technology(NIST) in 2001.

Definitive standards

The Advanced Encryption Standard (AES) is defined in each of:

  • FIPS PUB 197: Advanced Encryption Standard (AES)
  • ISO/IEC 18033-3: Block ciphers

Description of the ciphers

AES is based on a design principle known as a substitution–permutation network, and is effcient in both software and hardware. Unlike its predecessor DES, AES does not use a Feistel network. AES is a variant of Rijndael, with a fixed block size of 128 bits, and a key size of 128, 192, or 256 bits. By contrast, Rijndael per se is specified with block and key sizes that may be any multiple of 32 bits, with a AES operations on a 4 × 4 column-major order array of bytes, termed the state. Most AES calculations are done in particular finite field.

For instance, 16 bytes, b0, b1, …., b15 are represented as this two-dimensional array:

The key size used for an AES cipher specifies the number of transformation rounds that convert the input, called the plaintext, into the final output, called the ciphertext. The number of rounds are as follows:

  • 10 rounds for 128-bit keys.
  • 12 rounds for 192-bit keys.
  • 14 rounds for 256-bit keys.

Each round consists of several processing steps, including one that depends on the encryption key itself. A set of reverse rounds are applied to transform ciphertext back into the original plaintext using the same encryption key.

High-level description of the algorithm

  1. KeyExpansion – round keys are derived from the cipher key using the AES key schedule. AES requires a separate 128-bit round key block for each round plus one more.

  2. Initial round key addition:

    1. AddRoundKey – each byte of the state is combined with a byte of the round key using bitwise xor.
  3. 9, 11 or 13 rounds

    1. SubBytes – a non-linear substitution step where each byte is replaced with another according to a lookup table.
    2. ShiftRows – a transposition step where the last three rows of the state are shifted cyclically a certain number of steps.
    3. MixColumns – a linear mixing operation which operates on the columns of the state, combining the four bytes in each column.
    4. AddRoundKey
  4. Final round (making 10, 12 or 14 rounds in total):

    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

The SubBytes step

Updating…

ref: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

打赏点小钱
支付宝 | Alipay
微信 | WeChat