Le standard de chirement actuel : AES
AES : Advanced Encryption System
1996 : Evalutation du DES il faut un remplaçant
Polémique : NSA soupçonnée d’avoir introduit des trappes
1997 : Appel à candidature internationale et publique
15 propositions, 5 nalistes
Rijndael (Daemen, Rijmen BE) 10/12/14 rondes
Bloc : 128 bits ; Clé : 128/192/256 bits
Serpent (Anderson, Biham, Knudsen UK) 32 rondes
Bloc : 128 bits ; Clé : 128/192/256 bits
Twosh (Schneier& al US) 16 rondes
Bloc : 128 bits ; Clé : 128/192/256 bits
RC6 (Rivest US) 20 rondes
Bloc : 128 bits ; Clé : 128/192/256 bits
MARS (Coppersmith/IBM US) 16 rondes
Bloc : 128 bits ; Clé : 128448 bits (128+32k bits)
And the winner is
2000 : Standard NIST : AES-Rijndael
Critères de sélection
Sécurité
Coût de l’implantation
Paramètres comme vitesse, latence, complexité
Flexibilité : Implantation sur des processeurs 8 bits, dans les cartes à puce, dans du matériel
dédié.
Les inventeurs
Joan Daemen
1965 : Naissance à Achel
1988 : Rejoint l’UCL (Université Catholique de Louvain)
1995 : Thèse sur un algorithme de chirement de sa conception 3 way
1997 : Concepteur de Rijndael
Vincent Rijmen
1970 : Naissance à Louvain
1993 : Diplome d’électronique de l’UCL
1997 : Thèse (Cryptanalysis and design of iterated block ciphers)
34
AES-Rijndael : les grandes lignes nition Algorithme itératif de chirement par
blocs appliquant sur un même bloc, 10/12/14 fois une fonction de ronde.
Fonction de ronde
ByteSub :non-linéarité
ShiftRow :diusion entre les colonnes
MixColumn :diusion entre les octets à l’intérieur des colonnes
Addition de la clé de ronde :confusion, dépendance de la clé
La clé : 128, 192 ou 256 bits
Les blocs : 128 bits (xe pour l’AES-Rijndael), 192, 256 bits
Blocs découpés en matrice 4 ×4 dont chaque élément est représenté par 8bits
Opérations sur des octets
Relation nombre de rondes / Taille de la clé / Taille du bloc
Taille Rondes Taille de la clé
du bloc 128 bits 192 bits 256 bits
128 bits 10 12 14
192 bits 12 12 14
256 bits 14 14 14
Démonstration : Fonctionnement de l’AES
Démo (www.cryptool.com)
35
Applications
AES Démonstration Cryptool (Rapide) !
Éléments dans l’AES :
2 caractères hexa = 1 octet = 1 polynôme de degré 7
Exemple :
32H= 0011

3
0010

2
=x5+x4+x
Opération MixColumn :
02 03 01 01
01 02 03 01
01 01 02 03
03 01 01 02
·
d4
bf
5d
30
=
04
66
81
e5
Opération de multiplication matrice vecteur.
ri,j =
41
k=0
ai,kbk
  
où fait on cette opération ?
Dans GF (28) (Corps de Galois à 28= 256 éléments)
Exemple : Calcul du premier coecient
On doit calculer dans GF (256) (×=×GF (256) et + = +GF (256)) :
02 ×d4+03×bf + 01 ×5d+01×30
Autrement dit sous forme polynomiale :
02 = x d4 = x7+x6+x4+x203 = x+ 1 bf =x7+x5+x4+x3+x2+x+ 1
01 = 1 5d=x6+x4+x3+x2+ 1 30 = x5+x4
d’où après calcul et simplication nous donne x2soit 04.
Rappel :
Dans le corps GF (256) de l’AES,
x8=x4+x3+x+ 1
C’est bien joli tout ça, mais...
Comment implémenter ecacement les opérations de multiplication des polynômes modulo
le polynôme de l’AES : P8(X) = X8+X4+X3+X+ 1 ?
Pourquoi avoir choisi ce polynôme sur les 30 possibilités de polynômes irréductibles pour
construire le corps ni à 256 éléments ?
Remarque : l’addition de deux polynômes ne pose pas de problème (XOR des coecients).
36
Éléments de réponse
On peut dénir « simplement » (d’un point de vue implémentation) une multiplication élé-
mentaire d’un polynôme par x.
Comment ? :
x×(a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x1+a0) =
a7x8+x8+a6x7+a5x6+a4x5+a3x4+a2x3+a1x2+a0x
On distingue deux cas :
1. a7= 0 : Cas favorable, le polynôme produit est déjà de degré 7
2. a7= 1 :
x8+a6x7+a5x6+a4x5+a3x4+a2x3+a1x2+a0x
(x4+x3+x+ 1) +a6x7+a5x6+a4x5+a3x4+a2x3+a1x2+a0x
3. Bilan : multiplication par xrevient à eectuer un décalage à gauche sur les bits
a7a6a5a4a3a2a1a0puis, si a7= 1 de "xorer" par 1BH.
Ce qui donne en hexa :
02 ×(a7a6a5a4)(a3a2a1a0) = a6a5a4a3a2a1a00 Si a7= 0
a6a5a4a3a2a1a001BSi a7= 1
Dans l’opération MixColumn de l’AES, on multiplie un vecteur d’octets (donc de polynômes
de degré au plus 7) par une matrice dont les coecients sont 01, 02 et 03.
La multiplication par 01 est triviale : 01 ×X=X
La multiplication par 02 revient à un décalage à gauche et un XOR éventuellement (en
fonction du bit de poids fort).
Reste la multiplication par 03, qui peut se voir comme la multiplication par 02 puis une
addition.
C’est à dire, un décalage à gauche et 2 XOR
Note importante :
L’addition + dans GF (28) correspond au XOR bit à bit
La multiplication dans GF (28) correspond à la multiplication modulo x8+x4+x3+x+1.
Mais dans l’AES on ne fait que des multiplications par 1 = 01, x= 02, x+ 1 = 03.
37
Dernière planche, dernier exemple
On veut calculer le dernier coecient du résultat de l’opération MixColumn (de la démo Cryp-
tool).
Soit à réaliser l’opération (en hexa) :
03 ×d4+01×bf + 01 ×5d+02×30 =
(02 + 01) ×d4 + bf + 5d+02×30 =
d4 + bf + 5d+ (02) ×(d4 + 30) =
d4 + bf + 5d
  
36
+(02) ×(d4 + 30) =
d4 + bf + 5d
  
36
+ (02) ×(d4 + 30)
  
d3
=
36 + d3=e5
d411010100
+bf 10111111
+ 5d01011101
= 36 0 0 1 1 0 1 1 0
d4 11010100
+ 30 0 0 1 1 0 0 0 0
=e411100100
×02
11001000
+ 1B00011011
=d3 11010011
36 0 0 1 1 0 1 1 0
+d311010011
=e511100101
38
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!