Cryptographie appliquée
Transcription
Cryptographie appliquée
Cryptographie appliquée ENSIIE – Avril 2014 Julien Raeis <julien [at] mingbai.org> Plan de cours 1. Cryptographie ? 2. Un peu d'histoire 3. Cryptographie symétrique 4. Fonctions de hachage 5. Cryptographie asymétrique 6. Attaques 7. Implémentations 8. Infrastructures de gestion de clés 9. Réseaux de confiance 10. Conclusion Cryptographie ? Objectifs ● ● Comprendre – les problématiques de sécurité de l'information – le rôle de la cryptographie dans la protection de l'information – les fonctionnalités cryptographiques fondamentales Connaître – des exemples de mécanismes cryptographiques – leur usage – leur statut de sécurité actuel Contexte ● Notre problème : – Protection d'un système d'information ● ● ● ● – Information numérique Communications sur des canaux publics Machines reliées par un réseau Multi-utilisateurs Protection des informations Besoins en sécurité ● Disponibilité – ● Intégrité (cryptographique) – ● Usurpation d'identité Confidentialité – ● Altération du contenu Authentification – ● Déni de service Espionnage Traçabilité / preuve – Répudiation du message Intégrité Propriété assurant que des données n’ont pas été modifiées ou détruites de façon non autorisée. Garantie que le système et l'information traitée ne sont modifiés que par une action volontaire et légitime. Authentification L'authentification a pour but de vérifier l'identité dont une entité se réclame. Généralement l'authentification est précédée d'une identification qui permet à cette entité de se faire reconnaître du système par un élément dont on l'a doté. Identification : permet de connaître l'identité Authentification : vérifie cette identité – À l'aide : d'un secret, d'un objet, d'un caractère (photo, biométrie), d'un savoir faire (signature) Confidentialité Propriété d’une information qui n’est ni disponible, ni divulguée aux personnes, entités ou processus non autorisés. En résumé : ● ● protection contre une divulgation non autorisée seulement vous et l'expéditeur connaissent l'information Traçabilité / preuve: La non-répudiation est le fait de ne pas pouvoir nier avoir participé à des échanges, totalement ou en partie. Deux formes de non-répudiation : – la « non-répudiation de l’origine » garantit que l’émetteur d’informations ne peut pas nier impunément avoir envoyé les informations – la « non-répudiation de la réception » garantit que le destinataire des informations ne peut pas nier impunément avoir reçu les informations La science du secret ● Définition ́ [Source : TLFi, http://frantext.atilf.fr/] Cryptographie (crypto-, du grec κρυπτoς, « caché ») ● ● Étude, science des écritures secrètes, des documents chiffrés Applications : – SSL/TLS, ssh, gpg, etc. – Carte bleue, téléphone portable, Wi-Fi, etc. Cryptologie ● Étude de la protection de l'information sous forme numérique contre des accès ou manipulations non-autorisées Cryptologie = cryptographie + cryptanalyse ● ● Cryptographie : conception des algorithmes crytographiques Cryptanalyse : évaluation de la sécurité des algorithmes cryptographiques Un empilement de couches Mécanismes cryptographiques Modes / padding / encapsulation Primitives Matériel Lois Protocoles Implémentations Mise en oeuvre globale Mécanismes fondamentaux ● Contrôle d'intégrité cryptographique – ● Génération de clés – ● Générateurs d'aléa Authentification de l'origine – ● Fonction de hachage Code d'authentification de message (MAC) ou signature Confidentialité – Chiffrement Modèle de communication ● Source Communication par canaux (Shannon) Codeur de source Codeur de canal Canal bruité Décodeur de canal Décodeur de source Puits Communication sans bruit Source Codeur de source Emetteur Codeur de canal Canal bruité Décodeur de canal Canal de communication public Décodeur de source Puits Récepteur Communication cryptographique Codeur de source Emetteur Codeur de canal Attaque passive Canal bruité Décodeur de canal Canal de communication public Dé-traitement cryptographique Source Traitement cryptographique Attaque active Décodeur de source Puits Récepteur Communication cryptographique Version « folklorique » Alice Eve Canal de communication public Dé-traitement cryptographique Charlie Traitement cryptographique ● Bob Besoins des clés ● ● Un algorithme – Est long à concevoir – Doit être transmis aux utilisateurs – Doit être pouvoir implémenté sur du matériel – Doit être maintenu Les algorithmes doivent-ils être secrets ? – Si non, quel est le secret ? Pour qui ? Authentification : réalisable par l'émetteur uniquement, vérifiable par n'importe qui Chiffrement : chiffrement réalisable par n'importe qui, déchiffrement uniquement par le récepteur Cryptographie sans clé ● Plusieurs mécanismes de cryptographie publics et sans clé – Générateurs d'aléa – Fonctions de hachage Vocabulaire ● Chiffrer / déchiffrer : on possède la clé – ● ● Décrypter (décryptage) : lire le contenu d'un message chiffré sans posséder la clé de déchiffrement Obscurcissement / Brouillage – ● Obfuscation / obfusquer Forgerie / contrefaçon – ● Crypter / encrypter / cryptage Forgery Malveillant – Malicieux Vocabulaire ● Encodage ≠ chiffrement – Transformation réversible – Sans secret / clé – Exemple : encodage en base 64 Un peu d'histoire Historique Antiquité XIXè siècle XVIè siècle Première Guerre mondiale Seconde Guerre mondiale 1976 : Diffie-Hellman 1977 : DES 1978 : RSA 1992 : MD5 1995 : SHA-1 1998 : AES 2001 : SHA-2 2013 : SHA-3 Cryptographie « classique » ● ● Méthodes de chiffrement antiques – Manuelles (« papier et crayon ») – Parfois utilisant une aide mécanique (scytale de Sparte) Algorithmes très simples – Substitutions (remplacements ou décalages) – Transpositions (création d'anagrammes) Quelques exemples ● ● Scytale de Sparte (~ 400 avant JC) – Chiffrement par transposition – La clé est le diamètre de la scytale Atbash (~ -500 avant JC) – ● Chiffrement par décalage (cas particulier de substitution) – Clair A B C D E F G H I – Chiffré Z Y X W V U T S R Q P O N M L K J I Cesar (~ -50 avant JC) – Chiffrement par décalage – E n ( x)=( x+n) mod 26 D n (x )=( x−n)mod 26 – – Exemple : J'AIME LA CRYPTOGRAPHIE, décalage : 5 ● ● J K L M N O P Q R S T U V WX Y Z Résultat : OFNRJ QFHWD UYTLW FUMNJ ROT13 ! H G F E D C B A Chiffrement par substitution : cryptanalyse ● Cas monoalphabétique – Analyse de fréquences ● ● – Attaque sur chiffré seul Inférence de la langue et de l'alphabet utilisés Calcul de l'indice de coïncidence ● ● Probabilité de répétitions des lettres du message chiffré Déduction du type de chiffrement et longueur probable de la clé q=Z ● Formule de calcul : IC = ∑ q= A n q (nq −1) n (n−1) Chiffrement par transposition : cryptanalyse ● ● La transposition (ou permutation) ne change pas les fréquences ni l'IC Attaque par clair-connu (Known-plaintext) – On connait des textes clairs et leurs chiffrés – On retrouve la longueur de la clé puis la clé Jusqu'au XVI ● ● ème siècle Cryptanalyse des substitutions monoalphabétiques vers 800 – Besoin d'améliorer les techniques pour complexifier les attaques – XVIème siècle très prolifique en ce sens Arrivée des chiffrements polyalphabétiques – Objectif : empêcher les analyses fréquentielles Chiffre de Vigenère (1586) ● ● Substitution polyalphabétique : – Version généralisée du chiffrement de César – Génération d'une clé de plusieurs caractères – Au lieu d'utiliser le même décalage pour chaque lettre, on utilise un décalage dépendant de chaque caractère de la clé – La sécurité dépend de la longueur de la clé Présenté au XVIè siècle, il n'a pas été cassé avant le XIXè ! – Cassé publiquement par l'officier prussien Friedrich Kasiski qui a publié sa méthode en 1863, confirmé par Charles Babbage – En réalité, créé par Giovan Battista Bellaso en 1533. Chiffre de Vigenère : exemple Texte clair : J'AIME LA CRYPTOGRAPHIE Clé : IIENS Clair J A I M E L A C R Y P T O G R A P H I E Clé I I E N S I I E N S I I E N S I I E N S Décalage 8 8 4 13 18 8 8 4 13 18 8 8 4 13 18 8 8 4 13 18 Chiffré R I M Z W T I G E Q X B S T J I X L V W Texte chiffré : RIMZW TIGEQ XBSTJ IXLVW Chiffre de Vigenère : cryptanalyse ● Cryptanalyse statistique : – Trouver la longueur de la clé par recherche de motifs ● ● – Recherche du PGCD des écarts entre les motifs Efficace surtout sur de longs textes Retour à un cas de substitution monoalphabétique ● Analyse de fréquence pour chaque caractère de la clé Du 19è siècle à la Seconde Guerre mondiale ● ● Les utilisations militaires se multiplient Formalisation des mécanismes cryptographiques – ● Principes de Kerckhoffs (1883) Améliorations des techniques existantes : – Algorithme « Playfair », basé sur la substitution polyalphabétique de digrammes – Chiffre de Vernam Principes de Kerckhoffs (1883) ● ● Traité de Kerckhoffs : « desiderata de la cryptographie militaire » : – Le système doit être matériellement, sinon mathématiquement, indéchiffrable – Il faut qu’il n’exige pas le secret, et qu’il puisse sans inconvénient tomber entre les mains de l’ennemi – La clef doit pouvoir en être communiquée et retenue sans le secours de notes écrites, et être changée ou modifiée au gré des correspondants – Il faut qu’il soit applicable à la correspondance télégraphique – Il faut qu’il soit portatif, et que son maniement ou son fonctionnement n’exige pas le concours de plusieurs personnes – Enfin, il est nécessaire, vu les circonstances qui en commandent l’application, que le système soit d’un usage facile, ne demandant ni tension d’esprit, ni la connaissance d’une longue série de règles à observer Maxime de Shannon : « L'ennemi connaît le système » Chiffre de Vernam (1917) ● ● Principe du masque jetable – Clé à usage unique de la taille du message en clair – Tirage aléatoire renforce encore le système (Mauborgne – 1918) Problèmes pratiques – Transmission de la clé ? ● ● ● – ● Par un canal sécurisé périodiquement Utilisation d'un « livre de codes » Génération simultanée des deux côtés par un algorithme prédéfini Aléa de la clé ? Très rarement utilisé – Téléphone rouge – Chiffrement manuel par les espions – Utilisé entre Fidel Castro et le Che Guevara dans les années 60 Seconde Guerre mondiale ● Industrialisation de la cryptographie – Utilisation de machines électromagnétiques ● ● ● Basées sur des chiffrements polyalphabétiques Sous forme de machines à écrire Exemples – 1939-44 : Enigma ● – Cassée en 1940 par les Alliés pour gagner un à deux ans de guerre... 1930-60 : Machines Hagelin ● Utilisées pas les Français pendant la Seconde Guerre mondiale et après Cryptographie moderne ● ● Depuis 1950, les moyens de calcul s'améliorent – Arrivée des ordinateurs – Explosion des capacités des processeurs Nouveaux canaux de communication – Arrivée d'Internet – Besoin d'échanger en temps réel – Les volumes à chiffrer explosent également... Cryptographie symétrique Principes ● ● ● Un secret est partagé entre les deux parties : – Opérations symétriques – Mécanisme de chiffrement Problématique – Nécessité de disposer d'un canal de confiance pour échanger ce secret – Authentification préalable ? On parle de clé secrète Principe de fonctionnement ● Alice souhaite écrire à Bob – Partage d'un secret préalable obligatoire Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Chiffrement Texte chiffré Déchiffrement Signé : Alice Familles ● ● Deux familles de chiffrement symétrique – Chiffrement par flot – Chiffrement par bloc Très proches en fait... Chiffrement par flot ● Principe : – Flot de données de taille arbitraire, possiblement infini – Clé secrète de taille finie échangée sur un canal sécurisé – Génération simultanée, des deux côtés, d'un flot pseudo-aléatoire de bits ● ● ● Algorithme de génération initialisé par la clé secrète A rapprocher du chiffrement de Vernam, mais le secret ici est la clé, pas le flot pseudo-aléatoire Opérations cryptographiques simples – Le flux généré est combiné au clair, bit à bit, à l'aide d'une opération réversible (XOR ou équivalent) – Très peu coûteux pour les implémentations matérielles Exemple ● Algorithme RC4 (1987) – Deux sous-algorithmes : ● KSA (Key-scheduling algorithm) – – ● PRGA (Pseudo-random generation algorithm) – – – A chaque itération, modification de l'état du tableau Application de la fonction de chiffrement (XOR ou addition dans un groupe) Très employé ● ● – Permutation dans un tableau S de 256 octets La clé sert à la permutation initiale (en général 40 à 128 bits, jusqu'à 2048 bits) Dans SSL/TLS, car très performant Dans le WEP (Wi-Fi) Considéré faible maintenant j i 0 1 2 S[i]+S[j] i j 253 254 255 S S[i] K S[i]+S[j] S[j] Chiffrement par flot : attaques ● Réutilisation de flot – A et B sont deux messages d'une même longueur, chiffrés avec la même clé – Soit C le flot pseudo-aléatoire généré par l'algorithme. Ce flot est de la même longueur que A et B. – ● E ( A)= A xor C ● E ( B)=B xorC Si un attaquant intercepte E(A) et E(B) alors : ● XOR est commutative ● X xor X =0 E ( A) xor E ( B)=( A xor C) xor(B xor C) = A xor B xor C xor C = A xor B Faiblesses du WEP ● ● Wired Equivalent Privacy – Algorithme de sécurité pour les réseaux 802.11 – Basé sur RC4 Secret de 64 ou 128 bits – En fait clé de 40/104 bits + IV de 24 bits – 24 bits → 50 % de chance de répétition tous les 5000 paquets – Cas de réutilisation de flot, avec des contenus de paquets prédictibles (voire injectés) ! Chiffrement par bloc ● ● Principe : – Opérations sur un flot généralement fini – (dé)chiffrement sur des blocs de taille fixe Découpage du flot selon la taille du bloc – Il faut parfois rajouter du padding M1 M2 M3 M4 M5 M6 padding EK EK EK EK EK EK C1 C2 C3 C4 C5 C6 Modes opératoires ● ● Opérations de (dé)chiffrement sur les blocs variés – En fonction des performances – De la sécurité – De la propagation d'erreurs au cours du chiffrement Plusieurs modes existent : – ECB, CBC, CFB, OFB, CTR, CTS, XTS... ECB - « Electronic Codebook » ● Quel est le problème ? ECB - « Electronic Codebook » ● On peut retrouver les motifs CBC - « Cipher Block Chaining » ● ● Chaînage des blocs Ajout d'un IV pour rendre chaque message unique CBC - « Cipher Block Chaining » ● Impossible à distinguer de l'aléa CFB - « Cipher Feedback » ● Permet le chiffrement par flot CTR - « CounTeR » ● Permet l'accès aléatoire et le chiffrement par flot Les algorithmes par bloc ● Historique : DES (Data Encryption Standard) en 1977 – Clef de 56 bits, blocs de 64 bits – Basé sur des réseaux de Feistel – Attaques : recherche exhaustive avec du matériel dédié (FPGA) ● ● ● – EFF « Deep Crack » (1998) : 56 heures, 250 000$ COPACOBANA (2006) : 6,4 jours de moyenne, 10 000$ RIVYERA S3-5000 (2008) : moins d'une journée, 128 FPGA Xilinx Spartan-3 5000 Variante : 3DES ● ● Basé sur 2 ou 3 clés DES (112 à 168 bits) Chiffrement (clé 1) → Déchiffrement (clé 2) → Chiffrement (clé 1 ou 3) Les algorithmes par bloc ● Algorithmes actuels : – Advanced Encryption Standard (Rijndael) en 1998 ● ● ● Clés de 128, 192, 256 bits Blocs de 128 bits Très rapide – Blowfish / Twofish – TEA / XTEA / XXTEA Bilan ● Avantages : – Rapidité d'exécution – Facilité d'implémentation ● ● ● Logiciellement : substitution ou opérations simples Matériellement : Intel fournit même des instructions « aes » dans ses derniers processeurs Inconvénients : – Les deux parties doivent connaître la clef ● – Nécessite un canal auxiliaire de confiance Les communications à N parties nécessitent n (n−1) clés 2 Fonctions de hachage Fonctions de hachage ● ● ● Principes : – Fonction à sens unique : prend une entrée de taille quelconque et donne une sortie de taille fixe – Doit être facile et rapide à calculer – Pas de clé Vocabulaire – Hash function en anglais – Empreinte numérique ou condensat souvent rencontrés Usages courants : – Vérification d'intégrité (MIC) – Authentification (MAC et signature) – Stockage de mots de passe Fonctions de hachage : propriétés ● Soit H une fonction de hachage, alors H doit résister aux attaques par calcul de – Premier antécédent (préimage) : ● – Deuxième antécédent (seconde préimage) : ● – étant donné y, il est difficile de trouver x tel que y = H(x) étant donné (x, H(x)) il est difficile de trouver x' tel que H(x') = H(x) Collisions : ● il est difficile de trouver un x et un x' tels que H(x') = H(x) MIC - « Message Integrity Check » ● Mécanisme d'intégrité Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Canal de communication 1 Texte en clair Signé : Alice Signé : Alice Canal de communication 2 67afbec7c704e5497d10 0766b16708bf3ff977a1 Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. ? 67afbec7c704e5497d10 0766b16708bf3ff977a1 MAC - « Message Authentication Check » ● Mécanisme d'authentification et d'intégrité – Appelé aussi parfois « scellement » Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Texte en clair Signé : Alice ? 67afbec7c704e5497d10 0766b16708bf3ff977a1 67afbec7c704e5497d10 0766b16708bf3ff977a1 HMAC (RFC 2104) ● Implémentation de MAC ● HMAC ( K , m)= H (( K ⊕ opad )∥ H (( K ⊕ ipad )∥ m)) ● – H est une fonction de hachage – K est la clé secrète – m le message à authentifier – opad et ipad des constantes hexadécimales Exemples : – HMAC-MD5 – HMAC-SHA1-96 – HMAC-SHA256-128 Algorithmes ● Usuels – MD5 (128 bits) : cassé ! ● – SHA-1 (160 bits) : ne plus utiliser si possible ● ● Collisions (2008) et attaques sérieuses Recommandés : – ● Collisions (2008) et attaques en préimage (2009) SHA-2 (256, 384 ou 512 bits) et bientôt SHA-3 Note : HMAC-{MD5,SHA-1} ne souffrent pas des vulnérabilités précitées et sont toujours utilisables, bien que peu recommandés Utilisations courantes ● ● Stockage de mots de passe – Unix : historiquement DES (crypt()), puis FreeBSD MD5 – Hachage avec une graine dans tous les cas – phpass (http://www.openwall.com/phpass/) PBKDF2 (Password-Based Key Derivation Function 2) – Dérivation d'une clé secrète basée sur un mot de passe ● ● ● DK = PBKDF2(PRF, Password, Salt, c, dkLen) WPA2 : DK = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256) Utilisation par Microsoft DPAPI, TrueCrypt, Apple iOS, FileVault, Zend Framework, Android, etc. Utilisation courantes ● Authentification – Protocoles par défi-réponse Client Serveur connexion Génération d'un défi « ds » ds Génération d'un défi « dc » Validation de l'authentification du server ● hash(dc || ds || secret) c || s hash(ds || d ecret) Signature numérique – cf. partie cryptographie asymétrique Validation de l'authentification du client Cryptographie asymétrique Cryptographie asymétrique ● 1976 : W. Diffie et M. Hellman publient « New directions in cryptography » – “In public key cryptosystem enciphering and deciphering are governed by distinct keys.” – Deux clés entrent en jeu : ● ● ● une clé de chiffrement, publique une clé de déchiffrement, privée Conséquences : – Plus besoin d'un canal assurant la confidentialité pour échanger un secret, seule l'authentification est nécessaire – Principe de la signature numérique, impliquant la non-répudiation Quelques dates ● 1976 : Diffie-Hellman ● 1978 : RSA (Rivest, Shamir et Adleman) – 1983 : RSA est breveté – 2000 : RSA entre dans le domaine public ● 1984 : ElGamal ● 1991 : DSA/DSS ● 2004 : ECC (courbes elliptiques) Mathématiques utilisées ● ● Problèmes difficiles utilisés couramment : – Logarithme discret (Diffie-Hellman, DSA, ElGamal) – Factorisation des grands entiers (RSA) – Logarithme discret sur les courbes elliptiques (ECDSA) Autres problèmes (pour information) : – Schémas multivariés (HFE) – Réseaux géométriques RSA ● Fonctionnement : – Soit N = p⋅q où p et q deux grands premiers et φ( N )=( p−1)(q−1) – Soit e tel que 1<e< φ( N ) tel que pgcd (e ,φ( N ))=1 – On en déduit d tel que d⋅e≡ 1 mod φ( N ) Chiffrement : c ≡ me mod N d m≡ c mod N Déchiffrement : – – ● Attaque : – Factorisation de N, p et q donnant d – Record public de factorisation : module RSA de 768 bits en 2009 – Recommandé d'utiliser des clés de 2048 bits au minimum Utilisation : chiffrement ● Alice souhaite écrire à Bob – Bob a envoyé sa clé publique à Alice – Bob utilise sa clé privée pour déchiffrer Alice Clé publique de Bob Clé privée de Bob Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Chiffrement Texte chiffré Déchiffrement Signé : Alice Signature numérique ● Mécanisme d'authentification et d'intégrité – Principe de non-répudiation Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Texte en clair Clé privée d'Alice Signé : Alice 67afbec7c704e5497d10 0766b16708bf3ff977a1 67afbec7c704e5497d10 0766b16708bf3ff977a1 Chiffrement Signature numérique ● Vérification avec la clé publique de l'émetteur Bob Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. 67afbec7c704e5497d10 0766b16708bf3ff977a1 Comparaison des empreintes Signé : Alice 67afbec7c704e5497d10 0766b16708bf3ff977a1 Déchiffrement Clé publique d'Alice 67afbec7c704e5497d10 0766b16708bf3ff977a1 Authentification ≠ signature ● L'authentification permet de répondre à la question : Qui a émis le message ? ● Pour savoir si on peut parler de signature, il faut savoir qui pose la question – MAC : l'autre possesseur de la clé secrète, donc deux personnes peuvent émettre – Signature : un possesseur de la clé publique, donc tout le monde peut vérifier, mais une seule personne peut émettre ● Principe de non-répudiation ! Utilisation : transport de clé ● Problématique du transfert du secret... Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Chiffrement Texte chiffré Déchiffrement Signé : Alice Utilisation : transport de clé ● On chiffre une clé secrète pour la transmettre Clé publique de Bob Clé privée de Bob Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Chiffrement Texte chiffré Déchiffrement Signé : Alice Échange de clés : Diffie-Hellman Alice Bob Génération de a , g et p a Calcul de A=g mod p Envoi de A , g et p b Calcul de B=g mod p b K b = A mod p Envoi de B a K a =B mod p b a b K b = A mod p=( g ) mod p=g a⋅b b a a mod p=( g ) mod p= B mod p= K a Diffie-Hellman ● ● Échange de secrets sans canal préalable – Vulnérable à une attaque man-in-the-middle – Nécessite d'être réalisé sur un canal authentifié Permet la Perfect Forward Secrecy – Renouvellement fréquent des secrets – En cas de compromission d'une conversation, une conversation antérieure ne pourra être déchiffrée Bilan ● Avantages : – Pas besoin de canal de confiance, la clé est publique – Permet de faire : ● ● ● de la signature numérique avec non-répudiation de l'échange de clé Inconvénients : – Opération extrêmement lentes ● – On ne peut chiffrer que des informations petites Comment déterminer si l'on possède la bonne clé publique ? Problème de l'authentification du canal Bilan comparatif Clé secrète Gestion Clé publique ● Seule la clé privée est Clé identique et secrète aux deux extrémités secrète ● Nombre de clés en O(n²) ● Nombre de clés en O(n) ● Canal auxiliaire authentifié ● Canal auxiliaire authentifié et confidentiel seulement ● Sécurité Pas de preuve formelle de sécurité Repose sur des problèmes mathématiques difficiles Performances Très rapides (10-100 Mbits/s) Très lentes (10-100 Kbits/s) Performances : symétrique Type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes DES 64.88 MB/s 67.64 MB/s 68.70 MB/s 66.54 MB/s 61.73 MB/s 3DES 24.30 MB/s 26.63 MB/s 26.60 MB/s 26.92 MB/s 26.75 MB/s Blowfish 114.44 MB/s 122.11 MB/s 123.68 MB/s 124.54 MB/s 124.99 MB/s AES-128 95.68 MB/s 103.62 MB/s 107.47 MB/s 109.22 MB/s 109.76 MB/s AES-192 83.20 MB/s 89.19 MB/s 90.42 MB/s 91.00 MB/s 91.53 MB/s AES-256 71.99 MB/s 76.27 MB/s 76.91 MB/s 78.04 MB/s 78.14 MB/s Performances : hachage Type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes MD5 57.66 MB/s 172.00 MB/s 382.61 MB/s 581.56 MB/s 648.30 MB/s SHA1 61.54 MB/s 174.90 MB/s 379.71 MB/s 517.75 MB/s 595.43 MB/s SHA256 44.36 MB/s 96.29 MB/s 163.41 MB/s 200.46 MB/s 210.24 MB/s SHA512 37.72 MB/s 142.84 MB/s 214.53 MB/s 299.46 MB/s 340.85 MB/s Performances : asymétrique Type Signatures /s Vérifications /s RSA 512 11511.5 175923.7 RSA 1024 3546.3 59771.5 RSA 2048 541.4 17104.0 RSA 4096 72.3 4536.9 DSA 512 14294.7 14184.9 DSA 1024 6036.9 5307.3 DSA 2048 1806.5 1507.7 ECDSA 256 7331.6 2913.3 ECDSA 384 2498.8 1113.4 Comparatif des forces de clés Longueur de clé secrète Algorithme symétrique Diffie-Hellman RSA ECC 128 AES-128 3072 3072 256-383 192 AES-192 7680 7680 384-511 256 AES-256 15360 15360 512+ Taille des clefs recommandées ● Algorithmes symétriques : – ● 128 bits minimum Algorithmes asymétriques : – RSA : 2048 bits recommandés ● – DSA : 2048 bits également ● – ● Record (public) de factorisation : 768 bits (environ 68 bits en symétrique) Similarités avec la factorisation Courbes Elliptiques (ECDSA) : 256 bits Fonctions de hachage : – Sortie de 256 bits (SHA-256) Attaques Catégories d'attaques ● ● Cryptanalyse – Attaque sur l'algorithme directement – Ou sur une de ses propriétés – But : « casser » l'algorithme ou découvrir la clé Recherche exhaustive de clé – ● Peut-être infiniment long sans cryptanalyse... Attaques protocolaires – Cible : mécanismes cryptographiques – But : attenter aux besoins en confidentialité, intégrité, authentification ou non-répudiation Cryptanalyse : classification ● Selon les clairs/chiffrés disponibles : – Attaque à chiffré seul (COA) – Attaque à clair connu (KPA) ● – Attaque à clair choisi (CPA) ● ● – Connaissance de clairs et de leurs chiffrés Connaissance de clairs et accès au chiffreur en boîte noire Toujours possible pour les chiffrements à clé publique Attaque à chiffré choisi (CCA) ● Connaissance de chiffrés et accès au déchiffreur en boîte noire Cryptanalyse : classification ● Cryptanalyse « classique » – Attaques fréquentielles ● – Substitution monoalphabétique Indice de coïncidence ● Substitution {mono,poly}alphabétique – Attaque par dictionnaire – Attaque par force brute Cryptanalyse : classification ● Cryptanalyse « moderne » – Cryptanalyse linéaire – Cryptanalyse différentielle – Cryptanalyse quadratique – etc. Contextes d'attaques ● Selon les spécifications disponibles – Cryptanalyse en boîte noire ● – Cryptanalyse structurelle ● ● L'implémentation et parfois l'algorithme sont inconnus Cf. slide précédent Selon l'accès au matériel chiffrant disponible : – Cryptanalyse par canaux secondaires/auxiliaires ● ● ● ● Par consommation électrique Par temps d'utilisation Par émissions électromagnétiques Par injection de fautes Un système sûr ? ● La sécurité inconditionnelle – But : obtenir une confidentialité parfaite – La connaissance du message chiffré n'apporte aucune information sur le message clair ● ● Ni sur sa longueur Ni sur son probable contenu – La seule attaque est la recherche exhaustive – Nécessite une clé aléatoire et au moins aussi longue que le texte clair... cf. Vernam ! Sécurité calculatoire ● ● Les systèmes utilisés dans la pratique sont théoriquement cassables. En pratique : – la connaissance du message chiffré ne permet de retrouver ni la clé ni le message clair en un temps humainement raisonnable – La cryptographie à clé publique est rendue possible par la sécurité pratique – RSA 512 : 1 mois sur un seul coeur en 2012 – RSA 768 : 2 ans et 3 mois de calcul sur plusieurs dizaines de coeurs en 2009 – RSA 1024 et + : ? Complexité d'une attaque : ordres de grandeur Recherche exhaustive de clé secrète ● Clé de n bits : 2^n clés possibles ● Retrouver la clé : 2^(n-1) essais en moyenne ● DES (1977), clé secrète : 56 bits → 2^55 (~ 10^17) – 1997 : 39 jours sur 10 000 Pentium – 1998 : EFF DES Cracker ● ● ● – $250 000 : 2.5 jours $1 000 000 : 35 minutes en théorie $10 000 000 : 3.5 minutes en théorie 2006 : COPACABANA (reprogrammable) ● $10 000 : 7 jours Man-in-the-middle ● (ou attaque du singe intercepteur) Soit une situation normale Clé publique de Bob Clé privée de Bob Alice Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Chiffrement Texte chiffré Déchiffrement Signé : Alice Man-in-the-middle ● (ou attaque du singe intercepteur) La même en moins normale Clé privée de Charlie Clé publique de Bob Charlie Alice Clé publique de Charlie Clé privée de Bob Cher Bob, Cher Bob, Rendez-vous à 13h chez moi. Charlie ne doit rien en savoir. Signé : Alice Déchiffrement Chiffrement Texte chiffré Tout est fini entre nous. Je suis navrée. Signé : Alice Bob Cher Bob, Tout est fini entre nous. Je suis navrée. Chiffrement Texte chiffré Déchiffrement Signé : Alice Implémentations Implémentation ● ● L'utilisation correcte d'algorithmes est très difficile ! – De nombreuses précautions à prendre : padding, choix des paramètres, détection de clés faibles – L'utilisation d'un aléa de qualité est extrêmement important Conseil : – Utiliser des bibliothèques reconnues voire certifiées si possible : ● ● ● OpenSSL DPAPI Microsoft PolarSSL Erreurs d'implémentation ● OpenSSL Debian (2008) : – « Optimisation » entraînant une baisse de l'aléa disponible à seulement... 15 bits par clé ! – Utilisé par OpenSSH / OpenVPN et plein d'autres ! ● ● – Attaques pratiques : ● ● Compromission des clefs faibles Perte de la PFS ! ssh_decoder, plugin wireshark pour SSL GnuTLS : chaîne de validation des certificats biaisée (2008... et 2014) : The _gnutls_x509_verify_certificate function in lib/x509/verify.c in libgnutls in GnuTLS before 2.6.1 trusts certificate chains in which the last certificate is an arbitrary trusted, self-signed certificate, which allows man-in-the-middle attackers to insert a spoofed certificate for any Distinguished Name (DN). Erreurs d'implémentation ● Apple (2014) : goto fail; goto fail; ● OpenSSL - Heartbleed(2014) Infrastructures de gestion de clés IGC - Infrastructure de gestion de clés ● ● Autres noms : – Infrastructures de clés publiques – Public-key infrastructures (PKI) Principe élémentaire de sécurité : – L'utilisation d'une clé publique pour chiffrer se fait uniquement quand on est sûr de son origine – Sinon... possibilité d'attaque de type man-in-the-middle ! Problématiques ● Cryptographie symétrique – Comment échanger un secret ? ● ● ● Cryptographie asymétrique – Comment échanger un secret ? ● – ● Il faut un canal chiffré Il faut un canal authentifié Il faut un canal authentifié La cryptographie asymétrique peut jouer le rôle de canal chiffré pour le secret symétrique Authentification du canal ? – On ne peux pas utiliser de la cryptographie.. – … sinon le serpent se mordra la queue ! Authentification ● ● ● Plusieurs mécanismes cryptographiques – MAC – Signature numérique Utilisation d'un canal « hors-bande » – Transmission de secrets hors-ligne – Utilisation d'un autre protocole pour faire l'échange – Disposer d'une preuve de l'identité de la machine distante avant de valider une connexion Dans tous les cas, il faut pré-partager quelque chose... Certificats et confiance ● ● ● ● IGC basées sur le standard X.509 (1988) – Définition d'un système hiérarchique de confiance – Basé sur des « Autorités de certification » (AC) et des « Certificats » Le certificat – Associe une clé publique à une identité – Permet à un utilisateur d'authentifier un service L'autorité de certification – Est garante de la sécurité du système – Sa clé privée signe les certificats et les listes de révocations Problèmes essentiels : la révocation et la confiance en cette autorité... Opérations fondamentales ● Il y a deux opérations fondamentales dans toute IGC – La vérification ● Processus permettant de relier une valeur de clé publique à – – – ● – un individu une organisation ou tout autre entité Utilisé lors de la génération du certificat La validation ● ● Processus de vérification de la validité du certificat Utilisé lors de l'utilisation du certificat Certificat X.509 ● ● ● Unité de base reliant – Une identité – Une clé publique – Une période de validité – Un usage Sous la forme d'une structure de données – Codage en ASN.1 – Stocké en binaire (DER) ou base64 (PEM) Participe à l'authentification des parties en garantissant l'authenticité des clés publiques impliquées Certificat X.509 ● Exemple : https://www.iiens.net/ Certificat X.509 $ openssl x509 -in www.iiens.net.crt -noout -text Certificate: Data: Version: 3 (0x2) Serial Number: 47 (0x2f) Signature Algorithm: sha1WithRSAEncryption Issuer: C=FR, ST=France, L=Evry, O=ARISE, OU=ARISE, CN=ARISE/[email protected] Validity Not Before: May 18 17:23:18 2013 GMT Not After : May 18 17:23:18 2014 GMT Subject: C=FR, ST=France, O=ARISE, OU=ARISE, CN=*.iiens.net/[email protected] Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:aa:81:53:0d:86:00:40:58:a2:4a:f0:a3:ea:16: [...] d4:9d Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: ARISE - OpenSSL Generated Certificate X509v3 Subject Key Identifier: 2B:88:77:7D:A2:D7:71:38:01:B3:E0:1D:CF:AE:AD:8D:38:09:6F:E0 X509v3 Authority Key Identifier: keyid:06:DB:EB:57:CA:73:A2:2B:18:05:F2:54:DB:BF:0A:C2:6D:3D:A1:0D DirName:/C=FR/ST=France/L=Evry/O=ARISE/OU=ARISE/CN=ARISE/[email protected] serial:A9:61:E9:81:AB:E2:90:45 Signature Algorithm: sha1WithRSAEncryption 6d:3c:0f:1a:ca:f8:94:ee:66:2f:28:7b:53:32:7f:3e:a0:ee: [...] 95:81:3f:41 Extensions X.509v3 ● subjAltName – Identité par défaut : champ « Subject » (champ CN) ● – On rajoute des champs complémentaires : ● ● « DNS : » - « email : » - « IP : » CA Pathlen – ● Subject: C=FR, ST=France, O=ARISE, OU=ARISE, CN=*.iiens.net/[email protected] Permet de limiter la longueur de la chaîne de certification keyUsage et extendedKeyUsage – Restriction de l'usage des clés – Authentification client, authentification serveur, signature de CRL, signature de certificats, signature de code, etc. Usages de clés extendedKeyUsage (EKU) keyUsage serverAuth Authentification d'un serveurTLS digitalSignature keyEncipherment ou keyAgreement clientAuth Authentification d'un client TLS digitalSignature et/ou keyAgreement emailProtection Messagerie sécurisée (S/MIME) digitalSignature nonRepudiation et/ou (keyEncipherment ou KeyAgreement) codeSigning Signature des codes mobiles digitalSignature timeStamping digitalSignature nonRepudiation Listes de révocation $ openssl crl -inform DER -in crl_acDILA_Infra-4.crl -noout -text Certificate Revocation List (CRL): Version 2 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: /C=FR/O=Gouv/OU=Direction Information Legale Administrative/OU=0002 13000918600011/CN=AC DILA Infra Last Update: Nov 5 09:17:01 2013 GMT Next Update: Dec 5 09:17:01 2013 GMT CRL extensions: X509v3 Authority Key Identifier: keyid:CF:61:E9:72:A3:2E:D8:28:A5:06:0A:54:A5:94:E0:21:2F:E9:F2:DB X509v3 CRL Number: 5487 Revoked Certificates: Serial Number: E7 Revocation Date: Dec 5 12:45:43 2011 GMT Serial Number: E8 Revocation Date: Dec 5 12:45:28 2011 GMT [...] Revocation Date: Aug 22 12:09:37 2013 GMT Serial Number: 0197 Revocation Date: Aug 22 12:09:28 2013 GMT S ignature Algorithm: sha1WithRSAEncryption be:04:78:d2:b6:70:b6:7e:1c:40:7e:84:75:9d:95:82:a5:0e: [...] 1f:db:dd:36:72:da:91:d2:48:0d:60:7f:07:9c:ad:f6:34:db: 76:1a:32:00 Chaîne de certification ● De la racine au certificat terminal – Souvent 2 à 3 maillons jusqu'à la racine – Parfois aucun, on parle de certificat « auto-signé » – Validation de proche en proche, de bas en haut ● ● ● – D'abord le certificat final Puis les intermédiaire Enfin l'autorité racine (dans le navigateur) Le serveur doit fournir l'intégralité de la chaîne de certificats au client Validation d'un certificat ● Pour chaque certificat d'une chaîne, sont vérifiés – La validité de la signature de la clé publique – Les dates de validité – Le statut de révocation – Le nom de l'entité ayant émis le certificat (doit être égal au « subject » du certificat au-dessus dans la chaîne) – Diverses contraintes et politiques applicables sur les certificats – Si la longueur maximum du chemin n'est pas dépassée (« PathLen ») – Que l'usage des clés est respecté Services d'une IGC ● Plusieurs services autour de la certification : – – – – – – – L’enregistrement d’un utilisateur La génération de certificats Le renouvellement de certificats La distribution de certificats La révocation de certificats L’archivage de certificats Le séquestre de clés privées Les « briques » d'une IGC ● Les services précédents sont gérés par : – – – – Une autorité de certification Une autorité d'enregistrement Une autorité de dépôt et de distribution Une autorité de séquestre Autorité de certification (CA/AC) ● ● ● Est une autorité de confiance Chargée de signer – Des certificats – Des listes de révocations Élément central dans une IGC – Possède les secrets nécessaires au maintien de la chaîne de confiance – A protéger le plus possible – Le plus souvent déconnectée de tout réseau... – … voire gérée sur du matériel dédiée (HSM) Autorité d’enregistrement (RA/AE) ● ● Point de contact entre l'utilisateur et l'autorité de certification. – Interface de demande de nouveau certificat – Transmission à la CA – Récupération et publication du certificat signé Enregistrement ? – Validation de l'identité du certificat ● ● – Demande d'un périmètre ● ● ● – Peut-être une personne : pièce d'identité Un nom de domaine : contact auprès de « postmaster@domaine » ou du registrar www.example.com {mail,smtp}.example.com *.example.com Vérification d'unicité Autorité de dépôt et de distribution ● ● ● Rôle : publications des certificats et CRL – Ces données sont publiques... – … et doivent être connues ! Souvent dans un annuaire – Composant critique d’une IGC – Basé sur LDAP Parfois un simple serveur HTTP Autorité de séquestre ● ● La plupart du temps, les clés privées sont générées par les clients On peut conserver la clé privée côté IGC également : – Pour séquestre, au cas où l'utilisateur la perd – Pour l'enrôlement de cartes à puces – Pour simplifier la génération pour l'utilisateur (attention !) Liste d'autorités « connues » ● ● ● Sociétés privées – VeriSign, Thawte, Comodo, DigiCert, GlobalSign – Quasiment toutes américaines... États – De très nombreux pays, pour usage national – IGC/A en France, publiée par SGDSN/ANSSI Plusieurs centaines enregistrées par défaut dans les navigateurs ! Réseaux de confiance Principe ● ● Utilisation de cryptographie asymétrique – N'importe qui peut générer sa paire de clés – Publication des clés publiques dans un annuaire Pas d'autorité de certification centralisée – D'autres personnes après vérification de l'identité signent votre clé : ● ● – ● Key signing party Vérification de l'empreinte + vérification de l'identité Et la republient sur l'annuaire Plus une clé est signée, plus elle est a priori de confiance En pratique ● ● Utilisé pour les clefs PGP/GPG : – Annuaires publiques – Différents niveaux de vérification – Différents niveaux de confiance Autres utilisations : – CACert – Thawte Web of Trust (jusqu'en 2009) ● ● ● Fourniture de certificats pour la protection des messageries Utilisation du principe de réseau de confiance Problèmes : – Clés perdues / compromises ? – Il faut révoquer ces clés ! – Pas de « liste de révocation » centralisée, il faut que chacun publie sa révocation... – … mais celle-ci doit être signée au préalable par la clé révoquée ! Conclusion Conclusion ● ● ● La cryptographie est la science du secret Elle permet de résoudre certains problèmes dus au format numérique des documents Les services de sécurité garantis sont : – La confidentialité – L'authenticité de l'origine des messages – L'intégrité des messages – La non-répudiation Références ● Référentiel général de sécurité (ANSSI) ● Handbook of Applied Cryptography. (PDF : http://www.cacr.math.uwaterloo.ca/hac/) ● ● ● Cryptographie Appliquée (Bruce Schneier) The Emperor's Codes: The Breaking of Japan's Secret Ciphers (Michael Smith) http://blog.cryptographyengineering.com/ Remerciements ● ● Marion Videau, Franck Davy, Arnaud Ebalard et Raphaël Rigo pour une partie du contenu et l'idée de certains schémas Aurélien Bordes, Olivier Levillain et Vincent Strubel pour leur connaissance poussée d'IPsec et de SSL/TLS