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
Chiffrement

K C
Dchiffrement

Deux grandes catgories


Chiffrement par bloc P est trait par blocs de donnes (ex: 64 bits ou 128 bits) Algorithmes : DES, AES, IDEA, RC6, BLOWFISH, Chiffrement par flot P est trait bit par bit 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 Tour numro 2

Cl secrte K K1 K2 Gnration des sous-cls

Tour numro t

bloc de chiffr C

Kt

Schmas de Feistel
X Ki Y

F
X Y

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 1 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

Le bit numro 21 de la sortie provient du bit numro 30 de lentre

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 4 8 5 2 6 3 7 4 8 5 9
Le bit numro 15 de la sortie provient du bit numro 10 de lentre Certains bits de lentre sont dupliqus (ex: bit 32)

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 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 1 5 2 7 20 21
Le bit numro 11 de la sortie provient du bit numro 23 de lentre

29 12 28 17 15 23 26 18 31 10 8 24 14 3 4 9 6 25

32 27 22 11

19 13 30

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
On obtient un algorithme avec taille de bloc 64 bits taille de cl 112 bits

K2

DES
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

Cl K2
DES

256 calculs Ni = DES(i,M)

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 K2 K3

DES

Plusieurs variantes possibles : Utiliser DES ou DES-1 ?

DES

Triple-DES avec 3 cls ou 2 cls (K1 = K3) ?

DES
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 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 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 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 X1 X2 X3 X4 X6 X7 X8 X5 X11 X12 X9 X10 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 X5 X9 X13 X2 X6 X3 X4 X7 X8 Y1 Y5 Y9 Y13 Y2 Y6 Y3 Y4 Y7 Y8

X10 X11 X12 X14 X15 X16


MixColumn

Y10 Y11 Y12 Y14 Y15 Y16

MixColumn() est applique chaque colonne


50

Mlange par colonne


X1
MixColumn

2 1
=

3 2 1 1

1 3 2 1

1 1 3 2
x

X1 X5 X9 X13

X5 X9 X13

1 3

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 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14 X15 X16 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 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