1 / 37

Tutorial cryptologie

. Plan du tutorial. IntroductionLes outils : algorithmes sym

romney
Download Presentation

Tutorial cryptologie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1.

    2. Plan du tutorial Introduction Les outils : algorithmes symétriques Algorithmes par bloc Générateur de pseudo-aléa 3. Les outils : algorithmes asymétriques Le protocole Diffie-Hellman L’exemple du RSA en mode chiffrement et signature Les 2 familles de cryptosystèmes hybrides

    3. Assurer la confidentialité La donnée ne peut être lue que par les personnes ayant le besoin d’en connaître Assurer l’intégrité La donnée n’a pas été modifiée Assurer l’authenticité La donnée provient bien d’une certaine source Assurer la non répudiation Signature électronique avancée Nouveaux besoins liés au développement de l’Internet et des réseaux de télécommunications : Preuve sans divulgation Partage de secret .../…

    4. Cryptographie symétrique Commentaires: Les clés doivent rester secrètes Les clés sont générées aléatoirement Les clés doivent être renouvelées périodiquement Aujourd’hui, taille de clés minimum de l’ordre de 80 bits. 128 bits semble être raisonnable. Commentaires: Les clés doivent rester secrètes Les clés sont générées aléatoirement Les clés doivent être renouvelées périodiquement Aujourd’hui, taille de clés minimum de l’ordre de 80 bits. 128 bits semble être raisonnable.

    5. Cryptographie symétrique Principe de conception élémentaire d’un cryptosystème Traitement itératif des messages (clairs ou chiffres) par bit ou par bloc de longueur fixe pour respecter les principes de diffusion et de confusion de Shannon , i.e : Confusion Les statistiques du cryptogramme doivent dépendrent des statistiques du clair d’une façon suffisamment compliquée pour ne pas être exploitable par le cryptanalyste Diffusion : chaque symbole du clair et de la clé doit influencer chaque symbole du chiffre 2 catégories de cryptosystèmes symétriques : cryptosystèmes par blocs : DES, AES en continu (stream cipher) : générateur de pseudo-aléa

    6. One-time pad Système créé par Vernam M et C sont de même longueur, K doit être au moins aussi long que C Cet algorithme est le seul théoriquement sûr si : la clé est un aléa parfait la clé est détruite après utilisation H(M |C)=H(M), i.e C n ’apporte aucune information sur M Exemple : le téléphone rouge Inconvénient : génération et transport de l’aléa

    7. Algorithmes symétriques Deux techniques fondamentales de conception : substitution = permutation sur un alphabet indexée par une clé secrète, i.e : S? (m1,….,mn)= ( ?(m1),….,?(mn) ) ou « la clé ? » est une permutation « aléatoire » sur l ’ensemble M des messages. exemples: le chiffrement par décalage : M=Zn et ?(x)=x?b mod n où b est un élément de Zn .b est la clé : le nombre de clés possibles est égal à n. ( Chiffrement der CESAR :n=26,b=3); transposition = permutation des positions des éléments d’une suite finie T(m1,….,mn)=m?(1),...., m?(n) avec ? permutation sur {1,…,n} Employées seules, ces deux techniques sont non-sûres une simple analyse de fréquence linguistique permet de cryptanalyser un chiffrement par substitution ou par transposition

    8. Principe général d’un algorithme par bloc : on définit une opération élémentaire qui comporte au moins une opération non linéaire(exemple schéma de Feistel du DES) la ronde est itérée n fois : propage la diffusion et la confusion sur tout le bloc de chiffre longueur du message = longueur du bloc Exemples : Data Encryption Standard (DES), blocs : 64 bits / clé : 56 bits International Data Encryption Algorithm (IDEA), blocs : 64 bits / clé : 128 bits AES (nouveau standard): 128 bits / clés variables de 128 à 256 bits

    9. Objectif : élaborer une suite pseudo aléatoire à partir d’un algorithme, une clé et un message en clair Problème : l’opération doit être réversible : la transformation doit donc être bijective Apport de Feistel : méthode permettant de construire facilement une fonction bijective à partir de n’importe quelle fonction booléenne non linéaire. Objectif : élaborer une suite pseudo aléatoire à partir d’un algorithme, une clé et un message en clair Problème : l’opération doit être réversible : la transformation doit donc être bijective Apport de Feistel : méthode permettant de construire facilement une fonction bijective à partir de n’importe quelle fonction booléenne non linéaire.

    10. Algorithmes par bloc Le nouveau Standard AES Historique : En 1998 : décryptage du DES grâce à un processeur dédié valant la somme dérisoire de 250 k€ Le DES s’étant largement répandu dans les communications bancaires ?nécessité de définir un nouveau standard En 1998 : appel à candidature du NIST pour trouver un successeur au DES en octobre 2000 : choix de l’algorithme Rijndael qui a pris le nom d’AES (Advanced Encryption Standard)

    11. Cahier des charges du nouvel algorithme Public mais également utilisable dans le monde bancaire et militaire Sécurité supérieure au TDES et plus performant Traitant des blocs de taille >128 bits avec des tailles de clé variables (128 à 256 bits) Flexible pour une grande gamme d’implémentations Critères d’évaluation Sécurité comparée des candidats Rapidité de l'algorithme: mise à la clef, changement de clef, chiffrement, Taille du code, Ram exigée, #portes logiques Flexibilité: taille variable des clefs, des blocs Efficacité des implémentations: 8 bits, 32 bits, réseaux ATM, voix, communications satellites,RNIS, TVHD,cartes à puces Le 12 septembre 1997, le NIST a lancé un appel à contribution pour remplacer le DES sous le nom de «  Advanced Encryption Standard». Le cahier des charges du nouvel algorithme de chiffrement par bloc spécifiait notamment que : L’AES devait supporter des longueurs de clé égales à 128,192 et 256 bits; L’AES devait être libre de droit dans le monde entier. La date de limite de dépôts était fixée au 15 Juin 1998. Des 21 cryptosystèmes soumis, 15 remplissaient tous le critères nécessaires et furent acceptés comme candidats AES. Le NIST a présenté les 15 candidats AES lors de la «  First Candidate Conference». A l’issue de la « Second Candidate Conference  », cinq candidats furent choisis par le NIST comme finaliste : MARS,RC6,Rijndael, Serpent et Twofish. Enfin, suite à la « Third Candidate Conference » qui eu lieu en avril 2000,  l’algorithme Rijndael fut déclaré gagnant le 2 septembre 2000. La standardisation de l’AES fut officialisée par la publication FIPS 197 dans le Federal Register le 4 décembre 2001. L’algorithme Rijndael a été inventé par deux chercheurs belges : Joan Daemen et Vincent Rijmen. Le 12 septembre 1997, le NIST a lancé un appel à contribution pour remplacer le DES sous le nom de «  Advanced Encryption Standard». Le cahier des charges du nouvel algorithme de chiffrement par bloc spécifiait notamment que : L’AES devait supporter des longueurs de clé égales à 128,192 et 256 bits; L’AES devait être libre de droit dans le monde entier. La date de limite de dépôts était fixée au 15 Juin 1998. Des 21 cryptosystèmes soumis, 15 remplissaient tous le critères nécessaires et furent acceptés comme candidats AES. Le NIST a présenté les 15 candidats AES lors de la «  First Candidate Conference». A l’issue de la « Second Candidate Conference  », cinq candidats furent choisis par le NIST comme finaliste : MARS,RC6,Rijndael, Serpent et Twofish. Enfin, suite à la « Third Candidate Conference » qui eu lieu en avril 2000,  l’algorithme Rijndael fut déclaré gagnant le 2 septembre 2000. La standardisation de l’AES fut officialisée par la publication FIPS 197 dans le Federal Register le 4 décembre 2001. L’algorithme Rijndael a été inventé par deux chercheurs belges : Joan Daemen et Vincent Rijmen.

    12. Algorithmes par blocs Modes d’opération Modes non chaînés ou « non FeedBack mode »  (ECB,CTR,…) Ces modes traitent les blocs de clairs de manière indépendante (ex: déchiffrement aléatoire dans une Base de donnée) efficacité d’implémentation en logiciel et en Hard (parallélisation des calculs) : mode adapté pour la cryptographie haut débit Simplicité d’implémentation pour le mode CTR : le chiffrement et le déchiffrement ne dépend que de E Pour le mode ECB, : l’entropie du clair se retrouve dans le cryptogramme, donc s’il l’espace des messages est de taille réduite : possibilité de construire un carnet de codage Problème des modes non feedback : pas de service d’intégrité Les modes chaînés ou « FeedBack mode »  sont par nature des modes séquentiels (ex : CBC, CFB, OFB, IACBC, IAPM, PCBC…) . Il offrent une sécurité accrue et sont donc utilisés plus souvent que les modes non-chaînés. Ce gain de sécurité implique nécessairement baisse des performances du composant cryptographique en terme de débit. En effet, ces modes engendrent une dépendance très forte entre les blocs de cryptogramme. Le calcul d’un cryptogramme ne peut s’effectuer que lorsqu’au moins le cryptogramme précédent a été traité. Cette restriction a bien entendu un impact fort sur les spécifications de l’implémentation matérielle d’un équipement de sécurité puisque aucun parallélisme sur les composants cryptographiques ne peut être exploité nativement pendant le traitement d’un même flot de données. Toutes les techniques pour accroître les débits utilisant des principes de parallélisation, notamment le pipelining, ne peuvent être utilisées efficacement que sur des flots de données indépendants.Les modes chaînés ou « FeedBack mode »  sont par nature des modes séquentiels (ex : CBC, CFB, OFB, IACBC, IAPM, PCBC…) . Il offrent une sécurité accrue et sont donc utilisés plus souvent que les modes non-chaînés. Ce gain de sécurité implique nécessairement baisse des performances du composant cryptographique en terme de débit. En effet, ces modes engendrent une dépendance très forte entre les blocs de cryptogramme. Le calcul d’un cryptogramme ne peut s’effectuer que lorsqu’au moins le cryptogramme précédent a été traité. Cette restriction a bien entendu un impact fort sur les spécifications de l’implémentation matérielle d’un équipement de sécurité puisque aucun parallélisme sur les composants cryptographiques ne peut être exploité nativement pendant le traitement d’un même flot de données. Toutes les techniques pour accroître les débits utilisant des principes de parallélisation, notamment le pipelining, ne peuvent être utilisées efficacement que sur des flots de données indépendants.

    13. Algorithmes par blocs Mode ECB et CTR Le mode dictionnaire est le mode le plus naturel. Les blocs sont chiffrés indépendamment les uns des autres. C’est le seul qui soit totalement parallélisable, il n’offre donc pas de service d’intégrité. Par ailleurs, à clé fixée deux messages identiques donnent deux cryptogrammes identiques et la redondance du clair se retrouve dans le cryptogramme Le mode dictionnaire est le mode le plus naturel. Les blocs sont chiffrés indépendamment les uns des autres. C’est le seul qui soit totalement parallélisable, il n’offre donc pas de service d’intégrité. Par ailleurs, à clé fixée deux messages identiques donnent deux cryptogrammes identiques et la redondance du clair se retrouve dans le cryptogramme

    14. Algorithmes par bloc : mode chaînés Modes chaînés « FeedBack mode » . Ces modes sont par nature des modes séquentiels (ex : CBC, CFB, OFB, …/…) . Le calcul d’un cryptogramme ne peut s’effectuer que lorsqu’au moins le cryptogramme précédent a été traité; sécurité accrue et sont donc utilisés plus souvent que les modes non-chaînés, Ce gain de sécurité implique nécessairement baisse des performances. Certains modes permettent d’assurer conjointement un service de confidentialité et d’intégrité (Ex: IACBC,…) Possibilité de pré-traitements. Le fait que le procédé de chiffrement soit indépendant de M permet d’effectuer naturellement le pré-traitement de la suite . Accès aléatoire. Comme pour le mode dictionnaire (ECB), chaque bloc peut être chiffré ou déchiffré de manière indépendante; Messages de taille arbitraire. A l’instar d’autres modes d’opérations, le traitement de messages de taille arbitraire est trivial. Il n’y a pas de perte de bit et donc pas besoin de bourrage. Preuve de sécurité. On peut montrer que les propriétés décrites ci dessus n’induisent pas de failles de sécurité. Le mode compteur présente néanmoins les désavantages suivants : Pas de service d’intégrité. Le mode compteur ne fournit pas nativement de service d’intégrité de données. Comme pour les autres modes standardisés par le NIST, il est bien entendu toujours possible d’adjoindre un MAC (Message Authentication Code ) au cryptogramme . Cette technique aura pour effet de diminuer sensiblement le débit du composant cryptographique. Pas de propagation d’erreur. Si une erreur apparaît sur un bit d’un bloc de cryptogramme, après déchiffrement, l’erreur est localisée sur le même bit du bloc de clair correspondant. Sensibilité aux erreurs d’implémentation et d’utilisation. Il est fondamental de ne pas réutiliser la valeur du compteur, deux initialisations identiques donnant la même suite de pseudo-aléa. Possibilité de pré-traitements. Le fait que le procédé de chiffrement soit indépendant de M permet d’effectuer naturellement le pré-traitement de la suite . Accès aléatoire. Comme pour le mode dictionnaire (ECB), chaque bloc peut être chiffré ou déchiffré de manière indépendante; Messages de taille arbitraire. A l’instar d’autres modes d’opérations, le traitement de messages de taille arbitraire est trivial. Il n’y a pas de perte de bit et donc pas besoin de bourrage. Preuve de sécurité. On peut montrer que les propriétés décrites ci dessus n’induisent pas de failles de sécurité. Le mode compteur présente néanmoins les désavantages suivants : Pas de service d’intégrité. Le mode compteur ne fournit pas nativement de service d’intégrité de données. Comme pour les autres modes standardisés par le NIST, il est bien entendu toujours possible d’adjoindre un MAC (Message Authentication Code ) au cryptogramme . Cette technique aura pour effet de diminuer sensiblement le débit du composant cryptographique. Pas de propagation d’erreur. Si une erreur apparaît sur un bit d’un bloc de cryptogramme, après déchiffrement, l’erreur est localisée sur le même bit du bloc de clair correspondant. Sensibilité aux erreurs d’implémentation et d’utilisation. Il est fondamental de ne pas réutiliser la valeur du compteur, deux initialisations identiques donnant la même suite de pseudo-aléa.

    15. Algorithmes par bloc : mode CBC Propriétés du mode CBC : algorithme auto synchronisant par rapport aux erreurs de transmission : si une erreur apparaît sur le bloc Ci mais pas sur Ci+1 alors le bloc Ci+2 est correctement déchiffré Valeur initiale de l’IV : publique mais aléatoire et intègre Attention le mode CBC ne doit pas être utilisé pour réaliser un service d’intégrité Ce mode est pour l’instant le seul mode chaîné standardisé par le NIST. A l’instar des autres modes standardisés par le NIST, il ne peut pas utilisé pour réaliser un service d’intégrité de données. (cf. planches suivantes). Ce mode est pour l’instant le seul mode chaîné standardisé par le NIST. A l’instar des autres modes standardisés par le NIST, il ne peut pas utilisé pour réaliser un service d’intégrité de données. (cf. planches suivantes).

    16. Algorithmes par blocs Les attaques Les attaques théoriques Cryptanalyse linéaire et différentielle (attaques à clair choisies) Objectif : casser les rondes et trouver la dernière sous-clé Principe : une variation ?M sur un message M produit une variation ?C sur le chiffre C. Le cryptanalyste recherche des valeurs particulières de ?M qui engendrent un ?C connu avec une probabilité anormale. Pour de « bons » algorithmes : Recherches exhaustive de l’attaquant Attaques « physiques » non intrusives  Attaques SPA, DPA, Timing Attacks Commentaires : Commentaires :

    17. Chiffrement en continu Le générateur continu est un GPA utilisant pour graine la clé K le flux de sortie est additionné avec le message clair (xor) Exemple de générateur continu : tout algorithme de chiffrement symétrique utilisé en mode CFB Permet de simuler le One Time PAD Très utilisé dans le monde des communications satellites et téléphonique

    18. Générateurs pseudo-aléatoires un générateur binaire pseudo-aléatoire (GPA) est : une fonction facilement calculable de l’espace des graines (seed) G vers l’espace des suites semi-infinies S telle que ? g ? G, le pseudo-aléa s = GPA(g) a les caractéristiques suivantes : période longue pour tout k, les 2k k-uplets apparaissent de façon équiprobable étant donné s(0)..s(i), la valeur s(i+1) est imprévisible (sans connaître g) remarque : un pseudo-aléa n’est pas un aléa (au sens de la complexité) ! Aucun algorithmes civils standards (RC4,RC5,A5/1…) Très utilisé dans le monde militaire

    19. Mode autoclave (clair ou chiffre) permet de faire de l’intégrité Nécessite une synchronisation parfaite propagation des erreurs

    20. Mode autoclave autosynchronisant propagation des erreurs < d bits se synchronise automatiquement après réception de d bits corrects de crypto (très utile pour des lignes à fort taux d’erreurs)

    21. Objectif : obtenir un aléa « vrai » au sens de théorie de la complexité. L’aléa pur est fondamental en cryptologie Principe de conception Utilisation d’une source d’aléa physique Amplification du bruit d’un composant actif Échantillonnage d’une horloge synchrone par une horloge asynchrone Et d’un algorithme déterministe pour lisser les biais résiduels Attention : Il est très facile d’introduire des trappes dans un générateur d’aléa Ex : principe de la réduction d’entropie couplé avec un algorithme de chiffrement dont l’initialisation est connue seule du concepteur On ne doit jamais faire confiance à un générateur d’aléa dont on ne maîtrise pas les principes de conception

    22. Fonctions de hachage Deux familles de fonctions de Hachage : Fonction de hachage à clef (Keyed Hash functions) Exemple d’utilisation : Intégrité des messages (MAC) Fonction de Hachage sans clef Exemples d’utilisation : dans une base de vérification de mot de passe, stockage seulement des hachés (ex: Mot de passe Unix) Signatures électroniques (Cf. cryptographie asymétrique) Hachage : propriétés désirées Entrées de taille arbitraire (Compression initiale de l’entrée) Résultat sur une taille fixe (160, 256, … bits)

    23. Fonctions de hachage Hachage propriétés désirées Non-inversible : sachant y, il est difficile de trouver x tel que H(x) = y Sans collision : il est difficile de trouver x et x’ tels que H(x) = H(x’). (Attaque des anniversaires) Facilité de calcul : étant donné une entrée x et la fonction h, H(x) est « facile » à calculer, itération d’une fonction élémentaire Entrées de taille arbitraire (Compression initiale de l’entrée) Résultat sur une taille fixe (160, 256, … bits) Nouveaux standards de Hachage (FIPS 180-2) Exemple d’utilisation : Dans une base de vérification de mot de passe, stockage seulement des hachés, pour les signatures (asymétriques) Exemple d’utilisation : Dans une base de vérification de mot de passe, stockage seulement des hachés, pour les signatures (asymétriques)

    24. Cryptographie asymétrique : les besoins Problème de la distribution et de la gestion des clefs symétriques dans des grands systèmes ouverts et mal hiérarchisés N nœuds ? maillage de tunnels n x n ? n² clefs à gérer Même type de problème que pour les tables de routage Problème du séquestre par un serveur de clé symétrique Un point unique (le serveur de clefs) connaît toutes les clefs de tout le monde ? confiance ? Besoin de base : mis en accord publique sur un secret commun sans distribution de confiance préalable La naissance de la cryptographie à clef publique Le problème de la distribution de clef a tourmenté les cryptologues à travers l’histoire. Par exemple, pendant la seconde guerre mondiale l’état major de l’armée allemande devait distribuer mensuellement à tous les opérateurs de la machine de chiffrement Enigma la liste des clefs journalières. Le problème de logistique était donc énorme, en particulier pour les U-boats qui devaient d’une façon ou d’une autre obtenir un annuaire de clefs valides malgré l’éloignement fréquent de leur base d’origine. Les nombreuses compromissions de clefs et les erreurs de manipulation des opérateurs ont dans la pratique facilitées le décryptement de la machine Enigma. Ainsi, dans un système de chiffrement traditionnel ou symétrique, l’émetteur et le destinataire doivent posséder un secret commun pour s’échanger des données de manière sécurisée. Ce secret commun doit être distribué aux deux intervenants par un moyen de communication sûr. Dans ce type de système, la gestion des clefs des utilisateurs ne peut donc pas s’affranchir d’une autorité de confiance centralisant la génération et la distribution des clefs. Pendant la seconde guerre mondiale, les clés secrètes étaient par exemple générées par les états majors et distribuées par enveloppe cachetée par un officier habilité. Dans ce contexte, la « libéralisation » des échanges sécurisés sur un réseau public ne pouvait être solutionnée que par la résolution du problème de mise en accord sur un secret commun suivant : Deux personnes, disons Alice et Bob, désirent communiquer de manière sécurisée sur un canal non sûr ( par exemple le réseau Internet) en utilisant un algorithme à clef secrète. Néanmoins, ils ne possèdent pas de secret commun indispensable pour initialiser leur algorithme symétrique. Comment peuvent t’ils alors, sans solliciter un tiers de confiance, se mettre d’accord publiquement sur un secret commun? La naissance de la cryptographie à clef publique Le problème de la distribution de clef a tourmenté les cryptologues à travers l’histoire. Par exemple, pendant la seconde guerre mondiale l’état major de l’armée allemande devait distribuer mensuellement à tous les opérateurs de la machine de chiffrement Enigma la liste des clefs journalières. Le problème de logistique était donc énorme, en particulier pour les U-boats qui devaient d’une façon ou d’une autre obtenir un annuaire de clefs valides malgré l’éloignement fréquent de leur base d’origine. Les nombreuses compromissions de clefs et les erreurs de manipulation des opérateurs ont dans la pratique facilitées le décryptement de la machine Enigma. Ainsi, dans un système de chiffrement traditionnel ou symétrique, l’émetteur et le destinataire doivent posséder un secret commun pour s’échanger des données de manière sécurisée. Ce secret commun doit être distribué aux deux intervenants par un moyen de communication sûr. Dans ce type de système, la gestion des clefs des utilisateurs ne peut donc pas s’affranchir d’une autorité de confiance centralisant la génération et la distribution des clefs. Pendant la seconde guerre mondiale, les clés secrètes étaient par exemple générées par les états majors et distribuées par enveloppe cachetée par un officier habilité. Dans ce contexte, la « libéralisation » des échanges sécurisés sur un réseau public ne pouvait être solutionnée que par la résolution du problème de mise en accord sur un secret commun suivant : Deux personnes, disons Alice et Bob, désirent communiquer de manière sécurisée sur un canal non sûr ( par exemple le réseau Internet) en utilisant un algorithme à clef secrète. Néanmoins, ils ne possèdent pas de secret commun indispensable pour initialiser leur algorithme symétrique. Comment peuvent t’ils alors, sans solliciter un tiers de confiance, se mettre d’accord publiquement sur un secret commun?

    25. Malheureusement, il n’est pas aussi facile dans la pratique de quantifier formellement la «difficulté d’inverser» une fonction f. Pour trouver des candidats concrets, les premiers systèmes à clé publiques ont utilisé l’arithmétique modulaire : c’est en effet une branche des mathématiques riche en fonctions à sens unique. En arithmétique modulaire, les mathématiciens considèrent un ensemble fini de nombres entiers arrangés en cycle, de manière semblable aux nombres figurant sur une horloge. Cette discipline est en réalité assez simple, on l’utilise inconsciemment tous les jours lorsqu’on donne l’heure. Considérons par exemple une horloge avec 7 chiffres numérotées de 0 à 6. Pour effectuer l’addition de 2+3, on se positionne sur le chiffre 2 et on tourne l’aiguille de 3 chiffres pour atteindre le nombre 5. Pour effectuer l’addition de 2+6, on se positionne sur le chiffre 2 et on tourne l’aiguille de 6 chiffres pour atteindre le nombre 1. Ces résultats peuvent s’exprimer formellement de la manière suivante : 2+3?5 mod 7 et 2+6?1 mod 7 Les fonctions spécifiées sur un ensemble modulaire (on parle en réalité de groupe, anneau ou corps) ont tendance à se comporter de manière très irrégulière, ce qui peut potentiellement en faire de bons candidats pour des fonctions à sens unique. Cette irrégularité s’observe naturellement en comparant les valeurs de la fonction calculées en arithmétique modulaire à ses valeurs calculées en arithmétique usuelle (cf. Tableau 1).    Malheureusement, il n’est pas aussi facile dans la pratique de quantifier formellement la «difficulté d’inverser» une fonction f. Pour trouver des candidats concrets, les premiers systèmes à clé publiques ont utilisé l’arithmétique modulaire : c’est en effet une branche des mathématiques riche en fonctions à sens unique. En arithmétique modulaire, les mathématiciens considèrent un ensemble fini de nombres entiers arrangés en cycle, de manière semblable aux nombres figurant sur une horloge. Cette discipline est en réalité assez simple, on l’utilise inconsciemment tous les jours lorsqu’on donne l’heure. Considérons par exemple une horloge avec 7 chiffres numérotées de 0 à 6. Pour effectuer l’addition de 2+3, on se positionne sur le chiffre 2 et on tourne l’aiguille de 3 chiffres pour atteindre le nombre 5. Pour effectuer l’addition de 2+6, on se positionne sur le chiffre 2 et on tourne l’aiguille de 6 chiffres pour atteindre le nombre 1. Ces résultats peuvent s’exprimer formellement de la manière suivante : 2+3?5 mod 7 et 2+6?1 mod 7 Les fonctions spécifiées sur un ensemble modulaire (on parle en réalité de groupe, anneau ou corps) ont tendance à se comporter de manière très irrégulière, ce qui peut potentiellement en faire de bons candidats pour des fonctions à sens unique. Cette irrégularité s’observe naturellement en comparant les valeurs de la fonction calculées en arithmétique modulaire à ses valeurs calculées en arithmétique usuelle (cf. Tableau 1).    

    26. Exemple de fonction à sens unique: l ’exponentielle modulaire Ces deux opérations confèrent à l’ensemble Zn une structure d’anneau ; et en particulier (Zn ,+) a une structure de groupe. Ce n’est pas toujours le cas de (Zn \{0}, ?) : par exemple dans (Z10 \{0}, ?), 3 admet 7 pour inverse car 3?7=21?1 mod 21 mais l’inverse de 4 n’existe pas Ainsi, pour que (Zn \{0}, ?) soit un groupe, il faut ne conserver que les éléments inversibles de Zn \{0}, c’est à dire les éléments qui sont premiers avec n. On note cet ensemble Z*n. Lorsque n est un nombre premier, l’ensemble Z*n est égal à Zn \{0} et l’anneau (Zn, +, ?) devient un corps. Dans ce cas, le groupe Z*n est de plus cyclique. C’est à dire qu’il existe un élément ? (cf. protocole de Diffie Hellman) dont les puissances successives engendrent tous les éléments du groupe. On dit alors que le nombre ? est un générateur du groupe Z*n , i.e on a Z*n ={? i, 0= i< n-1}. Dans un corps fini, il est possible, comme dans le corps des réels, de diviser par tous les éléments non nuls. On peut donc y adapter tous les algorithmes (définis habituellement sur le corps des réels ) qui n’utilisent comme seules opérations que les opérations élémentaires +, ?, –, \ et le test d’égalité. C’est un des intérêts de ces structures : il est en effet bien plus facile d’implémenter, en logiciel ou en matériel, des calculs sur des entiers que sur des réels. Ces deux opérations confèrent à l’ensemble Zn une structure d’anneau ; et en particulier (Zn ,+) a une structure de groupe. Ce n’est pas toujours le cas de (Zn \{0}, ?) : par exemple dans (Z10 \{0}, ?), 3 admet 7 pour inverse car 3?7=21?1 mod 21 mais l’inverse de 4 n’existe pas Ainsi, pour que (Zn \{0}, ?) soit un groupe, il faut ne conserver que les éléments inversibles de Zn \{0}, c’est à dire les éléments qui sont premiers avec n. On note cet ensemble Z*n. Lorsque n est un nombre premier, l’ensemble Z*n est égal à Zn \{0} et l’anneau (Zn, +, ?) devient un corps. Dans ce cas, le groupe Z*n est de plus cyclique. C’est à dire qu’il existe un élément ? (cf. protocole de Diffie Hellman) dont les puissances successives engendrent tous les éléments du groupe. On dit alors que le nombre ? est un générateur du groupe Z*n , i.e on a Z*n ={? i, 0= i< n-1}. Dans un corps fini, il est possible, comme dans le corps des réels, de diviser par tous les éléments non nuls. On peut donc y adapter tous les algorithmes (définis habituellement sur le corps des réels ) qui n’utilisent comme seules opérations que les opérations élémentaires +, ?, –, \ et le test d’égalité. C’est un des intérêts de ces structures : il est en effet bien plus facile d’implémenter, en logiciel ou en matériel, des calculs sur des entiers que sur des réels.

    27. Mise en accord sur un secret commun Le protocole de Diffie-Hellman

    28. Casser le protocole de Diffie Hellman est équivalent au problème du logarithme discret Le schéma est peu sûr pour 512 bits mais offre un haut niveau de sécurité pour 1024 bits p-1 doit contenir un gros facteur premier pour résister aux algorithmes de calcul de calcul de logarithmes discrets Une version sécurisée de DH : le protocole STS (Station To Station) assure une authentification mutuelle des entités et explicite du secret partagé grâce à un mécanisme de chiffrement et signature.

    29. Cryptosystème asymétrique

    30. Remarques : l’asymétrique est calculatoirement moins efficace que le symétrique : chiffrement de 100 à 1000 fois plus lents à résistance égale clés ~10 fois plus longues à résistance égale les clés publiques doivent être authentifiées Premier cryptosystème à clé publique : Le RSA Conceptuellement assez éloigné de Diffie-Hellman La sécurité du RSA est calculatoire : sa robustesse repose sur la difficulté de factoriser un nombre qui est le produit de 2 grands nombres premiers Utilisé dans plus de 400 millions de logiciels, il est devenu un standard de fait (Standardisé dans les FIPS 140-2)

    31. Le crypto système RSA

    32. Le crypto système RSA La preuve que yd=xed=x modulo n utilise le Théorème de Fermat-Euler connu depuis le XVIII ème siècle : “ Soit ? (n) le nombre d’entiers >0 inférieurs à n et premiers avec n, alors si a est premier avec n on a : a? (n) =1 modulo n  ”. La preuve du RSA est alors très simple : On suppose que x est premier avec n (dans les cas peu probables où ce n’est pas le cas, on montre que la démonstration reste vraie), Alors yd=(xe)d=xed modulo n , mais comme ed=1 modulo ? (n) , la quantité ed-1 est un multiple de ?(n) , il existe donc un k tel que ed-1=k ?(n) donc xed = x (x ?(n))k = x modulo n

    33. Aucune attaques dévastatrices pour le moment : surtout des précautions de mise en oeuvre Attaque de Wiener si d <n0,292 alors on retrouve d à partir du calcul de pgcd(e,n), ce qui permet de factoriser n en temps polynomial RSA 512 bits a été cassé en 1999, RSA 1024 : sécurité commerciale Le protocole est généralisable à tous les groupes où le problème du logarithme discret est difficile exemple : le groupe des points d’une courbe elliptique : taille des clés moindre pour une sécurité équivalente : exemple un EC-RSA 192 bits est équivalent à un RSA 1024 bits sur Zp Attention : Il est aisé d’introduire des portes dérobées dans un générateur de clé RSA (Principe de Crépeau et Slakmon publié en 2002) : il est illusoire d’avoir une confiance aveugle dans un générateurs de clés dont on ne maîtrise ni la spécification ni la conception Sécurité du RSA

    34. Signature électronique Fait : avec un cryptosystème symétrique, la même clé est utilisée par les deux correspondants : on ne peut pas signer L’exemple de la signature RSA : Il suffit d’inverser le rôle de e de d (cf. planche suivante) Tout le monde peut vérifier la signature Seul, le signataire qui dispose de d a pu créer une signature valide vérifiable par e (fonction à sens unique) Il s’agit donc d’une signature et le signataire ne peut dénier avoir signé. Les standards de signature sont donnés dans la FIPS 186-2 (DSA,RSA, ECDSA) publié par le NIST

    35. Signature RSA Les clés publiques (na, ea) et (nb, eb) doivent être authentifiées. intérêt de f : intégrité de la signature : si on remplace f(x)db par xdb alors un attaquant C recouvre le message x en calculant seb

    36. La réalité pratique : la cryptographie à clef publique est utilisée pour la gestion des clés? 2 familles de cryptosystèmes hybrides Mise en accord sur un secret commun : Les entités émettrice et destinatrice se mettent publiquement d’accord sur un secret commun et l’utilise ensuite pour chiffrer les données grâce à une algorithmie symétrique classique (ex. SSL) Transport de clef : la crypto à clef publique est utilisée pour sécuriser le transport d’une clef symétrique. L’entité émettrice crée un secret (ou l’obtient), protège ce secret grâce à la cryptographie publique puis chiffre les données avec ce secret et enfin communique le tout à l’entité réceptrice. (ex PGP ) En symétrique : une autorité centrale partage une clé symétrique avec chacun de ses clients, appelée Clé de protection des Clés (KEK) la KEK est distribuée par un chemin de confiance les clés de session (utilisées entre les clients) sont distribuées à la demande en étant chiffrées avec la KEK exemple : serveurs de clés Kerberos En asymétrique : une autorité de certification (AC) possède une clé privée et distribue la clé publique correspondante à ses clients par un chemin de confiance l’AC certifie les clés publiques de ses clients les clients s’échangent leurs certificats pour obtenir les clés publiques (pas d ’intervention de l’AC nécessaire) En symétrique : une autorité centrale partage une clé symétrique avec chacun de ses clients, appelée Clé de protection des Clés (KEK) la KEK est distribuée par un chemin de confiance les clés de session (utilisées entre les clients) sont distribuées à la demande en étant chiffrées avec la KEK exemple : serveurs de clés Kerberos En asymétrique : une autorité de certification (AC) possède une clé privée et distribue la clé publique correspondante à ses clients par un chemin de confiance l’AC certifie les clés publiques de ses clients les clients s’échangent leurs certificats pour obtenir les clés publiques (pas d ’intervention de l’AC nécessaire)

    37. Transport sécurisé de clé symétrique en asymétrique

More Related