Introduction à la cryptographie Xavier Belanger
Remerciements
Licence Ce document est sous licence Creative Commons by-nc-ca 2.0 Vous êtes libre de reproduire, distribuer et de modifier cette création selon les conditions suivantes : Paternité : vous devez citer le nom de l'auteur original Pas d'utilisation commerciale : vous n'avez pas le droit d'utiliser cette création à des fins commerciales Partage des conditions initiales à l'identique : si vous modifiez, transformez ou adaptez ce document, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci
Définition et usage de la cryptographie ● Qu'est ce que la cryptographie ? – c'est utiliser une méthode d'écriture secrète. C'est un domaine d'application de la cryptologie (science du secret). ● Qui fait de la cryptographie ? – tout le monde !
Vocabulaire ● chiffrer : transformer un texte clair en texte incompréhensible (à l'inverse : déchiffrer) ● décrypter : transformer un texte chiffré en texte clair sans connaître la clé ● cryptologie : science de la cryptographie et de la cryptanalyse ● cryptanalyse : analyse de cryptogrammes
Quelques points historiques ● La cryptographie est utilisée depuis l'Antiquité (code de César). ● Elle fut un élément de victoire lors de la 2 nde Guerre Mondiale (Enigma). ● Révolutionnée au XX ième siècle par l'informatique et de nouveaux algorithmes.
La stéganographie ● La stéganographie est le moyen de dissimuler un message dans un autre message d'aspect anodin. ● La sécurité de cette méthode est faible : le message est pleinement compréhensible s'il est trouvé.
Aspect légal ● En France, depuis la loi du 21 Juin 2004 (LCEN), chacun est libre d'utiliser des moyens de cryptologie. ● Cependant, l'usage de la cryptologie est limité ou illégal dans de nombreux pays. ● L'importation et l'exportation de moyens cryptographiques est un des points de l'arrangement de Wassenaar.
Principes généraux ● Un système de sécurité ne sera jamais plus résistant que son maillon le plus faible. ● Le chiffrement ou la signature électronique ne tirent bénéfice que d'une utilisation régulière. ● Seule la clé doit être secrète, pas l'algorithme (principe de Kerckhoffs).
Importance de la phrase secrète ● Une phrase secrète est comme un mot de passe, c'est l'élément qui personnalise l'utilisation du moyen de cryptographie. ● Une phrase secrète ne doit jamais être divulguée. ● Elle doit comporter au minimum huit caractères (chiffres, lettres et symboles).
La cryptographie dans la correspondance ● Elle se découpe en deux parties distinctes. – La cryptographie permet de résoudre des problèmes liés à : la confidentialité des échanges, l'intégrité des messages, l'authentification de l'émetteur. – La signature électronique permet d'assurer l'intégrité et l'authentification.
Technique associée : le condensé ● Calcul de condensé (hash) : un document passé par un outil de calcul correspondant produit une empreinte "unique". ● Cela répond au problème d'intégrité et est utilisé en complément avec des outils cryptographiques. ● MD5, SHA-1, SHA-256, Whirlpool, Tiger
Limites ● Les progrès mathématiques et techniques nécessitent de réévaluer les méthodes cryptographiques utilisées. ● Le système informatique et les outils cryptographiques doivent être vérifiés. ● Il est nécessaire de se prémunir contre les attaques "classiques" de vol de clé. ● La N.S.A.
Méthodes de chiffrement Il existe deux grandes branches de chiffrement : – le chiffrement à clé secrète – le chiffrement à clé publique
Cryptographie à clé secrète ● Une clé est définie entre les correspondants et gardée de manière secrète. ● La même clé permet de chiffrer et de déchiffrer les messages. ● Également nommé chiffrement symétrique.
Échange d'un message chiffré avec une clé secrète AliceBob Clé secrète Message chiffré Message en clair Clé secrète
Principaux algorithmes de chiffrement à clé secrète ● D.E.S. : Data Encryption Standard ● A.E.S. : Advanced Encryption Standard ● Chiffre de Vernam (One Time Pad)
Robustesse d'un chiffrement à clé secrète Afin de résister à une attaque en force brute la taille de la clé doit être au moins de 80 bits (jusqu'en 2010, 100 bits au-delà). Il est donc conseillé d'utiliser des clés de 128 bits au minimum.
Limites du chiffrement à clé secrète ● Il faut pouvoir échanger la clé secrète de manière fiable. ● Lorsque le nombre de correspondants augmente, le nombre de clés à gérer devient problématique. ● Pour 10 personnes il faut 10x(10-1)/2 = 45 clés.
Cryptographie à clé publique ● Chaque correspondant génère une clé privée et une clé publique. Cette dernière sera diffusée à tous les correspondants. ● Pour envoyer un message chiffré à un correspondant il faut utiliser la clé publique de celui-ci ; il sera le seul à déchiffrer le message avec sa clé privée. ● Également nommé chiffrement asymétrique.
Échange d'un message chiffré avec une clé publique AliceBob Message chiffré Message en clair Clé privée de Bob Clé publique de Bob
Principaux algorithmes de chiffrement à clé publique ● R.S.A. : Rivest, Shamir, Adleman ● ElGamal
Robustesse d'un chiffrement à clé publique Afin de résister à une attaque en force brute la taille de la clé doit être au moins de 1536 bits (jusqu'en 2010, 2048 bits au-delà). Il est donc conseillé d'utiliser des clés de 2048 bits au minimum.
Limites des chiffrements à clé publique ● Les calculs nécessaires pour un chiffrement à clé publique sont plus lourds que pour un chiffrement à clé secrète (plus de 1000 fois pour certains algorithmes). ● La distribution de clés publiques doit se faire de manière fiable et identifiée.
Signature numérique ● La signature numérique permet de vérifier que l'expéditeur d'un message est bien celui attendu et que le contenu n'a pas été modifié. Le message reste néanmoins lisible de tous. ● Une signature numérique repose sur les mêmes principes de clés publique et privée avec l'ajout de calcul de condensé.
Signature d'un message avec une clé publique AliceBob Clé privée de Bob Clé publique de Bob Condensé du message Message en clair Condensé chiffré Message en clair = Condensé candidat Condensé déchiffré Message authentifié
Signature d'un message avec une clé privée AliceBob Clé privée d'Alice Clé publique d'Alice Condensé du message Message en clair Condensé chiffré Message en clair = Condensé candidat Condensé déchiffré Message authentifié
Pretty Good Privacy (PGP) ● Écrit par Philip Zimmermann en ● C'est le premier logiciel de chiffrement fiable qui fut accessible au grand public. ● L'usage et la réputation de PGP entraîna un intérêt plus large pour la cryptographie. ● Les premières versions étaient libres mais le logiciel est maintenant commercial.
GNU Privacy Guard (GPG) ● GPG est l'équivalent libre de PGP. ● Il repose sur les algorithmes publics, libres et non brevetés. ● GPG est disponible pour de nombreux systèmes et compatible avec la norme OpenPGP (RFC 4880), et donc avec PGP.
Utilisation de GPG ● GPG est un programme s'utilisant en ligne de commande et reconnaissant un très grand nombre d'options. ● Plusieurs interfaces graphiques sont disponibles pour l'usage quotidien, principalement : – KGPG sous KDE, – Seahorse sous Gnome, – WinPT pour Microsoft Windows, – GPGFileTool pour Apple Mac OS X.
Prise en main de KGPG ● Les diapositives suivantes présentent le premier lancement de KGPG et la génération d'une paire de clés privée et publique. ● Le principe est similaire pour les autres interfaces disponibles.
Paramétrage de GPG
Création d'une paire de clés
Définition de la phrase secrète
Génération et aléa
Détails d'une clé
Gérer son trousseau
Protéger son courrier ● GPG doit être interfacé avec votre logiciel de courrier électronique afin de pouvoir signer ou chiffrer vos courriers envoyés et vérifier la validité des messages reçus. ● Certains clients de courrier électronique intègrent directement un support OpenPGP, d'autres nécessitent une extension.
Utiliser Enigmail avec Mozilla Thunderbird ● Enigmail est une extension pour Mozilla Thunderbird permettant de signer, chiffrer et déchiffrer du courrier électronique. Elle s'appuie sur GPG. ● Enigmail peut être utilisé indépendamment des autres outils pour GPG (KGPG, Seahorse,...). ● Enigmail est disponible pour Gnu/Linux, Microsoft Windows et Apple Mac OS X, en français.
Prise en main d'Enigmail ● Les diapositives suivantes présentent l'installation et le lancement d'Enigmail. ● Selon que vous ayez déjà utilisé ou non GPG ou une de ses interfaces il vous sera demandé d'utiliser vos clés existantes ou d'en créer de nouvelles.
Activation d'Enigmail
Menu OpenPGP
Détails d'une clé
Signature et chiffrement de message
Saisie de la phrase secrète
Quelques remarques sur le chiffrement du courrier ● Soyez sûr que votre correspondant soit prêt à recevoir des messages chiffrés. ● Un message envoyé à plusieurs personnes doit comporter la clé publique de chacune (sauf pour le cas particulier des listes de discussion). ● Si l'on veut relire ses messages il peut être nécessaire de s'inclure comme destinataire.
Distribution des clés ● Il est possible de mettre en place une organisation pour gérer la distribution des clés : une Infrastructure de Gestion de Clés (IGC ou PKI : Public Key Infrastructure). ● Des serveurs de clés sont disponibles sur Internet pour déposer et rechercher des clés publiques. ● À une échelle moindre, on peut participer à une key signing party.
Réseau de confiance ● Pour chaque clé que l'on acquiert on peut définir un niveau de crédit : – aucune confiance, – pas de confiance, – un peu confiance, – pleinement confiance. ● Lors d'un échange avec d'autres personnes ou d'une key signing party on valide la clé des personnes présentes, ce qui crée un réseau de confiance.
Déroulement d'une Key Signing Party ● Chaque participant envoie au préalable sa clé publique à l'organisateur qui établit une liste. ● Les participants prévoient des cartes à distribuer comprenant nom, adresse mail, identifiant et empreinte de sa clé. ● L'organisateur de la session lit les informations concernées à haute voix. ● On vérifie l'identité de la personne, sur la base d'une pièce d'identité officielle. ● On peut alors signer la clé et la renvoyer à l'adresse mail indiquée.
Le chiffrement de fichiers ● Il est possible d'utiliser GPG pour chiffrer des fichiers de manière individuelle. ● Le principe est le même que pour un message : le fichier sera chiffré avec la clé publique de son destinataire. ● Un fichier envoyé avec un message chiffré sera également chiffré.
Outils de chiffrement de fichiers ● encfs - Encrypted Filesystem ● dm-crypt - module du noyau Linux 2.6 ● TrueCrypt - logiciel disponible sous GNU/Linux, Microsoft Windows et Apple Mac OS X.
Références (livres) ● Histoire des codes secrets – S. Singh ● PGP & GPG Assurer la confidentialité de ses et fichiers - M. W. Lucas ● Cryptographie en pratique – N. Ferguson, B. Schneier ● PGP : Pretty Good Privacy - S. Garfinkel ● Linux Security Cookbook – D. Barrett, R. Silverman, R. Byrnes ● Tout sur la sécurité informatique – J-F Pillou
Références (revues) ● Dossier "Pour la science" : l'art du secret Juillet 2002 ● Linux Pratique n°26 "Authentifiez, cryptez vos mails" ● Gnu/Linux Magazine France n°101 "Chiffrez vos disques"
Références (web) ● ● ● ●
Références des outils présentés ● ● ● ● ● ● ● ● ● ●
Annexe A : clé publique de l'auteur -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.4.6 (GNU/Linux) mQGiBEb9So0RBADe0qZwb82ctAim88vRVgyOlWTP3B7OAJu6ko6cgAnz2LLKViF/ R3TNGoYAg2D/IHWL/DJ1q1mUoaouSYZ1ojGvcmNX13FsGZk6tyKTtV8gRdc0ZHwt /NcYZ5BFeI21NtfVtezDwUauyzVn1gNx9iMHAbCBbKvD56cS+3GfQMFrQwCgoMYi 7t7YtAW9el6BYr2lYVGIVYsEALIQeO12oK9pIDsWwBBLP3cZTd6FtOGAccWwMdzn njw2kXUsCXJBVFeiMvItO9ri6bzkkHDq79V2CH35ThrSej+tmU61RiYwkfW+1z2p HxAkY7sPZwhuaUBzYdW3dyaRg7Wpa9hSzYOI7Xw379wVw9wqknZeEfj/76nUOcCm IameA/9NtGcFFUooodPkPCYEHea1JpuyiPtuNWiTGpz9eL7oWuOGOKfV8l616GG1 e9hsGOz4DY2yxRH+vBEVujXubIDYiXWh5J82waQZTTGoTJKe6bJKcdMMejZbiM86 JEoi3fNgTkhIG3dZNV/4NkQgiynihAUWquJfRl1CbYlJKbLozrQrWGF2aWVyIEJl bGFuZ2VyIDx4YXZpZXIuYmVsYW5nZXJAbmVyaW0ubmV0PohmBBMRAgAmBQJG/UqN AhsDBQkB4TOABgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQLscEpfgN0cDcyACe L0Z5W6cyPg6ciPGag6mXZPmhcA4AoJEOowf0Q82hr0Fn8gsrxt2tgJtZuQINBEb9 StEQCACpSFbHS1BADOysVSE6+IejsWXMWgaWKXxG1qiK/TJoKI7jNTT305DHsGvU riQajkMl8rauHBYwsuEB1vppx55dBrEPrJ5c6QiAmxZTRJYM66dYYWldYsjIWmYy ocLKxR3Hg+WGs61TTamEZ2MdTvrm/6vI4b1h/9KJKf09woQ+CZHhw3oe3BSo1h/D 0ZIMnWo6fQhL4nSoMcPiK8GAlOq6WsFpxZXl0izNIWJZPO8ItzKngg7ffn0aKWEO m2SmQcn+Ifi1JpSmbL2t1mP9Fl0L+sRYqxx/gXCQC7oq52Dg+gpc9mOVEudrE7V8 f/H4eTCj/vKQw+IOKLnZWhwiHgzzAAMGCACUqXHDNYFVR4GuwOO5FANBfhsZ0zRE Pqn+cAfk+HBnBLu3JjclQiVwyzCr86/nTv0yne8+mdmudUTWEGGQUQAoW/HwaPRQ uz/m7IXdmOUKFPzlgzHDvqTbhtqLnz2RiqJ6Dj36Vpg2zSKXPKkoCflKVeqLQn5L dgQoRcPtDXxZ2QIbutBhgRby9mcTj9+MIFY0kqiBMf8u2uNI2zbG2wV/ziP/GS4U dcfT1H4rfYKX+e6ofELs9qLeqdBLaTOGWsOIdewIHT09Ai1+yvDqdQOYZ1pzbWTh ZOG1V3VS8EchIEUdIv7GpO+t+R9UjrT1jDaXjF7XkL6r+U238SxJJgH1iE8EGBEC AA8FAkb9StECGwwFCQHhM4AACgkQLscEpfgN0cAm2gCfantQN5eP8GhEEI4H8kAT jTUN53sAn3ZisDXNW/MzCaAB+3LpDJNSybPs =7sk END PGP PUBLIC KEY BLOCK-----
Annexe B : commandes GPG les plus utiles ● gpg --gen-key ● gpg --list-keys ● gpg --import clé ● gpg --edit clé ● gpg --sign fichier ● gpg --encrypt fichier ● gpg --verify fichier ➔ créer une clé ➔ lister ses clés ➔ importer une clé ➔ éditer une clé ➔ signer un fichier ➔ chiffrer un fichier ➔ vérifier un fichier
Annexe C : installer KGPG en français sous Ubuntu ● sudo apt-get install kgpg kde-i18n-fr language-pack-kde-fr language-pack-kde-fr-base ● sudo gedit ~/.kde/share/config/kdeglobals ➢ [Locale] Country=fr Language=fr