0% ont trouvé ce document utile (0 vote)
14 vues4 pages

Applications pratiques de la cryptographie

L'objectif est de manipuler des outils de cryptographie en ligne de commande comme OpenSSL et GnuPG pour mettre en œuvre des schémas de chiffrement et de signature. Le document décrit comment générer des certificats, signer et vérifier des messages, et chiffrer et déchiffrer des fichiers à l'aide de ces outils.

Transféré par

KaramiYusuf
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
14 vues4 pages

Applications pratiques de la cryptographie

L'objectif est de manipuler des outils de cryptographie en ligne de commande comme OpenSSL et GnuPG pour mettre en œuvre des schémas de chiffrement et de signature. Le document décrit comment générer des certificats, signer et vérifier des messages, et chiffrer et déchiffrer des fichiers à l'aide de ces outils.

Transféré par

KaramiYusuf
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Cryptographie

TP 6
Applications pratique

L'objectif est de manipuler quelques outils en ligne de commande pour mettre


en uvre des schmas simples de chiffrement et de signature.
Les exercices sont raliser sous Linux, depuis une invite de commande (un
terminal). Se placer dans un rpertoire vide pour commencer...

OpenSSL :
OpenSSL est une bibliothque de cryptographie opensource permettant de
raliser l'ensemble des fonctions courantes. Il existe galement un outil
utilisable en ligne de commande permettant d'accder ces fonctions.

Gestion des certificats RSA


- Gnration d'un certificat auto-sign
Commande :
openssl req -x509 -days 365 -newkey rsa:1024 -keyout [Link] -out [Link]

Le champ important ici est Common Name . Dans le cas d'un site internet, il
s'agit du nom d'hte utilis par les clients.
Avec cette commande, la cl prive est chiffre par une passphrase. Dans le
cas d'une cl utilise par un systme automatis, on peut viter ce chiffrement
en ajoutant le paramtre -nodes.
Cela gnre un certificat auto-sign ( [Link]) et la cl prive associe
([Link]).
- Vrification du certificat
Pour afficher les informations du certificat :
openssl x509 -text -in [Link]

On y retrouve les informations saisies prcdemment. Chercher le champ


metteur, et dtenteur...
- Test : rcupration d'un certificat SSL
La commande suivante permet de rcuprer un certificat depuis un serveur
SSL : (taper les 3 lignes)
echo |\
openssl s_client -connect <host>:443 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > [Link]

Cette commande tablit une connexion avec le serveur <host>, et en rcupre


le certificat. Il est enregistr dans le fichier [Link]. On peut ensuite en
afficher les informations avec la commande prcdente.
Essayer avec le nom d'hte [Link] . On constate que l'metteur
et le dtenteur du certificat ne sont pas les mmes...

Signature d'un message


- Signer un message
openssl smime -sign -signer [Link] \
-inkey [Link] > [Link]

Cela gnre un message sign (format S/MIME) normalement utilis pour les e-
mails dans le fichier [Link].
Il est normalement possible d'envoyer ce fichier tel quel comme un e-mail avec
la commande sendmail... Ce qu'on ne fera pas ici.
- Vrification d'une signature
Vous pouvez normalement vrifier la signature via la commande :
openssl smime -verify -in [Link]

Si vous essayez, vous verrez que la vrification choue.


Pour rsoudre le problme utiliser la commande :
openssl smime -verify -CAfile [Link] -in [Link]

La commande -CAfile permet de spcifier un CA utiliser. Pourquoi cette


commande fonctionne ici, alors qu'il n'y a pas de CA ?
Pour pouvoir changer des messages sign, il faudrait faire parvenir le
message sign, ainsi que la cl publique ([Link]).

Chiffrement symtrique
- Chiffrer un fichier
Crer un message dans un fichier texte, appel par exemple [Link].

OpenSSL permet de faire du chiffrement simple, bas sur mot de passe. Pour
afficher la liste des algorithmes disponibles, utiliser :
openssl list-cipher-commands

Cette commande liste toutes les fonctions de chiffrement prsente dans la


version courante de OpenSSL, y comprit certaines mthodes qui ne sont pas de
la cryptographie (par exemple, base64).
On utilisera AES en mode CBC ici, on peut donc rduire la liste :
openssl list-cipher-commands |grep aes |grep cbc

Une fois l'algorithme choisi, on peut chiffrer ainsi :


openssl enc -aes-256-cbc -in [Link] -out [Link]

Pour l'exemple, chiffrer deux fois le message dans deux fichiers diffrents
(message.cipher1 et message.cipher2) avec le mme mot de passe. Vrifier
alors si les chiffrs sont diffrents avec :
diff message.cipher1 message.cipher2
Pourquoi les deux fichiers sont diffrents ?
Essayer en ajoutant le paramtre -nosalt
- Dchiffrer un fichier
Aussi simplement :
openssl enc -d -aes-256-cbc -in [Link] -out [Link]

Normalement, on obtient en sortie le mme fichier que l'entre, ce que l'on


peut vrifier avec la commande :
diff [Link] [Link]

Si les deux fichiers sont identiques, rien n'est affich.

Autres commandes utiles


Empreintes : openssl dgst -sha256 [Link]
Extraite la cl pub. : openssl x509 -in [Link] -pubkey -noout > [Link]

Signer empreinte : openssl dgst -sha256 -sign [Link] [Link] > [Link]

Vrifier : openssl dgst -sha256 -verify [Link] -signature [Link] [Link]

Base64 : openssl enc -base64 -in [Link]

OpenSSL en ligne de commande permet d'intgrer toutes ces fonctions dans


des scripts complexes, et la bibliothque de programmation est utilis dans de
nombreux programmes (par exemple navigateur web...)

GnuPG :
GnuPG/GPG est un outil permettant de faire du chiffrement et de la signature
asymtrique. Son utilisation commence gnralement par gnrer sa propre
paire de cl. On diffuse ensuite sa cl, et on peut utiliser le systme.
- Gnration de la cl
gpg --gen-key

On peut laisser la plupart des choix par dfaut (cl RSA/RSA, taille 2048, sans
expiration...).
Noter/retenir l'identifiant de la cl utilis : en face de la ligne pub pour la cl
publique, sub pour la cl prive.
- Chiffrement
gpg -e -r <nom cible> [Link]

(Pour tester, chiffrez pour vous dans un premier temps...)


Cela produit un chiffr en ajoutant .gpg la fin du nom du fichier original (non-
modifi).
- Dchiffrement
gpg --output [Link] -d [Link]

Cela dchiffre avec la cl prive associe automatiquement. Si vous vous tes


mis comme destinataire, votre cl priv est stocke dans la liste des cls de
votre compte, et le programme vous demande la passphrase associe.
- Gestion des cls
Pour que les autres puissent utiliser votre cl publique, il faut qu'ils la
connaissent. Vous pouvez l'envoyer de cette faon :
Il faut d'abord l'enregistrer dans un fichier :
gpg --export -a <nom> > [Link]

Vous pouvez ensuite envoyer ce fichier (par exemple par mail) qui peut tre
intgr aux cls par la commande suivante :
gpg --import [Link]

par le destinataire. Cette mthode n'apporte aucune garantie ; il faut s'assurer


par d'autres moyens (par exemple, vrification de l'empreinte de la cl) que
celle ci est bien intgre et authentique...
Pour lister les cls prsentes dans votre trousseau :
gpg --list-keys

- Application
Enregistrez votre cl publique dans un fichier avec votre nom, et envoyez l au
groupe de travail. Ajoutez les cls des autres dans votre list.
Vous pouvez maintenant chiffrer un message avec la commande prcdente,
en mettant le nom de quelqu'un d'autre en destinataire (ce qui utilise la cl
publique pour chiffrer). Faites le, et envoyez le message au groupe (par pice
jointe...). Mettez quand mme de quoi savoir qui il est rellement destin
pour gagner du temps...
Vous pouvez essayer de dchiffrer les messages ; seul ceux qui vous sont
destins seront visible, et pourront tre dchiffr avec votre cl prive.
- Signatures
On utilise la commande suivante :
gpg --sign --local-user <nom signataire> [Link]

Cela crera comme prcdemment un fichier avec l'extension .gpg, contenant


le message et sa signature. L'option --local-user peut tre omise pour signer
avec la cl par dfaut (la premire cr en gnral).
Si vous ouvrez le fichier .gpg avec un diteur de texte, vous pourrez y voir le
message en clair. Il est possible de chiffrer en mme temps, en combinant les
commandes :
gpg --sign -e -r <nom destinataire> [Link]

- Vrification
Commande de vrification :
gpg --verify [Link]

et dans le cas d'une version chiffre :


gpg -d [Link]

On utilise la commande de dchiffrement. Si elle dtecte une signature, cette


dernire sera alors vrifie.
Si il reste du temps, essayez maintenant d'envoyer des messages signs aux
autres...

Vous aimerez peut-être aussi