# Sécurisation des réseaux - cours ## Plan du cours Introduction Cryptographie cryptographie symétrique cryptographie asymétrique Signature numérique, authentification Principe Somme de contôle Les infrastructures à clés publiques 03/02 : TD/TP Chiffrement symétrique et les modes opérations 24/02 : TD/TP Chiffrement asymétrique et leur mise en oeuvre 09/03 : TD/TP Autorités de certification 23/03 IoniBalls turboGrossePute 06/04 Sori pute ## Cours 1 - Chiffrement symétrique et les modes opérations ### Définition cryptographie Cryptographie : Etude des méthodes permettant de protéger les données. Cryptanalyse : etude des méthodes permettant de passer outre les protections des données. Cryptologie = cryptographie + cryptanalyse But de la cryptologie : sauvegarder et sécuriser des données ### Cryptographie moderne les algo modernes ont étendu les possibilitéss : - Empêcher la lecture des données à des personnes non autorisées --> Confidentialité - Transmettre des données de manière sure --> Confidentialité Mais aussi : - authentifier le créateur ou l'émetteur des données --> Authentification - s'assurer qu'il ne pourra pas nier en être à l'origine --> Non répudiation - Empêcher les modifications des données --> garantir l'intégrité ### Cryptographie à clé secrète : La méthode la plus ancienne Elle utilise la même clé pour chiffrer et déchiffrer un message (ou bien la clé de déchiffrage se déduit immédiatement de la clé de chiffrage) Si elle est utilisée convenablement, elle est "INCASSABLE" ! (ET C'EST PROUVE par 9 chercheurs sur 10) ### Substitution et chiffre de césar https://fr.wikipedia.org/wiki/Chiffrement_par_d%C3%A9calage Méthode très simple de chiffrage attriibué à Jules César HIMSELF : L'algo consiste simplement à décaler les lettres de l'alphabet du message à envoyer. il saigne, il a le coronavirus #CORENTIN OH NO ! ALED ON VA MPURIR JE SUIS INFECTé, help me J'invoque : DRAGON BLANC AUX YEUX BLEUS en position attaque : YES ATTAQUE PAR FORCE BRUT = ON ESSAIE TOUT J'ai éjac du nez, c'est parti vite Me balancer par sur Twitter par contre #GIGN @PoliceNational ### Chiffrement INCASSABLE : OTP "one time pad" ou 'OneTrickPony pour les intimes' https://en.wikipedia.org/wiki/One-time_pad La seule méthode de chiffrement aujourd'hui prouvée comme étant incassable est une méthjode à clé symétrique secrète : one time pad (ou "masque jetable") Son algo est simple Sa mise en oeuvre est rapide - Pour le chiffrement - Pour le déchiffrement Mais pourquoi se faire chier avec des algos compliqués, coûteux et moins sûrs ? parceque très difficilement utilisable. (voir "Condition d'utilisation") Pourquoi OTP est potentiellement "INCASSABLE" ? --> Soit M = {m0,m1,...,mn} un msg de taille n Soit C = {c0,c1,...,cn} le message M chiffré avec la clé K Quelque soit M' un msg de taille n, il exister une clé K' de taille n telle que pour tout i appartenant à [0,...,n], m'i ! ci + *(xor)* k'i Condidtion d'utilisation * La clé soit de taille au moins égale à la taille du message. * Il faut que la clé soit purement aléatoire. * Sinon on peut en déduire le seed de generation et potentielement brutforce la clé plus facilement * Il faut que la clé ne serve qu'une seul fois. OTP est très difficilement utilisable : * Pour transmettre 10Go de donné, il faut une clé d'au moins 10Go * Pour communiquer sur des court message il faut transmettre la clé de manière sur. Ducoup pourquoi ne pas transmettre les message en meme temps que la clé ? * Il faut un vrai generateur de nombre aleatoire ### Méthode par diffusion (majorité des algos modernes): - DIFFUSION = SUBSTITUTION + TRANSPOSITION - Disperse la structure statistique du texte. - La difusion masque la relation entre le texte clair et le texte chiffré. Principe de confision - Il s'agit de masquer la relation entre la clé secrète et le texte chiffré. - On suppose que l'opposant connaît l'algo de chiffrement - On souhaite éviter qu'à partir de l'algo et le texte chiffré, la clé soit identifiable - L'objectif est d'obtenir un chiffrement dont la seule attaque possible est par "Force Brute" ### Méthode forte La seule attaque possible consiste a essayer toutes les clés possible (force brute) - on ne peut pas déduire d'informations sur la donnée claire ou la clé à partir de la donnée chiffré - on ne peut pas déduire d'informations sur la clé à partir de la donnée en clair - Le nombre de clés possible est très grand - Aujourd'hui, classiquement 2¹²⁸, 2¹⁹² ou d²⁵⁶ (on estime le nombre d'atomes dans univers à ~2²⁶⁵) ### Premier standard DES : UNE ANCIENNE METHODE FORTE En 1977 apparaît le standard DES : Data Encryption Standard - inventé par IBM, modifiée par la NSA - Premier standard cryptographique - Algorythme de chiffrement par bloc - Clés de 56 bits 2⁵⁶ clés possibles : attaques par force brute impossible en 1977 - les attaques par force brute sont désormais largement envisageables (le standard était prévu pour avoir une durée de vie de 10 ans) - Des techniques de cryptanalyse ont été développpées rendant plus vulnérable encore DES en réduisant len nombre de clé à tester #### Double DES une solution intermédiaire - Solution intémédiaire : doubles DES - Il s'agit d'appliquer 2 fois de suite DES avec deux clés distinctes - Diffie Hellman ont trouvé une attaque qui rend presque inopérant le passage à double DES --> perte de son standard au profit d'AES après un appel d'offre du NIST - Seconde solution : Triple-DES. - Améliore nettement DES : 2¹¹² clés possibles Remplacé par AES #### AES : LE STANDARD ACTUEL Advanced Encryption Standard Robuste et efficace Chiffrement par bloc Standard du NIST depuis octobre 200 Utilise des clés de 128, 192 ou 256 bits (évolutive) Aucune méthode connue de cryptanalyse, encore aujourd'hui personne n'a trouvé de méthode pour pouvoir l'attaquer directement en tant qu'algo Utilisé dans de nombreux systèmes cryptographiques (WPA2 pour la norme IEEE 802.11 du Wifi, les connexions bluetooth, ...) Chiffrement par bloc. Il prend en entreée des blocs de donnée y applique une fonction reversible sur les blocs et retourne des blocs chiffrés Lorsque la donnée est constituée de plusieurs blocs, la méthode la plus simple et d'utiliser la clé sur chacun des blocsn ce qui peut donner des indications, a minima (il a switch la diapo le con) (...) ### Mode d'opération Le mode d'opéation d'un algorythme de chiffrement par bloc décrit la manière dont on l'applique sur les différents blocs du message à chiffrer #### Exemple de mode d'opération : Cipher block chaining (CBC) ![](https://i.imgur.com/RqiW5Q2.jpg) Voir TP Crypto Ionipute avec vecteur d'initialisation ### Limite de la cryptographie à clé secrète * L'échange des clés : -il est fortement conseillé de changer régulièrement de clé pour le chiffrement . * Partage de clé : -Pour N personnes il faut (N x (N-1))/2 clés * Distribution des clé ### Trent : distributeur des clés secrètes Trent dispose des clés de tout le monde. C'est le TTP (Trusted Third Party) Fait office d'intermédiaire entre X personnes Etape 1 : Alice envoie le message chiffré avec sa clé à Trend Etape 2 : Trend envoie le message chiffré avec la clé de Bob à Bob Avec ce systèmen pour N utilisateurs, on aura besoin de N clés secrètes. Elles ne sont pas partagés par tout les utilisateurs Problème : - tout transite par Trent - confiance de Trent ? - centralisation des clés - total de clé trop grand - s'il conserve les clés, il devient un point faible du système - opération de chiffrement lourdes et inutiles ### Solution alternative à Trent : les KDC (key distribution center) Trent dispose de toutes les clés, Trent envoie la clé secrète cryptés à Bob et à Alice en cryptant le message avec la clé de chacun. Alice et Bob peuvent communiquer Trent devient alors un distributeur de clés Resout le problème des opérations inutiles de chiffrement Résout le problème de transit unique par Trent Problème persistants : confiance du TTP ? SOLUTION : CRYPTOGRAPHIE A CLE PUBLIQUE ### Début de la solution à l'utiliusation d'un KDC Ralph Merkle en 1970 a conçu un système permettant d'échanger publiquement des clés secrètes Principe : Alice crée plein de clé indexés par un numéro de série dans le désordre et range tout dans un tableau Puis chiffre ce tableau avec les clés générés Puis elle envoie le tableau des numéros de série(peut êtrecapté par Eve) Bob déchiffre un numéro du tableauu (numéro de série) et envoie le numéro de série et devient la clé secrète entre Alice et Bob Création d'une dysémtrie entre les interlocuteurs légitimes (déchiffrement long pour 1 clé donc pour le tableau très long pour l'attaquant ) ### Diffie-Hellman complexe l'idée en héritant de l'idée de Merkle Les deux interlocuteurs partagent un problème qu'ils savent résoudre rapidement L'adversaire manque d'une information Etape 1 : [![](https://i.imgur.com/iTOiPNk.jpg) ](https://) Etape 2 : ![](https://i.imgur.com/cYoXIN2.jpg) | ka=(g^b mod p)^a mod p | kb=(g^a mod p)^b mod p | | -------- | -------- | | ka=(g^b)^a mod p | kb = (g^a)^b mod p | | ka=g^(b*a) mod p | kb = g^(a*b) mod p | ON A BIEN Ka=Kb= K LA CLE SECRETE ECHANGEE ENTRE ALICE ET BOB La méthode de diffie helman permet de se mettre d'accord sur une clé secrètre sur un canal non sécurisé. Limites : - Pas d'authentification - Fonctionnement "en ligne" (ne convient pas ax mails par exemple) ### RSA Rivest,Shamir & Adleman (MIT); Résout les problèmes d'authentification et d'échange de clé; Utilisation de clés distinctes pour le chiffrement et le déchiffrement - Une clé publique mise a dispo de tous - Une clé secrète - ce qui est chiffré avec la clé publique n'edst déchiffrable qu'avec la clé privée - Ce qui est chiffré avec la clé privée n'est déchiffrable qu'avec la clé publique Connaitre la clé publique n'aide pas à la découverte de la clé secrète. Connaitre la clé publique n'aide pas à déchiffrer un message chiffré avec celle-ci. Tout le monde peut connaitre la clé publique : la distribution des clés est grandement simplifié. #### Authentification avec RSA l'authentification consiste simplement à chiffrer un message avec la clé privée - Le message n'est déchiffrable que grace à la clé publique correspondante - Si la clé publique déchiffre le message, on est sûr qu'il a été chiffré avec la clé privée. #### Intégrité avec RSA On peut employer la même méthode que pour l'authenficiation : - Le message chiffré avec la clé publique est corrompu s'il est modifié durant la transmission - On peut simplement chiffrer un résumé du messge qui devient alors une signature #### Résumé Un résumé de message est obtenu grâce à l'utilisation d'une fonction de "Hachage cryptographique - MD5, sha-1, sha-256 etc... Pour être utilisable en cryptographie, une fonction de hachage doit avoir certaine propriétés : - L'unidirectionnalité (Résistance à la première pré-image) : On ne doit pas pouvoir reconstituer tout ou partie du message à partir de son résumé. - La résistance faible aux collisions (résistance à la seconde pré-image) : Etant donné un résumé, il est très difficile de trouver un message différent qui produit le même résumé. On ne peut pas modifier le message en le faisant passer pour le message original. - La résistance forte aux collisiosn : Etant donné une fonction de hachage, il est très difficile de trouver deux messages différents produisant le même résumé (résistance à l'attaque des anniversaires) #### Distribution des clés publiques On a vu que la cryptographie à clé publique permet : - La confidentialité - Le contrôle d'intégrité - L'authentification - La non-répudiation La sécurité repose sur la confidentialité des clés privées, mais aussi sur l'intégrité et l'authenticité des clés publiques. Pour assurer l'authenticité des clés publiques, o nutilisera des "certificats numériques" au sein d'infrastructures à clés publiques ou PKI (public key infrastructures) ### Attaques par répétition Alice envoie plusieurs messages : - 1/11/2010 : "rdv 12h30 chez doc gyneco" - 2/11/2010 : "j'ai un plan cul j'peux pas venir" Eve intercepte le message 1, remplace son contenu par celui du 2/11/2010 et bob ne peut pas se rendre compte du problème. Pour résoudre le problème : chaque message doit être "estampillé" par une date ou un marqueur temporaire. ### Vol des clés en mémoire Les clés cryptographiques doivent être aussi aléatoires que possibles - Elle contiennent donc normalement à peu près autant de bits à 1 que de bits à 0. - Ce qui ne "ressemble" pas à n'importe quel type de données. - On peut identifier les séquences qui peuvent correspondre à des lés cryptographiques dans la mémoire de la machine. ### Distribution des clés publiques Problèmes : Comment être sûr que la clé publique est bien celle de la personne avec laquelle on souhaite échanger des messages ? Comment faire si la clé privée est volée ? ### Certificat numérique Un certificat numérique est un document signé par un tiers de confiance contenant : - Des informations sur le détenteur de la clé publique - Le rôle de l'utilisateur - La clé publique elle-même - Des dates de début et de fin de validité Principe : - Les utilisateurs génèrent leurs couples de clés publiques/privées - Ils demandent alors un certificat qui authentifie leur clé publique auprès d'un tiers de confiance - Le tier de confiance certifie l'identité du demandeur en créant un certificat pour l'utilisateur, qu'il signe avec sa propre clé privée. - L'utilisateur dispose maintenant d'une certification de sa clé publique par le tier de confiance. ### Les PKI Une infrastructure à clés publiques repose sur le système de certification n des clés publiques par un tiers de confiance Une clé est alors associé à l'identité d'une personne Les plus répandues : PKIX.509 ou PGP : pretty good privacy Prochain cours : certificat ## TD1 - Exo ### Exo 1 - 2 - 3 - feuille ### Exo 4 ``` for ((i=0;i<80000;++i));do echo ZARROU >> z21805306-ex4.1.txt done ``` Chiffrer un fichier en utilisant l'algo AES-192 avec une clé et un vecteur d'initialisation spécifique : `openssl enc -aes-192-cbc -K 00010203040506070809A0A1A2A3A4A5A6A7A8A9B0B1B2B3 -iv FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0 -in z21805306-ex4.1.txt -out z21805306-ex4.2.enc` Modifier le fichier en remplaçant l'octet d'offset 200 par la valeur 0 : ``` dd if=z21805306-ex4.2.enc of=debut bs=1 count=199 dd if=/dev/zero bs=1 count=1 of=zero dd if=z21805306-ex4.2.enc bs=1 skip=200 of=fin cat debut zero fin > z21805306-ex4.3.mod ``` Déchiffrer : (le -d permet de déchiffrer) ``` openssl enc -aes-192-cbc -d -K 00010203040506070809A0A1A2A3A4A5A6A7A8A9B0B1B2B3 -iv FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0 -in z21805306-ex4.3.mod -out z21805306-ex4.4.txt ``` Afficher en détail pour voir les erreurs du fichier : ``` hexdump -C -v z21805306-ex4.4.txt | less ``` EXO 5 : Script (voir discord) chmod +x exo5.sh mkdir TEST ./exo5.sh TEST Ca créé un répertoire en + ## Cours 2 - Chiffrement asymétrique et leur mise en oeuvre Enfait le cours 2 est intégré au cours 1 donc cheh