Méthode pour étendre la clé aux clés rondes dans AES
AES utilise une nomenclature de touches pour développer une touche courte en un certain nombre de touches rondes distinctes. Les trois variantes AES ont un nombre différent de tours. Chaque variante nécessite une clé ronde de 128 bits distincte pour chaque tour plus une autre. La nomenclature de clés produit les clés rondes nécessaires à partir de la clé initiale.
Constantes d'arrondi
Valeurs de rc i en hexadécimal
je
1
2
3
4
5
6
7
8
9
dix
rc je
01
02
04
08
dix
20
40
80
1B
36
La constante de tour rcon i pour le tour i du développement de clé est le mot de 32 bits :
r
c
o
m
je
=
[
r
c
je
00
16
00
16
00
16
]
{\displaystyle rcon_{i}={\begin{bmatrix}rc_{i}&00_{16}&00_{16}&00_{16}\end{bmatrix}}}
où rc i est une valeur de huit bits définie comme :
r
c
je
=
{
1
si
je
=
1
2
⋅
r
c
je
−
1
si
je
>
1
et
r
c
je
−
1
<
80
16
(
2
⋅
r
c
je
−
1
)
⊕
11B
16
si
je
>
1
et
r
c
je
−
1
≥
80
16
{\displaystyle rc_{i}={\begin{cases}1&{\text{if }}i=1\\2\cdot rc_{i-1}&{\text{if }}i>1{\text { et }}rc_{i-1}<80_{16}\\(2\cdot rc_{i-1})\oplus {\text{11B}}_{16}&{\text{if }}i >1{\text{ et }}rc_{i-1}\geq 80_{16}\end{cases}}}
où est l' opérateur XOR au niveau du bit et les constantes telles que 00 16 et 11B 16 sont données en hexadécimal . Équivalent :
⊕
{\style d'affichage \oplus }
r
c
je
=
X
je
−
1
{\displaystyle rc_{i}=x^{i-1}}
où les bits de rc i sont traités comme les coefficients d'un élément du corps fini , de sorte que par exemple représente le polynôme .
g
F
(
2
)
[
X
]
/
(
X
8
+
X
4
+
X
3
+
X
+
1
)
{\displaystyle {\rm {{GF}(2)[x]/(x^{8}+x^{4}+x^{3}+x+1)}}}
r
c
dix
=
36
16
=
00110110
2
{\displaystyle rc_{10}=36_{16}=00110110_{2}}
X
5
+
X
4
+
X
2
+
X
{\style d'affichage x^{5}+x^{4}+x^{2}+x}
AES utilise jusqu'à rcon 10 pour AES-128 (car 11 touches rondes sont nécessaires), jusqu'à rcon 8 pour AES-192 et jusqu'à rcon 7 pour AES-256.
Le calendrier clé
Planification de clé AES pour une clé 128 bits.
Définir:
N comme longueur de la clé en mots de 32 bits : 4 mots pour AES-128, 6 mots pour AES-192 et 8 mots pour AES-256
K 0 , K 1 , ... K N -1 comme mots de 32 bits de la clé d'origine
R comme nombre de touches rondes nécessaires : 11 touches rondes pour AES-128, 13 touches pour AES-192 et 15 touches pour AES-256
W 0 , W 1 , ... W 4 R -1 comme mots de 32 bits de la clé étendue
Définissez également RotWord comme un décalage circulaire gauche d' un octet :
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}}}
et SubWord en tant qu'application de la S-box AES à chacun des quatre octets du mot :
Sous-mot
(
[
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}}}
Alors pour :
je
=
0
…
4
R
−
1
{\displaystyle i=0\ldots 4R-1}
W
je
=
{
K
je
si
je
<
N
W
je
−
N
⊕
Sous-mot
(
RotWord
(
W
je
−
1
)
)
⊕
r
c
o
m
je
/
N
si
je
≥
N
et
je
≡
0
(
mode
N
)
W
je
−
N
⊕
Sous-mot
(
W
je
−
1
)
si
je
≥
N
,
N
>
6
, et
je
≡
4
(
mode
N
)
W
je
−
N
⊕
W
je
−
1
autrement.
{\displaystyle W_{i}={\begin{cases}K_{i}&{\text{if }}i<N\\W_{iN}\oplus \operatorname {SubWord} (\operatorname {RotWord} (W_ {i-1}))\oplus rcon_{i/N}&{\text{if }}i\geq N{\text{ et }}i\equiv 0{\pmod {N}}\\W_{iN }\oplus \operatorname {SubWord} (W_{i-1})&{\text{if }}i\geq N{\text{, }}N>6{\text{, et }}i\equiv 4 {\pmod {N}}\\W_{iN}\oplus W_{i-1}&{\text{autrement.}}\\\end{cases}}}
Remarques
Les références
Liens externes
<img src="https://en.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">