Pour l'utilisation de l'outil d'encryption/décryption gpg (obtenir des clés, signer des clés, partager des clés) voir FormationGPG.

TODO : Remettre à jour

Il y a maintenant un mécanisme de gestion des clés directement à l'intérieur de Thunderbird (pas besoin d'installer le plugin Enigmail).

Formation au système d'encryption et de signature OpenPgp. Ceci peut se faire dans le câdre d'une FormationSécuritéThéorique plus générale ou indépendamment.

L'utilisation d'OpenPGP permet l'échange d'information sensible, comme des mots de passe ou des informations personnelles sur des rendez-vous ou autre, de façon sécuritaire via courriel ou par fichiers partagés via un autre moyen.

Dans le câdre de cette formation on va principalement montrer comment utiliser le plugin enigmail de thunderbird.

Public cible

Tous travailleurs et travailleuses de Koumbit ou membres qui souhaitent se familiariser avec l'encryption et la signature sur internet.

Préparation suggérée

  1. installation de thunderbird + enigmail (ou équivalent)
  2. génération d'une clef (optionnel)

Plan de cours

La formation se fait en trois parties:

  1. création d'une clef pour ceux qui n'en ont pas déjà une (~20mins)
  2. présentation théorique et pratique - on comprend le principe (~1h - 1h30)
  3. KeySigningParty - on signe les clefs! (~1h)

Première partie: Création de clef

Première démystification: distinction de OpenPgp, GPG, PGP, Enigmail

On présente OpenPgp et surtout Thunderbird + Enigmail, en suivant un peu le plan dans la page GnuPrivacyGuard.

On demande à ceux qui non pas de clef d'installer les logiciels tout en les guidant.

création d'une clef par le wizard d'enigmail

Avant de créer les clefs, on va configurer GPG pour qu'il utilise des algorithmes plus fort pour l'encryption et la signature. Les détails de la configuration son tirés de la documentation de Riseup et y sont bien détaillés.

Ouvrir le fichier ~/.gnupg/gpg.conf dans un éditeur de texte et ajouter les lignes suivantes:

Ensuite, il faut télécharger le fichier https://sks-keyservers.net/sks-keyservers.netCA.pem et le sauvegarder sous ~/.gnupg/.

Une fois la configuration terminée, on utilise le wizard d'Enigmail pour générer les clefs.

https://support.mozillamessaging.com/media/uploads/gallery/images/2012-05-29-09-09-23-1fd225.png http://zwadderneel.files.wordpress.com/2011/05/generateopenpgpkey1.png

Quelques détails important pour la création:

Deuxième partie: formation

Dans cette partie on vise à définir et expliquer certains mots du jargon de l'encryption. Spécifiquement, on veut expliquer la différence entre l'encryption et la signature, puis on veut définir les deux modes d'encryption soit symétrique et asymétrique.

OpenPGP se situe dans l'encryption asymétrique.

encryption vs signature

En quelques points concis:

Donc pour résumer les points plus haut: l'encryption sert à cacher une information à tous sauf le destinataire, tandis qu'une signature sert à prouver que le détenteur d'une clef avait bien en sa possession le même contenu que l'on a reçu.

Une note importante: signature et encryption ne sont pas exclusifs. Par exemple, on peut en premier lieu signer notre message, puis encrypter le message et sa signature. Ce processus permet de créer un message lisible seulement par certaines personnes (encryption) et d'y joindre une assurance sur le contenu du message (validation via la signature).

encryption symétrique

L'encryption symétrique implique que source et destinataire dans une communication aient partagé un secret avant la communication.

Le secret permet d'encrypter et décrypter le message.

L'encryption symmétrique est quelque fois impratiquable. On aimerait pouvoir établir une connexion encryptée avec des gens ou des serveurs avec qui on n'a jamais eu de lien direct préalable. Par exemple, pour l'envoi de emails, il est difficile (voir impossible) d'échanger un secret avec chaque personne avant de communiquer.

encryption asymétrique

Au lieux d'impliquer un seul secret, l'encryption asymétrique implique deux parties:

La clef privée doit être gardée secrète! elle permet de décrypter un message qui nous est destiné.

La clef publique peut être publiée: elle permet d'encrypter un message destiné à une personne en particulier.

On utilise généralement un mot de passe sur la clef privée. Ça offre une protection de plus: pour décrypter un message, il faut non seulement avoir le fichier mais en plus avoir le mot de passe. Par conséquent, le mot de passe doit être bon pour rendre l'accès à la clef privée le plus difficile possible à d'autres personnes que vous.

Dans le cas d'OpenPGP, une troisième composante importante entre en jeu: le certificat de révocation. C'est la porte de sortie en cas d'urgence: c'est le moyen de prévenir les gens si jamais on n'est plus en contrôle de notre clef privée (perdue, volée, mot de passe oublié). Une fois importé, et peut-être publié sur les keyservers (voir web of trust), le certificat de révocation a pour effet de marquer la clef publique comme inutilisable. C'est donc un fichier important mais dangereux; il faut le conserver dans un lieu sûr.

envoyer un courriel crypté et signé au formateur

On commence par trouver la clef publique du formateur, peut-être sur les keyservers.

Il faut ensuite vérifier si on a déjà un lien (ou chemin) de confiance (réf. web of trust).

XXX: mot de passe ? (je me rappelle pas pourquoi c'était là)

web of trust

L'échange de clefs et de signatures d'une personne à l'autre c'est bien, mais qu'en est-il du problème mentionné plus haut? Qu'est-ce qui arrive lorsqu'on ne connaît pas directement la personne avec qui on veut communiquer?

C'est là qu'entre en jeu le web of trust. En tissant les liens entre notre propre clef et celle est autres, on a un outil pour établir une confiance objective avec quelqu'un qu'on ne connaît pas.

Comme les clefs publiques ont la propriété de pouvoir être partagées publiquement, il existe des serveurs spécialisés pour la publication et la recherche de celles-ci. On les appelle keyservers. Non seulement on peut envoyer le contenu de notre clef publique, mais les signatures sur notre clef peuvent également y être diffusées. C'est ainsi qu'on peut obtenir les liens entre les clefs pour procéder à notre vérification du lien de confiance.

Comme l'utilisation de keyservers rend publique les liens de confiance que vous avez envers différentes personnes, certaines personnes préfèrent ne pas publier leur clef sur ces serveurs. Il est tout de même possible d'envoyer les signatures directement aux gens concernés pour qu'elles soient importées dans leur trousseau privé. On parle alors de signature locale. Il est bon de demander lors d'une échange de signatures de clefs si l'autre personne préfère que sa clef privée ainsi que les signatures ne demeurent locales ou bien si elle est d'accord pour qu'on envoie la signature sur les keyservers.

Pendant l'échange de signatures de clefs, deux personnes vérifient en même temps l'identité d'une personne ainsi que son contrôle d'une adresse courriel, puis valide que la clef publique de l'autre correspond bien à la clef que cette personne détient en sa possession. On peut soit obtenir la clef publique via les keyservers, soit directement par transfert de l'autre personne.

En se remémorant la définition de signature plus haut, on peut définir de façon plus concrète à quoi correspond une signature de clef publique: c'est un checksum du contenu de la clef publique d'une personne, encrypté avec la clef privée de la personne qui fait la vérification. Donc après avoir validé en personne avec nos yeux, nos doigts et nos oreilles, on traduit cette validation physique en en validation digitale authentifiée.

vérification du "chemin de confiance" entre deux clefs

Lorsqu'on veut communiquer avec une personne qu'on ne connaît pas directement, il est bon de vérifier le "chemin de confiance" entre notre clef et la clef publique destinataire. Comme notre objectif est d'envoyer une information sensible à quelqu'un, on veut avoir une certaine mesure de confiance que cette personne est bien qui elle prétend être.

Ce lien de confiance devrait être basé sur la capacité des autres à signer des clefs correctement, et à ne pas forger l'identité des autres.

Le mot "chemin" s'applique au fait qu'on trace d'abord un graphe des liens (signatures) entre les clefs, puis qu'on suive ces liens.

Chaque personne a une définition bien à elle de la confiance qu'elle porte envers certaines personnes. Donc il faut suivre ses propres instincts. Dans l'intérêt de donner un exemple de règles qui assureraient un minimum de confiance marginale, on peut définir les règles suivantes:

http://minnie.tuhs.org/NetSec/Slides/Figs/w5s0.jpg

Pour les gens visuels des outils peuvent être utilisés, comme par exemple http://pgp.cs.uu.nl/

backups

Avec l'encryption asymétrique, si on perd notre clef privée, on perd l'habileté à décrypter les messages qui nous sont destinés ainsi que l'habileté à former une signature qui certifie qu'on serait l'origine du message. Dans ce cas, si on n'a pas de certificat de révocation, on n'a pas non plus l'habileté de prévenir nos éventuels correspondantEs que nous ne pouvons plus décrypter leurs messages.

Il est donc primordial de garder un bon backup de ces éléments.

La pratique la plus recommandée est de conserver une copie de ces éléments dans un format de stockage offline, et de s'assurer que ce stockage soit dans un endroit sûr (personne d'autre que soi peut accéder au contenu du backup)

Certaines personnes impriment leur certificat de révocation et le conservent dans un coffre-fort. Il faut alors se rappeler du code du coffre-fort.

C'est également possible de le stocker dans un disque/une clef usb encrypté(e) qui est conservé(e) débranché d'un ordinateur; il faut se rappeler du mot de passe d'encryption du médium.

C'est bien aussi de vérifier de temps à autres que notre backup est toujours lisible.

Lorsqu'on perd la clé privée

Comme la perte de la clef privée signifie la perte de l'habileté à authentifier nos communications par signature, certaines personnes sont très rétissentes à commencer à utiliser une autre clef de la même personne tant qu'elle n'aura pas revérifié la clef en personne, surtout dans le cas où la personne a également perdu son certificat de révocation. Celà s'applique tout particulièrement dans les cas où un océan empêcherait le contact direct.

Donc c'est important de révoquer sa clef en cas de problème. On repart à 0 en terme de web of trust, mais les gens qui avaient signé notre clef perdue seront moins réticent de signer notre nouvelle clef.

autres opérations

Ici on enlève nos mitaines et on commence à utiliser l'encryption à des fins plus pratiques.

Deuxième partie: keysigning

La seconde partie est un KeySigningParty, qui dure environ 1h - 1h30, car on fait aussi un peu de formation sur comment signer les clefs.

And don't forget...

... never bring tequila to a keysigning party!

http://xkcd.net/364/

Outils présentés

Notes prises par les participants

How a KeySigningParty works:

  1. Everyone adds their PGP keys to a common document
  2. It is printed, distributed and then read aloud
  3. Everyone confirms that each key that is read, is the key they see on the page
  4. Each person also confirms that when their key is read, it is their actual key
  5. Each person then checks everyone else's supporting documentation (driver's license, passport, etc.) or otherwise ensures that the people there do indeed match the names on the list

Autre documentation


CategoryFormation CategoryFormationPublique

FormationPgp (last edited 2023-12-13 14:47:57 by mathieul)