# Cryptographie Chiffrage ## Préalable Le hash d'un fichier ou empreinte numérique peur se réaliser à l'aide des commande `md5sum, sha1sum et sha256sum`. On passe en argument à ces commandes le fichier à hasher. Tester ces commandes pour comprendre leur fonctionnement. Rappel; ------ Pour rediriger le résultat d'une commande dans un fichier on utilise les redirections à l'aide de `>>` ``` #!/bin/bash date >> log.txt ``` ## MD5, SHA-1 et SHA-2 sur un fichier 1. Ecrire un script qui liste dans un fichier le contenu du répertoire /home/sen 1. Ecrire un script qui écrit dans un fichier l'empreinte numérique d'un fichier txt présent dans le répertoire /home/sen Le contenu du fichier log doit être le suivant : - date - répertoire du fichier et nom du fichier - empreinte obtenue avec les commandes md5sum, sha1sum et sha256sum. 1. Modifier le contenu du fichier txt et comparer avec le précédent hash du fichier. ## MD5, SHA-1 et SHA-2 sur un répertoire 1. Proposer un moyen de verifier l'intégrité d'un ensemble large de fichiers en utilisant md5sum https://medium.com/@milindalaknath/find-difference-using-md5sum-280871eb3cf8 https://unix.stackexchange.com/questions/35832/how-do-i-get-the-md5-sum-of-a-directorys-contents-as-one-sum ## Trousseau de clés et signature numérique GPG 1. Qu'est-ce que GPG ? 1. Générez une paire de clé avec la commande `gpg --gen-key` en utilisant les paramètres par défaut. 1. Listez votre trousseau de clés avec la commande `gpg --list-keys` et validezla présence de vos clés. 1. Exportez votre clé publique avec la commande `gpg --armor --output maclé.asc --export UserID` et donnez le résultat. 1. Créez un fichier texte contenant un petit paragraphe, et chiffrez ce document avec la commande `gpg -er UserID document.txt`. Validez le résultat en visualisant le fichier `document.txt.gpg`, et supprimez le document non chiffré. 3. Déchiffrez le document chiffré créé précédemment avec la commande `gpg document.txt.gpg`, et validez le résultat. 4. Signez le document texte initial avec la commande `gpg --clearsign document.txt`. Validez le résultat en visualisant le fichier `document.txt.asc`. 5. Vérifiez le document signé avec la commande `gpg --verify document.txt.asc`. 6. Quelle est l'utilité de la signature numérique ? ## Chiffrement symétrique AES 1. Créez un fichier texte contenant un petit paragraphe, et chiffrez ce document en AES 256 bits avec la commande `openssl enc -aes-256-cbc -in inputfile -out outputfile`. Validez que le document est bien chiffré. 3. Déchiffrez le document chiffré avec la commande `openssl enc -d -aes-256-cbc -in inputfile -out outputfile`. Validez que le document est bien déchiffré. ## Chiffrement asymétrique RSA 1. Générez une clé privée RSA de 1024 bits avec la commande ``` openssl genrsa -out server-private.key 1024```, et visualisez le contenu du fichier ainsi généré. 1. Affichez les paramètres de votre clé privée RSA avec la commande `openssl rsa -in server-private.key -text -noout`, et commentez le résultat. 1. Générez une clé publique RSA à partir de votre clé privée avec la commande `openssl rsa -in server-private.key -pubout -out server-public.key`, et visualisez le contenu du fichier ainsi généré. 1. Générez un fichier aléatoire de 32 octets avec la commande o`penssl rand32-out rand32.txt`. Ensuite chiffrez le fichier avec la commande ``` openssl-rsautl -encrypt -pubin -inkey server-public.key -in rand32.txt -out rand32enc.txt```. Validez que le document est bien chiffré. 1. Déchiffrez le fichier chiffré avec la commande `openssl rsautl -decrypt -inkey server-private.key -in rand32enc.txt -out rand32-dec.txt`. Validez que le document est bien déchiffré. ## Connexion SSH automatique avec clés RSA a) Initialisez la configuration SSH du compte etudiant de deux machines Linux avec la commande rm -rf ~/.ssh. Lancez le service SSH sur une des deux machine Linux avec la commande service ssh start, et utilisez l'autre machine en tant que client SSH pour validez le fonctionnement du service SSH avec la commande ssh etudiant@adresseserver. Puis déconnectez-vous du serveur. b) Sur la machine client SSH avec le compte etudiant, générez les clés RSA avec la commande ssh-keygen en laissant les paramètres par défaut et sans mot passe. Visualisez le contenu des fichiers générés. Ensuite ajoutez votre identité RSA à l'agent d'authentification local SSH avec la commande ssh-add. c) Transférez votre clé sur le serveur SSH avec ma commande ssh-copy-id etudiant@adresseserver. Validez la connexion automatique du client avec le serveur en utilisant la commande ssh etudiant@adresseserver.