Chap.III Systèmes Cryptographiques Symétriques (à clé secrète)
Le D.E.S (Data Encryption Standard) Seuls les militaires avaient des algo. à clé secrète fiables avant les années 70. Les civils réclament de + en + des systèmes cryptographies. Le plus grand besoin: établissement financiers et utilisateurs de réseaux électroniques. le NIST lance un appel d’offres dans le Federal Register le 15/05/1973 pour l’adoption d’un standard en cryptographie.
Cahier des charges l'algorithme repose sur une clé relativement petite, qui sert à la fois au chiffrement et au déchiffrement. l'algorithme doit être facile à implémenter, logiciellement et mâtériellement, et doit être très rapide. le chiffrement doit avoir un haut niveau de sûreté, uniquement lié à la clé, et non à la confidentialité de l'algorithme.
Horst Feistel chercheur chez IBM est le père du DES, il développe Dataseal. IBM produit alors Demonstration Cipher qui devient Demon puis Lucifer. Le NIST fait appel à la NSA (National Security Ag.) pour finaliser le DES Ce qui nous conduit au D.E.S. avec un algorithme public et une clé de 64 bit dont 8 bits de parité. 2^56 = 72.057.594.037.927.936 1h= 3.600 s et 1an= 365*3600 = 1.314.000 s 2^56 / 1.314.000 = 54.838.351.627,038... années
permutation initiale (IP) Bloc initial (64 bits) Bloc 64 bits permutation initiale (IP) 64 bits séparation G0 (32bits) D0 (32bits) f k1 1° itération G1=D0 D1=G0f(k1,D0) D2=G1f(k2,D1) G2=D1 f k2 2° itération D3=G2f(k3,D2) G3=D2 f k3 3° itération D16=G15f(k15,D15) G16=D15 16° itération reconstitution 64 bits permutation finale (IP-1) Bloc final (64 bits)
permutation finale (IP-1) reconstitution 1° itération D1=G0f(k1,D0) G1=D0 G0 (32bits) D0 (32bits) f k1 Bloc initial (64 bits) 64 bits séparation Bloc final (64 bits) permutation finale (IP-1) reconstitution 1° itération 2° itération 3° itération 16° itération D16=G15f(k15,D15) G16=D15 D2=G1f(k2,D1) G2=D1 k2 D3=G2f(k3,D2) G3=D2 k3 permutation initiale (IP)
Permutation Initiale (IP) Carte de transposition (vecteur des positions initiales ie: le 58° bit devient 1°, …) 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
permutation initiale (IP) D1=G0f(k1,D0) G1=D0 G0 (32bits) D0 (32bits) f k1 Bloc initial (64 bits) 64 bits séparation permutation initiale (IP) Bloc final (64 bits) reconstitution 1° itération 2° itération 3° itération 16° itération D16=G15f(k15,D15) G16=D15 D2=G1f(k2,D1) G2=D1 k2 D3=G2f(k3,D2) G3=D2 k3 permutation finale (IP-1)
Permutation Finale (IP-1) Carte de transposition (vecteur des positions initiales ie: le 40° bit devient 1°, …) 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
permutation initiale (IP) G0 (32bits) D0 (32bits) f k1 Bloc initial (64 bits) 64 bits séparation permutation initiale (IP) Bloc final (64 bits) permutation finale (IP-1) reconstitution 1° itération 2° itération 3° itération 16° itération D16=G15f(k15,D15) G16=D15 D3=G2f(k3,D2) G3=D2 k3 D1=G0f(k1,D0) G1=D0 D2=G1f(k2,D1) G2=D1 f k2
f Clé de ronde Ki (48bits) Demi-bloc droit (32bits) expansion E S-Boxes Demi-bloc de 32bits permutation P Di=Gi-1f(ki,Di-1) Gi=Di-1 f ki Gi-1 (32bits) Di-1 (32bits) Demi-bloc de 32bits
Expansion (E) Carte de transposition (vecteur des positions initiales ie: le 32° bit devient 1°, …) 32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Permutation (P) Carte de transposition (vecteur des positions initiales ie: le 16° bit devient 1°, …) 16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10 2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
Boites de substitution (S-Boxes) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 00 14 4 13 1 2 15 11 8 3 10 6 12 5 9 7 01 S2 S3 S4 S5 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 00 2 12 4 1 7 10 11 6 8 5 3 15 13 14 9 01 S6 S7 S8
Génération des 16 sous clés K X X X X X X X X Permutation PC-1 Séparation Rotation à Gauche Rotation à Gauche Regroupement Permutation PC-2 Ki
Permutation PC-1 Carte de transposition (vecteur des positions initiales ie: le 57° bit devient 1°, …) 57 49 41 33 25 17 9 1 58 50 42 34 26 18 10 2 59 51 43 35 27 19 11 3 60 52 44 36 63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61 53 45 37 29 21 13 5 28 20 12 4
Rotations à Gauche Sous clés Nombre bits Permutation PC-2 K1 K2 K3 K4 6 8 10 12 14 15 17 19 21 23 25 27 28 Permutation PC-2 Carte de transposition (vecteur des positions initiales ie: le 14° bit devient 1°, …) 14 17 11 24 1 5 3 28 15 6 21 10 23 19 12 4 26 8 16 7 27 20 13 2 41 52 31 37 47 55 30 40 51 45 33 48 44 49 39 56 34 53 46 42 50 36 29 32
Le DES est adopté en 77 comme standard fédéral Il a été conçu pour durer moins de 10 ans avec obligation de révision chaque 5 ans, Il fut approuvé en 83, en 87 et encore en 93 L’évolution rapide de la puissance des ordinateurs a fini par dépasser les limites du DES En juin 1997 il fut cassé par une fédération de petites machines sur internet en 96 j (3semaines) Pour plus de sécurité le triple DES est adopté en attendant l’AES
Triple DES D.E.S D.E.S-1 D.E.S K1 K2 Message clair Message crypté Augmente la taille de la clé une clé de 112 bits Reste compatible avec le DES si on utilise la même clé Mais 3 fois plus lent que les DES
Advanced Encryption Standard (AES) Cahier des charges Grande sécurité Large portabilité (cartes à puces, processeurs 8bits, processeurs spécialisés, …) Rapidité : Chiffrer des milliers de télécom à la volée Lecture facile de l’algorithme Chiffrement par bloc de 128 bits avec une clé de 128, 192 ou 256 bits
X S Bloc de 128bits Bloc de 128bits K ki sortie d’algo. entrée: Prochaine ronde Bloc de 128bits sortie: Clé Clé de ronde K ki Algo. de cadencement A B C D E F G H I J K L M N O P S Brouillage de lignes A B C D F G H E K L I J P M N O X