# R3.17 Notions de cryptologie ## **1 Chiffrement symétrique** ### 1) Générez une clé secrète de 32 octets et stockez la dans le fichier de la clé secrète ![image.png](https://hackmd.io/_uploads/ryMDGN-76.png) Je créer une clé secrète de 32 octets encodée en base 64 à partir du générateur rand et stockée dans le fichier clesecret. ### 2) Visualisez cette clé ![image.png](https://hackmd.io/_uploads/r11E74bmp.png) Je visualise la clé a l'aide de cat. ### 3) Créez un message court message.txt avec la commande nano ![image.png](https://hackmd.io/_uploads/rkmKXV-mp.png) Je créer dans le repertoire /home/etudiant un fichier message.txt à l'aide nano, j'y est écrit un message court "bonjour". ### 4) Chiffrez le message avec l’algorithme aes avec 100 itérations et votre clé secrète ![image.png](https://hackmd.io/_uploads/rJIA4EbXp.png) Chiffrement du fichier message.txt en fichier du message chiffré message_chiffre avec l’algorithme aes utilisant la clé secrète contenue dans le fichier clesecret. pbkfd2 est un algorithme de dérivation de clé à partir du fichier de la clé secrète avec 100 itérations. ### 5) Visualisez le message chiffré ![image.png](https://hackmd.io/_uploads/ry_UBV-Xp.png) Je visualise le fichier message_chiffre à l'aide de nano. ### 6) Déchiffrez le message chiffré ![image.png](https://hackmd.io/_uploads/B16ASVb7a.png) Déchiffrement du fichier du message chiffré (message_chiffre) dans le fichier du message déchiffré avec l’algorithme aes utilisant la clé secrète contenue dans le fichier clesecret. ### 7) Comparez la taille du fichier clair avec celle du fichier chiffré. Comment expliquez la différence ? ![image.png](https://hackmd.io/_uploads/B1nTUE-XT.png) je compare la taille à l'aide de la commande ls et l'option h permettant de visualer la taille de facon plus lisible. Nous voyons bien que le message chiffré fait 32 bits et le message clair et dechiffré font 8 bits. C'est du au fait que le chiffrement à l'aide de la clé secrète est sur 32 bits donc le message chiffré fait donc 32 bits. ## **2 Chiffrement asymétrique** ### 8) Générez une clé privée rsa de 2048 bits non chiffrée dans un fichier ![image.png](https://hackmd.io/_uploads/ryNytVW76.png) Je créer une clé privée rsa de 2048 bits dans un fichier qui n'est pas chiffré. ### 9) Visualisez votre clé privée ![image.png](https://hackmd.io/_uploads/ry04FEWXp.png) Je visualise la clé à l'aide de nano. ### 10) Générez une clé privée rsa de 2048 bits chiffrée avec la clé secrète précédente dans un fichier ![image.png](https://hackmd.io/_uploads/H1Cc54ZQp.png) Chiffrement de la clé privée (déjà créée) avec un chiffrement symétrique, ici aes-256-cbc avec écrasement du fichier originel contenant la clé privée. ### 11) Visualisez votre clé privée ![image.png](https://hackmd.io/_uploads/r1rgjEZ7T.png) Je visualise la clé chiffrée à l'aide de cat ### 12) Générez une clé privée rsa de 2048 bits chiffrée avec un mot de passe dans un fichier ![image.png](https://hackmd.io/_uploads/SJNG2N-Xp.png) Génération d’une clé privée de 2048 bits chiffrée avec le mot de passe gtrnet et stockée dans le fichier cle_privee. ### 13) Visualisez votre clé privée ![image.png](https://hackmd.io/_uploads/BkvZaNW76.png) Je visualise la clé privée à l'aide du mdp. ### 14) Extrayez la clé publique de votre dernière clé privée dans un fichier ![image.png](https://hackmd.io/_uploads/H1YFa4ZXa.png) Séparation de la clé publique de la clé privée et sauvegarde de la clé publique dans un autre fichier cle_public, pubout garantie que seule la partie publique de la paire de clés est exportée vers le fichier de sortie. ### 15) Visualisez la clé publique ![image.png](https://hackmd.io/_uploads/BkpUANWXT.png) Affichage en format hexadécimal de la clé publique dans cle_public L’instruction pubin indique à openssl qu’une clé publique doit être présente dans le fichier. ### 17) Quelle clé (publique ou privée, de qui ?) faut-il utiliser pour chiffrer un fichier pour ensuite l’envoyer à quelqu’un d’autre ? Il faut utiliser la clé publique du recepteur pour envoyer le fichier à quelqu'un d'autre. ### 18) Quelle clé (publique ou privée, de qui ?) faut-il utiliser pour déchiffrer un fichier reçu ? Il faut utiliser la clé privée de l'emmeteur pour déchiffrer un fichier reçu. ### 19) Chiffrez le fichier du message clair de la question 3) avec votre clé rsa ![image.png](https://hackmd.io/_uploads/rJPj-r-XT.png) Chiffrement du fichier du message clair avec obtention du chiffré en sortie. ### 20) Visualisez le fichier chiffré. Que se passe-t-il ? ![image.png](https://hackmd.io/_uploads/H1iUfSZQa.png) ### 21) Vous allez augmenter progressivement la taille de votre fichier du message clair et le chiffrer ensuite avec votre clé rsa. Déterminez la taille de votre fichier du message clair à chaque fois. Que se passe-t-il au bout d’un moment ? Pourquoi ? Si le message dépasse la taille du chiffrement 256 alors le chiffrement ne peux pas se faire. ### 22) Supprimez des lignes de votre fichier du message clair pour que sa taille soit petite. Chiffrez le fichier du message clair puis déchiffrez le message chiffré. ## 3 Empreinte et signature ### 23) Créez une empreinte du fichier du message clair ![image.png](https://hackmd.io/_uploads/rkZJ8HZQa.png) Création de l’empreinte du fichier entrée avec la fonction de hachage sha256, dans le fichier de l’empreinte (message_empreinte). ### 24) Créez une copie du message clair en changeant le nom. Calculez l’empreinte de ce nouveau message. Observez-vous une différence avec l’empreinte de la question précédente. ![image.png](https://hackmd.io/_uploads/S1nqUrb7a.png) Je créer une copie du fichier message.txt à l'aide de cp ![image.png](https://hackmd.io/_uploads/Hy9gPH-QT.png) L'empreinte contient le nom du fichier il est donc normal qu'il soit plus volumineux même si le contenu est le même. ### 25) Modifiez le texte de la copie du message. Calculez son empreinte. Observez-vous une différence avec l’empreinte de la question précédente. ![image.png](https://hackmd.io/_uploads/H1ZfaX87p.png) Je modifie le contenu de message_copy.txt à l'aide de nano et je visualise à l'aide de cat. ![image.png](https://hackmd.io/_uploads/SyWI6mI76.png) Création de l’empreinte du fichier message_copy.txt modifié avec la fonction de hachage sha256, dans le fichier de l’empreinte (message_copy_empreinte_2). Je visualise la taille à l'aide de la commande ls. ![image.png](https://hackmd.io/_uploads/BkUyTm8XT.png) La taille est identique le contenue du message n'influe pas sur la taille de l'empreinte. ### 26) Créez une empreinte signée du fichier du message clair en utilisant la méthode en deux étapes ![image.png](https://hackmd.io/_uploads/r1ep5yNI7a.png) J'utilise l'empreinte créer au paravant et je créer la signature du fichier de l’empreinte avec la bonne clé, dans le fichier de la signature message_signe. ### 27) Vérifiez la signature ![image.png](https://hackmd.io/_uploads/S1G7WVLma.png) Vérification de la signature avec la bonne clé. ### 28) Créez une empreinte signée du fichier du message clair en une seule étape ![image.png](https://hackmd.io/_uploads/S1ILzV8Xa.png) ### 29) Modifiez le fichier du message clair puis vérifiez sa signature. Que se passe-t-il ? Pourquoi ? Nous ne pouvons plus verifier le message n'est pas identique. ### 30) Le fichier dechiffrer_moi.chi est à déchiffrer. Il a été chiffré avec l’algorithme aes-256-cbc, avec une itération de 50, un mot de passe fourni interactivement, dont l’empreinte md5 est soit f09c151e4c4da962270e26b9abd6d0ef, soit 50531ac166c73adfecb2781773e33813 #### En utilisant le site https://md5decrypt.net/, retrouvez les deux mots de passe, puis déchiffrez le fichier dechiffrer_moi.chi avec le bon mot de passe (et non l’empreinte) ![image.png](https://hackmd.io/_uploads/B1GTVE8m6.png) ![image.png](https://hackmd.io/_uploads/B13erEUQ6.png) J'utilise le site pour retrouver les mots de passe. ![image.png](https://hackmd.io/_uploads/ByzoQSLm6.png) ### 31) Trois fichiers mess1.txt, mess2.txt et mess3.txt sont hachés (avec SHA256) puis signés avec (cle1.essai ou cle2.essai) en une seule étape, pour donner mess1.hash.sign, mess2.hash.sign et mess3.hash.sign Vous avez à votre disposition sur UPdago les trois signatures, les deux paires de clés (privées et publiques d’extension pem) et les trois messages. Cependant, un des trois messages a été entre temps modifié. Vous devez trouver avec quelle clé les messages ont été signés, et quel message a été modifié ![image.png](https://hackmd.io/_uploads/B1RN5H8mp.png) ## 4 Certificats ### 32) Créez une paire de clés rsa pour l’autorité sous le nom autorite.cle ![image](https://hackmd.io/_uploads/BJr0E2gNT.png) Création de la paire de clés rsa pour l’autorité sous le nom autorite.cle ### 33) Créez un certificat pour cette paire de clés sous le nom autorite.certif ![image](https://hackmd.io/_uploads/SJIuo2xEa.png) Création du certificat pour la paire de clés autorite.cle sous le nom autorite.certif ### 34) Créez une paire de clés rsa pour le client sous le nom client.cle ![image](https://hackmd.io/_uploads/Byv8UheE6.png) ### 35) Créez une demande de certificat sous le nom demande.client ![image](https://hackmd.io/_uploads/S1nkPheVa.png) ### 36) Visualisez votre demande. Expliquez la réponse obtenue ![image](https://hackmd.io/_uploads/BJeED3l4p.png) ### 37) Envoyez la demande du client à l’autorité ![image](https://hackmd.io/_uploads/H1J7u2xVp.png) ### 38) Signez la demande du client par l’autorité ![image](https://hackmd.io/_uploads/HJ35j3eEa.png) ### 39) Visualisez les informations contenues dans votre certificat signé ![image](https://hackmd.io/_uploads/Bk61hhxVT.png) ### 40) Vérifiez la validité de votre certificat signé ![image](https://hackmd.io/_uploads/rkeVhngNT.png) ### 41) Envoyez les certificats au client de la part de l’autorité ![image](https://hackmd.io/_uploads/rkV862xNp.png) ### 42) Créez un fichier de l’enveloppe avec les fichiers du certificat et de la clé ![image](https://hackmd.io/_uploads/SkT90hx4p.png) ### 43) ![image](https://hackmd.io/_uploads/HyGmqhDST.png) ![image](https://hackmd.io/_uploads/S1tm52vSp.png) ### 44) Quelles sont les clés à créer ? Clé pub et priv Alice. ![image](https://hackmd.io/_uploads/rkYa2al4p.png) ### 45) Vous calculez l’empreinte du message chiffré avec sha256 ![image](https://hackmd.io/_uploads/BkECTaeNT.png) ### 46) Vous signez cette empreinte avec la bonne clé (Laquelle ?) Clé privé alice ![image](https://hackmd.io/_uploads/H1mQkRlVT.png) ### 47) Vous chiffrez le fichier de la clé secrète avec la bonne clé (Laquelle ?) ![image](https://hackmd.io/_uploads/SyHveCl4T.png) ### 48) Quels données faudrait-il transmettre à Bob ? L'empreinte signé du message, et la cle secrete chiffré avec sa clé publique. ## 6 Chiffrement hybride avec secret au préalable partagé Création des paires de clées pour le serveur et le client : ![image](https://hackmd.io/_uploads/rkjYv2wHT.png) ![image](https://hackmd.io/_uploads/r1zivnDHa.png) ![image](https://hackmd.io/_uploads/SJQnw3wBa.png) J'envoie les clées publiques : ![image](https://hackmd.io/_uploads/SJZrdhDB6.png) ![image](https://hackmd.io/_uploads/H1lbthwSa.png) Je créer la clé secrete pour le serveur et le client ![image](https://hackmd.io/_uploads/BJaDKnDSa.png) ![image](https://hackmd.io/_uploads/rkUHshvBp.png) ![image](https://hackmd.io/_uploads/S1T2inDST.png) On peux voir qu'elles sont identiques. ## 7 Affichage de certificat : Le certificat d'updago et de zimbra: Les deux sont les mêmes ![image](https://hackmd.io/_uploads/SkwQ33vrp.png) ![image](https://hackmd.io/_uploads/ByRL33vrp.png) J'affiche le certificat de l'ANSSI: ![image](https://hackmd.io/_uploads/r1ptn2DrT.png) Nous pouvons voir que le blog coyotte n'est pas sécurisé. ![image](https://hackmd.io/_uploads/ryn2n2wHa.png) ## 8 Version de TLS utilisée: Voici la version de TLS en se connectant à Google: ![image](https://hackmd.io/_uploads/SJRyT2Dr6.png) Et voici celle quand nous nous connectons à l'université: ![image](https://hackmd.io/_uploads/BkX7ThDrT.png)