Le standard de chiffrement 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 finalistes
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
Twofish (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é : 128→448 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 chiffrement 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 Définition Algorithme itératif de chiffrement par
blocs appliquant sur un même bloc, 10/12/14 fois une fonction de ronde.
Fonction de ronde
ByteSub :non-linéarité
ShiftRow :diffusion entre les colonnes
MixColumn :diffusion 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 (fixe 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 =
4−1
k=0
ai,kbk
  
où fait on cette opération ?
•Dans GF (28) (Corps de Galois à 28= 256 éléments)
•Exemple : Calcul du premier coefficient
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 simplification 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 efficacement 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 fini à 256 éléments ?
Remarque : l’addition de deux polynômes ne pose pas de problème (XOR des coefficients).
36
•Éléments de réponse
On peut définir « 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 à effectuer 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
a6a5a4a3a2a1a00⊕1BSi 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 coefficients 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 coefficient 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!