370 likes | 764 Views
. Plan du tutorial. IntroductionLes outils : algorithmes sym
E N D
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 :
ConfusionLes 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é commercialeLe 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