Telechargé par aminebarrak

Chapitre 4 AES

publicité
8INF854: Cryptographie
Chapitre 4:
AES: Advanced Encryption
Standard
Historique
• (1997) Le NIST a adressé le défi de trouver un algorithme
cryptographique qui deviendrait le standard national et le successeur de
DES.
• Parmi les contraintes devant être respectées, il y avait que l’algorithme
devait permettre l’utilisation de clés de 128, 192 et 256 bits, il devait
opérer sur des blocs de 128 bits et devait pouvoir être versatile.
• (1998) 5 candidats potentiels pour la succession de DES.
• MARS (IBM)
• RC6 (RSA Laboratories)
• Rijndael (Joan Daemen et Vincent Rijmen)
• Serpent (Ross Anderson, Eli Biham et Lars Knusen)
• Twofish (Bruce Schneier, John Kelsey, Doug Whiting, David
Wagner, Chris Hall and Niels Ferguson)
• Rijndael a été choisi en 2000 pour devenir le AES (Advanced Encryprtion
Standard). Cet algorithme peut être utilisé en plusieurs modes, ECB,
CBC, CFB, OFB et CTR.
𝐺𝑎𝑙𝑜𝑖𝑠 𝐹𝑖𝑒𝑙𝑑 −
8
𝐺𝐹(2 )
• Objet mathématique appelé corps fini.
• Il est constitué de
256(28) éléments.
• Deux opérations sur les éléments:
• Addition modulo 2.
• Multiplication *.
• GF(2) = F2 = unique corps fini à
2éléments: 0,1
• F2[X] = ensemble des polynômes à coefficients dans F2.
• Soit P(X) un polynôme irréductible de degré 8 appartenant à
F2[X] alors, par définition, on a que:
GF (28 )  F2 [ X ] / P( X )
• Exemple: Prenons
P( X )  X 8  X 4  X 3  X  1
8
• Les éléments de GF (2 ) sont des polynômes réduits modulo P(X) . Ils
sont de degré inférieur à 8.
• Exemple au tableau.
L’algorithme de base
• Nous allons nous restreindre, pour simplifier la tâche, à une clé de
chiffrement de 128 bits.
• L’algorithme fonctionne en 10 itérations (128 bits). Pour des clés de
192 bits et de 256 bits, l’algorithme fonctionne en 12 et 14
itérations respectivement.
• Chaque itération utilise une clé dérivée de la clé originale.
• Une itération commence avec une entrée de 128 bits et produit une
sortie de 128 bits.
• AES n’est pas un chiffre de Feistel
• Le déchiffrement utilise une méthode différente du chiffrement.
• Il y a 4 étapes par itération. Ces étapes sont appelées couches ou
layers.
1. La ByteSub Transformation (BS): Cette couche non-linéaire est pour
la résistance aux attaques par la cryptanalyse différentielle ou
linéaire.
2. La ShiftRow Transformation (SR): Cette étape de mixage linéaire
favorise la diffusion des bits tout au long des itérations.
3. La MixColumn Transformation (MC): Cette couche a le même effet
que la SR.
4. La AddRoundKey (ARK): La clé d’itération est additionné modulo 2
avec le résultat de la couche MC.
Étapes de chiffrement AES
Les couches (layers)
• Les 128 bits(16*8) en entrée sont groupés en 16 bites de 8 bits
chacun. On les note par
𝑎0,0 , 𝑎1,0 , 𝑎2,0 , 𝑎3,0 , 𝑎0,1 , 𝑎1,1 ,…, 𝑎3,3 .
• On les place dans une matrice de 4 × 4:
𝑎0,0 𝑎0,1 𝑎0,2 𝑎0,3
𝑎1,0 𝑎1,1 𝑎1,2 𝑎1,3
𝑎2,0 𝑎2,1 𝑎2,2 𝑎2,3 .
𝑎3,0 𝑎3,1 𝑎3,2 𝑎3,3
1- ByteSub Transformation
• La ByteSub Transformation: Dans cette étape chaque byte de la
matrice précédente est changé en un autre byte par une S-box.
• On écrit le byte comme 8 bits: abcdefgh. On regarde ensuite
l’entrée de la ligne abcd et de la colonne efgh. On convertit ensuite
cette entrée en binaire.
• Par exemple: Si on a le byte 10001011 alors on regarde la ligne 9 (8 +
1) et la colonne 12 (11 + 1). L’entrée est 6110 = 111101 =
00111101.
• La sortie de l’étape ByteSub est encore une matrice 4 × 4:
𝑏0,0
𝑏1,0
𝑏2,0
𝑏3,0
𝑏0,1
𝑏1,1
𝑏2,1
𝑏3,1
𝑏0,2
𝑏1,2
𝑏2,2
𝑏3,2
𝑏0,3
𝑏1,3
.
𝑏2,3
𝑏3,3
S-Box
Par exemple, la valeur hexadécimale {EA} fait référence à la ligne E, colonne A de
la S-box, qui contient la valeur {87}. En conséquence, la valeur {EA} est mappée
dans la valeur {87}. Le tableau ci-dessous est S-box et utilisé pendant le processus
de cryptage.
2- ShiftRow Transformation
• La ShiftRow Transformation: Les 4 lignes de la matrice
précédente sont décalées de façon cyclique vers la gauche de
0, 1 , 2 et 3 pour obtenir:
3- MixColumn Transformation
• La MixColumn Transformation: Considérons un byte comme un
élément de GF 28 . Ainsi, l’étape SR produit en sortie des
éléments de GF 28 . Multplions la matrice précédente par une
autre matrice dont les composantes sont aussi des éléments de
GF 28 afin de produire une autre matrice:
• Le dernier cycle de chiffrement n'implique pas l'étape 'MixColumn'
3- MixColumn Transformation
• Exemple: Effectivement une multiplication matricielle dans
GF(28) en utilisant un polynôme premier m(x) =x8+x4+x3+x+1
4- RoundKey Addition
• La RoundKey Addition: La clé de chiffrement pour une itération
est dérivée de la clé originale est de 128 bits lesquels sont
contenus dans une matrice 4 × 4, dont les éléments (k i,j ) sont
des bytes. Dans cette étape, on additionne, les bytes, la matrice
de l’étape MC(MixColumn) avec la matrice de clé de l’itération
en cours:
• La clé d’itération: la clé originale est de 128 bits. Ces bits sont
répartis en bytes de 8 bits dans une matrice 4 × 4. Cette matrice
est étendue en adjoignant 40 colonnes supplémentaires de la
façon suivante:
• On étiquette les quatre premières colonne par W(0), W(1), W(2) et
W 3 .
• Les nouvelles colonnes sont générées récursivement. Supposons que les
colonnes ont été définies jusqu’à W(𝐢 − 1). Alors:
Si i n’est pas un multiple de 4,
W 𝐢 = W(𝐢 − 4)⨁W(𝐢 − 1).
Si i est un multiple de 4,
W 𝐢 = W(𝐢 − 4)⨁T(W 𝐢 − 1 )
où T(W 𝐢 − 1 ) est une transformation de W 𝐢 − 1 .
• La transformation T(W 𝐢 − 1 )
suivante:
est obtenue de la façon
• Appelons les éléments de la colonne W 𝐢 − 1 , a,b,c,d. On décale
cycliquement pour obtenir b,c,d,a.
• On remplace chacun de ces bytes par les éléments correspondants
dans la S-box pour obtenir 4 nouveaux bites, e,f,g,h.
• On calcule ensuite la constante d’itération
r 𝐢 = 00000010(i−4)/4
dans GF 28 (i est un multiple de 4) , alors T(W 𝐢 − 1 ) est le vecteur
colonne
(e⨁r i , f, g, h).
• On construit de cette façon tous les autres colonnes W 4 ,…, W 43
à partir des quatre colonnes initiales.
• La clé d’itération pour la i-ième itération consiste en les colonnes
W 4i , W 4i + 1 , W 4i + 2 , W 4i + 3 .
Animation RIJNDAEL
• google: aes key schedule animation (animation en
flash de Enrique Zabala)
• https://www.youtube.com/watch?v=gP4PqVGudtg
Déchiffrement
• Chaque étape du chiffrement sont inversibles.
• L’inverse de ByteSub est une autre table appelée InvByteSub.
• L’inverse de l’étape ShiftRow est obtenue en décalant les lignes vers
la droite au lieu de vers la gauche. On dénote cette étape
InvShiftRow.
• L’inverse de MixColumn existe parce que la matrice 4  4 utilisée
est inversible. La transformation InvMixColumn est obtenue en
multipliant par la matrice :
 00001110

 00001001
 00001101

 00001011

0001001 

00001110 00001011 00001101 
00001001 00001110 00001011 

00001101 00001001 00001110 
00001011 00001101
• L’étape AddRoundKey est sa propre inverse.
• Le déchiffrement s’effectue dans l’ordre inverse:
AddRoundKey, InvShiftRow, InvByteSub
AddRoundKey, InvMixColumn, InvShiftRow, InvByteSub
(9 fois)
AddRoundKey.
Encryptions – Décryptions AES
S-box inverse
• On calcule premièrement la transformation affine inverse de la
8
valeur en entrée suivi de son inverse multiplicatif dans GF (2 ) .
La transformation affine inverse est:
Considérations conceptuelles
• L’algorithme de Rijndael n’est pas un système de Feistel. Il
assure une diffusion complète en 2 itérations puisqu’il agit sur
tous les 128 bits à la fois (Feistel travaille sur une moitié à la fois).
• La S-box a été construite algébriquement de façon simple et
explicite: Transparence.
• La S-box est non-linéaire: résistance à la cryptanalyse linéaire et
différentielle.
• L’étape ShiftRow a été ajoutée afin de résister à deux nouveaux
types d’attaques: cryptanalyse différentielle tronquée et
l’attaque Square.
• L’étape MixColumn augmente la diffusion.
• La clé d’itération implique un mélange non linéaire des bits de la
clé: résistance à la cryptanalyse lorsque des morceaux de clé
sont connus.
• Le nombre d’itération a été établie à 10 pour 128 bits puisqu’il
y a des attaques plus performantes que l’attaque de force brute
pour un nombre d’itération allant jusqu’à 6.
Téléchargement