GnuPG (utilisation)

De fr.discu.org
Aller à : navigation, rechercher

Ce document décrit de façon accessible sans connaissances techniques le mode d'utilisation d'un logiciel nommé GnuPG, souvent appelé 'GPG', préservant la confidentialité et la sûreté de messages électroniques et de fichiers.

De nombreuses raisons rendent malheureusement ce logiciel nécessaire:

  • risque induit par des programmes d'origine inconnue ou modifées (c'est le cas, par exemple, d'une version de WordPress)
  • limites de la confidentialité des messageries

Sommaire

Remerciements

Werner Koch (principal auteur de GPG), Surfnet.nl (serveur de clés publiques), Henk Penning (auteur et mainteneur d'un très utile outil publiant statistiques et chemins), Sbi (orthographe)

CA de l'AFUL (questions).

Inskscape et les auteurs des éléments graphiques publiés par l'Open Clip Art Library.

Présentation

Contexte

L'URL du site web de GPG est http://www.gnupg.org/

GPG est un logiciel libre (opensource) et gratuit.

Aspects juridiques

Sur le plan légal tous les citoyens de pays libres peuvent à notre connaissance employer GPG.

Objectif

GPG offre à toute personne disposant d'un ordinateur sûr le moyen de:

chiffrer
C'est-à-dire transformer un ensemble de données (souvent un fichier, donc par exemple un message électronique) de sorte que seul un destinataire habilité pourra ensuite en prendre connaissance.
signer et sceller
C'est-à-dire fournir à tout destinataire un moyen de s'assurer de l'authenticité des données, donc de leur intégrité (fait qu'elles ne subirent aucune modification, ajout ou retrait) ainsi que de l'identité de leur auteur.

GPG assure bien entendu également les fonctions réciproques (déchiffrement et vérification de signature).

Pourquoi choisir GPG?

Nous employons et recommandons GPG car sa nature opensource (publication du code source) assure transparence donc auditabilité. Tout un chacun peut donc l'examiner, donc ce programme abrite vraisemblablement moins de failles que des équivalents dont seule la version exécutable circule.

Il est par ailleurs conforme aux normes ouvertes, ce qui améliore l'interopérabilité.

Note: le document intitulé L'Open Source en entreprise: condensé des arguments propose divers arguments favorables à l'open source.

Une offre commerciale nommée PGP fournira les prestations nécessaires aux professionnels.

Interopérabilité

Grâce à une norme publique nommée 'OpenPGP' les logiciels PGP et GPG interopèrent (échangent messages et signatures) sans problème majeur.

Autre approche: x.509

D'autres ensembles d'outils et de conventions servent nos objectifs, en particulier les certificats 'x.509' couplés à un logiciel adéquat (par exemple Cryptonit). Selon cette approche au moins une entité centrale reste détentrice et gardienne de la confiance. Le déploiement à grande échelle implique en ce cas une PKI (Infrastructure de Gestion de Clés) (par exemple IDX-PKI).

GPG, pour sa part, ne mobilise aucune autorité centrale donc offre à tout un chacun moyen de chiffrer et de sceller-signer.

Pré-requis

Le lecteur souhaitant mettre à profit ce document doit disposer d'un ordinateur sûr animé par l'un des systèmes d'exploitation pour lesquels une version de GPG existe (MS-Windows ou Unix).

Ordinateur sûr

Par ordinateur sûr nous désignons une machine digne de votre confiance, à laquelle vous pouvez confier des fichiers confidentiels. Tout chiffrement exige en effet l'emploi d'une clé dite privée devant rester confidentielle, or GPG, utilisé de façon classique, la place dans un fichier stocké par la machine.

Un ordinateur sûr doit interdire à tout fâcheux d'obtenir une copie de la clé privée. Pour cela il doit toujours être (et avoir été) bien administré donc bien protégé (par exemple grâce à un firewall) et tous ses utilisateurs et administrateurs doivent eux-mêmes être sûrs.

Si vous employez d'ores et déjà ne serait-ce qu'un seul programme bricolé par un pirate (ou le ferez) il menacera la confidentialité de vos échanges, par exemple en expédiant discrètement votre clé privée à un pirate, trouant ainsi le bouclier vous protégeant. Par conséquent ne JAMAIS installer sur votre machine sûre de programme de provenance douteuse et vérifier, avant de l'installer, la provenance et l'intégrité de tout logiciel.

Installer GPG

Installer le programme GnuPG, grâce à une archive (ZIP...) ou à un 'paquet' (DEB, RPM...) de provenance sûre (aux auteurs bien identifiés) et intègre (non modifié).

Découverte

Clés

Approche traditionnelle

Grâce aux méthodes de chiffrement traditionnelles la même clé est employée afin de chiffrer et de déchiffrer les données.

Communication de la clé: difficulté et paradoxe

Ces méthodes traditionnelles posent divers problèmes. Deux personnes, par exemple, doivent, avant de communiquer, convenir de la clé à employer sans que nul tiers ne puisse en prendre connaissance. Elles évitent donc de confier la clé à un réseau non sûr, par conséquent doivent se rencontrer (ce qui est souvent contraignant) ou bien disposer temporairement d'un canal de communication ménageant la confidentialité (ce qui n'est souvent pas possible).

Clés asymétriques

Des spécialistes résolurent le problème en développant une méthode par laquelle la clé employée pour chiffrer ne permet pas de déchiffrer, donc à chaque clé de chiffrement correspond une clé de déchiffrement. La clé de chiffrement, dès lors diffusable, devient publique.

Par cette méthode de chiffrement chacun dispose d'un duo de clés appelé biclé. L'une des clés d'une biclé donnée est dite publique, elle permet de chiffrer mais pas de déchiffrer et n'est pas confidentielle.

L'autre clé d'une biclé est appelée privée (ou secrète), elle déchiffre toute donnée chiffrée grâce à 'sa' publique (celle de sa biclé).

Chaque utilisateur souhaitant recevoir des données chiffrés ou en signer devra disposer d'une biclé. Chacun demeure libre de disposer d'autant de biclés que nécessaire et de nombreux utilisateurs en emploient une pour leurs usages professionnels et une autre dans leur sphère personnelle.

Celui qui ne souhaite que chiffrer des données destinées à un tiers, ou vérifier des signatures, emploiera GPG mais n'aura nul besoin de sa propre biclé car les clés publiques des autres suffisent.

GPG créée gratuitement des biclés.

Création d'une biclé grâce à GPG

Nous illustrerons les actions nécessaires sur la ligne de commande mais recommandons au débutant d'employer une extension de son logiciel de messagerie capable de gérer GPG. À ceux qui ne savent quel programme de messagerie employer nous préconisons Thunderbird et son extension de gestion de GPG nommée Enigmail. Les utilisateurs de GMail et Firefox pourront essayer FireGPG.

Pour créer votre biclé: vous connecter à votre compte utilisateur sur votre ordinateur sûr puis invoquer:

gpg --gen-key

Voici le détail des réponses à fournir ensuite aux questions de GPG:

Sélectionnez le type de clé '1' (DSA et Elgamal).

Taille (nombre de bits) de la clé: 4096

Durée de validité de la clé: '0' (la clé n'expire pas)

Nom réel: saisir votre prénom suivi de votre nom de famille. N'employer que des lettres, points et tirets et ne PAS y placer de caractère accentué.

Adresse e-mail: saisir votre principale adresse email.

Commentaire: de préférence exprimé en anglais. Révèle souvent la nature de l'adresse ('work' ou 'home').

Mot de passe: il s'agit de la 'passphrase' grâce à laquelle la clé privée sera chiffrée dans le fichier l'abritant (lire ci-après, section 'Passphrase'). Choisissez un 'solide' mot de passe (long et compliqué, si possible facile à saisir sur tous les claviers (langues...) que vous pourriez employer) et ne l'oubliez pas.

Passphrase

Il vous faudra toujours préserver la confidentialité de votre clé privée, donc du contenu du fichier 'secring.gpg' car si quelqu'un parvient à en obtenir une copie il pourra déchiffrer vos messages et signer à votre place. Un ordinateur sûr lui interdira de copier votre clé privée mais, afin de lui rendre la tâche plus difficile si d'aventure il s'en emparait, le fichier 'secring.gpg' est chiffré de façon traditionnelle avec la 'passphrase' saisie lors de la création de la biclé.

Plus explicitement: GPG chiffre votre clé privée grâce à votre passphrase, avant de la stocker dans un fichier. Mais il ne mémorise nulle part la passphrase donc, chaque fois qu'il a besoin de la lire par la suite (par exemple afin de déchiffrer un message), il vous demandera de saisir la passphrase afin de déchiffrer votre clé privée. Votre clé privée demeure ainsi toujours chiffrée dans ce fichier, inutilisable sans cette passphrase.

Un pirate averti et bien équipé devinera tôt ou tard votre passphrase, par conséquent le fichier abritant votre clé privée ne doit jamais séjourner, même compte-tenu du fait qu'il est chiffré, sur un réseau ou une machine non sûrs. Son chiffrement constitue donc un moyen de retarder le pirate afin de prendre les dispositions alors nécessaires, par exemple en cas de vol de votre machine sûre, mais pas de lui interdire de détourner votre clé privée après quelques heures ou jours de travail (décryptement, donc déchiffrement effectué sans la clé théoriquement nécessaire).

Sitôt la passphrase fournie GPG créera votre biclé et la stockera dans votre trousseau de clés.

Sauvegarde de la clé privée

Sauvegarder le fichier abritant votre clé privée (sous Unix: ~/.gnupg/secring.gpg) de façon extrêmement sûre. Pour cela:

Stéganographie

Rendre cette sauvegarde difficile à employer en utilisant de la stéganographie afin de dissimuler la précieuse clé privée, en prenant au préalable soin de renommer le fichier, dans d'autres données.

Programmes pertinents: Outguess et Steghide.

Dispersion: N parmi M

User du 'n parmi m' grâce auquel vous morcellerez en M parties les fichiers obtenus, qui pourront ainsi résider sur M sites distincts de sorte que:

  • tout voleur doive en dérober au moins N segments distincts avant de pouvoir espérer tout recouvrer
  • vous puissiez tout recouvrer au moyen de N (quelconques) segments distincts seulement

Programme pertinent: RAS (Redundant Archive System).

Résistance aux dommages partiels: redondance

Ajouter de la redondance de sorte qu'un support partiellement endommagé ne condamne vraisemblablement pas l'ensemble.

Programme pertinent: PAR2

Test

Testez les fichiers résultants en tentant de restaurer la clé.

Résistance: supports

Copier les fichiers sur des supports standard (pour lesquels un lecteur existera vraisemblablement encore dans 10 ans), robuste et pérennes.

Résistance: diffusion

Remettre un segment à chaque membre de votre famille et aux amis, en lui demandant de le remiser en lieu sûr et de ne laisser personne y accéder (ne serait-ce que prendre une copie).

Réduire le nombre de support stockés au même endroit (habitation, coffre...) car une destruction totale (incendie, inondation...) les condamnerait tous simultanément. En placer des copies en divers endroits et s'assurer que le 'N parmi M' et que la redonance joueront favorablement en ce cas extrême de destruction totale de l'un des sites. En ce dernier cas redéployer au plus vite des copies.

Épreuve

Attendre au moins 3 mois puis simuler une perte donc restauration.

Attention: en cas de modification de la passphrase il faudra rafraîchir les archives de la clé privée ou bien ne jamais oublier l'ancienne passphrase.

Trousseau de clés

Vos trousseaux (anglais:'keyring') de clés sont un ensemble de fichiers. Ils se trouvent, sous Unix, dans le répertoire nommé "~/.gnupg" où le fichier 'pubring.gpg' (public keyring) accueille les clés publiques tandis que 'secring.gpg' (secret keyring) abrite les clés privées de vos biclés.

Obtenir une clé publique

Afin de chiffrer un message destiné à un tiers il vous faut obtenir sa clé publique, qui abrite plusieurs centaines d'informations binaires difficiles à transcrire donc serait difficile à dicter. Vous la téléchargerez donc de l'un des serveurs de clés publiques connectés à l'Internet où vous chercherez tout d'abord les clés associées à l'adresse email de votre correspondant. Note: on appelle communément ces machines des 'serveur de clés' et ils ne publient bien entendu que des clés publiques.

Plusieurs clés publiques sont parfois associées à une adresse email donnée. Certaines sont obsolètes, d'autres correspondent à des usages différents. C'est pourquoi GPG associe à chaque biclé, lors de sa création, un ID (identifiant) composé de 8 caractères, de sorte que le couple 'adresse email' et 'ID' ne corresponde qu'à une clé.

Après création de votre première biclé, par exemple, GPG affiche:

gpg: clé 0230D602 marquée comme ayant une confiance ultime.

0230D602 est ici l'ID de la nouvelle biclé. Note: l'ID 0230D602 publié ici correspond à la biclé de l'auteur de ce document, celui de la vôtre sera très vraisemblablement différent.

L'ID de clé n'est pas son immatriculation car il n'est pas obligatoirement unique: une ou plusieurs autres biclés peuvent arborer le même ID. C'est pour le moment rare donc en pratique l'ID, couplé à une adresse email associée à la clé, sert bien d'immatriculation.

Seule l'empreinte complète (fingerprint) d'une biclé la reflète toutefois de façon très vraisemblablement unique. Pour l'obtenir invoquer:

gpg --fingerprint IDdeClé

L'ID n'en est qu'un sous-ensemble (la fin).

Mise en pratique

Tentons d'obtenir la plus récente clé publique de l'auteur de ce document.

Accédez pour cela, au moyen d'un navigateur web, au serveur de clés http://pgp.surfnet.nl:11371/ (en cas d'embarras employer http://pgp.mit.edu/). Note: votre firewall doit autoriser la connexion sortante au port TCP 11371.

Dans le champ 'Search string' saisissez le prénom et nom du détenteur de la clé publique recherchée: 'nat makarevitch'. Le panneau des résultats contient:

Search results for 'nat makarevitch'

Type bits/keyID    Date       User ID
pub  1024D/0230D602 1998-08-11 Nat Makarevitch <nat@makarevitch.org>
                               Nat Makarevitch <nat@IDEALX.com>
                               Nat Makarevitch <nat@linux-france.org>
                               Nat Makarevitch (Ikarios) <nat@ikarios.com>
                               Nat Makarevitch <nmakarevitch@eyrolles.com>
                               Nathanael Makarevitch <nat@nataa.fr.eu.org>
                               Nat Makarevitch (dummy) <nathanael@makarevitch.org>
                               [user attribute packet]
pub  1024R/D58FCD69 1997-04-17 nat@editions-oreilly.fr
                               Nat Makarevitch <nat@ora.com>
pub  1024R/6BE26AE9 1993-11-13 Nat Makarevitch
                               Nathanael Makarevitch at LIVIA <nat@nataa.fr.eu.org>
                               Nathanael Makarevitch at LIVIA <nat@nataa.frmug.fr.net>

Le serveur vous propose trois clés (dont les ID sont 0230D602, D58FCD69 et 6BE26AE9), triées par âges croissants.

Tentez à présent de placer la plus récente dans votre trousseau de publiques, afin de pouvoir l'utiliser. Vous pouvez procéder:

Via le Web

Cliquez sur '0230D602'. Le données présentées abritent la clé publique. Afin de l'employer grâce à GPG il vous faut sauvegarder le contenu de ce document, au format textuel, dans un fichier puis intégrer cette clé à votre trousseau de publiques en invoquant:

gpg --import NomDuFichier
Via GPG

Nous recommandons d'employer cette méthode.

Afin d'intégrer directement dans votre trousseau une clé publique dont vous connaissez l'ID vous invoquerez:

gpg --recv-keys IDdeLaClé

Donc, avec notre exemple:

 gpg --recv-keys 0230D602

Cette méthode peut échouer si la configuration locale de GPG ne déclare pas de nom de serveur de clés. Tenter en ce cas de préciser son nom:

gpg --keyserver wwwkeys.nl.pgp.net --recv-keys IDdeLaClé

Si le réseau employé (firewall) n'autorise pas le type de trafic réseau nécessaire il faudra éditer le fichier de configuration de GPG (sous Unix: ~/.gnupg/gpg.conf) afin d'y déclarer le nom du serveur de clés ainsi que l'obligation d'employer un mandataire (proxy) Web plutôt qu'une connexion directe:

keyserver wwwkeys.nl.pgp.net
keyserver-options honor-http-proxy

Lire ce fichier afin d'y déclarer également

default-key IDdeVotreClé
trusted-key IDdeVotreCléVersionMoyenne

Pour obtenir IDdeCléVersionMoyenne invoquer (sous Unix):

gpg --with-colons --list-keys IDdeClé | grep ::: | cut -f5 -d: | head -1

Équivalent plus classique mais verbeux:

gpg --list-keys --keyid-format long IDdeClé
Interfaces ergonomiques

Si vous employez un client de messagerie évolué il dispose vraisemblablement d'une interface ergonomique de recherche, de téléchargement et d'intégration de clés à votre trousseau.

Mise-à-jour des serveurs

Les serveurs de clés communiquent régulièrement de sorte que tous publient, à terme, toutes les clés. Choisissez le serveur officiel le plus proche, il disposera très vraisemblablement de toutes les clés utiles.

Piège: man-in-the-middle

GPG ne repose pas sur une entité s'assurant de l'identitié avant de délivrer une biclé, par conséquent n'importe qui peut forger une biclé abritant n'importe quelle information (nom, adresse email), puis en publier la clé publique sur un serveur.

Un espion peut donc, afin de prendre connaissance du contenu de messages qui me seront expédiés, créer une clé associée à mon nom et prénom ainsi qu'à une adresse email lui appartenant puis en placer la publique sur un serveur. Un correspondant peu méfiant souhaitant m'écrire cherchera les clés associées à mon nom sur un serveur de clés publiques, téléchargera cette clé puis l'emploiera afin de chiffrer et expédiera ses messages à l'adresse email fournie. Seul l'espion recevra ces messages, il détiendra la clé privée correspondante donc pourra à mesure les déchiffrer, lire puis chiffrer avec ma véritable clé publique avant de les expédier à mon adresse, comme s'ils provenaient directement de mon correspondant.

L'espion s'interposera ainsi dans la conversation sans que nul correspondant en prenne conscience. Ce 'man-in-the-middle' ("l'homme placé au milieu" des échanges), lorsqu'il peut accéder au réseau informatique convoyant mes messages, s'offre le luxe ne pas modifier l'adresse email de destination en 'capturant' puis 'réécrivant' les expéditions à la volée.

Lutter contre cela rend nécessaire de laisser tout utilisateur s'assurer qu'une clé publique appartient bien à la personne décrite plutôt qu'à un indésirable intermédiaire (man-in-the-middle). GPG ne repose pas, pour cela, sur une entité centrale s'assurant de l'identité du demandeur d'une biclé mais sur un réseau de la confiance.

Le réseau de la confiance (Web of Trust)

Chaque détenteur de biclé participe, s'il le souhaite, à la lutte contre les 'man-in-the-middle' en signant toute identité associée à la clé publique de tout autre utilisateur après s'être assuré de la correspondance entre elle et celle, dans la Vie Réelle, du détenteur de la clé privée correspondante.

Signer une identité associée à une clé publique exprime "l'identité du détenteur de la clé privée correspondante est celle qu'elle manifeste".

En pratique je signerai une identité "Marcel Dupont <marcel@ikarios.com>" associée à une clé GPG si j'ai tout lieu de croire que celui qui me demande de le faire s'appelle bien 'Marcel Dupont' et travaille pour la société Ikarios associée au domaine 'ikarios.com'.

Pour signer une identité il faut disposer d'une biclé (publique et privée).

Tout un chacun pourra ensuite, grâce à GPG, vérifier cette signature.

Signature d'identité de clé publique

Rencontre préalable

L'identification positive, préalable strictement nécessaire, consiste à rencontrer la personne dans la Vie Réelle. Vous obtiendrez ainsi les informations nécessaires à la signature d'identités de la clé publique de votre interlocuteur et remettrez celles grâce à laquelle il signera les vôtres.

La signature GPG proprement dite ne s'effectuera pas durant la rencontre mais ultérieurement, grâce aux informations obtenues.

Durant la rencontre:

procéder à l'identification positive
Vérifier l'association entre chaque identité clamée par la clé publique (gpg --list-keys ID) et celle de l'individu qui se trouve devant vous. Vous pouvez, pour cela, réclamer un ou plusieurs documents d'identité officiels et/ou exiger qu'au moins N personnes bénéficiant de votre confiance reconnaissent formellement l'individu. Notre conseil: un papier d'identité et la reconnaissance par une personne que vous connaissez ou que connaît un ami présent.
Obtenir l'empreinte de sa clé publique
Un interlocuteur avisé vous remettre un morceau de papier où elle se trouvera consignée.
Vous soumettre à l'identification positive
Prouver, grâce aux moyens requis par votre interlocuteur, chaque identité clamée par votre clé publique.
Remettre l'empreinte de votre clé publique
Remettre un document abritant l'empreinte de votre clé publique.

Ranger en lieu sûr les papiers recelant les empreintes ainsi obtenues. Nul tiers ne doit pouvoir y accéder jusqu'à l'étape de signature proprement dite. Mieux vaut parapher chaque papier afin d'interdire toute substitution.

Conseil: toujours disposer de cartes de visite recelant les empreintes de vos clés.

Cas des anonymes

Certaines identités de clés ne dévoilent pas l'état civil de leur propriétaire. Ne les signer qu'après avoir obtenu preuve, lors de la rencontre, de l'association ferme entre la personne et l'"identité" proclamée.

On pourra pour cela employer un 'défi' (lire ci-après).

Cas de l'absence de clé ou d'empreinte: le 'défi'

Si vous bénéficiez d'une rencontre rare sans empreinte voire sans clé échangez avec votre interlocuteur un 'défi' confidentiel grâce auquel un échange ultérieur prouvera au signataire que son correspondant est bien la personne qu'il rencontra. Pour cela chaque personne ainsi dépourvue de clé ou de version imprimée de son empreinte forgera discrètement une longue série de lettres et chiffres et la copiera afin d'en obtenir deux exemplaires. Elle remettra un exemplaire au futur signeur, en lieu et place de son empreinte, et conservera l'autre. Après la rencontre elle expédiera au signeur un message signé contenant le 'défi'.

Les participants prendront bien entendu soin de ne pas négliger, durant la rencontre, l'étape d'identification positive puis de ne pas laisser qui que ce soit lire le 'défi'.

Signature d'identité proprement dite

Aussi vite que possible après la rencontre vous signerez les identités associées de façon certaine à une clé publique dont vous détenez l'empreinte directement remise.

Il faut disposer de la clé publique dans le trousseau local, donc la télécharger la clé publique sur un serveur:

gpg --recv-keys IDdeLaClé

En cas d'embarras l'obtenir par un autre canal (Web, mail...) puis l'insérer dans votre trousseau. Voici un exemple (sous Unix):

wget http://www.makarevitch.org/gpg_Nat_Makarevitch.gpg
gpg --import gpg_Nat_Makarevitch.gpg
rm gpg_Nat_Makarevitch.gpg

La signer après avoir comparé son fingerprint avec la valeur imprimée sur le petit morceau de papier remis lors de l'identification positive. Ils doivent correspondre, sinon ne pas signer. Signer les identités dont vous êtes certain. Pour cela:

gpg --sign-key IDdeLaClé

Éviter de publier directement la clé signée sur un serveur. Mieux vaut l'expédier à l'adresse email à laquelle elle est associée afin que s'assurer de cette association même:

gpg --export IDdeLaClé > /tmp/IDdeLaClé.gpg

Puis expédier le fichier /tmp/IDdeLaClé.gpg dans un message signé afin que le destinataire obtienne une preuve supplémentaire que vous êtes la personne qu'il rencontra, donc qu'il peut signer votre clé. TODO: utilitaires assurant cela

Le propriétaire de la clé ainsi signée la publiera dès réception:

gpg --send-key IDdeLaClé

Biglumber

Un excellent site de coordination de signature existe, nommé Biglumber. Ne manquez pas de l'employer avant chacun de vos voyages afin d'obtenir une liste de contacts autochtones potentiellement signeurs et signés.

Le 'Key exchange service' proposé par ce site aux détenteurs de comptes offre moyen de s'assurer de la réciprocité des signatures.

Expiration de signature

TODO LANG=C gpg --list-sigs --list-options show-sig-expire 0230D602|grep -vw never (biglumber)

Séance de signature de clés (signing party)

Des volontaires organisent parfois une séance de signature de clés durant laquelle toute personne intéressée vient signer les identités de clés publiques des autres présents et leur faire signer les siennes.

Distance entre des clés

La 'distance' entre deux clés exprime le plus faible nombre de signatures les connectant. La 'distance' entre votre biclé et une clé publique obtenue (par exemple publiée sur un serveur) exprime par conséquent le nombre de signatures sur le plus court chemin de confiance (trust path) les connectant par la relation 'a signé'.

Une distance faible entre une clé A et une clé B indique que le propriétaire de A peut considérer que la clé B appartient bien à l'identité à laquelle elle est associée.

Exemple:

0 	C001BABE  stats  Toralv Dirro <toralv.at.dirro.com> #16770 signs
1 	F128ADF3  stats  Frank Altpeter <freddy.at.foxalpha.de> #5089 signs
2 	AB9E3213  stats  Stefan `Sec` Zehl (s9) <sec.at.42.org> #480 signs
3 	1D738434  stats  Andreas Kupfer <kupfer.at.42h.de> #91 signs
4 	0230D602  stats  Nat Makarevitch <nat.at.makarevitch.org> #206
Trois intermédiaires (garantissant chacun l'identité du suivant) suffisent.
 0 	0230D602  stats  Nat Makarevitch <nat.at.makarevitch.org> #208 signs
 1 	74E0B766  stats  Andreas Mueller <amu.at.debian.org> #7 signs
 2 	962FD2DE  stats  Georg Lukas <georg.at.op-co.de> #41 signs
 3 	B3B2A12C  stats  ct magazine CERTIFICATE <pgpCA.at.ct.heise.de> #205 signs
 4 	A5F4DFD9  stats  Patrick Brauch <pab.at.ct.heise.de> #6308 signs
 5 	C001BABE  stats  Toralv Dirro <toralv.at.dirro.com> #16837

Cette fois 4 intermédiaires sont nécessaires. Cela semble étrange mais est ici cohérent car toutes les signatures ne sont malheureusement pas réciproques, donc que le fait que A signe les identités de B n'implique pas que B signe A (paresse, négligence, oubli...).

Voici quelques exemples de distances classiques:

ma propre clé
distance nulle (de 'moi' à 'moi'!), confiance absolue en l'association entre l'identité exprimée par la publique, je suis certain que cette clé est mienne
une identité associée à une clé publique signée par moi
distance 1 (très faible), car en signant j'ai exprimé je suis certain que cette clé correspond à ce qu'elle clame

Confiance en la capacité à signer

TODO GPG mesure automatiquement cette distance et détermine ainsi si une clé publique donnée est ou non suffisamment sûrement associée à l'identité qu'elle proclame. L'utilisateur exigeant le contraindra ainsi, grâce à un paramètre de fonctionnement, à ne pas employer les clés trop peu sûres.

gpg --update-trustdb

Décidez maintenant à quel point vous avez confiance en cet utilisateur pour qu'il vérifie les clés des autres utilisateurs (vous pouvez vérifier son passeport, vérifier les empreintes de plusieurs sources différentes, etc.)

1 = ne sais pas ou ne dirai pas
2 = je ne fais PAS confiance
3 = je crois marginalement
4 = je fais entièrement confiance
s = sauter cette clé
q = quitter

Le terme 'confiance' désigne ici la confiance en la capacité du signé à signer correctement donc son honnêteté (souhait de ne pas tromper donc ne pas accréditer un mensonge) et rigueur (strict respect des procédures de signature). En résumé ceux Ce qu'exprime une signature confiance en association clé-personne donc la nécessaire identification positive. Par ailleurs (pour son usage propre): (maîtrise des protocoles).

Une clé publique signée par une personne à laquelle j'accorde confiance me semblera sûre, cela rend transitive la relation correspondance entre identité de la clé et celle du Monde Réel validée exprimée par une signature d'identité.

http://www.gnupg.org/gph/fr/manual.html#AEN354

Logiciels facilitant l'emploi de GPG

TODO

Précautions

Pour chacune de vos clés préparer un certificat de révocation

Sitôt après création d'une biclé vous générerez un certificat de révocation:

gpg --gen-revoke IDdeVotreClé --output revocation_IDdeVotreClé.gpg

Puis conserverez le fichier ainsi créé (nommé revocation_IDdeVotreClé.gpg) en lieu sûr. En cas de vol de la machine sûre il servira à révoquer votre biclé, donc à clamer partout qu'il ne faut plus l'employer.

Signer toutes vos clés

Si vous disposez de plusieurs clés: signer chacune avec toutes les autres.

Signer des clés

Signez (en respectant strictement la procédure) autant de clés que possible.

Publier votre clé publique

Publier votre clé publique sur les serveurs de clés:

gpg --send-key IDdeVotreClé

Périodiquement

Mise à jour du contexte

Invoquer:

gpg --rebuild-keydb-caches
gpg --refresh-keys
gpg --update-trustdb

Restauration de clé privée

'Restaurer' la clé privée sauvegardée comme si votre ordinateur sûr l'abritant avait été détruit.

À mémoriser

Ce qu'il faut impérativement retenir:

  • je préserve au mieux ma clé privée et sa passphrase:
    • je mémorise ma passphrase et ne la stocke nulle part
    • elles ne se trouvent JAMAIS stockées ensemble
    • elles ne se trouvent JAMAIS jamais en un endroit (disque, réseau, mémoire...) non sûr et ce dernier n'est jamais connectée sans protection à un équipement non sûr. Donc, par exemple, je ne:
      • connecte pas une clé 'mémoire' USB abritant ma clé privée à un ordinateur pouvant discrètement prendre copie de son contenu.
      • connecte pas mon ordinateur sûr, animant des services logiciels évolués ou dépourvus de firewall, à un réseau non sûr
      • laisse que des personnes dignes d'une absolue confiance utiliser ma machine, chacune n'emploie que son compte personnel
      • laisse procéde à une installation de programme que menée par une personne sûre et avisée en matière de 'sécurité' informatique
    • signe les identités de clés publiques qu'avec une certitude (identification positive)
  • je chiffre avec la clé publique du destinataire, seule sa privée permet de déchiffrer
  • avant d'employer une clé publique je m'assure, en explorant ses signatures, qu'elle appartient vraisemblablement bien à mon interlocuteur
  • chaque adresse email peut être associée à un nombre quelconque de clés et chaque clé peut être associée à un nombre quelconque d'adresses email
  • si ma clé privée est 'compromise' (tombe entre des mains non sûres) je la révoque immédiatement

Améliorer l'utilité de GPG

Publier partout l'empreinte de la clé: sur votre site web, factures, cartes de visite, documents tech, pubs.

ID moyen ou court de clé:signature de messages/articles...

objectif: tout client peut ainsi facilement s'assurer que la clé publique qu'il récupère afin de vérifier un sceau est bien la vôtre

faire signer sa clé par au moins 12 personnes aussi géographiquement éloignées de toi que possible (et signer les leurs en retour, après t'être assuré de la correspondance clé<->personne) republier

vérifier à intervalles réguliers que nul man-in-the-middle ne s'immisce, en cherchant sa propre clé sur un serveur de clés bien connecté aux autres. Si une clé publique inconnue mais tentant manifestement de tromper est publiée s'inquiéter de l'adresse email employée et des signataires. Demander si nécessaire de l'assistance dans les forums Usenet et lidies traitant de GPG.

Mode d'emploi succinct de GPG

Obtenir une clé publique. Évaluer sa sûreté chiffrer (un mail, un fichier) déchiffrer (mail, fichier) à plusieurs destinataires vérifier signature (mail, fichier)

Chiffrer un fichier

Forme générale:

gpg -e -r IDClé1 -r IDClé2 -r IDClé3 ... NomFichierÀChiffrer

-e signifie encrypt (chiffrer)
-r signifie recipient (destinataire)

Mieux vaut au préalable signer les clé. On le peut, puisqu'on s'est assuré qu'elles correspondent bien (à quoi bon chiffrer, sinon?).

Publier des fichiers

Afin de garantir à ceux qui obtiendront, de quelque manière que ce soit, un fichier que vous publiez qu'il provient bien de vous et n'a pas été modifié : le signer-sceller. TODO: - signature GPG intègre scellement - avantage: réseau/support non sûr. // MD5 and co Pour cela:

gpg -b NomFichier

GPG produit alors un fichier-sceau nommé 'NomFichier.sig'. Le distribuer avec le fichier à signer et protéger.
Note: ce sceau est binaire, s'il faut produire une version ASCII parfois plus aisément transférable utiliser en sus l'option '-a'. L'extension du fichier-sceau produit sera en ce cas '.asc'.

Vérifier un fichier

Pour vérifier un sceau ('signature') de fichier:

gpg NomFichierSceau

Il faut bien entendu disposer du fichier signé et de la clé publique du signataire.

publier, avec les fichiers, un peu de doc expliquant téléchargeurs l'intérêt de cela et un guide facilitant la manip (il en existe un peu partout sur le Web, http://okki666.free.fr/docmaster/articles/linux098.htm et http://gpglinux.free.fr/gpg.pdf semblent OK En général: http://openpgp.vie-privee.org/ Thunderbird et Enigmail: http://enigmail.mozdev.org/ http://www.geckozone.org/articles/2004/07/14/29-chiffrer-son-courriel-avec-mozilla-thunderbird-et-enigmail Documentation officielle de GnuPG: http://www.gnupg.org/gph/fr/manual.html http://www.gnupg.org/(fr)/documentation/howtos.html Sous MS-Windows: http://gnupgwin.co.nr/ Analyse de PGP (anglais) http://www.bluering.nl/pgp/ étude du strong set (ensemble des clés publiées solidement signées). Étude de la clé publique de l'auteur 1. Quelles sont les bonnes solutions pour utiliser un trousseau de clés (keyring) sur différentes machines en lesquelles on n'a qu'un confiance modérée ? La privée est par définition 'privée', donc non stockable ou convoyable sur un 'support' non sûr. Hors du hard spécifique 'débarquant' le stockage et le calcul, façon smartcard ou un TCPA correct (aux délégations gérées par le seul utilisateur) et des constructeurs audités (afin que les composants ne détournent/mémorisent rien) semblent la seule solution réaliste, mais prévoir un délai.

1/ utiliser une biclé spécifique à chaque environnement peu sûr (par ex un client ou employeur), donc forgée ad hoc et associée à ce dernier (donc, par ex, à une adresse email y correspondant). Lui octroyer une date d'expiration relativement proche (1 an ?). La signer avec toutes tes autres clés. Pré-générer et conserver en lieu sûr un certificat de révocation afin, en cas de galère, de la condamner sur les serveurs. Se laisser un "reminder" rappelant, peu avant expiration, de la proroger ou bien d'en générer une nouvelle (signée de l'existante)

et/ou

2/ utiliser une sous-clé (http://fortytwo.ch/gpg/subkeys), élégant mais sioux et aventureux Attention: la sous-clé ne permet pas de déchiffrer tous les messages, donc ne résoudra pas ton problème. Son seul avantage pratique: éviter de forger des tonnes de clés distinctes + laisser toutes tes clés bénéficier à mesure de la 'confiance' attachée à ta clé principale (sans le niveau d'indirection et les manoeuvres induites lorsqu'elle signe une nouvelle clé).

Dans tous les cas: obtenir et n'employer pour cela qu'un portable perso afin d'augmenter le niveau de confiance

L'utilisation d'une clé USB peut-elle solutionner cette problématique et si oui comment?

Non, car la clé USB-type (qui n'abrite que de la mémoire) ne peut rien 'traiter' (puisqu'elle n'abrite pas de CPU), donc elle ne peut effectuer seule ce que tu souhaites faire de façon sûre (signer ou déchiffrer avec ta privée). Elle communique par conséquent ta privée au CPU de l'ordinateur hôte donc l'expose à un détournement (par exemple via un driver hacké piratant tout ce que convoie le bus USB) à peine plus difficile à réaliser que celui d'un fichier (celui de ta privée)

(Picky: en fait si car il existe des clés USB 'actives' (munies d'un CPU), mais dans la langue courante elle n'abrite que de la mémoire).

La solution: un équipement autonome sur le plan de ces fonctions (signature et chiffrement) abritant ta biclé, donc n'impliquant pas de 'sortie' de la clé privée, donc muni d'un CPU. Exemple: une smart card. L'offre la plus réaliste aujourd'hui reste https://www.fsfe.org/en/card http://www.debian.org/events/keysigning http://www.cryptnet.net/fdp/crypto/gpg-party.html

En pratique c'est encore plus compliqué que cela car la signature, par exemple, pose un problème dit du "WYSIWYS" (ce que tu vois est ce que tu signes: il faut t'assurer que ce qui est signé est bien ce que tu crois avoir signé), mais bon...

Le petit GPG illustré

Schémas réalisés grâce au logiciel Inskscape et aux éléments graphiques publiés par l'Open Clip Art Library.

Gpg00.png

Gpg01.png

Gpg02.png

Gpg03.png

Gpg04.png

Bibliographie

PGP et GPG (Eyrolles)

TODO

notion de 'sûreté' impact du proprio: [1]

remailing, analyse de trafic

topo sur expiration de clé

gpg.conf

topo sur clés de signature

topo sur subkeys

topo sur mots de passe solides

topo sur torino

dépôt (escrow)

crobards: 1. clé pour algo symétrique 1.a problème de l'échange de clé 1.b problème "1 clé par canal stable" (départ d'un participant implique réforme), donc espace de clé est hypercube des comms en cours + immédiatement potentielles

2. machine sûre ce qui peut détourner (fournir à un tiers) la clé privée

3. passphrase 1.a clé privée chiffrée sur fs, passphrase n mémorisée par GPG (passphrase en RAM only)

3.a frontaux avec caches (passphrase en RAM only)

4. man in the middle

en cas de compromission: créer nouvelle clé, signer de l'ancienne, révoquer l'ancienne. Rappel: la passphrase ne ménage qu'une latence, elle n'est pas une sécurité.

topo clé de session (et IDEA)

topo: chiffrement résistant à la cryptanalise différentielle

anneau de confiance max

intégrité et origine de paquetages installer n'importe quoi: laisser un inconnu gérer votre ordi


http://yro.slashdot.org/article.pl?sid=06/06/01/2215204 http://sourceforge.net/projects/gpgrelay/ http://wiki.debian.org/SecureApt http://www.kfwebs.net/pgp/