Chap 3
Chap 3
Chap 3
I. Akharraz
Université Sidi Mohamed Ben Abdellah
[email protected]
1/70
1. Introduction.
4. Cryptographie symétrique.
6. Le chiffre DES.
7. Le chiffre AES.
2/70
3/70
Remarque
5/70
• très utilisée
• se caractérise par une grande rapidité
(opérations simples, chiffrement à la volée)
• ses implémentations software ou hardware
accélère nettement les débits.
7/70
8/70
11/70
12/70
13/70
15/70
16/70
17/70
18/70
19/70
20/70
21/70
26/70
27/70
28/70
29/70
31/70
32/70
L1 = R0 ⊕ f (K1 , L0 ) ?
Choix d'une clé à 64 bits
34/70
35/70
36/70
37/70
38/70
39/70
40/70
41/70
42/70
46/70
Recherche:
(1) DES dans la gestion des mots de passe .
(2) Attaques sur DES.
47/70
Introduction.
• Le nombre de cycles ("rondes") varie en fonction de
la longueur des blocs et des clés (de 10 à 14).
• La structure générale ne comprend qu'une série de
transformations/permutations/sélections.
• Il est beaucoup plus performant que le DES.
• Il est facilement adaptable à des processeurs de 8
ou de 64 bits.
• Le parallélisme peut être implémenté.
• AES résiste à toutes les attaques connues (attention
ce n'est qu'un fait d'expérience pas une preuve).
49/70
57/70
59/70
Si =
s1,0 s1,1 s1,2 s1,3
s2,0 s2,1 s2,2 s2,3
s3,0 s3,1 s3,2 s3,3
• L'opération SubBytes consiste en une permutations
πS sur {0, 1}8 , agissant indépendamment sur chacun des
octets si ,j de l'étage i.
60/70
61/70
03 01 01 02 a3 a7 a11 a15
62/70
63/70
L'opération AddRoundKey
• AddRoundKey[i] est l'addition de la clef obtenue à
l'étage i par l'algorithme de diversification des
clés, ExpandKey[i], au texte obtenu à l'issue de
l'étape MixColumns.
• On écrit la clef ExpandKey[i], de 128 bits, sous la
forme d'une matrice de 4×4 octets et on l'ajoute au
résultat de l'étape précédente par un XOR.
a0,0 a0,1 a0,2 a0,3 k0,0 k0,1 k0,2 k0,3 b0,0 b0,1 b0,2 b0,3
a1,0 a1,1 a1,2 a1,3
⊕ k1,0 k1,1 k1,2 k1,3
= b1,0 b1,1 b1,2 b1,3
a2,0 a2,1 a2,2 a2,3 k2,0 k2,1 k2,2 k2,3 b2,0 b2,1 b2,2 b2,3
a3,0 a3,1 a3,2 a3,3 k3,0 k3,1 k3,2 k3,3 b3,0 b3,1 b3,2 b3,3
Etat entré à l'étape i ExpandKey[i] Etat sorite étape i
64/70
La fonction g() :
Remarque :
On peut exprimer ce calcul autrement :
wj = wj −NK ⊕ wj −1 , ∀j non multiple de NK
wj = SubByte (RotByte (wj −1 )) ⊕ R [j /NK ]; si j est multiple
de NK .
67/70