Line 50: Line 50:
  
 
====Layers====
 
====Layers====
*Byte Substitution Layer (S)  
+
'''*Byte Substitution Layer (S)'''
 
This layer consists of 16 identical S-box which take in 8 bits and output 8 bits. Let <math> A_i </math> be one byte of input. Then <math> S(A_i)=B_i </math>
 
This layer consists of 16 identical S-box which take in 8 bits and output 8 bits. Let <math> A_i </math> be one byte of input. Then <math> S(A_i)=B_i </math>
  
Line 59: Line 59:
 
In software, S-boxes are usually a look up table.  
 
In software, S-boxes are usually a look up table.  
  
*ShiftRows Layer
+
'''*ShiftRows Layer'''
 +
This transformation looks fairly random until we write it in a new way. First, we write the input bits in a four byte by four byte grid as follows.
 +
 
 +
{| class="wikitable"
 +
|-
 +
| <math>B_0</math> || <math>B_4</math> || <math>B_8</math> || <math>B_{12}</math>
 +
|-
 +
| <math>B_1</math> || <math>B_5</math> || <math>B_9</math>|| <math>B_{13}</math>
 +
|-
 +
| <math>B_2</math> || <math>B_6</math> || <math>B_{10}</math> || <math>B_{14}</math>
 +
|-
 +
| <math>B_3</math> || <math>B_7</math> || <math>B_{11}</math> || <math>B_{15}</math>
 +
|}
 +
 
 +
Then we shift the second row 3 positions to the right, the third row 2 positions to the right and the fourth row 1 position to the right and achieve the following result:
 +
 
 +
{| class="wikitable"
 +
|-
 +
| <math>B_0</math> || <math>B_4</math> || <math>B_8</math> || <math>B_{12}</math>
 +
|-
 +
| <math>B_5</math> || <math>B_9</math> || <math>B_{13}</math>|| <math>B_1</math>
 +
|-
 +
| <math>B_{10}</math> || <math>B_{14}</math> || <math>B_2</math> || <math>B_6</math>
 +
|-
 +
| <math>B_{15}</math> || <math>B_3</math> || <math>B_7</math> || <math>B_{11}</math>
 +
|}
 +
 
  
 
----
 
----

Revision as of 06:20, 19 June 2015


Internal Structure of AES

A slecture by students Katie Marsh and Divya Agarwal

Based on the Cryptography lecture material of Prof. Paar.



Link to video on youtube


Accompanying Notes

Overview of AES

  • AES is a block cipher
  • information is handled 128 bits at a time, divided into 16 bytes.
  • key can be 128, 192, or 256 bits long


Picture1.png

  • number of rounds depends on the key length (can be 10/12/14 rounds respectively)

Picture2.png

Rounds

Within each round of AES are different layers. The first iteration starts with a Key Addition Layer and then follows this pattern for the remaining rounds:

  • Byte Substitution Layer
  • ShiftRows Layer
  • MixColumn Layer
  • Key Addition Layer

Picture3.png

The Byte Substitution layer acts as the confusion element, and the ShiftRows and MixColumn Layers act as the diffusion element. In the final round, the MixColumn layer is omitted.

We will now examine each layer separately.

Layers

*Byte Substitution Layer (S) This layer consists of 16 identical S-box which take in 8 bits and output 8 bits. Let $ A_i $ be one byte of input. Then $ S(A_i)=B_i $

But what is the function S? First, the $ A_i^{-1} \in GF(2^8) $ is calculated. Then, an affine transformation is applied.

Picture4.png

In software, S-boxes are usually a look up table.

*ShiftRows Layer This transformation looks fairly random until we write it in a new way. First, we write the input bits in a four byte by four byte grid as follows.

$ B_0 $ $ B_4 $ $ B_8 $ $ B_{12} $
$ B_1 $ $ B_5 $ $ B_9 $ $ B_{13} $
$ B_2 $ $ B_6 $ $ B_{10} $ $ B_{14} $
$ B_3 $ $ B_7 $ $ B_{11} $ $ B_{15} $

Then we shift the second row 3 positions to the right, the third row 2 positions to the right and the fourth row 1 position to the right and achieve the following result:

$ B_0 $ $ B_4 $ $ B_8 $ $ B_{12} $
$ B_5 $ $ B_9 $ $ B_{13} $ $ B_1 $
$ B_{10} $ $ B_{14} $ $ B_2 $ $ B_6 $
$ B_{15} $ $ B_3 $ $ B_7 $ $ B_{11} $




References

Questions and comments

If you have any questions, comments, etc. please post them here.


Back to 2015 Summer Cryptography Paar


Alumni Liaison

Ph.D. 2007, working on developing cool imaging technologies for digital cameras, camera phones, and video surveillance cameras.

Buyue Zhang