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
Tetapan ronde rconi untuk ronde ke-i perluasan kunci adalah kata (word) 32 bit berikut:
r
c
o
n
i
=
[
r
c
i
00
16
00
16
00
16
]
{\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:
r
c
i
=
{
1
jika
i
=
1
2
⋅
r
c
i
−
1
jika
i
>
1
dan
r
c
i
−
1
<
80
16
(
2
⋅
r
c
i
−
1
)
⊕
11B
16
jika
i
>
1
dan
r
c
i
−
1
≥
80
16
{\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 rcon10 untuk
AES-128 (karena butuh 11
kunci ronde), hingga rcon8 untuk
AES-192, dan hingga rcon7 untuk
AES-256.
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
W0, W1, ... W4R-1 sebagai kelompok kata 32 bit dari
kunci yang telah diperluas/
kunci ronde
Definisikan pula RotWord sebagai suatu geseran melingkar kiri satu bita:
RotWord
(
[
b
0
b
1
b
2
b
3
]
)
=
[
b
1
b
2
b
3
b
0
]
{\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:
SubWord
(
[
b
0
b
1
b
2
b
3
]
)
=
[
S
(
b
0
)
S
(
b
1
)
S
(
b
2
)
S
(
b
3
)
]
{\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
i
=
0
…
4
R
−
1
{\displaystyle i=0\ldots 4R-1}
,
W
i
=
{
K
i
jika
i
<
N
W
i
−
N
⊕
SubWord
(
RotWord
(
W
i
−
1
)
)
⊕
r
c
o
n
i
/
N
jika
i
≥
N
dan
i
≡
0
(
mod
N
)
W
i
−
N
⊕
SubWord
(
W
i
−
1
)
jika
i
≥
N
,
N
>
6
, dan
i
≡
4
(
mod
N
)
W
i
−
N
⊕
W
i
−
1
lainnya.
{\displaystyle W_{i}={\begin{cases}K_{i}&{\text{jika }}i
6{\text{, dan }}i\equiv 4{\pmod {N}}\\W_{i-N}\oplus W_{i-1}&{\text{lainnya.}}\\\end{cases}}}
Catatan kaki
Referensi
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