GnuPG Guide

Cryptography, Security, Software · notes

Voir tous les documents en sécurité informatique

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

Publicité

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:

Publicité

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

[email protected]

--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

[email protected]

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:

Publicité

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

Publicité

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