Technologies de l Internet Partie 6 : Introduction à la sécurité dans le web Iulian Ober iulian.ober@irit.fr
Cryptage avec clé secrète même clé I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) crypter Ι τηινκ ιτ ισ γοοδ τηατ βοοκσ στιλλ εξιστ, βυτ τηεψ δο µακε µε σλεεπψ. décrypter I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) texte clair texte crypté texte clair le cryptage et le décryptage se fait avec la même clé ( symétrique) exemples: code de César, Enigma,, DES, AES question : comment les deux parties se mettent d'accord sur la clé partagée (secrète)? 2
Cryptage avec clé publique chaque utilisateur dispose de deux clés clé publique clé privée Alice clé publique de Bob clé privée de Bob Bob I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) crypter Ι τηινκ ιτ ισ γοοδ τηατ βοοκσ στιλλ εξιστ, βυτ τηεψ δο µακε µε σλεεπψ. décrypter I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) texte clair texte crypté texte clair 3
Confidentialité des messages Tout ce qui est crypté avec K pub peut être décrypté (uniquement) avec K pri pour envoyer un message secret à Bob, crypter avec son K pub, seul lui pourra le lire confidentialité 4
Authenticité des messages Tout ce qui est crypté avec K pri (ex, de Alice) peut être décrypté (uniquement) avec K pub Alice clé privée de Alice clé publique de Alice Bob I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) crypter Ι τηινκ ιτ ισ γοοδ τηατ βοοκσ στιλλ εξιστ, βυτ τηεψ δο µακε µε σλεεπψ. décrypter I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) texte clair texte crypté texte clair 5
Authenticité des messages Mais tout le monde connaît K pub, à quoi ça sert donc!? on peut déduire que celui qui a envoyé le message connaît K pri de Alice, c'est donc Alice (du moins très probablement) on peut vérifier que le message n'a pas été modifié depuis authenticité (signature numérique) non-répudiation 6
Confidentialité et authenticité Alice clé privée de Alice clé publique de Bob clé privée de Bob clé publique de Alice Bob I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) signer crypter Ι τηινκ ιτ ισ γοοδ τηατ βοοκσ στιλλ εξιστ, βυτ τηεψ δο µακε µε σλεεπψ. décrypter vérifier sig. I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) 7
Empreinte numérique Problème : lenteur des fonctions de cryptage / décryptage à clé publique on évite de les utiliser sur des messages nombreux et/ou longs Solution pour la signature numérique: empreinte numérique (fonction de hachage cryptographique MD5, SHA ) I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) clé privée de Alice hacher crypter I think it is good that books still exist, but they do make me sleepy. (FranK Zappa) 452ADD45F453 hacher decrypter? = vérifier texte à signer texte clair signé clé publique de Alice 8
Cryptographie symétrique aidée Problème : lenteur des fonctions de cryptage / décryptage à clé publique on évite de les utiliser sur des messages nombreux et/ou longs Solution pour la confidentialité : utiliser le cryptage à clé publique uniquement pour échanger une clé symétrique en début de session (master secret) utiliser le cryptage symétrique (DES, AES, ) pour le reste de la session 9
Obtention d'une clé publique on a supposé qu'il existe un moyen sûr d'obtenir la clé publique de Alice mais en général on ne peut pas rencontrer Alice en personne pour l'obtenir (e.g., Alice = www.amazon.com) et si Alice nous l'envoie par internet (forcement en clair), un intrus peut la modifier et peut ensuite se faire passer pour Alice, sans que l'on puisse le détecter besoin de savoir avec certitude qu'une clé publique appartient bien à Alice! 10
Je connais quelqu'un qui connaît quelqu'un connaît (K pub de ) Carla connaît (K pub de ) chaîne de confiance Bob Alice 11
Je connais quelqu'un qui connaît quelqu'un connaît (K pub de ) Carla connaît (K pub de ) Bob 1. demande la K pub de A Alice 2. fournit K pub de A signé avec K pri de C 3. vérifie signature, stocke K pub de A 12
Je connais quelqu'un qui connaît quelqu'un connaît (K pub de ) Carla connaît (K pub de ) Bob 1. demande la K pub de A signée avec Kpri de C (certificat signé par C) Alice 3. demande certificat signé par C 2. certificat signé par C 2'. vérifie certificat 4. fournit certificat signé par C 5. vérifie signature, stocke K pub de A 13
Infrastructures de clés s publiques (PKI) trouver une chaîne de confiance entre 2 utilisateurs quelconques peut être très difficile! (recherche de chemin dans un graphe réparti ) structure arborescente VeriSign Inc. autorité "racine" de confiance Bob Microsoft autorité de confiance MSN autorité de confiance Alice 14
Infrastructures de clés s publiques (PKI) : aspects pratiques reste le problème de connaître K pub des autorités les plus utilisées (VeriSign, Thawte, Equifax etc.) en pratique : leurs certificats (auto-signés) sont pré-instalés en Internet Explorer (Windows), Mozilla, 15
Infrastructures de clés s publiques (PKI) : aspects pratiques on peut mettre en place de nouvelles autorités racine (à l'intérieur d'une société, d'une administration, ) l'installation du certificat racine auto-signé doit alors se faire dans un contexte sécurisé (intranet, remise en mains propres, ) les navigateurs implémentent des fonctionnalités de génération de clés nécessaires à la création de certificats personnels la paire clé privée clé publique est générée par le navigateur la clé privée n'est jamais remise à l'autorité, qui ne connaît que la clé publique fonctionnalités supplémentaires date d'expiration de certificats liste de certificats révoqués 16
RSA, longueur des clés algorithme de cryptage à clé publique le plus utilisé : RSA (Rivest, Shamir, Adelman, MIT, 1978) clé nombre de taille qulconque (de 128 à 2048 bits aujourd'hui) construction de la clé basée sur le choix de 2 grands nombres premiers p, q facile cryptanalyse basée sur la factorisation de p*q difficile aujourd'hui on peut déchiffrer des clés < 500bits (avec les algos connus) les certificats aujourd'hui utilisent des clés de 1024 à 2048 bits (déchiffrer une clé de 2048 bits demande ~ 10 14 MIPS) 17
Applications : SSL, TLS Protocole de niveau transport chiffré développé initialement par Netscape implémenté au dessus d'un protocole transport fiable (ex. TCP) le serveur s'authentifie avec un certificat signé par une autorité connue du client le client s'authentifie soit avec un certificat personnel, soit avec un certificat temporaire auto-signé ( le serveur n'est pas sûr avec qui il parle) échange d'une clé secrète session (master secret) pour cryptage symétrique 18
Applications : OpenSSL toolkit implémentation open source de SSL/TLS fournit des commandes pour créer des demandes de certificats (à adresser à une autorité de certification) créer des certificats auto-signés créer une autorité de certification signer des certificats en tant qu'autorité vérifier un certificat supporte des formats de fichier standard comme le X.509 19
Applications : HTTPS HTTP sur TLS/SSL au lieu de TCP le serveur s'authentifie avec un certificat signé par une autorité connue du client, etc. nécessite au préalable l'obtention ou la création d'un certificat voir OpenSSL 20
Applications : E-mail sécurisé (S-MIME) supporté par Netscape (Mozilla), Outlook, Lotus, utilise des certificats personnels il faut être connu d'une autorité de certification 21
Applications : E-mail sécurisé (S-MIME) supporté par Netscape (Mozilla), Outlook, Lotus, utilise des certificats personnels il faut être connu d'une autorité de certification fonctionnalités signature des e-mails nécessite le certificat personnel de l'expéditeur envoi de messages cryptés - nécessite le certificat personnel de l'expéditeur et des déstinataires 22
Applications : SSH, SFTP, Couche transport SSL/TLS + Couches application: shell à distance, transfert de fichiers (SFTP), copie de fichiers (SCP) Le même principe que TLS implémenté au dessus d'un protocole transport fiable (en principe TCP) peut utiliser des clés gérées en dehors d'une infrastructure PKI (voir ssh-keygen) 23