A first time reader might skip this section and go directly to the description of the round transformations, then come back later (it is mostly useful to understand the construction of the operation MC
and SB
).
Each byte in AES is viewed as an element of a binary finite field of 256 elements, where it can always be represented as a polynomial of degree at most 7 with coefficients in. The construction of the finite field is made as the quotient ring, whereis an irreducible polynomial of degree 8 inso the ring becomes a field.
In AES, the choice foris
We can check with SageMath that it is irreducible:
A byte is composed of 8 bits and is matched to a polynomial as
In SageMath, this reduction can be produced in one of the following methods.
Method 3: Using the Finite Field class of SageMath directly.
On this page we use this last method. Also, this helper converts an element of the finite field to the hexadecimal representation of a byte, and could be useful in the examples:
The addition of two polynomials is done by adding the coefficients corresponding of each monomial:
All coefficients are shifted to a monomial one degree higher. Then, there are two cases:
A bitwise shiftleft operation: (b << 1) & 0xff
;
Here an example in SageMath (we use the finite field construction of method 3):
For instance, take the byte 3a
whose binary decomposition is and becomes the polynomial
Polynomials of degree 8 or more can always be reduced, using the fact that in the finite field, we have , so we have the relation
Why not ? In fact, that's also true, but the coefficient are in so the additive inverse of is itself.
Method 1: Remainder of an Euclidean division by
Method 2: Image in the quotient ring
And as the addition of the coefficients is in, it corresponds to the bitwise xor
operation on the byte.
Multiplication of two polynomials is more complex (one example would be the Karatsuba algorithm, more efficient than the naive algorithm). For an implementation of AES, it is possible to only use the multiplication by , whose byte representation is 02
.
Letan element and we consider the multiplication by:
Ifis, then we have a polynomial of degree at most 7 and we are done;
Ifis, we can replacebyduring the reduction phase:
This can be used to implement a very efficient multiplication bywith the byte representation:
Followed by a conditional addition with 1b
if the top bit of is .
Advanced Encryption Standard
The Advanced Encryption Standard most known as AES is one of the most used ciphers nowadays. Created by Vinent Rijmen and Joan Daemen under the name Rijndael, it won the NIST competition that resulted in its standardization in 2001 to replace older algorithms such as DES (and its variant 3DES). In fact, it is six times faster than 3DES.
AES encrypts a block of 16 bytes only at a time, though ciphertexts tend to be much longer. To accomodate this, cipherexts are cut in blocks of 16 bytes using an operating mode [see future section on mode]. We only focus on the encryption of a single block.
The array of 16 bytesare arranged from up to bottom, column by column inmatrix. During the encryption, the state of this matrix changes and results in a 16-bytes ciphertextwhose output can be read following the same ordering:
A key is involved and three sizes are possible: 128, 192, or 256 bits. Depending of the size, there are a few differences which will be explained later. For now, it is sufficient to know that round keys are derived from this master key.
Our interest is to look at what goes inside the transformation between the plaintext and the ciphertext. Basically, there are four operations on the state matrix, each important for the security of AES:
AK
: add round key;
SR
: shift row;
SB
: substitution box;
MC
: MixColumn.
All these operations are executed a several number of times in what are called rounds to mix the plaintext enough. A look on the flow of an encryption is given in the figure below.
Two particular cases can be noticed:
the first round is preceded by an additional AK
;
last round is missing MC
.
The number of rounds NR
is different depending on the master key length:
This page gives a description of the four operations that compose a round of AES. Each has been designed to satisfy criterias, one of them is that all must be invertible.
This is the only operation that involves a key. It is obvious that omitting it would mean no encryption.
Round keys are derived from the master key (see the Key Schedule section) and are all composed of 16 bytes.
We simply xor
byte by byte the state by the bytes of the round key in the according position.
Its inverse is itself: if we xor again, we get back the original value of the state.
A major goal of MC
is the diffusion property: each byte has an impact on the whole column, so a modification propagates to other positions.
This operation mixes each column of the state independently from each other: each byte of the column is replaced by a (slightly different) combination of the four bytes of the column.
Let the quadruplet of elements of a column, the operation MC
is done by multiplying with a matrix .
The calculations are performed in the finite field. If you are not familiar enough with the notions, you can skip to the next part and retain that this operation is also invertible using another matrix.
This matrix is circulant: each row is the same as the one above but is shifted by one column. So we can construct it in one line of SageMath (recall that the bytes 02
and 03
correspond respectively to and in the field):
It is needed to reverse MC
for the decryption process. Fortunately, there exists a matrix such that , the identity matrix.
We remark that the coefficient of the matrix are less friendly for the inverse operation as it involves polynomial of higher degree. This means that the decryption is a bit slower.
The goal of shifting rows is reinforce the diffusion property: the bytes of a column are shifted so they are all positioned on different columns.
Combined with MC
, then a one byte modification will have an effect to the whole state after several rounds: this is the Avalanche effect.
This operation shifts the rows of the state in the following manner:
The rows are shifted from top to bottom respectively by an offset of 0, 1, 2 or 3 columns to the left. Bytes that overflow on the left are put back to the right of the row.
The inverse is almost the same: the rows are shifted to the right instead by the same offsets and exceeding bytes are put back to the left.
Small exercise: to what extent would be the impact on the security of AES if no shifting were present?
Last, but not least, the SB
design criterias is to bring the confusion property to make correlation between a plaintext and a ciphertext as small as possible.
The precedent operations shuffle the plaintext in such a way that any modification of a byte has an impact to the whole state after several rounds. Though, this is not enough as those operations are linear: it means that the ciphertext could be expressed as linear equations from the plaintext and the master key. From a known couple plaintext/ciphertext it would be easy to solve the system and find the key.
The substitution box is the operation that breaks the linearity: each byte of the state is replaced by another following the table below.
If 3b
is the input, its output is on row 30
and column 0b
and is the byte e2
.
Let sbox
the name of this table, then for any bytes b1
and b2
, we have
which is the desired property.
Though, this is not enough and the design of the sbox
is made to include a sufficient algebraic complexity.
The construction of the sbox
table is done in two steps:
An elementis replaced by ( has no inverse and is mapped to );
An affine transformation on the coefficients of :
The table we gave above has been construted with SageMath and applying the two steps:
The inverse of the table is simple to produce: we only need to reverse the match between an input and its output.
Exercise: write the inverse of the substitution box in SageMath using the inverse of the affine transformation.
Key length
Number of rounds
128
10
192
12
256
14
00
01
02
03
04
05
06
07
08
09
0a
0b
0c
0d
0e
0f
00
63
7c
77
7b
f2
6b
6f
c5
30
01
67
2b
fe
d7
ab
76
10
ca
82
c9
7d
fa
59
47
f0
ad
d4
a2
af
9c
a4
72
c0
20
b7
fd
93
26
36
3f
f7
cc
34
a5
e5
f1
71
d8
31
15
30
04
c7
23
c3
18
96
05
9a
07
12
80
e2
eb
27
b2
75
40
09
83
2c
1a
1b
6e
5a
a0
52
3b
d6
b3
29
e3
2f
84
50
53
d1
00
ed
20
fc
b1
5b
6a
cb
be
39
4a
4c
58
cf
60
d0
ef
aa
fb
43
4d
33
85
45
f9
02
7f
50
3c
9f
a8
70
51
a3
40
8f
92
9d
38
f5
bc
b6
da
21
10
ff
f3
d2
80
cd
0c
13
ec
5f
97
44
17
c4
a7
7e
3d
64
5d
19
73
90
60
81
4f
dc
22
2a
90
88
46
ee
b8
14
de
5e
0b
db
a0
e0
32
3a
0a
49
06
24
5c
c2
d3
ac
62
91
95
e4
79
b0
e7
c8
37
6d
8d
d5
4e
a9
6c
56
f4
ea
65
7a
ae
08
c0
ba
78
25
2e
1c
a6
b4
c6
e8
dd
74
1f
4b
bd
8b
8a
d0
70
3e
b5
66
48
03
f6
0e
61
35
57
b9
86
c1
1d
9e
e0
e1
f8
98
11
69
d9
8e
94
9b
1e
87
e9
ce
55
28
df
f0
8c
a1
89
0d
bf
e6
42
68
41
99
2d
0f
b0
54
bb
16