OVH Cloud OVH Cloud

AES, utilité du premier AddRoundKey

6 réponses
Avatar
flo
Bonjour,

je suis en train potasser sur des annales de crypto et je bloque sur une
question :

"Dites pourquoi on opere, en debut de chiffrement avec l'AES, un
ou-exclusif entre le bloc clair et la clé de tour."

Intuitivement ce premier AddRoundKey ajoute une securité suplémentaire
mais quel difference au final avec les n tours de l'AES sans ce XOR ???
cette question est a mon avis pas si annodine qu'elle y parait...

Ma réponse :
Ce premier xor du bloc clair avec la clé apporte une meilleure
efficacité a la substitution puis a la permutation du premier tour.
(??_TRIVIAL_??)

Qu'en pensez-vous???

flo

6 réponses

Avatar
Kevin Drapel
Ma réponse : Ce premier xor du bloc clair avec la clé apporte une
meilleure efficacité a la substitution puis a la permutation du
premier tour. (??_TRIVIAL_??)

Qu'en pensez-vous???


Avec une clé aléatoire, ce XOR permet d'avoir une entrée avec des
caractéristiques aléatoires, alors que ce n'est pas le cas avec le
message initial. Un attaquant pourrait profiter d'une analyse
statistique sur le texte pour trouver une vulnérabilité lors du
chiffrement et l'apparition de schémas caractéristiques au sein de
l'algo en fonction des textes à l'entrée.

Avatar
flo
Kevin Drapel wrote:

Avec une clé aléatoire, ce XOR permet d'avoir une entrée avec des
caractéristiques aléatoires, alors que ce n'est pas le cas avec le
message initial. Un attaquant pourrait profiter d'une analyse
statistique sur le texte pour trouver une vulnérabilité lors du
chiffrement et l'apparition de schémas caractéristiques au sein de
l'algo en fonction des textes à l'entrée.


merci pour la reponse..

la clé n'est pas aléatoire, elle est calculé a partir de la clef de
depart par un algorithme...(ce qui engendre une cle initiale et une clé
pour les n-1 tours d'AES)

=> je comprend qu'il vaut mieux effectué cette transformation (clé +
clair ) des le depart plutot que de ne pas le faire, mais est-ce que
cela apporte vraiment un plus ??

je rapelle l'algo :

# On calcule la clé étendue
# On effectue un AddRoundKey initial (``tour 0'') <<< *
# On effectue $N_r-1$ tours :

1. ByteSub(Etat);
2. ShiftRow(Etat);
3. MixColumn(Etat);
4. AddRoundKey(Etat, $K_i$);

# On effectue un tour final :

1. ByteSub(Etat);
2. ShiftRow(Etat);
3. AddRoundKey(Etat, $K_i$);

donc meme si on peut voir apparaitre des schemas caracteristiques si on
ne brouille pas le clair des le depart au cours des premiers tours, les
n-1 tours de l'AES vont s'en charger...je pense

En bref, est-ce que ce premier AddRoundKey (*) est indispensable a la
securité de l'AES ?

merci de m' éclairer

flo

Avatar
flo
je voulait dire :

la clé n'est pas aléatoire, elle est calculé a partir de la clef de
depart par un algorithme...(ce qui engendre une cle initiale et une clé
pour chaque n-1 tours d'AES)
------
Avatar
Kevin Drapel
la clé n'est pas aléatoire, elle est calculé a partir de la clef de
depart par un algorithme...(ce qui engendre une cle initiale et une
clé pour les n-1 tours d'AES)


D'après ce que je sais d'AES, on génère ces clés pour chaque ronde en
utilisant la S-Box (une subsitution puisque chaque valeur n'apparaît
qu'une seule fois dans la table de 256 éléments) et des rotations de 4
bytes. La première clé pour ce XOR est identique à la clé principale de
128 bits de AES. Si elle est parfaitement aléatoire, on a un "one-time
pad" parfait.

=> je comprend qu'il vaut mieux effectué cette transformation (clé +
clair ) des le depart plutot que de ne pas le faire, mais est-ce que
cela apporte vraiment un plus ??


Cela apporte une sécurité supplémentaire dans le sens où les premières
attaques se font toujours sur des versions simplifiées de l'algorithme
(avec moins de tours). En enlevant cette transformation préliminaire, on
diminue probablement la résistance de l'ensemble. Maintenant, je ne suis
pas cryptanalyste et il y a sûrement des raisons mathématiques plus
subtiles (peut-être pour améliorer la diffusion des bits dans la
structure). En tout cas, AES a été conçu de manière à éviter les
attaques classiques comme la cryptanalyse linéaire et différentielle, ce
XOR initiale n'est pas là pour rien.

Donc oui, cela apporte assurément un plus sinon les concepteurs
l'auraient enlevé mais il faudrait lire le livre "The design of
Rijndael" pour tout comprendre ou attendre la réponse de qqn plus calé
que moi en la matière.

Avatar
pornin
According to flo :
je suis en train potasser sur des annales de crypto et je bloque sur une
question :

"Dites pourquoi on opere, en debut de chiffrement avec l'AES, un
ou-exclusif entre le bloc clair et la clé de tour."

Intuitivement ce premier AddRoundKey ajoute une securité suplémentaire
mais quel difference au final avec les n tours de l'AES sans ce XOR ???


L'attaquant peut, par définition, faire tout ce qui ne nécessite pas
connaissance de la clé. Sans le XOR avec la clé, les trois opérations
suivantes, qui forment le premier tour ("subBytes", "shiftRows" et
"mixColumns"), sont complètement calculables de l'extérieur.

Autrement dit, la partie "secrète" de l'AES ne peut que commencer par
une injection d'une valeur dérivée de la clé, et terminer par une
autre injection du même type. En enlevant le XOR avec la première clé,
en fait, on enlève un tour d'AES, du point de vue sécurité...


Dans le même genre, l'algorithme DES (prédécesseur de l'AES) commence
par une permutation de bits parfaitement fixée et indépendante de
la clé, et termine par une autre permutation du même type. Ces deux
permutation étant calculable et inversibles sans connaissance de la clé,
on les ignore complètement dans la pratique pour tout ce qui est analyse
de sécurité.


--Thomas Pornin

Avatar
flo
merci pour vos réponses :)