Penjadwalan kunci AES

penjadwalan kunci yang dipakai untuk memperluas kunci menjadi tiap kunci ronde dalam 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

sunting
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:[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

sunting
 
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
  • 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
  1. ^ Variasi Rijndael non-AES membutuhkan kunci ronde hingga 256 bit per ronde.
  2. ^ Dalam FIPS-197, nilai   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 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.
  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[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

Daftar pustaka

sunting

Pranala luar

sunting