## 4 Emerging Lightweight Security Approaches
### Symmetric Encryption--Lightweight AES Approaches
#### 4.1.6 Sixty-Four-Bit AES Key Schedule  
The key schedule is the process that generates a different key for each AES round. The original key is usually called the master key. For AES, the master key length can have 128, 192, or 256 bits. The key schedule creates several 128-bit keys. It operates in 32-bit (or 4-byte) words, which correspond to four columns in the key matrix.  
In the case of a 128-bit master key, the first column of the round key is generated as follows:  
* The RotWord transformation is applied to the last column of the previous round key. It performs one circular upwards shift of all bytes within the column.
* The SubBytes transformation is applied using the S-Box.
* The sum of the resulting four bytes, the first column of the previous round key, and the round constant generates the first column of the new round key.  
Then, this updated first column is added to the second column of the previous round in order to update the second column. The updated second column is added to the third column of the previous round to update the third column. This process is repeated for the fourth column as well.  
These operations on the key follow three basic strategies: linear transformation using permutation (RotWord), masking with constants (using round constants), and applying some non-linear components such as the S-Box. This type of key schedule helps to add diffusion to the encryption process as it becomes harder to find the relationship between the input plaintext and output ciphertext.  
This robust AES key schedule has been modified in [81], which has 64-bit keys and 64-bit blocks of data. They also made some changes to the transformation that happens in the key schedule. Their algorithm includes the following changes:  
* The round constants are different random numbers generated at each round (r\({}_{0}\), r\({}_{1}\),..., r\({}_{7}\)), where each r\({}_{i}\) is one byte.
* The master key is XORed with the round constants (r\({}_{0}\), r\({}_{1}\),..., r\({}_{7}\)) to create a _newKey_.
* Each byte of the _newKey_ is XORed with each other to generate 32 bytes (k\({}_{0}\) to k\({}_{31}\)). For the bytes that are in a position that is a multiple of eight (e.g., 8, 16, or 24), a special transformation occurs using the SubBytes transformation with the four-bit S-Box from the PRESENT algorithm. Then, a modified MixColums is implemented, followed by another SubBytes transformation with the same four-bit S-Box. These temporary values are also XORed with the bytes of the _newKey_.
* At the end of each round of key generation, there is also a round constant reverse array (r\({}_{7}\), r\({}_{6}\),..., r\({}_{0}\)), which is used in an XOR operation. This reverse array is XORed with the _newKey_ values to generate the new round key.  
This algorithm has been tested in software using MATLAB. According to the authors, it has an important property called the avalanche effect. In their simulation results, when they change one bit of the master key, they compare how different each round key is from the previous round key for ten rounds. For certain bit change scenarios, the average change in the bits of the round key was as good as 38 bits. In another case, the average was an approximately 29-bit difference. This shows that almost half of the 64-bit key bits are changed when the master key is changed. In addition to the smaller key, this avalanche effect is an important property to guarantee that this new AES scheme is robust.