Vous êtes sur la page 1sur 73

Algorithmes de chiffrement symtrique

par bloc (DES et AES)


Pierre-Alain Fouque
Equipe de Cryptographie
Ecole normale suprieure
1

Chiffrement symtrique
Dfinition : Un algorithme de chiffrement symtrique
transforme un message en clair P avec une cl
secrte K. Le rsultat est un message chiffr C
K
P

Chiffrement

Chiffrement symtrique
La fonction de chiffrement doit tre inversible

K
P

K
C

Chiffrement

P
Dchiffrement

Deux grandes catgories


Chiffrement par bloc

Chiffrement par flot

P est trait par blocs


de donnes (ex: 64
bits ou 128 bits)

P est trait bit par bit

Algorithmes : DES,
AES, IDEA, RC6,
BLOWFISH,

Algorithmes :RC4,
Bluetooth E0/1, GSM
A5/1,

Chiffrement par bloc


Une des primitives ( briques ) les plus
largement utilises en cryptographie
Chiffrement symtrique
Protection de lintgrit
Construction de fonctions de hachage, de
gnrateur pseudo-alatoire, etc .

Historique
Algorithmes historiques (avant 1970)
1970-2000 : DES (Data Encryption
Standard) et autres algorithmes (FEAL,
IDEA, RC5, )
2000-2004 : AES (Advanced Encryption
Standard) et algorithmes rcents (RC6,
CAMELLIA, )
6

Scurit
Deux principaux paramtres de scurit
La taille du bloc (e.g. n = 64 ou 128 bits). Les
modes opratoires permettent gnralement
des attaques quand plus de 2n/2 blocs sont
chiffrs avec une mme cl
La taille de cl (e.g. k = 128 bits). Pour un bon
algorithme, la meilleure attaque doit coter 2k
oprations (recherche exhaustive)

Construction
Algorithmes itratifs : une fonction de tour
est itre t fois
Gnration de cls de tour (ou sous-cls)
partir de la cl secrte K
Utilisation doprations simples et efficaces
(+, XOR, *, tableaux)

Construction
bloc de clair P
Tour numro 1

Cl secrte K
K1

Tour numro 2

K2
Gnration
des
sous-cls
Tour numro t

bloc de chiffr C

Kt

Schmas de Feistel
X

Ki

F
X

Fonction de tour inversible mme si F ne lest pas !!


10

Substitution-Permutation
Entre du tour

Ki
Couche de substitution
Couche de permutation
Sortie du tour
11

Le DES
Algorithme dvelopp par IBM dans les
annes 1970 (Lucifer)
Adopt comme standard US par le NBS
(FIPS 46-2), en 1977
Taille de bloc = 64 bits
Taille de cl = 56 bits
Schma de Feistel 16 tours
12

Le DES (schma du NIST)


Tour numro 1
Tour numro 2

Tour numro 16

13

La permutation initiale
58 50 42 34 26 18 10 2
60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6
64 56 48 40 32 24 16 8
57 49 41 33 25 17 9

Le bit numro 21 de
la sortie

provient du bit
numro 30 de
lentre

59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5
63 55 47 39 31 23 15 7
14

Fonction F du DES

15

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)
Expansion
(fonction de
32 vers 48 bits)

Sous-cl (48 bits)

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Botes S
(fonctions de
6 vers 4 bits)

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Permutation
sur 32 bits

Sortie du tour (32 bits)


16

Fonction F du DES
Entre du tour (32 bits)

Sous-cl (48 bits)

Sortie du tour (32 bits)


16

Intuition
La fonction de tour na pas besoin dtre
inversible
Expansion de ltat interne de 32 48 bits
Ajout de la sous-cl
Rduction de ltat interne de 48 32 bits
grce aux botes S (non-linarit)
Permutation (diffusion)
17

Expansion (32 48)


32 1

9 10 11 12 13

12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29

Le bit numro 15 de
la sortie

provient du bit
numro 10 de
lentre
Certains bits de lentre
sont dupliqus (ex: bit 32)

28 29 30 31 32 1
18

Ajout de la sous-cl
Il sagit dun simple XOR, bit bit, entre
ltat aprs expansion (48 bits)
la sous-cl du tour correspondant
(48 bits)

19

Les botes S
On applique, en parallle, 8 botes (fonction
fixe) de 6 bits vers 4 bits
Ceci rduit donc ltat interne de 8 x 6 = 48
bits 8 x 4 = 32 bits
Chaque bote S est code comme un
tableau avec 26 = 64 entres

20

La permutation (32 32)


16

20 21

29 12 28 17
1

15 23 26

18 31 10

32 27

24 14
3

19 13 30

22 11

25

Le bit numro 11 de
la sortie

provient du bit
numro 23 de
lentre

21

Commentaires
Ces choix peuvent paratre arbitraires mais :
Toutes les briques sont trs simples coder
et efficaces en hardware
Les botes S apportent la non-linarit
Expansion et permutation garantissent une
diffusion rapide

22

Drivation des sous-cls


A chaque tour, on choisit 48 des 56 bits de
la cl pour former la sous-cl
Cette slection se fait grce des
permutations circulaires de la cl et des
tables dextraction fixes

23

Attaques contre le DES


Avant 1990, attaques contre des versions
rduites (t < 16 tours)
1990-1992 : cryptanalyse diffrentielle
(Biham et Shamir)
1993-1994 : cryptanalyse linaire (Matsui)
autres attaques (DaviesMurphy, bilinear )
En pratique, le plus efficace reste la recherche exhaustive
24

Problmes du DES
Taille de cl (recherche exhaustive en 256
est raliste) utilisation du Triple-DES
Taille du bloc (attaques avec 232 messages)
Cryptanalyse linaire et diffrentielle
Malgr tout, le DES est un algorithme trs bien
conu : il a plutt bien rsist 30 ans de
cryptanalyse
25

Double-DES
Message en clair

K1

DES

K2

DES

On obtient un algorithme avec


taille de bloc 64 bits
taille de cl 112 bits

Message chiffr
26

Attaque par le milieu


Attaque pour retrouver les cls secrtes
Lattaquant doit avoir accs seulement 2
couples (clair, chiffr) connus
Objectif : retrouver les cls secrtes avec la
mme complexit que pour un simple DES

27

Attaque par le milieu


Attaque nave : recherche exhaustive des
2112 cls possibles
Attaque par le milieu : compromis tempsmmoire pour diminuer la complexit
256 oprations
256 couples (clair,chiffr) en mmoire

28

Attaque par le milieu


tant donn un couple clair-chiffr (M,C):
calculer Ni = DESi ( M ) pour 0 i < 256 (i.e. pour
chacune des 256 valeurs possibles de K1)
calculer Pj = DES-1j ( C ) pour 0 j < 256 (i.e. pour
chacune des 256 valeurs possibles de K2)
On cherche les indices (i,j) tels que
Pj = Ni
29

Attaque par le milieu

DES

DES

30

Attaque par le milieu


Cl K1
M

DES

DES

30

Attaque par le milieu


Cl K1
M

DES

DES

256 calculs
Ni = DES(i,M)

30

Attaque par le milieu


Cl K1
M

DES

Cl K2
DES

256 calculs
Ni = DES(i,M)

30

Attaque par le milieu


Cl K1
M

DES

256 calculs
Ni = DES(i,M)

Cl K2
DES

Pour chaque
Pj = DES-1(j,C),
on cherche Ni = Pj
30

Attaque par le milieu


On a :
256 chiffrs Ni
256 dchiffrs Pj
Ni et Pj font 64 bits, donc on a :
(256256) / 264 = 248 collisions en moyenne
Il existe donc 248 couples (i,j) tels que Ni=Pj
Donc 248 bi-cls (K1 = i, K2 = j) possibles
31

Attaque par le milieu


On cherche toutes les collisions
Ni = Pj
et on obtient 248 bi-cls possibles
laide dun second couple (clair, chiffr) connu,
on peut alors vrifier quel bi-cl (K1,K2) est le
bon
32

Complexit
Attaque en 256 en temps et 256 couples
(chiffr, cl) en mmoire
Par consquent :
la scurit du double DES natteint pas
2112 mais seulement 256, comme le DES
33

Triple-DES
Message en clair

K1

DES

Plusieurs variantes possibles :


Utiliser DES ou DES-1 ?

K2

DES

K3

DES

Triple-DES avec 3 cls ou 2


cls (K1 = K3) ?

Message chiffr
34

Problme du Triple-DES
Certaines variantes ne sont pas sres
(mme type dattaque que contre le DoubleDES)
Version recommande par le NIST (FIPS
46-3)
Triple-DES avec 1,2 ou 3 cls diffrentes
EDE (Encryption-Decryption-Encryption)
35

Problmes du Triple-DES
Le Triple-DES permet dviter les problmes lis
la taille de cl trop courte du DES
Mais :
Le problme de la taille du bloc subsiste
Le Triple-DES nest pas trs rapide
Migration vers un algorithme plus rcent. Quelles
sont les autres solutions ?
36

Constructions classiques
Schma de Feistel (cas du DES)
Variations du schma de Feistel :
Schma de Feistel gnralis (ex : RC6)
Schma de Lai-Massey (ex : IDEA)

Rseau SP (Substitution-Permutation)
Exemple de lAES

37

Feistel
F
F
F

38

Feistel gnraliss
F
1 tour

Structure inversible pour toute fonction F

39

Lai-Massey

1 tour

Structure inversible pour toute fonction F


40

Rseau SP
Entre du tour

Ki
Couche de substitution
Couche de permutation
Sortie du tour
Toutes les couches doivent tre inversibles !
41

AES
Nouveau standard amricain (NIST, 2000),
remplaant du DES
Processus de slection (1997-2000) :
15 candidats initiaux
5 retenus pour le second tour
Rijndael (Daemen-Rijmen, Belgique)
MARS (IBM, USA)
SERPENT (Biham-Knudsen-Anderson)
RC6 (RSA Labs)
Twofish (USA)
42

AES
Le 2 octobre 2000, lalgorithme belge
Rijndael est retenu par le NIST
FIPS 197
Taille de bloc de 128 bits
Tailles de cl de 128, 192 et 256 bits

43

Structure gnrale
Les donnes sont stockes dans un carr
de 4 x 4 = 16 cases
X1 X2 X3 X4
X5 X6 X7 X8
X9 X10 X11 X12
X13 X14 X15 X16
Chaque case contient 1 octet
(8 x 16 = 128 bits dtat interne)
44

Fonction de tour
Entre du tour (128 bits)
Substitution par Octet (16 botes-S de 8 bits)
Dcalage par Ligne
Mlange par Colonne

Sous-cl (128 bits)


Sortie du tour (128 bits)
45

Substitution par Octet


X1 X2 X3 X4

Y1 Y2 Y3 Y4

X5 X6 X7 X8

Y5 Y6 Y7 Y8

X9 X10 X11 X12

Y9 Y10 Y11 Y12

X13 X14 X15 X16

Y13 Y14 Y15 Y16

Pour tout 1 i 16, Yi = S(Xi)

46

Substitution par Octet


S est une fonction fixe de 8 bits vers 8 bits
Dfinie comme un tableau 28 = 256 entres
Ncessite donc 256 octets de mmoire

Base sur une opration algbrique :


S(X) = Affine(Inverse(X))
o linverse est pris dans GF(28)

47

La bote S

Sbox =

48

Dcalage par ligne


X1 X2 X3 X4

X1 X2 X3 X4

X5 X6 X7 X8

X6 X7 X8 X5

X9 X10 X11 X12

X11 X12 X9 X10

X13 X14 X15 X16

X16 X13 X14 X15

Dcalage circulaire (vers la gauche) de i cases


pour la ligne numro i, 0 i 3
49

Mlange par colonne


X1

X2

X3 X4

Y1

Y2

Y3 Y4

X5

X6

X7 X8

Y5

Y6

X9

X10 X11 X12

Y9

Y10 Y11 Y12

X13

X15 X16

Y13

Y15 Y16

X14

Y14

Y7 Y8

MixColumn

MixColumn() est applique chaque colonne


50

Mlange par colonne

MixColumn

X1

X1

X5

X5

X9
X13

X9
X13

Oprations linaires dans GF(28)

51

Corps finis : GF(2 )


8

Cet objet mathmatique est utilis pour


dfinir la bote S et dans MixColumn()
Unique corps fini 256 lments
Addition = XOR
Multiplication = ?

52

GF(2 ) : Dfinition
8

GF(2) = F2 = unique corps fini 2 lments


= {0,1} avec les oprations boolennes usuelles
F2[X] = ensemble des polynmes coefficients
dans F2
Soit P(X) un polynme irrductible de degr 8
appartenant F2[X]
Par dfinition, GF(28) = F2[X] / P
53

GF(2 ) : Exemple
8

Prenons P(X) = X8 + X4 + X3 + X + 1
lments dans GF(28)
= polynmes rduits modulo P
= polynmes de degr < 8
Exemple
a = X6 + X4 + X2

54

GF(2 ) : Exemple
8

Soient a et b dans GF(28)


a = X6 + X4 + X2
b = X2
Addition :
a+b = (X6 + X4 + X2) + (X2 ) = X6 + X4

Multiplication :
a x b = (X8 + X6 + X4) modulo (X8 + X4 + X3 + X + 1)
a x b = (X6 + X4) + X4 + X3 + X + 1
55

GF(2 ) : reprsentation
8

Chaque lment de GF(28) est reprsent


b7X7 + b6X6 + + b1X + b0
On le stocke sur loctet reprsent en
binaire par (b7,,b0)
Reprsentation entre 0 et 255

56

Addition de la sous-cl
X1 X2 X3 X4

Y1 Y2 Y3 Y4

X5 X6 X7 X8

Y5 Y6 Y7 Y8

X9 X10 X11 X12

Y9 Y10 Y11 Y12

X13 X14 X15 X16

Y13 Y14 Y15 Y16


K1 K2 K3 K4

Yi = Xi Ki

K5 K6 K7 K8
K9 K10 K11 K12
K13 K14 K15 K16
57

Key Schedule
Algorithme de drivation des sous-cls
partir de la cl secrte
Bas sur les mmes primitives que la
fonction de tour

58

Nombre de tours
Pour AES-128 (cl de taille 128 bits)
t = 10 tours
Pour AES-192
t = 12 tours
Pour AES-256
t = 14 tours

59

Scurit de lAES
Lalgorithme est encore jeune mais
Il a t conu pour rsister aux attaques
classiques (diffrentielle, linaire, )
Inversion dans GF(28)

Attaques contre des version rduites ( 6 ou 7


tours) ?
Attaques algbriques en utilisant la structure
mathmatique simple de lAES ?

60

Synthse
Un algorithme de chiffrement par bloc est
une primitive de base (brique)
Reste se poser la question de son
utilisation !
Exemple : modes opratoires pour chiffrer
des messages de taille arbitraire

61

En pratique
Algorithmes utiliss
DES dans les anciens produits
AES dans les nouveaux produits

Autres algorithmes utiliss ponctuellement


IDEA (PGP)
BlowFish

62

Vous aimerez peut-être aussi