Cryptographie > 5/11/2008 Henri-François CHADEISSON <henrifrancois.chadeisson@gmail.com> [SCIA] EPITA 2009 Mots clés:. - 9 décembre 2008 -
Table des matières 1 Introduction 2 2 Cryptographie sans secret 3 2.1 Introduction............................. 3 2.1.1 Fonction a sens unique................... 3 2.1.2 Interets........................... 3 2.2 Quelques fonctions de hach et tailles usuelles........... 4 2.3 Problème des collisions....................... 4 2.3.1 Paradoxe des anniversaires................. 4 2.3.2 Attaques génériques.................... 5 2.3.3 Hachage idéal........................ 5 2.4 MD5................................. 6 2.4.1 Collisions sur MD5..................... 6 2.4.2 Exemple.......................... 6 2.5 Un autre exemple : SHA-1..................... 7 2.5.1 Description......................... 7 2.5.2 Dernières nouvelles sur SHA-1.............. 7 2.6 SHA-3................................ 7 2.6.1 Fonctions candidats..................... 7 2.7 Le hachage en pratique....................... 8 2.8 Applications du hachage...................... 8 2.8.1 Exemples.......................... 8 2.8.2 Du hash contre les spams.................. 8 3 Générateurs pseudo-aléatoires 9 3.1 Description............................. 9 3.1.1 Caractéristiques....................... 9 3.1.2 Contraintes de sécurité................... 9 3.2 Applications des générateurs pseudo-aléatoires.......... 10 1
4 Cryptographie symétrique 11 4.1 Introduction............................. 11 4.2 Chiffrement par flot......................... 12 4.2.1 Description......................... 12 4.2.2 Le chiffrement par flot, aujourd hui............ 12 4.2.3 Algorithmes célèbres.................... 12 4.2.4 Principe du chiffrement par flot (synchrone)........ 13 4.2.5 Sécurité du chiffrement par flot.............. 13 4.3 L algorithme RC4.......................... 13 1
Chapitre 1 Introduction Objectifs de la crypto : CIA Confidentialite Integrite Authenticite Niveau de Sécurité Taille des clefs symétriques Faible 2 64 Moyen 2 80 Fort 2 128 Plus gros calcul actuel : 2 64 (chiffrement RC5) 2 74 cycles. Principes de Kerckhoffs : La sécurité d un système ne doit pas être fondée sur son caractère secret Seule une donnée de petite taille (clef) doit assurer la sécurité 2
Chapitre 2 Cryptographie sans secret 2.1 Introduction 2.1.1 Fonction a sens unique Def : une fonction a sens unique est une fonction f : Facile a calculer Impossible a inverser : etant donne un y choisi aleatoirement dans l ensemble d arrivee, on ne sait pas retrouver un x tel que y = f(x). L ensemble de depart doit donc avoir au moins 2 128 elements. f : x y X Y Pour y "aleatoire", x X, il est difficile de trouver y = f(x). 2 cas particuliers tres utiles de fonctions a sens unique : Fonctions de hachage (compression) : l entree est arbitraire mais la sortie est une chaine de bits de longueur fixe. X tres grand {0, 1} Y petit {0, 1} 128 Generateur pseudo-aleatoire (Expansion) : l entree est une chaine de bits de longueur fixe, mais la sortie est arbitrairement longue. X petit {0, 1} 128 Y tres grand {0, 1} 2.1.2 Interets Interets des fonctions de hachage en cryptographie : Compression 3
Renforcer la securite Le hachage permet d identifier des donnees. Il y a cependant des collisions (i.e. cles de hach identiques pour des fichiers differents, ou encore : paire de messages distincts qui ont le meme haché). Principales proprietes requises pour une fonction de hachage : Sens unique (+ fort que la resistance a la deuxieme preimage, si on est capable de casser le sens unique, on peut casser la preimage) Resistance a la deuxieme preimage : etant donne x, il doit etre calculatoirement impossible de trouver x x tel que H(x ) = x Resistance aux collisions : il doit etre calculatoirement impossible d exhiber des paires (x,y) telles que H(x) = H(y) et x y. Par exemple, on connait aujourd hui des collisions sur MD5 et SHA-0. Oracle aléatoire : la sortie de la fonction de hachage doit se comporter comme un "nombre aléatoire". Etant donné H(x), on ne doit rien apprendre sur x. 2.2 Quelques fonctions de hach et tailles usuelles Tailles usuelles de fonctions de hachage cryptographiques : 128 bits : MD5. Insécurité : collisions 160 bits : norme américaine SHA-1. Insécurité : "collisions" 224, 256, 384 et 512 bits : la famille SHA-2 (norme américaine). Insécurité : aucune n a été trouvée SHA-3 : appel d offre lancé il y a une semaine. Meme tailles que SHA-2 MD5 et SHA-1 sont des descendants de MD4 2.3 Problème des collisions 2.3.1 Paradoxe des anniversaires Taille minimale d une fonction de hachage "sans collision" Supposons qu il y ait m personnes dans une salle A partir de quelle valeur de m peut-on garantir qu au moins deux personnes aient le même anniversaire (même jour, même mois)? 366 A partir de quelle valeur de m y a t-il une chance sur deux pour que deux personnes aient le meme anniversaire? Si on suppose que les anniversaires sont uniformément dstribués" 4
0.507 pour m = 23 0.706 pour m = 30 De manière générale, si l on tire m valeurs aléatoirement dans un ensemble de n éléments, la valeur moyenne de m pour qu on obtienne une collision est de n π 2, soit n à une constante près. Si une fonction de hachage renvoie des empreintes de n bits, on peut trouver une collision en temps 2 n 2 Pour un niveau de sécurité de 128 bits, l empreinte doit donc faire au moins 256 bits. Par contre, si on ne s interesse qu à la deuxième pré-image, alors 128 bits suffisent C est une condition nécessaire mais bien entendu pas suffisante Il est extrêmement difficile de trouver de bonnes fonctions de hachage à la fois sûres et efficaces. 2.3.2 Attaques génériques Soit une fontion de hachage renvoyant des empreintes de n bits. inversion : 2 n Deuxième préimage : 2 n Collisions : 2 n 2 2.3.3 Hachage idéal Idéalement, une fonction de hachage se comporte comme un oracle aléatoire. On conserve une liste de couples (message, empreinte) initialement vide Quand on doit calculer l empreinte d un nouveau mesage, on regarde si le message est déjà dans la liste Si oui, on renvoie l empreinte associée dans la liste Sinon, on tire uniformément au hasard une nouvelle empreinte, et on rajoute à la liste le nouveau couple (message, empreinte) impossible a faire! Fonctions de hachage usuelles : le hachage itératif de Merkle-Damgard On se ramène à hacher un "petit" bloc, en itérant une fonction de compression C à deux arguments Le message est découpé en une suite arbitrairement longue de blocs de taille fixe : si la taille du message ne tombe pas juste, on applique du padding Si la fonction de compression est sans collision, alors on n a pas de collisions sur les petits messages, et donc pas de collision sur les gros messages. 5
2.4 MD5 Inventée par Rivest en 1991, pour réparer MD4. Sortie et IV de 128 bits. Fonction de compression à deux arguments : 128 bits, décomposés en 4 32 bits 512 bits (bloc de message) La compression utilise un chiffrement par bloc dédié. Très efficace en soft. Le message doit être inférieur à 2 64 bits. 2.4.1 Collisions sur MD5 En 1996, Dobbertin a trouvé des collisions pour la fonction de compression de MD5. On les appelle les pseudo-collisions. Plus précisément, ila trouvé des IV pour lesquelles il est facile de trouver m m tels que C(IV,m) = C(IV, m ). Mais cela ne donnait pas de vraies collisions sur MD5 En août 2004, Wang et al. ont trouvé de vraies collisions sur MD5, en trouvant des pseudo-collisions (sur deux blocs) sur la fonction de compression, quelle que soit l IV, y compris l IV fausse donnée dans le livre de Scheneir! Le cout de la recherche de ces collisions est aujourd hui d environ 2 27 compresions : quelques minutes. Liberté sur les collisions de MD5 : L attaque de Wang marche quel que soit l IV. Ainsi, pour tout début d de taille multiple de 512 bits, on peut trouver en quelques minutes m1 et m2 de 1024 bits tels que MD5(d m1) = MD5(d m2). Dans ce cas, on obtient une infinité de collisions car MD5(d m1 f) = MD5(d m2 f) quelle que soit la fin f. Stevens et al. ont démontré en 2006 qu on pouvait aussi choisir des débuts différents : pour tout début d1 et d2 de même taille, on peut trouver deux messages m1 et m2 de quelques milliers de bits tels que MD5(d1 m1) = MD5(d2 m2) 2.4.2 Exemple L exemple d APOP (serveur de mail) : Un serveur envoie une chaine c, et l utilisateur renvoie le md5 de c, concaténé au mot de passe. En 2007, on trouve les 3 premieres lettres du mdp Quelques mois plus tard, on trouve tout le mdp 6
2.5 Un autre exemple : SHA-1 2.5.1 Description Norme américaine depuis 1995, conçue par la NSA Sortie et IV de 160 bits Fonction de compression 160 512 bits. Le bloc de 512 bits sert à initialiser un énorme tableau W de 80 mots de 32 bits. La fonction de compression itère 80 tours du procédé décrit à droite, et rajoute la valeur initiale de (A,B,C,D,E) Le plus gros changement entre MD5 et SHA-1 est l expansion du message. Un tour coute 10 cycles. On a plus de tour. SHA-1 est a peu près deux fois plus lent que MD5. 2.5.2 Dernières nouvelles sur SHA-1 Aout 2004 : Joux trouve des collisions pour SHA-0 Aout 2005 : Wang et al. annoncent une attaque théorique en 2 63 pour trouver des collisions sur SHA-1 Aout 2006 : Joux annonce une amélioration en 2 61 Mars 2007 : une équipe autrichienne présente des collisions pour SHA-1 réduit à 70 tours, et lance en aout 2007 un calcul distribué pour SHA-1. Estimation : 2 61 compressions A long terme (d ici 2010), SHA-1 va disparaitre 2.6 SHA-3 Par quoi il faut remplacer SHA-1? Le NIST a lancé une compétition de fonctions de hachage. Empreintes de 224, 256, 384 ou 512 bits. Il y aurait 64 candidats et le gagnant sera choisi en 2012. 2.6.1 Fonctions candidats MD6 (Rivest, etc) SKEIN (Schneier, etc) FUGUE (IBM) CUBEHASH (DJB, inventeur AES) KECCUK (Rijmen, etc) 7
2.7 Le hachage en pratique Benchmarks pour un Celeron à 850MHz MD5 : 101 Mo/s SHA-1 : 48 Mo/s SHA-256 : 25 Mo/s SHA-512 : 8 Mo/s 2.8 Applications du hachage 2.8.1 Exemples Signatures : au lieu de signer un long message, on signe son empreinte Intégrité : stocker / transmettre de façon sûre une empreinte de la donnée Construction de fonction cryptographiques Renforcer la sécurité de certaines fonctions cryptographiques Mise en gage : Soit H une fonction de hachage Supposons que l on choisisse un bit b, mais que l on ne veuille pas révéler ce bit maintenant. On choisit alors une donnée x de 128 bits, et l on révèle h=h(b x) ce qui ne révèle aucune information sur b. Plus tard, on révèle le bit b En révélant aussi x, les autres peuvent s assurer qu effectivement l on connaissait b lorsqu on a donné h, en vérifiant que h=h(b x) En d autres termes, on a mis en gage le bit b lorsqu on a dévoilé h 2.8.2 Du hash contre les spams Supposons que chaque email m soit accompagné d un certificat c tel que le haché de la concaténation de m avec c commence par 20 bits nuls La validité de c se vérifie facilement : tout le monde peut calculer le haché et vérifier qu il commence par suffisamment de zéros Cependant, pour calculer un c valide, la seule méthode efficace connue est la recherche exhaustive : en moyenne, étant donné m, il faut 2 20 évaluations de la fonction de hachage pour trouver un bon c Cela assure que l expéditeur a passé un certain temps avant de pouvoir envoyer un message 8
Chapitre 3 Générateurs pseudo-aléatoires 3.1 Description 3.1.1 Caractéristiques L entrée est une petite donnée secrète : la graine. Ca pourrait être un mot de passe, ou la sortie d une source parfaite d aléa La sortie est un flot de bits pseudo-aléatoires Ne jamais utilise les dénérateurs fournis par le système d exploitation ou parl e langage de programmation. La plupart sont "mauvais", notamment les générateurs linéaires congruentiels Un générateur cryptographique est différent d un générateur usuel 3.1.2 Contraintes de sécurité D un point de vue cryptographique, la sortie doit être indistinguable d un flot de bits véritablement aléatoires. Si je vous donne deux flots, l un purement aléatoire, et l autre issu du générateur, vous ne devez pas être capable de dire lequel est le flot aléatoire avec probabilité plus grande que 1 2 Si je produis 1Go avec ce générateur, que je supprime le dernier bit, vous ne devez pas être capable de deviner la valeur du bit supprimé avec une probabilité plus grande que 1 2 Le générateur utilisé dans la norme PKCS#1 de RSA : On part d une bonne fonction de hachage, seules SHA-1 et SHA-256/384/512 sont recommandées A partir de quand tombe-t-on sur un cycle? 9
3.2 Applications des générateurs pseudo-aléatoires Génération de clefs cryptigraphiques La génération de véritable aléa coûte cher : mieux vaut produire un petit aléa et l étendre par un générateur Source d aléa pour beaucoup de fonctions cryptographiques Considérons le masque jetable oû le message est xoré avec une clef aussi longue que le message. Au lieux d utiliser une longue clef, on utilise une petite clef secrète, et l on en dérive un flot arbitrairement long de bits pseudoaléatoires, que l pon xore avec le message. C est le principe des stream ciphers (chiffrement par flot) 10
Chapitre 4 Cryptographie symétrique 4.1 Introduction Une clef secrète est partagée par au moins deux personnes. Ces personnes ont des rôles symétriques Chiffrement Chiffrement par flot : la clef (plus éventuellement une IV) produit un flot de bits pseudo-aléatoires qui sont xorés avec le texte clair Chiffrement par bloc (block cipher) : la clef dévfinit une permutation sur de petits blocs (64 ou 128 bits par exemples). Cette permutation est utilisée de nombreuses fois par les modes d opération pour chiffrer des messages arbitrairement long Dans les deux cas, il est ompossible de vérifier si un texte clair correspond à un texte chiffré, sans connaitre la clef secrète Authentification MAC (Messsge Authentification Code) : c est comme une fonction de hachage dépendant d une clef Si on a le choix, on préfère faire du chiffrement par bloc. Par contre, certains algos de chiffrement par flot sont plus rapides que le chiffrement par bloc. On préfère par fois donc faire du chiffrement par flot. Différence : chiffrement par flot génération de bits pseudo-aléatoires. Chiffrement par bloc permutation de blocs pseudo-aléatoires. 11
4.2 Chiffrement par flot 4.2.1 Description En entrée Un flot de données M représentant le message Une clef ecrète K, typiquement 128 bits Une valeur initiale IV, typiquement 64 à 128 bits En sortie : un flot C représentant le chiffré Aujourd hui, le chiffrement par flot le plus répandu est le chiffrement par flot dit synchrone, oû le flot C n est autre que le XOR de M avec un flot pseudo-aléatoire généré uniquement à partir de K et IV Historiquement, les meachines telles qu ENIGMA faisaient du chiffrement par flot asynchrone 4.2.2 Le chiffrement par flot, aujourd hui Bien adapté aux communications radiotéléphoniques Pas ou peu de propagation des erreurs : un bit erroné ne perturbe qu un bit du clair Débit très élevé, souvent un peu plus qu en chiffrement par bloc Implémentation simple, notamment en hard : peu de portes logiques Le projet estream Issu du réseau européen ECRYPT, il a sélectionné au bout de 4 ans 8 algorithmes de chiffrement par flot, libres de tout droit 4 pour le profil soft 4 pour le profil hard, dont un déjà cassé Voir www.ecrypt.eu.org/stream/ 4.2.3 Algorithmes célèbres RC4 utilisé dans SSL et WEP. C est un algorithme unique en son genre. Bien adapté au soft sur 8 bits. A5/1 utilisé dans les téléphones mobiles GSM. A5/1 adopte un design très répandu : c est une combinaison d algorithmes de base, les LFSR, très rapides en hard et très peu coûteux en termes de portes logiques Même principe pour E0 (Bluetooth) Performances : nombre de cycles sur un Pentium 12
RC4 : 4000 cycles pour changer une clef, 20 cycles pour chiffrer un octet A5/1 :? cycles pour changer une clef, 80 cycles pour chiffrer un octet (pas adapté pour les PC) 4.2.4 Principe du chiffrement par flot (synchrone) Pour avoir une sécurité inconditionnelle, il faut que la clef soit aussi longue que le message, et que toutes les clefs soient équiprobables. C est le cas du chiffrement de Vernam ou masque jetable. Chiffrement par flot : à la place de la longue clef secrète, on utilise un flot pseudo-aléatoire généré par une petite clef secrète et une petite IV. La sécurité n est plus inconditionnelle. On ne doit jamais utiliser deux fois le même IV (a cause du XOR). Concrêtement, en chiffrement, l IV permet de générer un chiffrement différent pour un même message avec une même clef. 4.2.5 Sécurité du chiffrement par flot Objectif : le flot doit être indistinguable d un flot aléatoire On souhaite que la meilleure attaque connue soit la recherche exhaustive sur la clef secrète 4.3 L algorithme RC4 Inventé en 1987 par Ron Rivest de RSA : Ron s Cipher 4 Il n a rien à voir avec RC5 et RC6 qui sont des algorithmes de chiffrement par bloc Divulgué anonymement en 1994 Uitlisé dans SSL (Secure Sockets Layer) et WEP 802.11b. Intégré dans Windows, Lotus Notes, Oracle Secure SQL, etc. L état interne est composé de deux octets i et j, et d une permutation de l ensemble à 256 éléments, représentée comme un tableau S de 256 octets. Le nombre d états possibles avoisine donc les 1700 bits! La clef secrète varie entre 40 et 256 bits. 13