Dans ce labo, le prof a décidé d’enterrer la hache de guerre et de vous pardonner tous vos méfaits. Il s’engage à ne pas vous dénoncer aux autorités à condition que vous signiez un contrat avec lui.
Vous êtes prêts? Allons-y! Suivez les étapes et notez toutes vos manipulations. La remise se fait sur Moodle. N’oubliez de garder une copie de votre travail et de noter les commandes que vous utilisez. Il y aura des manipulations semblables à effectuer à l’examen pratique 1 et vous n'aurez pas droit à Internet.
Le prof a préparé un contrat qu’il a dûment signé et versé sur Moodle. Il vous demande de signer le contrat à votre tour.
Téléchargez le contrat de Moodle vers votre VM, puis verser
contrat.txt vers le serveur à l'aide de SCP.
Assurez-vous que le fichier est bien placé dans le dossier
contrat sur le serveur.
Connectez-vous maintenant sur serveurprof.com avec
ssh. Voyons voir ce que le prof a laissé pour vous sur le serveur en
affichant la liste des fichiers qui se trouvent dans votre
répertoire utilisateur. Vous trouverez un dossier
contrat contenant les fichiers de travail pour le labo
:
contrat.txt est le fichier texte que vous avez
téléversé et qui contient le contrat que le prof a signé et veut
vous faire signer à votre tour.
certificat.pem est le certificat numérique
garantissant l’identité du prof et contenant sa clé publique. C’est
grâce à la clé publique contenue dans le certificat que vous pourrez
valider la signature du prof.
contrat.dgst contient l’empreinte du fichier
contrat.txt. C’est-à-dire que le fichier
contrat.txt a été passé dans une fonction de hachage et
le résultat est contenu dans ce fichier.
contrat.sign contient la signature de
l’empreinte contrat.dgst. Le prof a signé l’empreinte à
l’aide de sa clé privée.
Pour valider l’identité de la signature, vous devrez d’abord vous assurer que le certificat est bien celui du prof et qu’il ne peut répudier celui-ci.
Vous devez ensuite vérifier la validité de la signature avec la clé publique contenue dans le certificat. Seule la clé privée du prof a pu chiffrer un document qui peut ensuite être déchiffré avec sa clé publique.
Pour valider l’intégrité du contrat, vous devrez ensuite vérifier que l’empreinte signée est la même que celle du contrat.
Allons-y! Commencez par vérifier le contenu du certificat à l’aide de la commande suivante :
openssl x509 -noout -text -in certificat.pem
Oh! Il y a beaucoup d’information! Remontez plus haut et cherchez la ligne commençant par « Subject: CN ». Cela identifie l’entité (Common Name) pour laquelle ce certificat a été émis.
Que contient la ligne Subject du certificat numérique? En quoi cela garantit-il l’authenticité et la non-répudiation de la signature du prof?
Vérifiez maintenant que l'empreinte du fichier
contrat.txt contenu dans le fichier
contrat.dgst est la bonne. L'empreinte du fichier a été
produite avec l'algorithme SHA-256.
Maintenant vérifiez que l’empreinte contenue dans le fichier
contrat.dgst est bien la même que celle que vous venez
de générer.
Les deux empreintes sont-elles identiques? Qu'est-ce que ça signifie?
Bien! Vous allez maintenant valider la signature du prof en utilisant sa clé publique. Tout d’abord, vous devez extraire la clé publique du certificat avec la commande suivante :
openssl x509 -pubkey -noout -in certificat.pem > pubkey.pem
Cela a créé un nouveau fichier nommé pubkey.pem
contenant la clé publique du prof.
Pour vérifier qu’il a bien signé l’empreinte du contrat, vous devez utiliser la commande suivante :
openssl dgst -sha256 -verify pubkey.pem -signature contrat.sign contrat.txt
Vous venez de vérifier la signature du prof à l’aide de sa clé publique. Qu’est-ce que cela signifie concrètement?
Maintenant que vous avez validé que le prof a bien signé le contrat, c’est à votre tour de signer celui-ci.
Mais avant de signer un contrat, il vaut toujours mieux le lire! Ouvrez le fichier texte contenant le contrat à l’aide d'un éditeur texte :
Hum… on dirait bien que le prof a essayé de vous piéger à son tour. Une chance que vous lisez toujours bien les contrats avant de les signer! Mais rira bien qui rira le dernier…
Faites une copie du fichier contrat.txt que vous
nommerez nouveau_contrat.txt. Remplacez la lettre « b »
du mot « biens » par un « r » et sauvegardez le fichier. Bien fait
pour lui!
Regardez l’empreinte du nouveau fichier à l’aide de la fonction
de hachage SHA-256 et comparez-la à celle du fichier
contrat.dgst.
L’empreinte a changé du tout au tout. À quelle propriété des fonctions de hachage cela fait-il référence?
Refaites la commande pour faire la vérification de la signature du prof, cette fois avec le contrat modifié :
openssl dgst -sha256 -verify pubkey.pem -signature contrat.sign nouveau_contrat.txt
La signature du prof est-elle toujours valide suite aux changements apportés au contrat? Pourquoi?
Vous devez maintenant signer le nouveau contrat avant de l'envoyer au prof. Commencez par générer une clé privée :
openssl genrsa -out cleprivee.pem
Cela a créé un nouveau fichier cleprivee.pem
contenant votre clé privée. Pour créer la clé publique
correspondante, vous devez entrer la commande suivante :
openssl rsa -in cleprivee.pem -pubout -out clepublique.pem
Vous avez maintenant une clé privée (qui doit rester secrète!) pour signer des contrats et déchiffrer des messages et une clé publique que vous pouvez transmettre à vos correspondants pour qu’ils puissent valider votre signature et chiffrer les messages qui vous sont adressés.
La dernière étape consiste à signer l’empreinte du nouveau contrat que vous avez générée. Cela assure l’intégrité du contrat tel que vous l’acceptez au moment de la signature.
openssl dgst -sha256 -sign cleprivee.pem -out nouveau_contrat.sign nouveau_contrat.txt
Si tout a bien fonctionné, vous avez généré un nouveau fichier
nouveau_contrat.sign qui certifie votre signature.
Expliquez chacun des paramètres de la commande que vous avez effectuée.
Vous devez maintenant envoyer le nouveau contrat, votre signature
et votre clé publique au prof pour qu’il puisse à son tour valider
et signer le contrat modifié. À l'aide de SCP, téléchargez
nouveau_contrat.sign et faites la remise du fichier
dans Moodle.
Pourquoi votre signature dans son état actuel ne garantit pas votre identité et la non-répudiation du contrat signé?
Bien joué! Vous êtes maintenant prêt à signer des contrats importants et à conquérir le monde!