AES menggunakan penjadwalan kunci untuk memperluas sebuah kunci pendek menjadi beberapa kunci ronde. Tiga variasi AES memiliki jumlah ronde yang berbeda. Tiap variasi membutuhkan kunci ronde 128 bit untuk tiap ronde ditambah satu. Penjadwalan kunci ini menghasilkan kunci-kunci ronde yang dibutuhkan dari kunci asal.

Tetapan ronde
-------------

Nilai rci dalam heksadesimal| i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| rci | 01 | 02 | 04 | 08 | 10 | 20 | 40 | 80 | 1B | 36 |

Tetapan ronde rconi untuk ronde ke-i perluasan kunci adalah kata (*word*) 32 bit berikut:

{\displaystyle rcon\_{i}={\begin{bmatrix}rc\_{i}&00\_{16}&00\_{16}&00\_{16}\end{bmatrix}}}
dengan rci adalah nilai 8 bit yang didefinisikan sebagai berikut:

{\displaystyle rc\_{i}={\begin{cases}1&{\text{jika }}i=1\\2\cdot rc\_{i-1}&{\text{jika }}i>1{\text{ dan }}rc\_{i-1}<80\_{16}\\(2\cdot rc\_{i-1})\oplus {\text{11B}}\_{16}&{\text{jika }}i>1{\text{ dan }}rc\_{i-1}\geq 80\_{16}\end{cases}}}
dengan {\displaystyle \oplus } adalah operator XOR dan bilangan yang diakhiri angka 16 seperti 0016 dan 11B16 adalah bilangan heksadesimal.

AES menggunakan hingga *rcon*10 untuk AES-128 (karena butuh 11 kunci ronde), hingga *rcon*8 untuk AES-192, dan hingga *rcon*7 untuk AES-256.

Penjadwalan kunci
-----------------

Penjadwalan kunci AES untuk kunci 128 bit
Definisikan:

* N sebagai panjang kunci dalam kelompok kata (*word*) 32 bit: 4 kata untuk AES-128, 6 kata untuk AES-192, dan 8 kata untuk AES-256
* *K*0, *K*1, ... *K**N*-1 sebagai kelompok kata 32 bit dari kunci asli
* R sebagai jumlah kunci ronde yang dibutuhkan: 11 kunci ronde untuk AES-128, 13 kunci ronde untuk AES-192, dan 15 kunci ronde untuk AES-256
* *W*0, *W*1, ... *W*4*R*-1 sebagai kelompok kata 32 bit dari kunci yang telah diperluas/kunci ronde

Definisikan pula RotWord sebagai suatu geseran melingkar kiri satu bita:

{\displaystyle \operatorname {RotWord} ({\begin{bmatrix}b\_{0}&b\_{1}&b\_{2}&b\_{3}\end{bmatrix}})={\begin{bmatrix}b\_{1}&b\_{2}&b\_{3}&b\_{0}\end{bmatrix}}}
dan SubWord sebagai penerapan kotak-S AES (substitusi) kepada tiap bita dari kata empat bita:

{\displaystyle \operatorname {SubWord} ({\begin{bmatrix}b\_{0}&b\_{1}&b\_{2}&b\_{3}\end{bmatrix}})={\begin{bmatrix}\operatorname {S} (b\_{0})&\operatorname {S} (b\_{1})&\operatorname {S} (b\_{2})&\operatorname {S} (b\_{3})\end{bmatrix}}}
Lalu, untuk {\displaystyle i=0\ldots 4R-1},

{\displaystyle W\_{i}={\begin{cases}K\_{i}&{\text{jika }}i<N\\W\_{i-N}\oplus \operatorname {SubWord} (\operatorname {RotWord} (W\_{i-1}))\oplus rcon\_{i/N}&{\text{jika }}i\geq N{\text{ dan }}i\equiv 0{\pmod {N}}\\W\_{i-N}\oplus \operatorname {SubWord} (W\_{i-1})&{\text{jika }}i\geq N{\text{, }}N>6{\text{, dan }}i\equiv 4{\pmod {N}}\\W\_{i-N}\oplus W\_{i-1}&{\text{lainnya.}}\\\end{cases}}}

Catatan kaki
------------

1. ↑  Variasi Rijndael non-AES membutuhkan kunci ronde hingga 256 bit per ronde.
2. ↑  Dalam FIPS-197, nilai {\displaystyle rc\_{i}} adalah bita dengan nilai tempat terkecil pada indeks ke-0
3. ↑  Variasi-variasi Rijndael dengan ukuran blok besar membutuhkan lebih banyak tetapan-tetapan ini, yaitu hingga *rcon*29 untuk kunci 128 bit dan ukuran blok 256 bit (butuh 15 kunci ronde 256 bit). Tetapan-tetapan lain untuk *i* ≥ 11 adalah 6C, D8, AB, 4D, 9A, 2F, 5E, BC, 63, C6, 97, 35, 6A, D4, B3, 7D, FA, EF, dan C5.
4. ↑  Variasi Rijndael lain membutuhkan max(*N*, *B*) + 7 kunci ronde dengan B adalah ukuran blok dalam kata
5. ↑  Variasi Rijndael lain membutuhkan *BR* kata dari kunci yang telah diperluas dengan B adalah ukuran blok dalam kata
6. ↑  Rotasi tersebut adalah kebalikan dari urutan bita. Alamat bita FIPS-197 dalam larik bertambah dari kiri ke kanan dalam *little endian* sehingga rotasinya dari kanan ke kiri. Dalam AES-NI dan dalam lib/crypto/aes.c kernel Linux, alamat bitanya dalam larik bertambah dari kanan ke kiri dalam *little endian* sehingga rotasinya dari kiri ke kanan.

Referensi
---------

1. ↑  "Federal Information Processing Standards Publication 197 November 26, 2001 Announcing the ADVANCED ENCRYPTION STANDARD (AES)" (PDF). hlm. 8. Diakses tanggal 16 Juni 2020.
2. ↑  "Intel® Advanced Encryption Standard (AES) New Instructions Set" (PDF). hlm. 13.
3. ↑  "aes.c di GitHub". Diakses tanggal 15 Juni 2020.

Daftar pustaka
--------------

* FIPS PUB 197: the official AES standard (PDF)

Pranala luar
------------

* (Inggris) Penjelasan penjadwalan kunci Rijndael
* (Inggris) Bagan penjadwalan kunci untuk kunci 128 dan 256 bit serta kunci 160 bit di Cryptography Stack Exchange