Premièrement, on va chiffrer un message avec une clé symétrique. Cela permettra d’envoyer un fichier à un ami de façon sécurisée (le contenu est chiffré). La seule chose à entrer sera un mot de passe, que l’ami devra aussi connaître.
simple chiffrement et déchiffrement de fichier
gpg --symmetric todo # chiffrement
gpg todo # déchiffrement
création d’une paire de clés asymétriques
gpg --gen-key
On aura une paire de clés dans ~/.gpg/
.
lister ses clés enregistrées
gpg --list-keys
pub 4096R/1ECFD0EC 2013-12-01 [expire : 2014-12-01]
uid Mon Nom (Ce message s'auto-détruira dans 5 secondes.) <my.name@unistra.fr>
sub 4096R/AC81D8BC 2013-12-01 [expire : 2014-12-01]
Le champ « pub » correspond à la partie publique de la clé. Le champ « sub » correspond à une sous-clé.
L’option gen-revoke
génère un certificat de révocation pour une clé, au cas où on aurait des doutes sur le fait qu’elle soit restée privée, dans le pire des cas on peut la révoquée pour s’en faire une nouvelle. D’autres raisons peuvent être invoquées.
Révoquer une clé
gpg --output revoke.txt --gen-revoke <id>
La commande permet de créer le certificat et de le mettre dans le fichier revoke.txt. Ce fichier pourra être envoyé sur un site regroupant des clés gpg pour signaler à tous que la clé publique de cette clé ne doit plus être utilisée.
L’option --armor
créée une sortie en ASCII protégée plutôt qu’une sortie binaire. L’option --import
importe ou fusionne des clés (pour gérer son trousseau).
Échanger des clés
gpg --export --armor --output sacle.gpg
gpg --import --armor sacle.gpg
Maintenant que nous avons nos clés, nous voulons les partager au monde entier, et on ne va pas s’amuser à envoyer notre clé publique à chaque correspondant, on va la mettre sur un serveur d’échange de clés.
Envoyer sa clé sur un serveur d’échanges
gpg --keyserver keys.gnupg.net --send-key C45D9C4D
Récupérer la clé de quelqu’un sur le serveur
gpg --keyserver keys.gnupg.net --recv-key 0x538cf18b4e0e3cbc
On ne peut pas être vraiment sûr que cette clé provient de la personne que l’on pense. C’est pour cela qu’il y a des keysigning party, et qu’on peut attribuer des niveaux de confiances aux clés.
L’option --fingerprint
permet de récupérer l’empreinte d’une clé. Pour ça, bien évidemment, il nous faut la clé.
Quelques informations utiles :
--clearsign
copie le fichier en y ajoutant la signature à la fin.--detach-sign
crée simplement la signature dans un fichier à part (format binaire par défaut).La clé utilisée pour chiffrer ou signer est la première de la liste donnée par l’option --list-keys
.
L’option --verify
permet de vérifier la signature d’un fichier. Exemple, on veut vérifier la signature d’un message envoyé par une personne dont nous connaissons la clé:
Vérification de signature
gpg --verify monfichier.sig
ou
gpg --verify monfichier.asc
Voici un exemple de résultat:
Test de la commande de vérification de signature
gpg --verify questions.asc
gpg: Signature faite le dim. 01 déc. 2013 18:54:14 CET avec la clef RSA d'identifiant 00CB30AD
gpg: Bonne signature de « VilainPirate <toto@tata.titi> »
gpg: Attention : cette clef n'est pas certifiée avec une signature de confiance.
gpg: Rien n'indique que la signature appartient à son propriétaire.
Empreinte de clef principale : 0151 E2FC 6AE1 035B AF98 CE1D C060 C2E6 00CB 30AD
On voit ici que je ne fais pas confiance à cette clé.
Chiffrement et déchiffrement
gpg -r C45D9C4D -e monfichier
gpg -o lefichier.txt -d monfichier.gpg
Il faut passer à -r
l’identifiant du destinataire pour qui on souhaite chiffrer ce message. Le reste est explicite, -e
suivi du fichier à chiffrer. Pour déchiffrer, -d
suivi du nom du fichier à déchiffrer. On rajoute l’option -o
si on souhaite avoir un nom particulier pour le fichier une fois déchiffré.
Signer la clé de quelqu’un c’est pour indiquer qu’on connait la personne et qu’elle est de confiance. Attention cependant à ne pas signer n’importe-quelle clé.
C’est un raccourcis de la commande --edit
option « sign ». Elle peut s’utiliser de cette façon :
Signer une clé
gpg --sign-key adresse@ema.il
On peut retourner une clef signée à son propriétaire afin de l’informer de notre contre-signature. On peut également utiliser un serveur de clef et rendre cette information disponible de tous (ce qui augmentera la confiance en cet utilisateur, pour les gens qui nous font confiance).
Envoyer la contre-signature de la clé
gpg --keyserver keys.gnupg.net --send-keys 0868FE01
gpg: envoi de la clef 0868FE01 au serveur hkp keys.gnupg.net
rafraichissement de clés
gpg --refresh-keys
Pour ceux qui souhaitent profiter de GPG sur leur navigateur web, il y a enigform qui s’intègre à Firefox. Pour le mail il y a enigmail, qui s’intègre à Thunderbird.