Blog de benji1000

Communiquer de manière sécurisée

Le 23 juin 2014 dans Informatique

Ce tuto va vous montrer comment échanger des messages sécurisés avec vos correspondants. En pratique, cela vous permettra donc :

  • de chiffrer vos messages : personne d'autre que la ou les personnes pour lesquelles vous avez écrit ce message ne pourront les lire
  • de signer/authentifier vos messages : votre ou vos destinataires auront la certitude que ce message provient bien de vous, et non pas de quelqu'un d'autre qui se ferait passer pour vous

Les techniques utilisées ici font appel au principe de cryptographie asymétrique. Pas de panique, on ne fera pas de maths : je vais tenter de tout expliquer de manière simple :)

Si la partie théorique vous ennuie, vous pouvez passer directement à la partie pratique.

En théorie : la cryptographie asymétrique

La cryptographie asymétrique repose sur un système de double-clés : une clé publique, et une clé privée. Pour sécuriser vos communications par ce moyen, vous devrez ainsi générer :

  • une clé privée : elle ne sera connue que par vous. Elle vous permettra de signer les messages que vous émettrez, donnant ainsi la certitude à vos interlocuteurs que vous êtes bien la personne qui écrivez le message, et non un usurpateur.
  • une clé publique : elle permettra à vos interlocuteurs de vous contacter. Vous pouvez la distribuer par le moyen que vous voulez aux personnes avec qui vous êtes susceptible de communiquer de manière sécurisée (sur votre blog, site Internet...), d'où son nom de "publique". Ce n'est pas une donnée sensible, vous n'avez pas à la protéger.

Mais au fait, à quoi ressemble une clé ? Ce n'est évidemment pas une clé physique, mais ce n'est pas non plus une petite chaîne de caractère. C'est une grosse chaîne de caractères ! Voilà par exemple une clé publique que je viens de générer :

-----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.22 (MingW32) mQENBFLhCF0BCADXHiOwloD0v2rDYP5s1B3eQcYZQnE2px1RITXtU6pgbPsDAXjB oo/+FV0/nMTfbVGM/jisRchlvYIZ9zxROhMOBDtbxLpqkPeCIN2PMC6ByLv5TGXv r2SD0XWq6Z2SpWh7LMyKFB142B9/aj8zQX7ZZDZMsbvkv7G3BKHBnDzkb4Ml7tnf IdWEqaapiAHQsOygQLvsBAT4Lw9G9hfSCs9u57LeoYOAhM3eQIVfPzUPbQGJbFTf tOufs7GAI0yNqa2SYEEBDeLTqnZLup2MCkDBrpdedTkI9jD8Z53Z7Ye1kND0x89+ HFsKgjrg1QfuaBapOAZHRdUNx+22l2IQmI8JABEBAAG0H2RyaGdoIDx0aHRyZGhy ZGZoZHRoQGRyZ2RyZy5mcj6JATkEEwECACMFAlLhCF0CGwMHCwkIBwMCAQYVCAIJ CgsEFgIDAQIeAQIXgAAKCRC9KpZfDnigX0GDB/9Rn5R24H2evRKwJGXQlv7ggFX+ fsQg4nASXewqHoIg7vZDRsOVODLQtcLMyik1CQ09oeCSv619yETHHtuh4T5a/1DI +xtq3vpi4lxPfpWBYC60SmKzUsz8sC9bbrvcC3jU24CmjUPQzolAdbftFanP9yo0 /tKcs5iqbRpGnPj6FlJNKZ4Z2huM4atxKAJbgOFj5q8/ksh51E52cY2Z8WtgzrnJ FYrmfrV/7doHDC/S/1dqifUCcruI0wmwdz42EINqhyV2x6m/qKcvg3Zr1qOuaU+M 88eq99BT7VUmjPNJShXBokc55nP0DH4izDQXT8RXGPLZ7djy6uy7+noXyhEQuQEN BFLhCF0BCADE9Lxr5PcUbKWfOM4RIbn9DG7BIGWLOjxdq//PA4iDxz4kdmrTabRy FZirOX4D+rH/6oLNJdUFRVGB9lHpo3YxxjErKNesV4m6WtVg1Vk+MlOojvJY4YX5 vWPKdaKBxcze/kw2HnYgtetTIjZE0WB8qhLOYQL4fi9mZAt1cOV7+FQhcPnYKH91 zVA9w2UE6srNyGqhYHoh6rcTVjxTqmJMy9Pg7WhrzhpWHxJyjCdWNK2w/yv9amIq BkOoSPhMnExWlcsfkRZbimT9DSFow07O6d5knOloU3ISyhHUIomhfsE05/F2pmg5 CvTGUbIDLrAazNw2ayw2/DVqBwjyVYKPABEBAAGJAR8EGAECAAkFAlLhCF0CGwwA CgkQvSqWXw54oF8R2QgA02ySsNfbrqCI/zTNdKLPpt7WQFTPmxd5cTp8zjDnCWhr vln6EVtA0Uu79KPFsGyOhJYO9GRHHp2StWgzzbHobM9dzWHjQshY3iJYmHbizWDk 70jSQpIfOl+ZuoxQTgkc9QPIItlwlqJRmBwifZix1Gpypiz1FsjJVQ0aPDAY4KKg C4XRXN7ugKYj1eytS2xEbxmQNquwwqK3KRjLIGCnkKhG9rX+fu6K/ONgrsp7YRNI Ru+wC0C88y45vsTwcIMq5lLrsv12ACIDosIbHUc2jqjxfvCfwbY0wP3GH9U09qAx nNRV++PCNpZGcY+IV9UidpXe/T8sQ4PxhTRpjwgRsQ== =73Nv -----END PGP PUBLIC KEY BLOCK-----

La clé privée a grosso-modo la même tête.

Remarque : pour toute la suite du tutoriel, veillez à ne pas négliger les en-têtes et pied de page des clés ou messages chiffrés (BEGIN PGP PUBLIC KEY BLOCK et END PGP PUBLIC KEY BLOCK avec les tirets) car ils font partie intégrante des clés/messages chiffrés. Si vous omettez ces parties en transmettant vos clés ou vos messages, ils ne pourront pas être correctement lus par les logiciels (et donc par vos correspondants).

Vous utiliserez donc la combinaison clé publique de votre interlocuteur + votre propre clé privée pour chiffrer vos messages. Pour déchiffrer un message qui vous a été envoyé, vous utiliserez uniquement votre propre clé privée.

À noter que votre clé privée est, pour plus de sûreté, protégée par une passphrase (comme un mot de passe, en un peu plus long) que vous choisirez bien entendu lors de sa création. Si quelqu'un récupère le fichier contenant votre clé privée sur votre ordinateur, il ne pourra pas se faire passer par vous (à moins de connaître votre passphrase ). Vous devrez saisir votre passphrase chaque fois que vous aurez besoin d'utiliser votre clé privée.

Voici les traditionnels petits schémas, pour récapituler :

Cryptographie asymétrique - Étape 1
Alice donne sa clé publique (en vert) à Bob
Alice conserve sa clé privée (en rouge) secrète

Cryptographie asymétrique - Étape 2
Bob écrit un message en le chiffrant avec la clé publique d'Alice
Alice décrypte le message avec sa propre clé privée

Note : ces schémas proviennent de Wikipedia, et on été faits par l'utilisateur Odder.

En pratique : installer GPGforWin et se générer une paire de clés

Désolé par avance pour nos amis Linuxiens : ce tuto s'adresse principalement aux utilisateurs de Windows, étant donné que c'est le système que j'utilise quotidiennement, et que c'est aussi le système utilisé par le plus grand nombre.

On commence donc par installer le logiciel gratuit : GPGforWin. Vous pouvez tout à fait télécharger la version Light, mais pas la version Vanilla car elle ne contient pas le composant GnuPA (Gnu Privacy Assistant) dont nous aurons besoin. C'est d'ailleurs le seul composant à cocher pendant l'opération (pour le but de ce tuto, bien sûr ; les autres composants peuvent être installés si vous le souhaitez) :

Installation de Gpg4Win et surtout GnuPA

Lancez ensuite le logiciel. On vous demandera directement quelques renseignements pour créer votre première clé privée : votre nom, puis votre adresse email. N'hésitez pas à inscrire de fausses informations si vous souhaitez être encore plus anonyme (pas de demande de confirmation de l'adresse email). On vous demandera ensuite une passphrase (un long mot de passe), puis enfin, l'endroit où vous souhaitez enregistrer votre clé sur votre disque dur ("Créer une copie de sauvegarde"). La procédure se terminera par la fenêtre suivante :

Génération de clé privée avec GnuPA

Remarque : chez moi, le logiciel plante après avoir généré et enregistré la clé privée. Si vous souhaitez générer d'autres clés privées (et donc d'autres identités), vous pouvez à tout moment aller dans le menu Clefs, Nouvelle clef... pour recommencer la procédure.

Fenêtre principale de GnuPA

Nous allons à présent générer la clé publique à partir de cette clé privée. Pour cela, dans la fenêtre principale du logiciel, sélectionner votre clé privée nouvellement créée, faites un clic-droit dessus, et choisissez "Exporter des clefs...". Choisissez un endroit sur votre ordinateur, et cliquez sur "Enregistrer". Ouvrez ce fichier avec un logiciel de type Notepad : l'intégralité du contenu représente votre clé publique, qui est à partager avec vos correspondants (sur la page de votre profil d'un site d'achat, sur votre site, blog...).

Écrire un message chiffré à quelqu'un

Pour écrire un message chiffré, il vous faut la clé de votre correspondant, que vous pouvez récupérer sur une page de profil, son blog/site... Enregistrez-la dans un fichier texte que vous placerez sur votre bureau (on pourra le supprimer par la suite).

Ouvrez GnuPG Privacy Assistant. Cliquez sur Clefs , Importer des clés , et sélectionnez le fichier texte contenant la clé publique de votre correspondant. Une fenêtre doit s'afficher, vous confirmant l'import réussi de la clé :

Import de clé publique dans GnuPA

Dans la barre d'outils du logiciel, cliquez sur Presse-papiers. Il se peut que vous deviez cliquer sur les petits chevrons >> sur la droite de la barre d'outils. Vous arrivez sur une zone où vous pouvez saisir votre message :

Presse-papiers de GnuPA

Une fois votre message écrit, cliquez sur l'icone Chiffrer dans la barre d'outils. La fenêtre suivante s'affiche : elle vous permettra, d'une part, de sélectionner la clé publique du destinataire à qui vous souhaitez envoyer votre message, et d'autre part, de signer votre message à l'aide de votre propre clé privée. Pour rappel, afin que votre destinataire puisse lire votre message, vous devrez lui avoir envoyé la clé publique associée à votre clé privée.

Choix des clés pour chiffrement

Cliquez sur Valider , et vous verrez s'afficher le texte de votre message chiffré :

Message chiffré avec GnuPA

Vous pourrez alors transmettre l'intégralité du presse-papiers à votre correspondant, qui devra alors le déchiffrer à l'aide de la méthode décrite à la section suivante.

Déchiffrer un message

Vous venez de recevoir un message chiffré, de la même tête que sur la capture juste au-dessus. Pour le déchiffrer, il vous faudra la clé publique de votre correspondant (si vous ne l'avez pas encore importée dans GnuPA, référez-vous au début de la section "Écrire un message chiffré à quelqu'un").

Ouvrez le presse-papiers de GnuPA, et collez le message de votre correspondant. Cliquez sur Déchiffrer dans la barre d'outils du logiciel, et le message apparaîtra alors en clair (le logiciel se servira tout seul de votre clé privée et de la clé publique de l'émetteur du message). Si le logiciel vous indique que le presse-papiers ne contient pas de données OpenPGP valides, c'est que votre correspondant s'est trompé quelque part. Il devra alors recommencer la manipulation.

Conclusion

Nous avons donc vu dans ce tuto comment correspondre de manière sécurisée avec quelqu'un. Seule la personne à qui vous envoyez un message pourra le déchiffrer (à moins qu'elle ne se fasse dérober sa clé privée et le mot de passe associé). Voilà pourquoi il est important de protéger votre clé privée et de la verrouiller avec une passphrase solide.

Ceci est le premier article de sécurité informatique que j'écris. N'hésitez pas à me poser vos questions ou à me faire part de vos remarques ou corrections !