Penjadwalan kunci AES
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.[catatan 1] Penjadwalan kunci ini menghasilkan kunci-kunci ronde yang dibutuhkan dari kunci asal.
Tetapan ronde
suntingi | 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:[catatan 2]
dengan rci adalah nilai 8 bit yang didefinisikan sebagai berikut:
dengan adalah operator XOR dan bilangan yang diakhiri angka 16 seperti 0016 dan 11B16 adalah bilangan heksadesimal.
AES menggunakan hingga rcon10 untuk AES-128 (karena butuh 11 kunci ronde), hingga rcon8 untuk AES-192, dan hingga rcon7 untuk AES-256.[catatan 3]
Penjadwalan kunci
suntingDefinisikan:
- 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
- K0, K1, ... KN-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[catatan 4]
- W0, W1, ... W4R-1 sebagai kelompok kata 32 bit dari kunci yang telah diperluas/kunci ronde[catatan 5]
Definisikan pula RotWord sebagai suatu geseran melingkar kiri satu bita:[catatan 6]
dan SubWord sebagai penerapan kotak-S AES (substitusi) kepada tiap bita dari kata empat bita:
Lalu, untuk ,
Catatan kaki
sunting- ^ Variasi Rijndael non-AES membutuhkan kunci ronde hingga 256 bit per ronde.
- ^ Dalam FIPS-197, nilai adalah bita dengan nilai tempat terkecil pada indeks ke-0
- ^ Variasi-variasi Rijndael dengan ukuran blok besar membutuhkan lebih banyak tetapan-tetapan ini, yaitu hingga rcon29 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.
- ^ Variasi Rijndael lain membutuhkan max(N, B) + 7 kunci ronde dengan B adalah ukuran blok dalam kata
- ^ Variasi Rijndael lain membutuhkan BR kata dari kunci yang telah diperluas dengan B adalah ukuran blok dalam kata
- ^ Rotasi tersebut adalah kebalikan dari urutan bita. Alamat bita FIPS-197 dalam larik bertambah dari kiri ke kanan[1] dalam little endian sehingga rotasinya dari kanan ke kiri. Dalam AES-NI[2] dan dalam lib/crypto/aes.c kernel Linux,[3] alamat bitanya dalam larik bertambah dari kanan ke kiri dalam little endian sehingga rotasinya dari kiri ke kanan.
Referensi
sunting- ^ "Federal Information Processing Standards Publication 197 November 26, 2001 Announcing the ADVANCED ENCRYPTION STANDARD (AES)" (PDF). hlm. 8. Diakses tanggal 16 Juni 2020.
- ^ "Intel® Advanced Encryption Standard (AES) New Instructions Set" (PDF). hlm. 13.
- ^ "aes.c di GitHub". Diakses tanggal 15 Juni 2020.
Daftar pustaka
suntingPranala luar
sunting- (Inggris) Penjelasan penjadwalan kunci Rijndael
- (Inggris) Bagan penjadwalan kunci untuk kunci 128 dan 256 bit serta kunci 160 bit di Cryptography Stack Exchange