D. Chiffrer/signer ses courriels et ses données
« Je n'ai rien à cacher » :

Si on vous parle de chiffrer vos mails ou vos données, comme beaucoup de gens vous répondrez « je n'ai rien à cacher » ou « il serait étonnant que la NSA s'intéresse au contenu de mon ordinateur ». Vous avez raison, vous ne risquez probablement pas grand-chose, du moins dans l'état actuel des lois. Mais êtes-vous certains que vos contacts (famille, amis, relations, …) ne soient pas « intéressants » pour des services de renseignements publics ou privés ? Le copain de lycée qui travaille maintenant pour une entreprise sensible, votre cousin journaliste qui enquête sur une affaire de corruption, par exemple ? Ils ont beau de leur côté prendre beaucoup de précautions, si vous leur envoyez des mails en clair ou des documents non cryptés, ceux qui le souhaitent pourront y avoir accès, les lire et éventuellement localiser votre interlocuteur. En clair, en vous protégeant, c'est en fait les autres que vous protégez (voir l'article de Laurent Chemla à ce sujet).
Panneau à l'entrée d'une réserve africaine : il demande aux visiteurs de désactiver le GPS de leur appareil photo ou téléphone car l'exploitation des méta-données des photos permet aux braconniers de repérer les lieux où se trouvent les rhinocéros.
Qu'est que la cryptologie ?
La cryptologie est la science du chiffrement. Une de ses branches est le chiffrement des données, y compris celui des courriels. Il existe plusieurs façon de chiffrer ou de signer ses données : nous utiliserons ici exclusivement le chiffrement par clefs asymétriques.
Cette méthode utilise une paire de clefs aux rôles différents (d'où le qualificatif d'asymétrique) :
- une clef privée, qui doit rester secrète et seulement connu de la personne qui l'a créée
- une clef publique qui est distribuée largement à tous ceux qui peuvent en avoir l'usage
Comment fonctionne le chiffrement/ la signature par clés asymétriques?
Jean-Claude a généré une paire de clefs (publique/privée) au moyen du logiciel gpg.
Il peut signer un mail ou un fichier avec sa clef privée : ceux qui possèdent sa clef publique pourront être certains que c'est Jean-Claude qui a envoyé le mail ou le fichier. Ceux qui possèdent sa clef publique peuvent l'utiliser pour chiffrer un message ou un fichier : seul Jean-Claude pourra déchiffrer le mail ou le fichier grâce à sa clef privée (qu'il est en principe le seul à détenir).
Comment générer une paire de clef?
On utilisera le logiciel libre gpg (pour GnuPG) qui est une implémentation du standard OpenPGP.
Ouvrez un terminal et tapez
gpg --gen-key
le programme vous demande d'abord quel type de clef vous souhaitez créer : choisissez une paire de clefs RSARSA, DSA, elgamal sont des algorithmes de chiffrement. Voir par exemple les pages wikipedia qui leurs sont consacrées pour plus de détails. (choix par défaut).
Vous devez choisir la longueur de votre clef, entre 1024 et 4096 bits. Plus la clef est longue, plus elle sera difficile à casser mais plus sa génération sera longue (plusieurs minutes). Vous pouvez vous contenter de 1024 bits.
Il vous demande ensuite d'indiquer votre nom : ce sera utile pour que vos contacts puisse retrouver votre clef publique.
Puis, vous pouvez indiquer une adresse mail : entrez votre adresse institutionnelle. Bien entendu, vous pourrez créer des paires de clefs pour chacune de vos adresses mail si vous en possédez plusieurs.
Il vous est ensuite proposer de saisir un commentaire. C'est facultatif mais ça peut servir par exemple à vous identifier sur un serveur de clef si vous avez des homonymes.
Le programme vous propose de vérifier les informations que vous avez sélectionné et de les modifier si nécessaire. Si c'est correct, tapez « O ».
Vous devez ensuite saisir une phrase de passe. C'est ce qui vous permettra de modifier ou de révoquer votre clef plus tard et c'est ce que vous devrez saisir pour autoriser l'utilisation de votre clef privée. Choisissez une phrase simple dont vous serez capable de vous souvenir sans trop de problème. Par exemple, « mon premier chien s'appelait Rex » est une phrase passe acceptable. Saisissez deux fois (pour vérification) votre phrase. Attention, pour des raisons de sécurité, aucun caractère n'apparaît quand vous tapez votre phrase.

Maintenant, le système va créer votre clef. Vous allez voir un message apparaître, indiquant qu'il cherche à « obtenir suffisamment d'entropie » pour générer des nombres aléatoires. Il vous invite donc à taper (n'importe quoi) sur le clavier ou à bouger la souris… Si vous ne touchez à rien, le système vous rappellera à l'ordre !
La génération d'une clef peut prendre plusieurs minutes. À la fin, l'écran va afficher les identifiants de la paire de clefs créées :
Vous trouvez entre autres (cadre rouge) le type de la clef et sa longueur (4096R) ainsi que son identifiant (1E54D247) et sa date de création (30 janvier 2015).
Toutes les informations relatives à la paire de clefs créée sont à présent stockés dans les fichiers du répertoire (caché) .gnupg. Vous pouvez lister son contenu en tapant :
ls .gnupg
Vous remarquerez en particulier plusieurs fichiers dont le nom commence par pubring : en Anglais, « ring » est l'anneau sur lequel on accroche ses clefs. Ces fichiers sont donc en quelque sorte le porte-clé sur lequel vous allez ranger toutes les clés publiques que vous utiliserez.
Diffuser ma clef publique, récupérer des clefs publiques
Les fichiers du répertoire .gnupg sont illisibles. Vous pouvez (et devez) néanmoins exporter votre clef publique sous un format lisible (ASCII) pour la diffuser.
Tapez dans un terminal
gpg --output maclef.asc --armor --export identifiant_clef
et vous obtiendrez un fichier lisible nommé maclef.asc.
D1Ouvrez ce fichier avec un éditeur de texte pour voir son contenu mais ne le modifiez pas, il serait inutilisableVous pourrez protéger ce fichier en écriture, y compris contre vous, en modifiant ses droits. !
La diffusion de sa clef publique peut passer par plusieurs moyens : la rendre disponible sur votre site web si vous en possédez un, l'inclure dans votre signature automatique de mail (mais elle va être un peu longue…) ou la déposer sur un serveur de clefs publiques.
Cette dernière option est la plus pratique. Elle est également très simple.
Tapez dans un terminal :
gpg --send-key identifiant_clef
On peut préciser l'adresse du serveur de clef (en ajoutant l'option --keyserver
suivie de l'adresse du serveur) mais par défaut, le serveur keys.gnupg.net est indiqué comme destination.
En utilisant la commande
gpg --search-keys identifiant
vous pouvez directement interroger la base de données du serveur par défaut pour retrouver une clef et la récupérer. L'identifiant peut être le numéro de la clef publique (mais il faut le connaître) ou le nom de la personne dont vous cherchez la clef.
gpg --list-keys
: sa clef doit apparaître avec la vôtre.
Préparer l'avenir
Il est possible de perdre votre phrase passe. Il est également possible que pour une raison ou une autre, votre clef soit compromise ou plus accessible. En cas de doute, il faudra alors révoquer votre clef, ce qui signifie la rendre inutilisable. Préparer cette opération dès à présent, en créant un certificat de révocation, pendant que vous vous souvenez encore de votre phrase passe !
Pour cela, tapez
gpg --output revoke.asc --gen-revoke identifiant-clef
Le programme vous demandera d'indiquer la raison de la révocation (choisissez n'importe quelle option) ainsi qu'une description facultative. Après validation, il vous faudra alors entrer la phrase passe que vous avez utilisée à la création de votre clef publique.
Le système va alors générer le fichier revoke.asc qui est le certificat de révocation de la clef. Il vous est recommander de le conserver dans un endroit sûr et de le dupliquer pour être toujours certain de pouvoir le retrouver.
Si vous souhaitez par la suite révoquer votre clef publique, il suffira alors de taper
gpg --import revoke.asc
pour que votre clef soit inutilisable (vous n'aurez pas à saisir la phrase passe).
Signer et chiffrer un fichier :
Avec votre clef privée, vous pouvez signer un fichier.
Téléchargez le fichier xxx.pdf depuis le répertoire /common/remediation. Vérifiez qu'il s'ouvre bien avec un programme de lecture de fichiers pdf puis ouvrez le avec un éditeur de texte et parcourez le rapidement jusqu'à la fin pour voir sa structure.
Dans un terminal, tapez :
gpg --clearsign xxx.pdf
Le programme va vous demander votre phrase passe pour utiliser votre clef privée.
Vérifiez le contenu de votre répertoire (ls) : un fichier xxx.pdf.asc a été créé. Il s'agit du fichier pdf de départ auquel a été ajouté votre signature. Ouvrez le à nouveau avec l'éditeur de texte. Par rapport au fichier initial, vous pouvez constater que des caractères ont été ajoutés au début et surtout à la fin du fichier : il a été signé par le programme pgp. Copier ce fichier en xxx-signe.pdf.
En mode graphique, dans un navigateur de fichiers, ouvrez le fichier xxx-signe.pdf. Vous pouvez constater qu'il s'ouvre normalement, comme le fichier original. Tapez dans un terminal
gpg --verify xxx-signe.pdf
Vous pouvez constater que le programme va vérifier la signature du fichier et vous indiquer son émetteur, c'est à dire vous.
D4Envoyez ce fichier signé à votre voisin qui vérifiera qu'il peut le lire et s'assurera de votre signature. Vous ferez la même chose avec un fichier signé qu'il vous enverra. De quelles données avez-vous besoin pour vérifier la signature du fichier ?
En utilisant votre clef publique, vous pouvez chiffrer un fichier.
Commencez par vérifier la liste des clés publiques que vous possédez sur votre « anneau » en tapant
gpg --list-keys
Vous devez y trouver votre clef publique. Notez son identifant et tapez
gpg --encrypt xxx.pdf
Le programme vous demande ensuite l'identité de la clef publique à utiliser. Indiquez l'identité de la votre.
Listez ensuite le répertoire courant : vous allez trouver un fichier xxx.pdf.gpg. C'est le fichier initial sous forme chiffrée. Vous pouvez l'ouvrir avec un éditeur de texte et vous constaterez qu'il n'est plus lisible de cette manière. Copiez le en xxx-crypt.pdf et essayez de l'ouvrir avec le logiciel que vous utilisez habituellement pour lire les pdf : c'est impossible. Le fichier ne sera lisible que si vous le déchiffrez, en tapant
gpg --output --decrypt xxx.pdf.gpg
Cette commande va vous demander votre phrase passe et créer un fichier xxx-decrypt.pdf . Vous pourrez vérifier que ce nouveau fichier est parfaitement lisible.