Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié paraicha guef Modifié depuis plus de 5 années
1
Chapitre 2: Principes et algorithmes du Chiffrement Symétrique: par Blocs et par Flot 1
2
Les systèmes de cryptage à clé privé, appelé aussi système de cryptage symétrique, sont utilisés depuis déjà plusieurs siècles. C'est l'approche la plus authentique du chiffrement de donnée et mathématiquement la moins problématique. Dans ce type de système, la clé servant à chiffrer les données peut être facilement déterminée (à l'aide d'ordinateurs) si l'on connaît la clé servant à déchiffrer. Il est aussi facile de trouver la clé de déchiffrement en sachant la clé de chiffrement. Dans la plupart des systèmes symétriques, la clé de chiffrement est la même que la clé de déchiffrement. Introduction 2
3
L’échange de la clé doit se faire sur un canal sécurisé. La sécurité repose totalement sur la confidentialité de la clé. Cryptage Internet Décryptage Voici le numéro de ma carte de crédit 111111, ☺☼♀☻ ♠♣▼╫ ◊ ♫◙◘ €£ ¥₪Ω ٭ Texte clair Clé 01010000111 Clé 01010000111 EmetteurRécepteur Voici le numéro de ma carte de crédit 111111, Texte clair Texte crypté K C =K D 3 Introduction
4
Autres termes anglais utilisés : Single-key, one-key, private- key, conventional encryption. Il y a deux catégories de systèmes à clé privée : les chiffrements par blocs et les chiffrements de flux. Les des catégories différent selon la manière de traiter les données en claire à crypter, soit par blocs soit bit par bit comme un flux de données. Chacune des deux approches possède ces avantages et ces inconvénients, et ces circonstances d’applications selon le besoin. Plusieurs algorithmes symétriques on été proposés dans les deux catégories selon des principes différents. On essayera dans ce chapitre de voire les principaux algorithmes. Introduction 4
5
Les S-Boxes Les S-boxes, composantes des systèmes cryptographiques, sont des tables de substitution (ou boîte de substitution, fonction de substitution). Elles peuvent avoir plus d'entrées que de sorties, ou plus de sorties que d'entrées. Les S- Boxes permettent de casser la linéarité de la structure de chiffrement (principe de confusion). Une table de substitution prend en général une variable de m bits en entrée et produit une sortie de n bits, les entrées et les sorties n'ont pas forcément la même taille. Les tables sont souvent définies à l'avance mais il arrive parfois qu'elles soient générées par l'algorithme (par exemple dans Blowfish). Terminologie 5
6
Les S-Boxes Les valeurs présentes dans les S-Box doivent être choisies de manière à éviter les attaques. Dans le cas de DES, il a été prouvé que les tables avaient été conçues de manière à résister à la cryptanalyse différentielle (technique qui ne sera publiée que bien des années plus tard). Exemple : Voici une S-Box (S 5 ) tirée de l'algorithme DES. La sortie de 4 bits est obtenue à partir de l'entrée de 6 bits. On divise ces 6 bits en deux parties : les deux bits aux extrémités et les quatre bits restants (au centre). Les deux bits indiquent la ligne et les bits centraux donnent la colonne correspondante. Terminologie 6
7
Les S-Boxes Par exemple, avec une entrée "011011", on divise en "0 1101 1". Ce qui donne pour la ligne "01" et pour la colonne "1101". La sortie de la table est alors "1001". Terminologie S5S5 4 bits au centre de l'entrée 0000000100100011010001010110011110001001101010111100110111101111 Bits externes 000010110001000001011110101011011010000101001111111101000011101001 011110101100101100010001111101000101010000111111000011100110000110 100100001000011011110011010111100011111001110001010110001100001110 111011100011000111000111100010110101101111000010011100010001010011 7
8
Les P-Boxes P-Box (permutation box), est une table de permutation employée dans les algorithmes de chiffrement. Elle indique comment échanger les éléments d'une structure. Une P- Box contribue à la « diffusion » en mélangeant les données et en améliorant l'effet avalanche. Une P-Box peut se présenter sous plusieurs formes mais algorithmiquement, il s'agit en général d'un tableau à une dimension comme [1,8,5,3,4,6,7,2]. Ce tableau signifie que le premier élément reste en place, que la deuxième sortie prend la valeur de la huitième entrée, que la troisième sortie prend la valeur de la cinquième, etc. Terminologie 8
9
L'effet avalanche L'effet avalanche est une propriété recherchée dans les algorithmes de chiffrement par bloc. Elle provoque des modifications de plus en plus importantes au fur et à mesure que les données se propagent dans la structure de l'algorithme. De ce fait, en perturbant un seul bit en entrée, on obtient idéalement une sortie totalement différente, (soit environ 1 bit sur deux de changé) d'où le nom de ce phénomène. L'effet avalanche permet de rendre la cryptanalyse du chiffrement plus difficile grâce à ses propriétés chaotiques. Le terme a été inventé par Horst Feistel mais le concept remonte à la théorie de Shannon sur la diffusion. Terminologie 9
10
Réseaux de Feistel Un réseau de Feistel est une construction utilisée dans les algorithmes de chiffrement par bloc, nommée d'après le cryptologue d'IBM, Horst Feistel. Elle a été utilisée pour la première fois dans Lucifer et DES. Cette structure offre plusieurs avantages, le chiffrement et le déchiffrement ont une architecture similaire voire identique dans certains cas. L'implémentation matérielle est aussi plus facile avec un tel système. Un réseau de Feistel repose sur des principes simples dont des permutations, des substitutions, des échanges de blocs de données et une fonction prenant en entrée une clé intermédiaire à chaque étage. Terminologie 10
11
Réseaux de Feistel Un réseau de Feistel est subdivisé en plusieurs tours ou étages. Le réseau traite les données en deux parties de taille identique. À chaque tour, les deux blocs sont échangés puis un des blocs est combiné avec une version transformée de l'autre bloc. Terminologie 11
12
Réseaux de Feistel Un round de la tour opère comme suite : L i =R i-1 R i = L i-1 f(R i-1,K i ) Le cryptage se fait selon la séquence: L 0 R 0 L 1 R 1 ……………….. L n R n Pour le Décryptage on inverse L n R n R n L n,et on applique les clés dans l’ordre inverse : Terminologie LiLi RiRi R i-1 L i-1 KiKi f Entré Sortie R n L n [L n ][R n f(L n,K n )]= [R n-1 ][L n-1 f(R n-1,K n ) f(L n,K n )]= [R n-1 ][L n-1 ] R n-1 L n-1 ……. R 0 L 0 L 0 R 0 12
13
Réseaux de Feistel La taille de chaque Bloc L i et R i est généralement de 32 bit dans le standard (32+32=64 bit) La taille de chaque clé K i et de 48 bit, Les clés K i sont extraites de la clé initiale K de taille 64 bit. Les schémas de Feistel ont été largement analysés et examinés par les experts. Plusieurs attaques sont possibles mais les deux principales sont :la cryptanalyse linéaire; la cryptanalyse différentielle. Ces méthodes ont fait leur preuve sur DES et sur d'autres algorithmes similaires. Mais cela ne signifie pas que l'utilisation d'un réseau de Feistel va obligatoirement entraîner des vulnérabilités significatives. Terminologie 13
14
14 Réseaux de Feistel Grâce à l'ajout de différentes techniques et avec une conception bien menée, on peut considérablement améliorer la résistance d'un algorithme basé sur Feistel. C'est le cas pour Blowfish qui est cryptographiquement sûre en date de décembre 2008. L’approche devient de plus en plus sûre en augmentant le nombre de rounds dans la tour. Un grand nombre d'algorithmes utilise des réseaux de Feistel, avec des variantes. Voici une liste non-exhaustive : -DES - Blowfish -Twofish - SEED -RC5 - OAEP Terminologie
15
Dans ce type de chiffrement, il y a une séparation du texte clair en blocs d'une longueur fixe selon un alphabet, et un algorithme chiffre un bloc à la fois. La taille des blocs a un impact sur la sécurité et sur la complexité : les blocs de grandes dimensions sont plus sécuritaires mais sont plus lourds à implémenter. Pour avoir un chiffrement et un déchiffrement unique, il faut que la fonction de chiffrement soit une fonction un-à- un. Les chiffrements par blocs sont aussi utilisés dans des systèmes à clé publique Chiffrement en Blocs 15
16
Il y a différentes méthodes d'utiliser les chiffrements par blocs, elles sont appelées « modes d'opération » (Anglais : modes of operation). Quatre modes sont définis dans ANSI X3.106-1983. Les quatre standards sont : Electronic Code Book (ECB), Cipher Block Chaining (CBC), Cipher FeedBack (CFB) Output FeedBack (OFB). Le chiffrement par blocs DES par exemple s'utilise avec ces modes d'opération. À noter qu'il y a d'autres modes d'opération existants. Chiffrement en Blocs 16
17
Mode opératoire ECB: Il s'agit du mode le plus simple. Le message à chiffrer est subdivisé en plusieurs blocs qui sont chiffrés séparément les uns après les autres. Chiffrement en Blocs 17
18
Mode opératoire ECB: Le gros défaut de cette méthode est que deux blocs avec le même contenu seront chiffrés de la même manière, on peut donc tirer des informations à partir du texte chiffré en cherchant les séquences identiques. On obtient dès lors un «dictionnaire de codes» avec les correspondances entre le clair et le chiffré d'où le terme codebook. Ce mode est pour ces raisons fortement déconseillé dans toute application cryptographique. Le seul avantage qu'il peut procurer est un accès rapide à une zone quelconque du texte chiffré et la possibilité de déchiffrer une partie seulement des données. Mais un mode bien plus sûr basé sur un compteur permet également ces accès aléatoires et les déchiffrements partiels. Chiffrement en Blocs 18
19
Mode opératoire ECB: La vulnérabilité est encore plus flagrante sur une image. Les images sont constituées de nombreuses redondances qui font que des blocs sont chiffrés de la même manière en mode ECB. Ci-dessous, le chiffrement en ECB est réalisé sur des blocs de 4 pixels. On distingue très nettement les formes du Cervin ainsi que les séparations entre les blocs. Originale avec ECBAutre mode Chiffrement en Blocs 19
20
Mode opératoire CBC (Enchainement des blocs): Dans ce mode, on applique sur chaque block un « OU exclusif » avec le chiffrement du bloc précédent avant qu’il soit lui-même chiffré. De plus, afin de rendre chaque message unique, un vecteur d'initialisation (IV) est utilisé. Chiffrement en Blocs 20
21
Mode opératoire CFB (Chiffrement à rétroaction ): Ce mode et les suivants agissent comme un chiffrement par flux. Ils génèrent un flux de clés qui est ensuite appliqué au document original. Dans ce mode, le flux de clé est obtenu en chiffrant le précédent bloc chiffré. C’est le mode le plus utilisé. Chiffrement en Blocs 21
22
Mode opératoire OFB (à rétroaction de sortie ): Dans ce mode, le flux de clé est obtenu en chiffrant le précédent flux de clé. C'est un mode de chiffrement de flot qui possède les mêmes avantages que CFB. De plus, il est possible de le pré-calculer en chiffrant successivement le vecteur d'initialisation. Chiffrement en Blocs 22
23
Tous les modes (à l’exception d’ECB) requièrent un « vecteur d’initialisation ». C’est un bloc de données aléatoires pour démarrer le chiffrement du premier bloc et fournir ainsi une forme de hasard indépendant du document à chiffrer. Il n’a pas besoin d’être lui-même chiffré lors de la transmission, mais il ne doit jamais être réemployé avec la même clé. Aucun des modes ci-dessus ne protège l’intégrité du message. Il est généralement bien compris que lorsque des données sont chiffrées, il est presque toujours essentiel de fournir un tel mécanisme, car en son absence, les risques sont grands. Chiffrement en Blocs 23
24
Exemples d’algorithmes : Dans ce qui suit, on expose les principaux algorithmes de chiffrements par blocs reconnus comme standards. Certains de ces algorithmes ne sont plus utilisés (DES), mais certains d’autres sont toujours considéré comme cryptographiquement sûre : 1.DES 2.IDEA 3.Tripe-DES 4.BlowFish 5.AES Chiffrement en Blocs 24
25
Historique En mai 1973, le National Bureau of Standards américain demande la création d'un algorithme de chiffrement utilisable par les entreprises. À cette époque, IBM dispose déjà d'un algorithme appelé Lucifer, conçu en 1971 par Horst Feistel. Cet algorithme à été sélectionné par le NBS, et transmis à la NSA qui demanda à ce que Lucifer soit modifié, par ses soins. Ainsi fut créé le DES, qui fut adopté comme standard en novembre 1976. Depuis 1977, la NBS adopte le DES comme un standard officiel de cryptage de tout les communications sensible du gouvernement. Chiffrement en Blocs : Le DES 25
26
Historique Le Standard original été disponible seulement en version Hardward, mais la NBS (NIST actuellement) publia par la suite une version software (algorithmique). La NSA Apporte des modification essentiels sur l’algorithme originale, tel que la réduction de la taille de la clé de 128 à 56 bit. Cela suscita des rumeurs selon lesquelles la NSA aurait volontairement affaibli l'algorithme, dans le but de pouvoir le casser par la suite. Sont résonnement semblais ambigu et non justifier pendant les années 70 et 80. Tout le monde penser que l’affaiblissement été voulu, mais une commission du gouvernement à démenti en 1978 les rumeurs et les reproches envers la NSA. Chiffrement en Blocs : Le DES 26
27
Historique En 1990, Eli Biham et Adi Shamir publient le premier article sur la Cryptanalyse Différentielles. C’est une technique très puissante qui à permis de casser plusieurs méthode de cryptographie. Ils ont prouver que les modifications apportés par la NSA rend le DES beaucoup plus résistant et fiable !!!! En 1994, Steven Levy (Journaliste) découvre qu’IBM à découvert la cryptanalyse différentiel en 1974 !, et que la NSA demanda que cette technique resta secrète pour des raisons de sécurité nationale. Les modifications apportés par la NSA visent la protection du DES contre ce type de cryptanalyse !!!!!!!..... Chiffrement en Blocs : Le DES 27
28
Historique DES à été déclarer obsolète en 2001 par NIST et fut remplacer par AES, Triple DES et Blowfish (des amélioration de DES). Il à été casser en 22h et 15m par les projets Deep Crack et distributed.net en 1999 par une Brute Force Attaque (Recherche exhaustive). Chiffrement en Blocs : Le DES 28
29
Principe du DES DES est un algorithme de chiffrement par bloc L’information à chiffrer est découper en blocs de tailles identiques, généralement une puissance de 2 (entre 32 et 512). Les blocks sont ensuite chiffrer les unes après les autres en utilisent la même clé. La clé de DES et sur 64 bit, et ainsi la taille des blocs de données et des blocs codées. L’ors du déchiffrement, les blocs sont rassembler de nouveau en utilisent le principe inverse avec la même clé. Chiffrement en Blocs : Le DES 29
30
Principe du DES En vérité seulement 56 bit sont utilisées. Un bit de chaque octet est utiliser pour le contrôle de la parité de la clé : Le principe de fonctionnement de DES est basé sur le mécanisme des Réseaux de de Feistel La version standard du DES utilise un réseau de Feistel de 16 round pour le cryptage et le décryptage. Chiffrement en Blocs : Le DES 30 011010101011000100110110 01.....0 Octet de parité (8 bits) Clé DES (64 bits)
31
Principe du DES L’algorithme DES agit en trois étapes : 1.Les 64 bits m en entré sont permutés selon une permutation fixe pour obtenir m 0 =IP(m), m 0 est ensuite divisé en deux parties L et R de taille 32 bits chacun tel que m 0 =L 0 R 0 2.Pour i=1..16 faire : L i =R i-1 et R i = L i-1 f(R i-1,K i ) 3.Inverser le résultat finale m 16 =L 16 R 16 pour obtenir R 16 L 16, ensuite la permutation initiale est appliqué dans le sens inverse pour obtenir C=IP -1 (R 16 L 16 ) Chiffrement en Blocs : Le DES 31
32
Principe du DES Chiffrement en Blocs : Le DES 32 Plaintext IP L0L0 R0R0 f K1K1 L1L1 R1R1 L 16 R 16 Ciphertext IP 1
33
Principe du DES Chiffrement en Blocs : Le DES 33 R i-1 L i-1 Transformed Key K i Permutations and substitution f XOR LiLi RiRi Les étapes d’un tour de chiffrement
34
La permutation initial :IP (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 ) C’est une permutation fixe, choisie au début par la NSA (pour des raisons de conception électronique !!!!) La permutation inverse correspondante :IP -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) Chiffrement en Blocs : Le DES 34
35
La fonction f: Chiffrement en Blocs : Le DES 35 Right Half R i Transformed Key (48-bit) S-Box Substitution P-Box Permutation XOR E-Box Expansion 8 S-Boxes are used f(R i-1, K i )
36
La fonction f: Chiffrement en Blocs : Le DES 36 Ri1Ri1 Expander E(Ri1)E(Ri1) KiKi B1B1 B2B2 B3B3 B4B4 B5B5 B6B6 B7B7 B8B8 S1S1 S2S2 S3S3 S4S4 S5S5 S6S6 S7S7 S8S8 C1C1 C2C2 C3C3 C4C4 C5C5 C6C6 C7C7 C8C8 Permutation f(R i-1, K i ) Blocs de 6 bits S-Boxes 32 bits 48 bits
37
La fonction f: La fonction f procède comme suite : 1.La chaîne R i-1 (32 bit) en entré est expansé en E(R i-1 ) (48 bit) en utilisent la table d’expansion suivante : ( 32 1 2 3 4 5 4 5 6 7 8 9 8 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 29 28 29 30 31 32) 2.Calculer E(R i-1 ) K i est écrire le résultat sous la forme B 1 B 2 …B 8 tel que chaque B i est un groupe de 6 bits. 3.Transformer chaque B i en utilisent la S-Box S i, la ligne d’une S-Box est spécifier par les bits b 1 b 6 de B i et la colonne par b 2 b 3 b 4 b 5. Le résultat est 8 chaînes de 4 bits chacun C 1 C 2 ….C 8. Les 8 S-Boxes sont fixe (prédéfinit) Chiffrement en Blocs : Le DES 37
38
Les S-Boxes utilisées sont: S-box 1 S-box 2 S-box 3 Chiffrement en Blocs : Le DES 38
39
Les S-Boxes utilisées sont: S-box 4 S-box 5 S-box 6 Chiffrement en Blocs : Le DES 39
40
S-box 7 S-box 8 4.La chaîne résultante C 1 C 2 …C 8 est permuter à la fin en utilisent la permutation fixe suivante : ( 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) Le résultat est une chaîne de 32 bit qui donne f(R i-1, K i ) Chiffrement en Blocs : Le DES 40
41
La gestion des clés La clé initial du système DES et sur 64 bit, seulement 56 bit sont utiliser (bits de parité). Les 64 bit sont d’abord permuter en utilisent la table suivante : (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 2214 6 61 53 45 37 29 21 13 5 28 20 12 4) Le résultat obtenu est ensuite diviser en deux parties C 0 et D 0 chacune sur 28 bit. Pour i=1..16 (chaque itération) on calcule C i =LS i (C i-1 ) et D i =LS i (D i-1 ),tel que LS i est un shift à gauche par une ou deux position, selon la table suivante : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 Chiffrement en Blocs : Le DES 41
42
La gestion des clés C i et D i sont de nouveau combiner en 56 bit. Ensuite, 48 bit seulement sont sélectionnée de la chaîne résultante selon la table suivante : ( 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 résultat et une clé K i de 48 bit dans chaque itération i Chaque clé K i est utilisée dans un Round i de la tour utilisée. Les clés sont tous une version transformé de la clé initial sur 56 bit. Chaque bit de la clé initial est utilisé en moyenne 14 fois dans les 16 itérations. Chiffrement en Blocs : Le DES 42
43
DES n’est pas un Groupe : Si on choisie deux clés différents K 1 et K 2, est ce que le cryptage E K1 (E k2 (P)) est plus sécurisé que le cryptage E K1 (P) ou E k2 (P) ? Il est démontrer que DES n’est pas un groupe au sens algébrique, c’est-à-dire que la proposition suivante n’est pas vérifié: Ceci implique que la composition de DES permet d’obtenir d’avantage de sécurit, sinon casser tout composition serait équivalent à chercher dans les 2 56 combinaison Chiffrement en Blocs : Le DES 43
44
Clés Faibles de DES: Une clé K est faible si E K (E K (x))=x Une paire K 1 et K 2 de clés et mi-faible si : E K1 (E K2 (x))=x Les clés faibles ont la particularité de générés des sous clés identiques par paire : (k 1 =k 16,k 2 =k 15,…..,k 8 =k 9 ), ceci facilite la cryptanalyse DES possède 4 clés faibles (et 6 paires mi-faibles): 0101 0101 0101 0101 FEFE FEFE FEFE FEFE FEFE FEFE 0101 0101 Chiffrement en Blocs : Le DES 44
45
DES présente quelques faiblesses : Taille des clefs : 56 bits Recherche exhaustive 3DES (Triple DES): Enchaînant 3 applications successives de l'algorithme DES sur le même bloc de données de 64 bits, avec 2 ou 3 clés DES différentes. Plusieurs approches permettent de combiner DES 3 fois mais une seul à été adoptée : La version adoptée (de Tuchman) utilise un chiffrement, suivi d'un déchiffrement pour se conclure à nouveau par un chiffrement (mode EDE :Encryption-Decryption-Encryption). Chiffrement en Blocs : Le Triple-DES 45
46
Le 3DES est: Plus sécurisé mais trois fois plus long. La taille des blocs est limitée à 64 bits Nécessité de trouver un remplaçant Chiffrement en Blocs : Le Triple-DES 46
47
Conçu en 1993 par Bruce Schneier et publié en 1994. Blowfish utilise une taille de bloc de 64 bits et la clé, de longueur variable, peut aller de 32 à 448 bits. Blowfish est basé sur un schéma de Feistel avec 16 tours et utilise des S-Boxes de grandes tailles qui dépendent de la clé (Variable). Chiffrement en Blocs : BlowFish 47
48
L'algorithme gère deux ensembles de clés : les 18 entrées du tableau P (Table des clés) et les quatre S-Boxes de 256 éléments chacune. Une entrée du tableau P est utilisée à chaque tour. Arrivé au tour final, la moitié du bloc de donnée subit un XOR avec un des deux éléments restants dans le tableau P. La fonction F sépare une entrée de 32 bits en quatre morceaux de 8 bits et les utilise comme entrées pour accéder aux S-Boxes Chiffrement en Blocs : BlowFish 48 La Fonction F
49
Les sorties sont additionnées avec une somme modulo 2 32 et l'algorithme effectue un XOR entre les deux sous-totaux pour produire la sortie finale de 32 bits. Pour le décryptage, en tant que schéma de Feistel, Blowfish peut être inversé simplement en appliquant un XOR des éléments 17 et 18 du tableau P (Table des clés) sur le bloc chiffré. Il faut ensuite utiliser les entrées du tableau P dans l'ordre inverse. Chiffrement en Blocs : BlowFish 49
50
50 La préparation de la structure à partir de la clé commence avec l'initialisation du tableau P et des S-Boxes avec des valeurs qui sont tirées du nombre Pi exprimé en hexadécimal. On opère ensuite un XOR entre la clé secrète et les entrées du tableau P (avec une extension cyclique de la clé si nécessaire). Un bloc de 64 bits, tous à zéro, est ensuite chiffré avec cette version temporaire de Blowfish Chiffrement en Blocs : BlowFish
51
51 Chiffrement en Blocs : BlowFish = 3.1415926535897932384626433 832795028841 ……… Hexadécimale S-Boxs init S1 S2 S3 S4 Table P init P1 P2 ……… P18 S-Boxs init S1 S2 S3 S4 Table P init P1 P2 ……… P18 Clé K 00…00 BlowFish 110…10
52
52 Le résultat chiffré remplace ensuite le premier et le deuxième élément du tableau P. On réitère l'opération de chiffrement avec cette nouvelle version et ceci sur le résultat précédent. On obtient alors le troisième et quatrième élément de P. L'algorithme continue ainsi en remplaçant tout le tableau P et les éléments des S-Boxes. Au final, environ 4 Ko de données doivent être générées et Blowfish effectue 512 itérations pour y parvenir. La recherche exhaustive reste la seule solution pour vaincre un Blowfish complet à ce jour. Une attaque réussit à été publier en 1996 mais qui est valable pour de schéma de 14 tours seulement. Chiffrement en Blocs : BlowFish
53
53 IDEA, International Data Encryption Algorithm est un algorithme de chiffrement symétrique conçu par Xuejia Lai et James Massey en 1991. Il manipule des blocs de texte en clair de 64 bits. Une clé de chiffrement longue de 128 bits (qui doit être choisie aléatoirement) est utilisée pour le chiffrement des données. L'algorithme est basé sur le mélange de 3 opérations de différents groupes algébriques, facilement réalisables à la fois en logiciel et en matériel : OU exclusif (Xor) addition modulo 2 16 multiplication modulo 2 16 +1 Chiffrement en Blocs : IDEA
54
54 Le bloc de données de 64 bits est divisé en 4 sous-blocs de 16 bits : X 1, X 2, X 3 et X 4. Ces quatre sous-blocs deviennent les entrées de la première round de l'algorithme. Il y a huit rondes au total. À chaque round, les 4 sous-blocs sont combinés par OU exclusif, additionnés, multipliés entre eux et avec 6 sous-blocs de 16 bits dérivés de la clé. Entre chaque deux rounds, le deuxième et le troisième sous-bloc sont échangés. Enfin, les quatre sous-blocs sont combinés avec les quatre sous-clefs dans une transformation finale. Chiffrement en Blocs : IDEA
55
55 Chiffrement en Blocs : IDEA 1.Multipliez X 1 et la K 1 ; 2.Additionnez X 2 et K 2 ; 3.Additionnez X 3 et K 3 ; 4.Multipliez X 4 et K 4 ; 5.Combinez par Xor les résultats de (1) et (3); 6.Combinez par Xor les résultats de (2) et (4); 7.Multipliez le résultat de (5) avec la K 5 ; 8.Additionnez les résultats de (6) et (7); 9.Multipliez le résultat de (8) par K 6 ; 10.Additionnez les résultats de (7) et (9); 11.Combinez par Xor les résultats de (1) et (9); 12.Combinez par Xor les résultats de (3) et (9); 13.Combinez par Xor les résultats de (2) et (10); 14.Combinez par Xor les résultats de (4) et (10);
56
56 La sortie de la rounde est constituée des 4 sous-blocs produits par les étapes (11), (13), (12) et (14). Changez les deux blocs intérieurs (sauf lors de la dernière rond) et cela donne l'entrée de la ronde suivante Après la huitième rounde, il y a une transformation finale: 1.multipliez X 1 et la première sous-clef K 1 ; 2.multipliez X 2 et la deuxième sous-clef K 2 ; 3.multipliez X 3 et la troisième sous-clef K 3 ; 4.multipliez X 4 et la quatrième sous-clef K 4 ; Enfin les 4 sous-blocs sont réassemblés pour former le texte chiffré. Chiffrement en Blocs : IDEA
57
57 Les 6 clés sont obtenu de la clé initial K sur 128 bit, L’algorithme contient 8 rounds, donc on à besoin de 6*8=48 sous clés. Les 8 premier sont extraite directement de K, ensuit on effectue une rotation de 25 bit pour extraire les 8 suivante, est ainsi de suit jusqu’à généré les 48 sous-clés 6 rotations sont effectuées pour obtenir tout les sous-clés Aucune Attaque Linéaire ni Différentielle n’a pu le casser jusqu’à maintenant En 2007, une combinaison des deux à permet de casse une version simple (6 rounds seulement) de IDEA Vitesse de chiffrement et de déchiffrement :Circuits à 55 Mb/s et 177 Mb/s, En logiciel il est relativement lent !!! Chiffrement en Blocs : IDEA
58
58 Advanced Encryption Standard ou AES (soit « standard de chiffrement avancé » en français), aussi connu sous le nom de Rijndael, est un algorithme de chiffrement symétrique, choisi en octobre 2000 par le NIST pour être le nouveau standard de chiffrement pour les organisations du gouvernement des États-Unis. L'algorithme prend en entrée un bloc de 128 bits= 16 octets= 4 mots de 32 bits, (N b =4) La clé fait 128, 192 ou 256 bits. Donc la taille de la clé est caractériser par N k =4,6 ou 8. Comme DES, AES exécute une séquence de rondes. On note N r le nombre de rondes qui doivent être effectuées. Ce nombre dépend des valeurs de N b et de N k. Chiffrement en Blocs : AES
59
59 Les 16 octets en entrée sont permutés selon une table définie au préalable. Ces octets sont ensuite placés dans une matrice de 4xN b éléments (de F 256 ). Le chiffrement AES consiste en une addition initiale de clé, notée AddRoundKey, suivie par N r -1 rondes, chacune constitué de quatre étapes : 1.SubBytes : il s'agit d'une substitution non-linéaire lors de laquelle chaque octet est remplacé par un autre octet choisi dans une table particulière une S-Box. Chiffrement en Blocs : AES
60
60 2.ShiftRows: est une étape de transposition ou chaque éléments de la matrice est décalée cycliquement à gauche d'un certain nombre de colonnes. Chaque ligne est décaler par C i position: Chiffrement en Blocs : AES
61
61 3.MixColumns effectue une produit matriciel en opérant sur chaque colonnes (vu alors comme un vecteur) de la matrice. Chiffrement en Blocs : AES
62
62 4.AddRoundKey : qui combine par addition chaque octet avec l'octet correspondant dans une clé de ronde obtenue par diversification de la clé de chiffrement. Chiffrement en Blocs : AES
63
63 5.Enfin, une ronde finale FinalRound est appliquée (elle correspond à une ronde dans laquelle l'étape MixColumns est omise). Chiffrement en Blocs : AES AES_Encrypt(State, K) { KeyExpansion(K, RoundKeys); /* Addition initiale */ AddRoundKey(State, RoundKeys[0]); /* Les Nr-1 rondes */ for (r=1; i<Nr; r++) { SubBytes(State); ShiftRows(State); MixColumns(State); AddRoundKey(State, RoundKeys[r]); } /* FinalRound */ SubBytes(State); ShiftRows(State); AddRoundKey(State, RoundKeys[Nr]); }
64
64 La clé initiale K de taille 4*N k octet est diversifier en une clé étendu de 4*N b *(N r +1) octet, donc N r +1 ensemble de clé chacun de taille 4*N b. Une procédure récursive spéciale est utiliser pour la génération des nouvelles clés. Une Rotation est effectué avec une permutation (S-Box prédéfinit) pour généré chaque ensemble. Chiffrement en Blocs : AES
65
65 L'AES n'a pour l'instant pas été cassé et la recherche exhaustive demeure la seule solution. AES a été conçu de telle manière à rendre des méthodes classiques comme la cryptanalyse linéaire ou différentielle très difficiles Performance 1.Portable sur un grand nombre de processeurs 2.Algorithme suffisamment parallèle pour exploiter les architectures multiprocesseurs 3.Débit de cryptage jusqu’à 1Gb/s (cryptage matériel) Chiffrement en Blocs : AES
66
66 Les algorithmes de chiffrement de flux (stream ciphers) peuvent être définis comme étant des algorithmes de chiffrement par blocs, où le bloc a une dimension unitaire (1 bit, 1 octet, etc.) ou relativement petite. Leurs avantages principaux viennent du fait que la transformation (méthode de chiffrement) peut être changée à chaque symbole du texte clair et du fait qu'ils soient extrêmement rapides. De plus, ils sont utiles dans un environnement où les erreurs sont fréquentes car ils ont l'avantage de ne pas propager les erreurs (diffusion) Ils appliquent de simples transformations selon un keystream utilisé. Le keystream est une séquence de bits utilisée en tant que clé qui peut être générée aléatoirement (keystream generator). Chiffrement de Flux
67
67 Avec un keystream choisi aléatoirement et utilisé qu'une seule fois, le texte chiffré est excessivement sécuritaire. En fait, les chiffrements de flux sont une approximation des propriétés théoriques de l'algorithme one time pad, appelé aussi chiffrement Vernam. La génération du keystream peut être indépendant du texte clair et du texte chiffré, appelée chiffrement de flux synchrone (synchronous stream cipher), ou elle peut être dépendante (self-synchronizing stream cipher). Les chiffrements de flux les plus répandus sont synchrones. À noter qu'il n'y a aucun standard parmi les chiffrements de flux. Chiffrement de Flux
68
68 Les algorithmes de chiffrement par flot sont basés sur la génération des nombres pseudo-aléatoires. Une séquence de nombres est généré (de même taille que le message a chiffré), cette séquence constitue le keystream. La séquence doit être généré à baes de la clé de chiffrement (condition d’initialisation) La distribution de la séquence doit être uniforme. La séquence résultante est enfin combiné avec le message en claire pour donné le texte chiffré. La combinaison se fait par Xor ou par une addition modulaire, ou les deux en même temps. Plusieurs algorithmes existent: LFSR, RC4,A5….. Chiffrement de Flux
69
69 Un LFSR, ou linear feedback shift register, est un registre à décalage à rétroaction linéaire, c'est à dire que le bit entrant est le résultat d'un OU exclusif (ou XOR) entre plusieurs bits du registre. Les LFSR sont couramment utilisés en cryptographie pour générer des suites de nombres pseudo-aléatoires. Pour un registre de n bits, une combinaison linéaire de ces bits permet de généré un nouveau qui sera inséré avec décalage en première position. Bit-new=c 1 R[1] c 2 R[2] ….. c n R[n] avec c i {0,1} Le suite des bits sortants donnera le keystream généré. La valeur initial des élément du registre correspond a la clé de chiffrement. Chiffrement de Flux: LFSR
70
70 Exemple : registre sur 16 bit Cet algorithme n’est plus fiable car un algorithme développer par Berlekamp et Massey permet de trouver la clé à partir d’une suite finie de bits générés Certains améliorations de l’algorithme en utilisent plusieurs registres avec filtrage (Algorithme A5 utilisé par les réseaux GSM européennes) Chiffrement de Flux: LFSR
71
71 Algorithme développé par Ron Rivest en 1987 RC = Rivest Cipher, brevetée et tenu secret par la sociéeté RSA Inc. Les détails ont été postées anonymement sur Usenet en 1994...mais jamais approuvées officiellement par RSA) Il est largement utilisé :WEP,WPA, SSL/TLS, Oracle SQL….., il est d’une grande simplicité et facilité de mise en œuvre avec d’excellentes performances (vitesse de chiffrement) RC4 est un chiffrement par flux (octet par octet), il implémente un générateur pseudo-aléatoire : 1.état interne = un tableau codant une permutation de 256 octets 2.deux pointeurs i et j sur des cases du tableau Chiffrement de Flux: RC4
72
72 La clé est utilisée pour mélanger le tableau le mieux possible, puis le tableau (la permutation) évolue à chaque tour. Initialisation (pour une clé K de longueur L) La longueur de la clé varie de 5 octet à 256 octet ( de 40 a 2048 bit !) Chiffrement de Flux: RC4
73
La génération du keystream (flux pseudo-aléatoire): De par sa popularité, RC4 a fait l'objet de nombreuses recherches. Il est désormais considéré comme peu sûr du point de vue cryptographique et ne devrait pas être employé pour de nouvelles applications. Le flux aléatoire généré par RC4 est légèrement biaisé en faveur de certaines séquences d'octets. Chiffrement de Flux: RC4
74
Avec 6 millions de chiffrés (interceptés via une attaque passive), on retrouve l'intégralité de la clé secrète Malgré ceci, il est largement utilisé dans les applications et protocoles WIFI :WEP,WPA,…… Certaines améliorations consiste a utilisé un vecteur aléatoire comme supplément à la clé pour l’étape initiale de permutation. Ceci à comme avantage que le même message crypté deux fois avec la même clé ne donne pas le même texte chiffré (le vecteur initiale est transmis avec le message crypté) WEP 40 = 24 bits pour l'IV et 40 bits de clé(lois U.S.) WEP 104 = 24 bits pour l'IV et 104 bits de clé (104 bits = 26 caractères hexa) WEP 232 (256 au total): parfois proposé Chiffrement de Flux: RC4
75
Les algorithmes de chiffrement à clé secrète ne permettent pas de garantir la non- répudiation, et il posent le problème de transmission de la clé partagée. Quand il y’a beaucoup d’utilisateurs => problème de gestion de clé, problème de renouvellement des clés… => Solution : cryptographie à clé publique ! Leurs avantage par rapport aux algorithmes à clé publique : très rapide (des dizaines de fois !), facile à implémenté et requirent moins de ressources (implémentation Hard). Certaines systèmes utilisent une combinaison des deux :PGP=IDEA+RSA. Conclusion 75
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.