TP1 Cryptage Siganture Chiffrement

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 9

IHEC TP Sécurité Informatique 3ième année LAIAA

Cryptage et Signature d’un document à l’aide de

OBJECTIFS DE CE TP :

L'application GnuPG sert à chiffrer des données : vous pouvez vous en servir pour
communiquer en toute sécurité (courriel, messagerie instantanée, etc.) et pour chiffrer vos
fichiers (qui pourront d'ailleurs être également déchiffrés sous d'autres systèmes
d'exploitation comme Windows). Nous allons mettre le point sur le principe de cryptage, en
suivant les différentes étapes de ce processus sur le plan pratique avec l’outil GNU PG.
RECOMENDATIONS :
A la fin de chaque séance vous êtes appelés à faire un compte rendu, résumant les
différentes activités faites durant la séance de TP et l’envoyer à l’adresse suivant
[email protected].
I. QUELQUES CONCEPTS DE BASE :

PRINCIPE :
Commençons par expliquer leur procédé de façon imagée. Un ami doit vous faire
parvenir un message très important par la poste, mais vous n'avez pas confiance en
votre facteur que vous soupçonnez d'ouvrir vos lettres. Comment être sûr de recevoir
ce message sans qu'il soit lu? Vous commencez par envoyer à votre ami un cadenas
sans sa clé, mais en position ouverte. Celui-ci glisse alors le message dans une boite
qu'il ferme à l'aide du cadenas, puis il vous envoie cette boite. Le facteur ne peut pas
ouvrir cette boite, puisque vous qui possédez la clé pouvez le faire.

1|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

ANALOGIE :
La cryptographie à clé publique ou Asymétrique repose exactement sur ce principe.
On dispose d'une fonction P sur les entiers, qui possède un inverse S. On suppose
qu'on peut fabriquer un tel couple (P,S), mais que connaissant uniquement P, il est
impossible (ou au moins très difficile) de retrouver S.

• P est la clé publique, que vous pouvez révéler à quiconque. Si Bob veut vous
envoyer un message, il vous transmet P(message).
• S est la clé secrète, elle reste en votre seule possession. Vous décodez le
message en calculant S(P(message))=message.
• La connaissance de P par un tiers ne compromet pas la sécurité de l'envoi des
messages codés, puisqu'elle ne permet pas de retrouver S. Il est possible de
donner librement P, qui mérite bien son nom de clé publique.

Clé publique : c’est cette clé qu'utilisera Bob pour envoyer des messages chiffrés à
Alice. La clé privée correspondante sert à déchiffrer. Ainsi, Alice, et elle seule,
peut prendre connaissance des messages de Bob, à condition que la clé privée ne
soit pas percée.

Clé Privée : La clé privée sert à déchiffrer. Ainsi, Alice, et elle seule, peut prendre
connaissance des messages de Bob, à condition que la clé privée ne soit pas percée.

PROCESSUS COMPLET :

1. Bob crée une paire de clés asymétriques : il conserve la clé privée et diffuse
librement la clé publique (notamment à Alice)
2. Alice crée une paire de clés asymétriques : clé privée (qu'elle conserve), clé
publique (qu'elle diffuse librement, notamment à Bob)
3. Bob effectue un condensat de son message « en clair » puis chiffre ce condensat
avec sa propre clé privée

2|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

4. Bob chiffre son message avec la clé publique d'Alice.


5. Bob envoie le message chiffré accompagné du condensat chiffré.
6. Alice reçoit le message chiffré de Bob, accompagné du condensat.
7. Alice déchiffre le message avec sa propre clé privée. À ce stade le message est
lisible mais elle ne peut pas être sûre que Bob en soit l'expéditeur.
8. Alice déchiffre le condensat avec la clé publique de Bob. Alice utilise la même
fonction de hachage sur le texte en clair et compare avec le condensat déchiffré
de Bob. Si les deux condensats correspondent, alors Alice peut avoir la
certitude que Bob est l'expéditeur. Dans le cas contraire, on peut présumer
qu'une personne malveillante a tenté d'envoyer un message à Alice en se
faisant passer pour Bob !

CONCLUSION

Cette méthode d'authentification utilise la spécificité des paires de clés asymétriques :


si l'on chiffre un message en utilisant la clé publique, alors on peut déchiffrer le
message en utilisant la clé privée ; l'inverse est aussi possible : si l'on chiffre en
utilisant la clé privée alors on peut déchiffrer en utilisant la clé publique.

RECAPITULATIF :

Cryptage Symétrique
Cette méthode est la plus simple à comprendre : si Anne (A) veut envoyer un message
chiffré à Bob (B) elle doit lui communiquer un mot de passe (Clé). Comme l'algorithme
de chiffrement est symétrique, on a la relation suivante :
Texte Chiffré = Chiffrement(Clé, Texte)

Ainsi, Anne peut aussi déchiffrer un message en provenance de Bob avec la même clé.
La situation peut cependant devenir complexe, si Anne doit envoyer un message
chiffré à Bob et à Charlie mais qu'elle ne souhaite pas donner la même clé à Charlie.
Plus le nombre de personnes est grand, plus il est difficile de gérer les clés
symétriques.

Cryptage Asymétrique
La propriété des algorithmes asymétriques est qu'un message chiffré par une clé
publique n'est lisible que par le propriétaire de la clé privée correspondante. À

3|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

l'inverse, un message chiffré par la clé privée sera lisible par tous ceux qui possèdent
la clé publique.
Ainsi avec sa clé privé, Anne :

 signe ses messages.


 lit (déchiffre) les messages qui lui sont adressés.

II. GLOSSAIRE :
Cryptage Asymétrique = cryptage à clé public
Cryptage Symétrique = cryptage à clé Privée
Chiffrer= crypter
Signer= Si le contenu du message demande à ce que l'identité de l'expéditeur soit
connue avec certitude, il faut que celui-ci signe électroniquement son message.

III. CHIFFREMENT D’UN DOCUMENT AVEC GNU PG :


GnuPG (ou GPG, de l'anglais GNU Privacy Guard) est l'implémentation GNU du
standard OpenPGP défini dans la RFC 48802. Il permet à ses utilisateurs de
transmettre des messages signés ou chiffrés. Cela permet ainsi de garantir
l'authenticité dans le premier cas ou, dans le second cas, la confidentialité du message.

1. Générer une nouvelle paire de clés

• La ligne de commande gpg --gen-key est utilisée pour créer une nouvelle paire
de clés.

4|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

sender@ubuntu:~$ gpg --gen-key


gpg (GnuPG) 0.9.4; Copyright (C) 1999 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:


(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection?

• Choisissez DSA and ElGamal (default) en tapant 1. Une clef de 1024 bits vous
assurera une bonne protection.
• Choisissez alors dans combien de temps votre clef expirera. Vous pouvez
entrer 30 comme nombre de jours pour faire vos premiers essais.
• Confirmez par y.

About to generate a new ELG-E keypair.


minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)

• Enfin, vous devez choisir une date d'expiration. Si le choix 1 est fait, la date
d'expiration sera valable pour la paire de clés.
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)

• Vous allez alors créer un identifiant pour votre clef :

1. Il faut d'abord donner vos Prénom et NOM.


2. Remplissez ensuite votre adresse de courriel (même si vous utilisez cette clef
uniquement pour chiffrer vos fichiers). Cette adresse doit correspondre avec
celle que vous utilisez, sans artifice anti-spam.
3. Le commentaire est optionnel.
4. Validez par « O ».
5. Il faut maintenant fournir le mot de passe.

N.B. : Rien ne s'affiche lorsque vous tapez votre mot de passe dans la console. C'est
une question de sécurité.

5|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

2. Générer un certificat de révocation :

Une fois que votre paire de clés a été créée, vous devez immédiatement créer un
certificat de révocation pour la clé principale en utilisant l'option --gen-revoke. Si vous
oubliez votre mot de passe, ou si votre clé privée est compromise ou perdue, ce
certificat de révocation peut être publié pour notifier aux autres que votre clé
publique ne doit plus être utilisée. On peut toujours se servir d'une clé publique
révoquée pour vérifier des signatures que vous avez faites par le passé, mais on ne
peut s'en servir pour chiffrer de nouveaux messages à votre attention. Cela n'affecte
pas non plus votre capacité à déchiffrer les messages qui vous ont été adressés
précédemment, si vous avez toujours accès à votre clé privée.

gpg --output revoke.asc --gen-revoke mykey


[...]

L'argument mykey doit être un identificateur de clé, soit celui de la clé principale de
votre paire de clés, soit une partie d'un identificateur d'utilisateur qui identifie votre
clé. Le certificat produit sera enregistré dans le fichier revoke.asc. Si l'option --
output est omis, le résultat de la commande sera écrit sur la sortie standard. Comme
le certificat est court, vous pouvez souhaiter en imprimer une copie pour la stocker
dans un endroit sûr. Le certificat ne doit pas être stocké dans un endroit où d'autres
pourraient accéder, car n'importe qui peut publier le certificat de révocation, rendant
inutilisable la clé publique correspondante.

3. Échanger des clés


Pour communiquer avec les autres, vous devez échanger vos clés publiques. Pour
afficher la liste des clés de votre trousseau de clés publiques utilisez l'option de ligne
de commandes --list-keys.
gpg --list-keys
/home/sender/.gnupg/pubring.gpg
---------------------------------------
pub 1024D/BB7576AC 2012-10-30 user (sender) <[email protected]>
sub 1024g/78E9A8FA 2012-10-30

4. Exporter une clé publique

Pour envoyer votre clé publique à un correspondant, vous devez d'abord l'exporter en
utilisant l'option de ligne de commandes --export. Elle prend un argument
supplémentaire : l'identificateur de la clé à exporter. Comme avec l'option --gen-
revoke, soit l'identificateur de la clé, soit une partie de l'identificateur utilisateur peut
être utilisé pour identifier la clé à exporter.

gpg --output sender.gpg --export [email protected]

La clé est exportée dans un format binaire, mais ceci peut être problématique si la clé
doit être envoyée par email ou publiée sur une page web. C'est pourquoi GnuPG

6|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

supporte une option de ligne de commandes --armor qui provoque la génération des
sorties dans un format ASCII. En général, toutes les sorties de GnuPG, comme par
exemple clés, documents chiffrés, et signatures, peuvent être exportés dans le format
ASCII en ajoutant l'option --armor.

gpg --armor --export [email protected]


-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v0.9.7 (GNU/Linux)
Comment: For info see http://www.gnupg.org

[...]
-----END PGP PUBLIC KEY BLOCK-----

4. Chiffrer et déchiffrer des documents

Si vous voulez chiffrer un message pour Alice, vous le faites en utilisant la clé
publique d'Alice, qui le déchiffre avec sa clé privée. Si elle vous envoie un message,
elle le chiffre en utilisant votre clé publique, et vous le déchiffrez avec votre clé privée.
Donc pour envoyer un message crypté à votre destinataire vous devez avoir sa clé
publique, pour ce faire nous allons importer la clé publique des destinataires que
nous voulons leurs envoyé des messages chiffrés.

Une clé publique peut être ajoutée à votre trousseau de clés publiques avec l'option --
import.

gpg --import receiver.gpg


gpg: key 9E98BC16: public key imported
gpg: Total number processed: 1
gpg: imported: 1
alice% gpg --list-keys
/users/sender/.gnupg/pubring.gpg
---------------------------------------
pub 1024D/BB7576AC 2012-10-30 sender (sender) <[email protected]>
sub 1024g/78E9A8FA 2012-10-30

pub 1024D/9E98BC16 2012-10-30 receiver (receiver) <[email protected]>


sub 1024g/5C8CBD41 2012-10-30

Une fois que la clé a été importée, elle devrait être validée. Une clé peut être validée en
vérifiant son empreinte. En la signant, vous certifiez que c'est une clé valide.
L'empreinte d'une clé peut être visualisée rapidement avec l'option de ligne de
commandes --fingerprint, mais pour certifier la clé, vous devez l'éditer.

gpg --edit-key [email protected]

pub 1024D/9E98BC16 created: 2012-10-30 expires: never trust: -/q


sub 1024g/5C8CBD41 created: 2012-10-30 expires: never
(1) receiver (receiver) <[email protected]>

Command> fpr
pub 1024D/9E98BC16 2012-10-30 receiver (receiver) <[email protected]>
Fingerprint: 268F 448F CCD7 AF34 183E 52D8 9BDE 1A08 9E98

7|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

BC16

L'empreinte d'une clé est vérifiée avec le propriétaire de la clé. Ce peut être fait en
personne, au téléphone, ou par tout autre moyen, du moment que vous pouvez
garantir que vous communiquez bien avec le vrai propriétaire de la clé. Si l'empreinte
que vous obtenez est la même que celle que le propriétaire de la clé obtient, alors vous
pouvez être sûr que vous avez une copie correcte de la clé.

Après avoir vérifié l'empreinte, vous pouvez signer la clé pour la valider. Étant donné
que la vérification des clés est un point faible de la cryptographie à clé publique, vous
devez être extrêmement prudent et toujours vérifier l'empreinte d'une clé avant de la
signer.

Command> sign

pub 1024D/9E98BC16 created: 2012-10-30 expires: never trust: -/q


Fingerprint: 268F 448F CCD7 AF34 183E 52D8 9BDE 1A08 9E98 BC16

receiver (receiver) <[email protected]>

Are you really sure that you want to sign this key with your key: "sender
(sender) <[email protected]>"

Really sign?

Une fois signée, vous pouvez vérifier la clé pour lister ses signatures et voir celle que
vous avez ajoutée. Chaque identificateur d'utilisateur de la clé aura une ou plusieurs
auto-signatures et aussi une signature pour chaque utilisateur qui a validé cette clé.

Command> check
uid receiver (receiver) <[email protected]>
sig! 9E98BC16 2012-10-30 [self-signature]
sig! BB7576AC 2012-10-30 Alice (Judge) <[email protected]>

Chiffrement déchiffrement d’un document:

Pour chiffrer un document, il faut utiliser l'option --encrypt. Vous devez avoir la clé
publique de tous les destinataires. Le programme attend le nom du document à
chiffrer en entrée ; s'il est omis, il lit l'entrée standard. Le résultat chiffré est placé sur
la sortie standard ou comme spécifié en utilisant l'option --output. En plus du
chiffrement, le document est compressé pour plus de sécurité.

sender@ubuntu:~ gpg --output confidentiel.gpg --encrypt --recipient


[email protected] document_envoyé.txt

L'option --recipient est utilisée une fois pour chaque destinataire du message, et
prend un argument supplémentaire spécifiant la clé publique pour laquelle le
document doit être chiffré. Le document chiffré peut seulement être déchiffré par
quelqu'un possédant une clé privée qui correspond à une des clés publiques des

8|Page
IHEC TP Sécurité Informatique 3ième année LAIAA

destinataires. En particulier, vous ne pouvez pas déchiffrer un document chiffré par


vous, à moins que vous ayez inclus votre clé publique dans la liste des destinataires.

Pour déchiffrer un message, on utilise l'option --decrypt. Vous avez besoin de la clé
privée pour laquelle le message a été chiffré. De la même manière que pour le
chiffrement, le document à déchiffrer est l'entrée et le document déchiffré est la sortie.

receiver@ubuntu:~ gpg --output document_reçu.txt --decrypt


confidentiel.gpg

You need a passphrase to unlock the secret key for


user: "receiver (receiver) <[email protected]>"
1024-bit ELG-E key, ID 5C8CBD41, created 2012-10-30 (main key ID
9E98BC16)

Enter passphrase:

Perspectives à ce TP
C’est quoi le rôle d’un Certificat Numérique ?

9|Page

Vous aimerez peut-être aussi