GnuPG utilise la cryptographie asymetrique pour communiquer en secret. Dans un tel système, chaque
utilisateur génére une paire de clés : une clé publique et une clé privée. La clé privée est gardée en
secret quand à la clé publique elle sera diffusée auprès des interlocuteurs avec qui l'utilisateur va
communiquer.
GnuPg est un logiciel basé sur le standard OpenPGP.
GnuPG est installé par défaut dans les sytèmes Ubuntu sinon tapez:
sudo apt-get install gnupg
une interface graphique de GnuPG peut etre installée aussi comme “seahorse” ou “kleopatra”. Taper :
sudo apt-get install seahorse
Générer des clés avec GnuPG
ouvrir un terminal et taper :
gpg --gen-key
une série de questions vous sera posés, choisissez:
- RSA pour le cryptage et la signature
- une taille de clés égale à 4096
- user-ID: ton nom
- mail: ton @ mail valide (remarque: vous pouvez associer plusieurs @mail à une meme paire de clés)
- passphrase: un mot de passe secret dont il faut le mémoriser toujours
après ces etapes, une paire de clé sera générée. Donner l'ID de votre clé ?
Création d'un certificat de Revocation
un certificat de révocation doit etre crée pour revendiquer la paire de clés que vous avez générée dans
le cas où votre clé privée a été compromise !
gpg --output revoke.asc --gen-revoke $GPGKEY
Une fois généré, le certificat doit etre sauvé en secret. Un intrus qui met la met la main sur ce certificat
peut rendre votre clé inutilisable.
Construire une version ASCII de votre clé
une version ASCII de votre clé doit etre generée pour pouvoir publier votre clé dans des sites web et
via email, sinon la version binaire de lac lé sera tronqué et les editeurs mail et web ne peuvent la
coder.
gpg --output mykey.asc --export -a $GPGKEY
remarque: c'est l'option -a responsible de la conversion en ASCII
Publier la clé dans un serveur de clé publique
- on peut exporter la clé publique dans un fichier en utilisant cette commande :
gpg --export -a "Key-ID" > mykey.asc
ou
Advertisement
gpg --armor --export [email protected]
pour l'afficher à l'ecran
- copier le contenu de la clé
- consulter un serveur de clé publique comme:
http://keyserver.ubuntu.com/ ou
http://pgp.mit.edu/
et publier la clé dans un de ces serveurs, il va etre automatiquement diffusé vers tous les serveurs de
clés publiques.
Voir une liste de clé
tu peut voir la liste de clés que tu possède entapant
gpg --list-keys
tu peut voir une clé spécifique de l'utilosateur [email protected] en tapant:
gpg --list-keys [email protected]
Importer une clé publique d'un autre utilisateur
on peut importer la clé publique d'un autre utilisateur avec qui on veut
communiquer en secret depuis un serveur de clé publique et en le sauvant dans
un fichier, l'importation de la clé pour que GnuPG l'utilise se fait par cette
commande :
gpg --import name_of_pub_key_file
Verification de l'identité d'une personne : fonctionde hachage
comment etre sûr que la clé publique d'un utilisateur est integre ? Et associer la clé à cette personne ?
On peut comparer les empreintes digitales au lieu de comparer les clés eux memes :
on peut generer l'empreinte digitale d'une clé en tapant:
gpg --fingerprint [email protected]
Signer une clé
signer une clé veut dire que vous faites confiance à la clé publique que vous avez signé avec votre clé
privée et que vous avez verifier l'identité de la personne possedant la clé.
Pour signer une clé que vous avez importé, taper:
gpg --sign-key [email protected]
après la signtaure de la clé, ceci peut aider d'autres personnes à faire confiance à cette personne. Si
quelqu'un vous fait confiance et voit que vous avez signer une clé d'une autre personne, il va faire
confiance à la clé de cette personne. Vous pouver maintenant exporter cette clé signé pour que d'autres
personnes beificent de cette confiance :
gpg --export --armor [email protected]
ces personnes peuvent telecharger cette signature (envoyé pour vous) et importer la clé signé par:
Advertisement
gpg --import file_name
Chiffrement et déchiffrement des messages avec GnuPG
chiffrer/dechiffrer un message pour utilisation personnelle :
the long version
gpg --encrypt --recipient 'Your Name' foo.txt
ou # the short version
gpg -e -r Name foo.txt
le fichier chiffré sera nommé foo.txt.gpg ou foo.txt.asc
on peut maintenant déchiffrer le message qui existe dans foo.txt.gpg par:
gpg --output foodechiffre.txt --decrypt foo.txt.gpg
chiffrer/dechiffrer un message entre deux interlocuteurs
on peut maintenant chiffrer et dechiffrer des messages entre toi et ton interlocuteur
gpg --encrypt --sign --armor -r [email protected] name_of_file
--encrypt : pour chiffrer le fichier name_of_file avec la clé publique de
--sign : signer le fichier crypté par ta clé privée
-r : specifie le recepteur, donc le chiffrement sera fait avec la clé publique de Mr
si vous voulez aussi vous meme dechiffrer le message chiffré, vous devez ajouter -r
ton@mail comme recepteur
si plus qu'un recepteur existe, le message sera chiffré séparement autant de foix qu'il ya
des recepteurs
le message chiffré sera un texte ASCII et non des données binaires brut avec la
commande --armor
Dechiffrer le message :
lors de la reception d'un message chiffré, taper simplement :
gpg file_name
Envoyer des emails chiffrés et déchiffrement
Maintenant que chacun a crée une paire de clés, constituer des groupes de deux personnes et essayer de
vous envoyer des mails chiffrés et faire le déchiffrement. Faire en sorte que vous soyez sûr :
- de l'identité de votre interlocuteur
- de sa clé publique
- signer aussi les messages envoyés pour que le recepteur soit capable de verifier votre identité
Automatisation du processus du cryptage par mail
Utiliser le client mail thunderbird pour que le chiffrement/dechiffrement et/ou création/verification de
la signature soit automatique et facile. Thunderbird a besoin dans ce cas du plugin “enigmail”. Installer
ce plugin en tapant le suivant:
Advertisement
sudo apt-get install enigmail
configurer votre client mail pour envoyer/recevoir des messages chiffrés et/ou signés en utilisant le
plugin enigmail de thunderbird.
Utilisation de la cryptographie symmetrique
chiffrer le fichier “salut avec l'algorithme symmetrique AES256
gpg --armour --symmetric --cipher-algo AES256 salut
GnuPG va vous demander de donner un passphrase, ce passphrase est utilisé pour générer une clé
symmetrique de taille 256 bits pour l'alg AES256.
voir le resultat du cryptage :
gedit salut.asc
de l'autre coté de la communication, faire le décryptage :
gpg -o salutdec.txt -d salut.asc
de la meme façon l'utilisateur peut choisir n'importe quel alg symmetrique à utiliser pourvu que ça soit
supporté dans GnuPG. Ex TWOFISH ou CAMELIA256
Si on veut en plus signer le message avec notre clé privée :
gpg --sign --symmetric --cipher-algo AES256 file.txt
et pour dechiffrer et verifier la signature :
gpg -d file.txt.gpg
Simple signature d'un document
Si on veut seulement signer le document salut :
gpg --clearsign salut
resultat
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
salut people
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAEBAgAGBQJW1J/EAAoJEEgHTB4rRBdqGgsP/12hmEjsOkX5T4K7YgbV19R/
MPhV1TOx1aA4cNQlFyXAKYySMdCYVSaQNTSC6sRXOBGvECXgfvv5xezNs8pDw/Ro
FIXckxrlM6Ee4x+2Qx2bVkoi/pNlJi4NZ75tLgEM5LSzewdiRE62P8NGxeqgidwL
lPk642kbyf7ry9DYa0C7fkTPrehHwj5/qB//oTjpFZ8KqLvQnp71QlLj/n53manw
7ZmFHAwBJaHRfyRuD23WyAN8nlpOkieUSIGiWMINX5it+3c/1K6xKFDUIqnbu1Tv
FKHYlDS7DIAKGdIDDmFrOtvL/Idj3qHvD3bqttEFSiQBZxWewWPu7cuY/qB6MkHg
MlKJIGG7XVmTxpCjsjtGwtnSfIbebcPLIyhAFPHUQfvvgFN8rSP3czdhBhs/4dRh
18NTisgOQP0qudzY6BKrLyq33kpWCnaQKmjOVN1/4j9muo/3QrW01/YXTnMSRmfX
Advertisement
dV7p19c4EqfDhz4QjOP9ET6XDnDb8j/qi/yet4vbGYKv1ZVmT+u/behYswy92ynp
62ryhIDXVk98HZCPmswbRA7o/qcZzBFyxsq6egU55nZn5Lhrw7jtBF61/0hyl5AX
0fZpRH9j9u2QIRpANN3WsaqbHHamw3QCtDoafroa7ruQXslHxDWLOSllI9TdEQ4Q
mVr6q3r8LDwyct3jommx
=as2P
-----END PGP SIGNATURE-----
Coté recepteur, il verifie la signature :
gpg --verify sallutclearsign
resultat
gpg: Signature made Mon 29 Feb 2016 02:45:08 PM EST using RSA key ID 2B44176A
gpg: Good signature from "rhouma (test this) <[email protected]>"
au lieu de “clarsign” on peut utiliser la commande “sign” pour generer une signature binaire, et la
verification se fait de la meme façon.
On peut aussi choisir quel clé privé à utiliser pour signer un fichier par la commande --local-user mail |
description :
gpg --clearsign --local-user rhouma.ubuntu salut
Projet à réaliser :
Utiliser la cryptographie hybride pour communiquer en secret. La cryptographie symmetrique sera
utilisée pour chiffrer les messages et les fichiers quand à la cryptographie asymmetrique, elle sera
utilisée pour communiquer en secret les clés des algorithmes symmetriques.
Utiliser:
- thunderbird
- enigmail
- GnuPG
- Seahorse
ou
- GnuPG
- Seahorse
- plugin mailvelope de Firefox
- extension mailvelope de Chrome
pour cela vous devez importer votre paire de clés qui a été deja generé par des commandes dans un
terminal en addition de la clé publique de votre interlocuteur:
taper ça pour copier une clé publique
gpg -a --export keyID
et pour une clé privée
gpg -a --export-secret-keys keyID
visiter ces pages web pour plus de détails :
https://www.mailvelope.com
https://whiteout.io/#product