Prise en mains

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

Générer une paire de clés

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

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

Révoquer une 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.

Échanger des clés

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

Les serveurs de clés

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

Signature et chiffrement avec GPG

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.

Vérifier une signature

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

Chiffrer et déchiffrer

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

Toile de confiance

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

Intégration au navigateur et client email

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.