La cryptographie   cl©s publiques avec GnuPG

52
La cryptographie à clés publiques avec GnuPG From and to the world

Transcript of La cryptographie   cl©s publiques avec GnuPG

Page 1: La cryptographie   cl©s publiques avec GnuPG

La cryptographie à clés publiques avecGnuPG

From and to the world

Page 2: La cryptographie   cl©s publiques avec GnuPG
Page 3: La cryptographie   cl©s publiques avec GnuPG

Contents

1 Présentation 5La cryptographie (TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5La cryptographie à clé partagée (symétrique) (TODO) . . . . . . . . . . . . . . . . . 5La cryptographie à clé publique (asymétrique) . . . . . . . . . . . . . . . . . . . . . . 5

La confidentialité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5L’authenticité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6La nécessité de la confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6Le problème avec la confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

La cryptographie hybride . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Détails 9La paire de clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Clé publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Clé privée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

Les sous-clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Clé de signature principale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Clés de signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10Clés de chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Sécurité des clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Type et taille des clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Phrase de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11Date d’expiration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Révocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Authentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Identité d’utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Validité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13Confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Autres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Signature de clé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14Réseau de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Autres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Trousseau de clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Serveur de clé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Réseau de confiance 19Relations de confiance directes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Comprendre le concept de validité de la clé . . . . . . . . . . . . . . . . . . . . . . . . 19Définir la confiance dans le propriétaire . . . . . . . . . . . . . . . . . . . . . . . . . . 21Comprendre le concept de confiance marginale . . . . . . . . . . . . . . . . . . . . . . 22

3

Page 4: La cryptographie   cl©s publiques avec GnuPG

Contents

Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Usages 27Préparation du support USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Effacer le support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Chiffer le support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Formater le support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29Accéder au support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Configurer GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Création d’une paire de clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Améliorer l’entropie du système . . . . . . . . . . . . . . . . . . . . . . . . . . . 30Générer la clé de signature principale . . . . . . . . . . . . . . . . . . . . . . . . 31Générer un certificat de révocation . . . . . . . . . . . . . . . . . . . . . . . . . 33

Modification de la paire de clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Ajouter une sous-clé de chiffrement . . . . . . . . . . . . . . . . . . . . . . . . . 34Ajouter une sous-clé de signature . . . . . . . . . . . . . . . . . . . . . . . . . . 36Ajouter une identité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Sauvegarder la paire de clé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Publier la clé publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Modification du réseau de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Importer une clé publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Vérifier la validité d’une clé publique . . . . . . . . . . . . . . . . . . . . . . . . 41Définir le niveau de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Signer une clé publique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Diffusion de la signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Consulter la base de confiance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Afficher les signatures d’une clé publique . . . . . . . . . . . . . . . . . . . . . . 44

Utilisation sur des fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Chiffrer un fichier (TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Déchiffrer un fichier (TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Signer un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Vérifier une signature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

Révocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Révoquer une identité (TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Révoquer un signature de clé (TODO) . . . . . . . . . . . . . . . . . . . . . . . 49Révoquer une clé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49Révoquer la clé maitresse avec un certificat de révocation . . . . . . . . . . . . . 50

Récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

4

Page 5: La cryptographie   cl©s publiques avec GnuPG

1 Présentation

Dans cette première partie, nous allons présenter les principaux concepts qui nous servirons parla suite.

La cryptographie (TODO)

La cryptographie permet d’assurer la confidentialité d’un message, c’est à dire permettre detransmettre un message qui ne puisse être lu que par son destinataire et d’assurer l’authenticitéd’un message, c’est à dire permettre de s’assurer que l’expéditeur est bien celui à qui l’on pense.Il existe deux grandes méthodes cryptographiques pour obtenir ces résultats, la cryptographie àclé partagée et la cryptographie à clé publique.

La cryptographie à clé partagée (symétrique) (TODO)

Imaginons un coffre à une clé, chacun possède la clé.TODO Ajouter un dessin de coffre à une clé avec la même clé.

La cryptographie à clé publique (asymétrique)

Dans ce chapitre, nous n’allons pas étudier la cryptographie asymétrique en détails, mais plutôtprésenter de manière simplifiée les concepts de base. Nous les approfondirons par la suite.

La confidentialité

Pour assurer la confidentialité d’un message, imaginez un coffre possédant deux clés : une cléqui permet seulement de le fermer et une clé qui permet uniquement de l’ouvrir.TODO Ajouter un dessin de coffre avec les deux clésLa clé servant à fermer les coffres doit être communiquée à toutes les personnes désirant construiredes coffres à votre intention.La clé servant à ouvrir les coffres doit être gardée soigneusement hors de portée d’autrui. Eneffet, quelqu’un s’en emparant serait en mesure d’ouvrir tout les coffres, les anciens comme lesnouveaux.Cependant, vu que la clé servant à fermer les coffres est disponible pour tous, n’importe quipeut vous envoyer un coffre. Comment pouvez vous savoir que le coffre provient bien de votreamie Alice et non de votre ennemie Eve, prétendant être Alice ? Et c’est pareil pour Alice.Comment peut-elle s’assurer que le coffre qu’elle a reçu est bien de vous ?

5

Page 6: La cryptographie   cl©s publiques avec GnuPG

1 Présentation

L’authenticité

Pour assurer l’authenticité d’un message, imaginez un cachet de cire possédant deux sceaux: un sceau qui permet uniquement d’apposer le cachet et un sceau qui permet seulement devérifier le cachet.TODO Ajouter un dessin de cachet avec les deux sceauxLe sceau permettant la vérification doit être communiqué à toutes les personnes désirant pouvoirvérifier le cachet.Le sceau permettant l’apposition doit être gardé soigneusement hors de porté d’autrui. En effetquelqu’un s’en emparant serait en mesure d’apposer votre cachet sur n’importe quel message.Cependant, avant qu’Alice puisse vérifier votre cachet, elle doit être quasi-certaine que le sceauqu’elle posséde est réellement le vôtre et non celui de votre ennemie Eve, prétendant être vous.De même, avant qu’elle puisse vous envoyer un message que vous seul pourrez lire, elle doit êtrequasi-certaine que la clé servant à fermer le coffre est réellement la vôtre et non celle de votreennemie Eve, prétendant être vous. Et c’est la même chose pour vous, vis-à-vis d’Alice.

La nécessité de la confiance

Cette assurance est ce que nous appelons “confiance”. Elle doit être à double sens. Vous devezêtre sûr des éléments que vous possédez pour votre correspondant. Et lui doit être sûr que lesélements qu’il posséde sont bien les votres.Comme dit plus haut, la “confiance” correspond à la certitude que les élements, la clé servant àfermer des coffres à son intention et le cachet servant à vérifier ses sceaux, que nous connaissonspour Alice sont bien ceux d’Alice. Si vous et Alice viviez dans la même maison ou aux alentours,établir cette confiance serait facile : vous vous retrouvez autour d’un café et les echangez enface-à-face.

Le problème avec la confiance

Mais si vous souhaitez communiquer de manière sûre avec Chloé ? C’est une bonne amie d’Alice,mais elle habite dans les côtes d’Armor et vous sur la côte d’Azur, et vous ne vous êtes jamaisrencontré-e-s. Que ce passe-t-il si Chloé invite Dharma et Ezri, qui à leur tour invitent Finn etGabby ? Comment pouvez vous faire confiance à la clé d’une personne que vous n’avez jamaisrencontrée ?C’est là que les deux principaux systèmes de cryptographie à clé publique, X.509 et OpenPGP,divergent dans leur façon d’aborder ce problème :

• Le standard X.509 utilise les certificats et les autorités de certification (CAs). Il estbien adapté pour des organisations hiérachisées ayant une autorité de confiance implicitequi se porte garante pour tous les certificats qu’elle émet. C’est le procédé utilisé dans lanavigation sécurisée avec SSL/TLS et dans le cryptage des mails avec S/MINE.Imaginons, tous les gens de la côte d’Azur doivent avoir leur clé vérifiée (signée) parAlice avant que l’on puisse faire confiance à cette clé, pendant que tous les gens des côtesd’Armor doivent avoir leur clé signée par Chloé. Alice et Cloé signent mutuellement leurpropre clé, et vous finissez avec une hiérarchie de confiance. Alice et Cloé sont les autorités

6

Page 7: La cryptographie   cl©s publiques avec GnuPG

La cryptographie hybride

de confiance. Aussi longtemps que vous avez confiance en Alice, vous pouvez communiquerde manière sûre avec n’importe qui. C’est simple et direct, mais il y un défaut important.La méchante Eve doit seulement accéder à la clé privée de Chloé pour être en mesured’infiltrer entièrement votre organisation.

• Le standard OpenPGP utilise les relations de confiance entre les utilisateurs avecl’objectif affiché de ne pas nécessiter d’autorités de certification centralisées. C’est leprocédé utilisé dans le cryptage des mails avec OpenPGP.

Au lieu d’avoir designé des autorités de confiance (CAs) comme Alice et Chloé, à quitous doivent faire confiance pour que la hiérachie des autorités de confiance fonctionne,OpenPGP vous laisse vous, en tant qu’utilisateur, décider en qui vous avez confiance, et àquel point. La structure résultante est appelée “Toile de Confiance”.

La cryptographie hybride

Pour des raisons de performance et afin de permettre d’envoye un même message qui puisse êtreouvert par plusieurs destinataires, OpenPGP utilise les deux types de cryptographie que nousvenons de voir.

La cryptographie symétrique est utilisée pour chiffrer le message, puis utilise la cryptographieasymétrique pour chiffrer la clé symétrique qui a été utilisée

C’est à dire que

1. on crée un premier coffre à une clé avec une clé taillée pour l’usage2. on place le message dans le coffre3. on cachete la clé du coffre avec le sceau privé de l’expéditeur.4. on crée un deuxième coffre, cette fois un coffre à deux clés5. on place la clé cachetée dans le deuxième coffre6. on envoie les deux coffres ensemble.

Récapitulatif

La confidentialité implique que vous pouvez transmettre un message avec l’assurance que seulvotre correspondant pourra le lire et que votre ennemi ne peux lire le message même s’ilpeux espionner toutes les communications.

implique que votre correpondant doit être capable de vous transmettre un message avecl’assurance que vous seul pourrez lire.

L’authenticité Vous devez être capable de vérifier que le message que vous avez reçu provientbien du correspondant auquel vous pensez.

Votre correspondant(e) doit être capable de vérifier que le message provient bien de vous.

Votre ennemi ne doit pas être en messure de modifier le message sans que cela ne sedétecte, ni de se faire passer pour vous, ni pour votre correspondant.

La cryptographie symétrique peut être vu comme un coffre-fort possédant une seule clé quisert le fermer (chiffrer) et pour l’ouvrir (déchiffrer)

7

Page 8: La cryptographie   cl©s publiques avec GnuPG

1 Présentation

necessité de partager une même clé (ce qui implique un canal de communication sûr pourcommuniquer la clé)reposse entièrement sur la clé (elle doit donc être difficile à deviner)il faut une clé différente pour chacun de vos correspondants. Si n personnes doiventcommuniquer, il faut n(n − 1)/2 clés (5000 clés pour 100 personnes), ce qui implique untrousseau de clés conséquant.

La cryptographie asymétrique peut être vu comme un coffre-fort possédant deux clés auxusages différentsUne clé sert à le fermer, l’autre sert à l’ouvrirassure la confidentialité en placant les documents dans des coffres.assure l’authenticité en apposant un cachet sur les documents.Il faut s’assurer de la validité des éléments en notre possession.Les autres doivent faire de même.la clé publique peut être donnée à n’importe quila clé privée doit être gardé secrèteRepose sur l’impossibilité de déduire, en un temps et avec des moyens réalistes, la cléprivée à partir de la clé publique.l’émetteur chiffre avec la clé publique du destinatairele destinataire décrypte avec sa clé privéesimplifie l’échange de clé car la clé publique peut circuler sur un canal de communicationnon-sûr, il faut uniquement s’assurer que c’est bien la bonne cléchaque personne posséde sa propre paire de clés. Si n personnes doivent communiquer, ilfaut n paires de clés (100 paires de clés pour 100 personnes), ce qui implique un trousseaude clé bien plus modeste qu’avec la cryptographie symétrique.

La cryptographie hybride utilise la cryptographie symétrique pour chiffrer le message avec uneclé à usage unique.utilise la cryptographie asymétrique pour chiffrer la clé qui a été utilisée pour chiffrer lemessage.utilise la cryptographie asymétrique pour authentifier le message.

8

Page 9: La cryptographie   cl©s publiques avec GnuPG

2 Détails

Nous allons maintenant présenter plus en détail les concepts que nous venons d’aborder. Nousverrons la façon dont ils ont été implémantée (jargon qui veut dire mise en oeuvre d’un concept)dans GnuPG (pour GNU Privacy Guard) qui est l’implémantation open-source du standardOpenPGP.

La paire de clés

Généralement, dans la cryptographie à clé publique nous parlons de paire de clés c’est à dire d’unepartie publique, appelée clé publique, apparaillée avec une partie privée, appelée clé privée. Dansla réalité, une paire de clé est en fait constituées de plusieurs paires de clés, appelées sous-clés,ayant chacune une fonction précise. Nous verrons leurs fonctions dans la partie suivante.

Clé publique

La clé publique se communique à tous vos correspondants, soit directement soit parl’intermédiare d’un serveur de clés. Elle contient les parties publiques des différentes sous-clésqui constituent la paire de clés.

Clé privée

La clé privée se conserve au fond d’un coffre-fort. Elle contient les parties privées des différentessous-clés qui constituent la paire de clés.

Attention, tout le fonctionnement et toute la sécurité de ce mécanisme de protection et designature repose sur le fait que votre clé privée ne tombe JAMAIS entre de mauvaises mains(donc entre les mains de PERSONNE si ce n’est les vôtres). Pour cela il est conseillé de ne paslaisser son ordinateur sans surveillance, d’avoir une bonne phrase de passe. Dans le cas où unmalheur arrive, il est aussi conseillé de posséder ce que l’on appelle un certificat de révocation àdisposition afin de pouvoir invalider la paire de clé.

Les sous-clés

Le réel intérêt des sous-clés est de simplifier l’expiration régulière ou la révocation de sous-clécompromise ou ne répondant plus à vos critères de sécurité. Votre toile de confiance n’est pasaffectée par les changements sur les sous-clés car la clé de signature principale sur laquelleest bâtie la toile de confiance n’est pas modifiée. Les sous-clés ajoutent une assurance qu’unproblème ne vas pas détruire votre chaîne de confiance ce qui est le plus long à mettre en place.

9

Page 10: La cryptographie   cl©s publiques avec GnuPG

2 Détails

Il est possible d’ajouter des clés de chiffrement ainsi que des clés de signatures à une paire declé. Elles seront signées par la clé de signature principale afin de certifier à vos correspondantleur appartenance à la paire de clés.

Clé de signature principale

La clé de signature principale est la pièce maîtresse de votre paire de clé.La partie privée de la clé de signature principale vous permet de :

• certifier vos identités en les signant afin d’indiquer à vos correspondants que c’est bienvous qui avez ajouté ces identités à votre paire de clés.

• certifier vos sous-clés en les signant, ce qui indique à vos correspondants que c’est bienvous qui avez ajouté ces sous-clés à votre paire de clés.

• certifier des clés publiques en les signant, ce qui indique à vos correspondants quevous avez vérifié l’appartenance de chaque clé à son propriétaire.

• signer un message afin de votre correspondant puisse s’assurer que vous êtes bienl’expéditeur.

La partie publique de la clé de signature principale permet à vous ou vos correspondants de :• authentifier une identité pour s’assurer que c’est bien vous qui avez ajouté une sous-clé

à votre paire de clés.• authentifier une sous-clé pour s’assurer que c’est bien vous qui avez ajouté une identité

à votre paire de clés.• authentifier une signature pour s’assurer que c’est bien vous qui avez signé une clé

publique.• authentifier un message pour s’assurer que vous en êtes bien l’expéditeur.

Si la partie privée de cette clé est compromise, l’attaquant pourra signer des clés en votrenom, ce qui lui permettra de vous rendre garant de l’identité de quelqu’un. Il pourra aussisigner des messages en votre nom, ce qui lui permettra d’usurper votre identité au yeux de voscorrespondants.Sachant qu’il est possible de créer des clés de signature qui n’ont pas le pouvoir de certifier desclés et que l’opération de signature de clé n’étant pas quotidienne, la partie privée de la clé designature principale peut être retirée du trousseau de clé. Cela peut en améliorer la sécuritécar s’il est compromis l’attaquant ne pourra pas certifier de nouvelles clés publiques et doncvous rendre garant d’une identité que vous n’avez pas vérifiée, ni certifier des sous-clés et doncajouter une sous-clé afin de pouvoir signer un message en votre nom ou décrypter des messagesà votre intention, ni certifier des identités et donc vous faire passer pour quelqu’un d’autre.

Clés de signature

La partie privée des clés de signature vous permettent de signer un message afin de votrecorrespondant puisse s’assurer que vous êtes bien l’expéditeur.La partie publique des clés de signature permettent à vous et à vos correspondants de authen-tifier un message pour s’assurer qu’il est bien de vous à condition que vous l’ayez signé par lapartie privée.Si la partie privée est compromise, l’attaquant pourra signer des messages en votre nom, ce quilui permettra d’usurper votre identité au yeux de vos correspondants.

10

Page 11: La cryptographie   cl©s publiques avec GnuPG

Sécurité des clés

Clés de chiffrement

La partie privée des clés de chiffrement vous permettent de déchiffrer un message que vousavez reçu.La partie publique des clés de chiffrement permettent à vous et à vos correspondants de chiffrerun message à votre intention (donc le rendre illisible pour qui ne posséde pas la bonne partieprivée).Si la partie privée est compromise, l’attaquant pourra déchiffrer les messages qui vous ont étéadressés, ce qui lui permettra de lire votre correspondance.

Sécurité des clés

Toute la protection assurée par l’usage de la cryptographie à clé publique repose sur le faitque la clé secrète est justement secrète et qu’elle le restera. Pour cela GnuPG offre plusieurstechniques que nous allons maintenant détailler.Attention, tout le fonctionnement et la sécurité de ce mécanisme de protection et de signaturerepose sur le fait que votre clé privée ne tombe JAMAIS entre de mauvaises mains (donc entreles mains de PERSONNE si ce n’est les vôtres).

Type et taille des clés

Un attaquant peut vouloir déduire la partie secrète à partir de la partie publique. Le type de clémais surtout la taille de clé caractérisent la résistance des différentes sous-clés constituant lapaire de clé à cette attaque.Le type de clé est l’algorithme utilisé pour générer une paire de clé, c’est à dire la procéduremathématique sur laquelle s’appuie la sécurité des clés.Avec OpenPGP, il est possible d’utiliser :

• L’algorithme RSA (Rivest Shamir Adlerman) pour créer des clés de signatures ainsi quedes clés de chiffrement. Il a été décrit par Ron Rivest, Adi Shamir et Leonard Adlermanen 1991.

• L’alhorithme DSA (Digital Signature Algorithme) pour créer des clés de signature. Il aété breveté en 1991, brevet attribué à David W. Kravitz.

• L’algorithme Elgamal pour créer des clés de chiffrement. Il a été décrit par Taher Elgamalen 1985. Il est basé sur le problème du logarithme discret.

La taille de clé sert à définir la résistance des clés. Plus la taille de clé est grande, plus les cléssont longues, plus il faut du temps pour réussir à découvrir la partie privée à partir de la partiepublique en essayant toutes les possibilités les unes après les autres.

Phrase de passe

La phrase de passe protège la partie privée de la paire de clés. Si un attaquant met la main surla paire de clés, on dit compromise en cryptographie, la phrase de passe sera le dernier rempartcontre une usurpation d’identité.

11

Page 12: La cryptographie   cl©s publiques avec GnuPG

2 Détails

Elle doit donc être longue pour accroître la sécurite mais facilement mémorisable car si vous nevous en rappellez plus, vous ne pourrez plus effectuer les opérations nécessitant votre clé privéeet vous serez obligé de l’invalider avec un certificat de révocation.

Date d’expiration

Il est aussi possible de limiter dans le temps l’usage de la clé maitresse (et donc de la paire declé) ou d’une sous-clé. Cela ajoute une sécurité supplémentaire, surtout pour les sous-clés, carune fois cette date révolue, la clé pert une partie de ses fonctionnalités, empêchant de l’utiliser.La date d’expiration est la date jusqu’à laquelle la clé est valide. Passé cette date, la clé seraconsidérée comme expiré, c’est à dire qu’elle ne pourra plus être utilisée. Vous n’aurez pas àcommuniquer avec vos correspondants pour qu’ils cessent d’utilisé la paire de clés ou de sessous-clés.Souvent on ne fait pas expirer la clé privée principale, par contre les sous-clés privées peuventavoir une date d’expiration de 6 mois, d’un an ou plus.Si une date d’expiration est spécifiée, il vous faut planifier une politique de mise à jour car vousdevrez leur transmettre vos nouvelles sous-clés afin qu’ils puissent continuer de converser avecvous.

Révocation

La révocation peut être l’action d’:

• invalider une clé privée (c’est à dire indiquer à vos correspondants qu’il ne faut plusutiliser cette clé pour chiffrer des messages).

• invalider une signature sur une clé publique (c’est à dire revenir sur la confiance que vousavez octroyée à la clé d’une personne).

• invalider un identifiant utilisateur (c’est à dire indiquer à vos correspondants que l’identitén’est plus valable.

Lorsque que l’on révoque, il faut en indiquer la raison (la clé privée a été égarée, compromise,saisie, détruite).Il faut bien sûr diffuser cette modification à vos correspondants afin qu’ils soient au courant.Lorsqu’une sous-clé de chiffrement a été revoquée, sa partie publique ne peut plus servir àchiffrer des messages mais sa partie privée peut toujours servir à déchiffrer les anciens messages.Lorsqu’une sous-clé de signature a été révoquée, sa partie privée ne peut plus servir à signer desmessages mais sa partie publique peut encore servir à authentifier les anciennes signatures.Lorsque la clé de signature principale (et donc, par extention, la paire de clés) a été révoquée,sa partie privée ne peut plus servir à certifier vos sous-clés, à certifier vos identités utilisateurs,à valider des clés publiques ni à signer des messages mais sa partie publique peut encore servireà vérifier les anciennes signatures. De plus les autres sous-clés contenues dans la paire de clésseront considérées à leur tour comme révoquées.Pour révoquer une clé il vous faut avoir la phrase de passe, ce qui peut poser un soucis sivous l’avez perdue. Pour pallier à ce problème, on peut générer préventivement un certificatde révocation qui permettra de révoquer la paire de clé. Ces certificats doivent être gardés

12

Page 13: La cryptographie   cl©s publiques avec GnuPG

Authentification

précautionneusement car si quelqu’un met la main dessus, il sera en mesure de révoquer votrepaire de clé.

Authentification

Identité d’utilisateur

Une identité utilisateur est l’assemblage d’un nom, d’un ou des prénoms, d’une addresse mail eteventuellement d’un commentaire. L’identité utilisateur permet de choisir la bonne clé parmittoutes celles que vous possèdez dans votre trousseau. Ce sont les signatures sur la clé quigarantissent que l’identité est valable.On peut avoir plusieurs identités d’utilisateurs pour une même paire de clés. Si vous changezd’adresse mail par exemple, vous pouvez en ajouter une pour la nouvelle adresse puis révoquerl’identité utilisateur associée avec l’ancienne adresse lorsqu’elle celle-ci n’est plus valable.Les identifiants utilisateurs sont signés avec votre clé de signature principale garantissant par làque c’est bien vous qui les avez ajoutés à votre clé publique.Il est possible d’ajouter une ou plusieurs photos à une identité d’utilisateur afin de faciliter votreidentification. A ne pas faire si vous souhaitez préserver votre anonymat.

Validité

La validité est une indication de la certitude que la clé correspond bien à l’identité associée.Lorsque vous rencontrez une clé que vous n’avez pas vous-même signée, la validité de la clé seradéterminée sur la base des signatures qu’elle a collecté et sur la confiance dont vous-même faitespreuve envers ces différents signataires.Une clé que vous n’avez pas vous même signée, sera considéré comme valide, si au moins unepersonne à qui vous faites pleinement confiance ou bien si au moins trois personnes à quivous faites marginalement confiance l’ont signée. C’est la politique standard de GnuPG,vous pouvez bien sûr la changer si vous le désirez.

validité signification

Inconnu Vous ne savez pas si c’est la bonne personne.Marginal vous pensez que c’est bien la bonne personne, mais

vous n’avez pas vérifié pleinement.Complète Vous vous êtes complétement assuré de l’identité de la

personne.Ultime Vous êtes absolument sûr que c’est la bonne personne

(ceci ne doit s’appliquer qu’à ces propres clés).

Table 2.1: Différentes possibilités de validité

13

Page 14: La cryptographie   cl©s publiques avec GnuPG

2 Détails

Confiance

La confiance est une indication de votre certitude qu’une personne est capable d’étendre leréseau de confiance. Cette confiance est utilisée pour déterminé la validité des clés qui ont étésignées par cette clé. Par défaut, une clé inconnue nécessite 3 signatures avec une valeur deconfiance marginale ou une signature complètement fiable.

confiance signification

Inconnu vous n’avez aucune idée de la capacité de cette personne àsigner correctement des clés.

Jamais cette personne n’est pas apte à signer correctement des clés.Marginale cette personne contrôle la photo de l’identifiant avant de signer

une clé, mais n’examine pas nécessairement l’identifiant demanière minutieuse.

Complète cette personne examine attentivement la photo attachée àl’identifiant de chaque personne avant de signer une clé (parexemple, elle ne signe que les clés qui appartiennent réellementà la personne demandant la signature).

Ultime ce niveau de confiance ne devrait s’appliquer qu’à vos propresclés.

Table 2.2: Différentes possibilités de confiances

Autres

Signature de clé

La signature d’une clé consiste à vérifier de la validité de la clé publique ainsi que de l’identitéde la personne qui parait posséder la clé. Elle se fait généralement lors de rassemblements,appellé keysigning party, où les gens vérifient leur identité et se signent mutuellement leursclés publiques, puis redonnent la signature de clé au propriétaire de la clé afin qu’il intégre lanouvelle signature à sa paire de clés. Les serveurs de clés facilitent ces opérations en simplifiantles échanges entre les correspondants.Vous ne devriez jamais signer la clé de quelqu’un que vous n’avez pas personnellement rencontrécar cela pourrait détruire la toile de confiance.

Réseau de confiance

Le réseau de confiance ou bien toile de confiance sont les relations de confiance entre un groupede clés. Une signature de clé est un lien dans le réseau de confiance. Ces liens de confiancepeuvent être à sens unique ou bien dans les deux sens. La toile de confiance idéale connectetout le monde dans les deux sens avec tout le monde.Le réseau de confiance peut être vu comme la somme de tous les liens de confiance entre toutesles clés.

14

Page 15: La cryptographie   cl©s publiques avec GnuPG

Autres

Afin d’être en mesure de vérifier ses relations, il est important que tout le monde signé les clésdes autres et propage ses signatures aux serveurs de clés. Par ce moyen, les autres peuventbénéficier de telle signature.

Le chemin entre deux clés doivent être le plus court possible. Ces chemin sont des chaînes deconfirmations. Si le chemin entre ma clé et la clé de quelqu’un devient plus longue, je suis moinssûr de la validité de l’authenticité de cette clé.

Les chemins qui ne partagent pas de clés en commun entre le clé de départ et la clé d’arrivéesont appellés chemins disjoints. Il est important d’avoir autant de chemins disjoints que possible.Plus le nombre de chemins disjoints entre deux clés est faible plus grande est la probabilitéque quelqu’un puisse contrefaire la chaîne de confiance en créant une signature sur une clé necorrespondant pas à l’identité proclamé.

Dans GnuPG, ces informations sont stockées dans le fichier ~/.gnupg/trustdb.gpg.

Autres

Trousseau de clés

Le trousseau de clés est l’ensemble des clés publiques et privées que vous avez en votre possession.Pour pouvoir être utilisée une clé doit être ajoutée à votre trousseau.

Dans GnuPG, ce sont les fichiers ~/.gnupg/secring.gpg qui contient votre clé privée et~/.gnupg/pubring.gpg qui contient votre clé publique et celles de vos correspondants.

Serveur de clé

Un serveur de clés facilite la distribution des clés publiques, la vôtre et celles de vos correspon-dants, ainsi que leurs mises à jour. En effet, lorsque vous modifiez votre paire de clé (ajout desous-clés, révocation de sous-clés, ajout d’identité, révocation d’identité, . . . ) il vous faut ladistribuer à tous vos correspondants pour qu’ils en aient la nouvelle version. Ce qui dans unréseau un tant soit peu étendu devient vite impossible. Le serveur de clé sert d’intermédiaire.Vous y envoyez votre nouvelle clé publique et vos correspondants la récupére sur le serveur.Pareil pour les clés publiques de vos correspondants.

Les serveurs de clés peuvent être utilisés pour propager les signatures de clé, car vous pouvezenvoyer un certificat indiquant que vous avez signé une clé publique et le serveur va l’ajouter àla clé publique de votre correspondant. Mais il est préférable d’envoyer cette signature à votrecorrespondant qui se chargera lui-même de l’ajouter à sa paire de clés et de propager la nouvelleclé publique car cela lui permet de mieux gérer ses relations.

Les principaux serveurs de clés se synchronisent entre eux réguliérement. Vous n’avez donc pasbesoin d’envoyer votre clé à tous les serveurs de clés existants.

NOTE : une fois que vous avez déposé une clé publique (la vôtre ou celle de quelqu’un) sur unserveur de clé, elle ne peut être supprimée (il sera bien sûr toujours possible de la révoquer).Réfléchissez donc bien avant d’envoyer votre clé ou celle de quelqu’un. S’il elle ne s’y trouve pasdéjà c’est que son propriétaire a peut-être des bonnes raisons. Dans tous les cas, il est bon decontacter le propriétaire avant d’envoyer des informations a un serveur de clé.

15

Page 16: La cryptographie   cl©s publiques avec GnuPG

2 Détails

Récapitulatif

Object

Paire de clés Ensemble formé d’une clé publique et d’une clé privée appareilléeClé publique (public key) Elle contient les parties publiques des clés constituant une paire de

clés.Elle est à transmettre à vos correspondants.Dans la cryptographie à clé publique, la clé de la paire de clé qui peut être partagée.

Clé privée (private key) Elle contient les parties privées des clés constituant une paire de clés.Elle est à conserver soigneusement.Dans la cryptographie à clé publique, la clé de la pair de clé qui doit être gardée secrète.

Paire de clé (key pair)

Clés de signature Les clés de signature permettent d’assurer l’authenticité, c’est à diremanipuler des cachets.La partie publique sert à authentifier un message, c’est à dire à vérifier un cachet.La partie privées sert à signer un message, c’est à dire à apposer un cachet.Paire de clés servant à apposser une signature et à l’authentifierLa partie publique sert à authentifier une signatureLa partie privée sert à apposer une signature

Clés de chiffrement Les clés de chiffrement permettent d’assurer la confidentialité, c’est àdire manipuler des coffres.La partie publique sert à chiffrer un message, c’est à dire à fermer les coffres.La partie privée sert à déchiffrer un message, c’est à dire à ouvrir les coffres.

Clés de signature principale Les clés de signature principale perment d’assurer l’authenticitéet la certification, c’est à dire manipuler des cachets.La partie publique sert à authentifier un certicifat.La partie privée sert à certifier un élément.

Verbes

chiffrer (crypt) Chiffrer un texte ou un document consiste à le rendre illisible pour quiconquene connaît pas la clé de déchiffrement.Action de rendre incompréhensibleAction permettant de rendre confidentiel

déchiffrer (decrypt) Action de rendre compréhensible quelque chose précedament rendue in-compréhensible

signer (sign) Action d’apposer un cachet indiquant la possession de la clé privée au momentde l’envoi.

authentifier la signature (verify) Action de vérifier la validité du cachet apposé.

16

Page 17: La cryptographie   cl©s publiques avec GnuPG

Récapitulatif

certifier () Action d’apposer sa propre signature sur un élement du système GnuPG afin ded’indiquer que vous en êtes bien à l’origine.

révoquer (revoke) Indiquer que la clé n’est plus valide.Dans la crypthographie asymétrique, on ne supprime pas les clés, on les révoque.

Complément

réseau de confiance (web of trust) Intéraction entre les différentes clésOrganigrame des clés à qui nous faisons confiance

trousseau de clés (keyring) La collection des clés publiques, des signatures de clé et dessous-clés qui forme un certificat PGP completAvec GnuPG, liste de clés privées et de clés publiques que l’utilisateur a en sa possesion.Pour chiffrer, il faut avoir la clé publique du destinataire dans son trousseau.Pour déchiffrer, il faut avoir sa clé privée dans son trousseau.Pour signer, il faut avoir sa clé privée dans son trousseau.Pour authentifier, il faut avoir la clé publique de l’émetteur dans son trousseau.

exportation (export) Avec GnuPG, extraire du trousseau de clés une clé publique, une signaturede clé ou une clé privée.

importation (import) Avec GnuPG, ajouter dans le trousseau de clés une clé publique, une cléprivée ou une signature de clé.

révocation (revoke) Action de révoquer une clé privée, une identité utilisateur ou une signaturede clé.

certificat de révocation (revocation certificate) Certificat établisant qu’une paire de clé nedoit plus être utilisée.Il est préparer à l’avance, avant que la clé privée ne soit plus accessible.

empreinte de clé (key fingerprint) Suite de nombres hexadécimaux (chiffre entre 0 et 9 etlettre entre A et F)Sert à vérifier que la clé publique est bien celle que l’on a transmisseL’empreinte est une chaîne de caractères unique qui identifie précisément une clé.

identifiant de clé (keyID) L’identifiant de clé (KeyID) est comparable à l’empreinte de clé.L’identifiant de clé ne contient que les 8 derniers caractères de l’empreinte de clé.Il est possible la plupart du temps d’identifier une clé uniquement avec l’identifiant de clé,mais il peut arriver que deux clés possèdent le même identifiant.

serveurs de clés (key server) Stoque les clés dans une base de donnéesPeut être intérrogé par des gens qui souhaitent acquérir la clé publique d’un destinatairequ’ils ne possédent pas dans leur trousseau.Les clés ne sont pas suprimables.Les clés peuvent être révoquées (si leur révocation est transmise au serveur de clé)Les principaux serveurs de clé se synchronisent entre eux (du moins une partie)

17

Page 18: La cryptographie   cl©s publiques avec GnuPG
Page 19: La cryptographie   cl©s publiques avec GnuPG

3 Réseau de confiance

Voyons comment fonctionne la “Toile de Confiance” ou “Réseau de Confiance”.Pour l’exemple, je vais utiliser “Les trois mousquetaires”. Ne vous inquiétez pas si vous ne vousrappelez pas bien la trame de l’histoire. Je vous rafraichirai la mémoire au fur et à mesure.Cette partie est la traduction de l’article PGP Web of Trust: Core Concepts Behind TrustedCommunication publié par Konstantin Ryabitsev.

Relations de confiance directes

Au début de l’histoire, d’Artagnan arrive à Paris sur un cheval jaune et se retrouve rapidementengagé dans un combat avec trois autres personnes :

• M. de la Fère (Athos)• M. du Vallon (Porthos)• M. d’Aramitz (Aramis)

Au cours de leurs duels, ils tombent dans une embuscade des gardes qui tentent de les arrêterpour cause de duel illégal, si bien que les quatres unissent leurs forces et combattent les gardes,devenant des amis proches dans l’opération.Afin de sceller leur amitié, ils décident d’une part d’échanger leurs clés publiques, mais ausside signer leurs différentes clés publiques, afin de pouvoir signifier que “Je sousigné d’Artagnan,confirme que cette clé appartient à Porthos en y appossant ma signature.”Voyons à quoi cela resemble :

dartagnan[~]$ gpg --edit-key porthospub 2048R/51CDD613 created: 2014-01-23 expires: never usage: SC

trust: unknown validity: unknown[ unknown] (1). M. du Vallon (Porthos)gpg> signpub 2048R/51CDD613 created: 2014-01-23 expires: never usage: SC

trust: unknown validity: unknownPrimary key fingerprint: 611C 0C6D 9B61 A091 1439 EE83 B9AE 772F 51CD D613M. du Vallon (Porthos)

Are you sure that you want to sign this key with yourkey "Charles d'Artagnan (d'Artagnan)" (CD3B1D5E)Really sign? (y/N) y

Comprendre le concept de validité de la clé

Maintenant si nous regardons la clé appartenant à Porthos, elle indique :

19

Page 20: La cryptographie   cl©s publiques avec GnuPG

3 Réseau de confiance

dartagnan[~]$ gpg --edit-key porthospub 2048R/51CDD613 created: 2014-01-23 expires: never usage: SC

trust: unknown validity: full[ unknown] (1). M. du Vallon (Porthos)

Il est important de comprende la différence entre “confiance(trust)” et “validité(validity)” car cesont deux faces différentes d’un même pièce. Dans le language de GnuPG, la “validité” représentenotre propre certitude que la clé appartient réellement à Porthos (que le clé est bien réellementcelle de Porthos). Dans l’extrait précédent, “validité: maximale(full)” indique à d’Artagnanqu’il est absolument sûr que c’est la clé de Porthos (dans ce cas parce que d’Artagnan lui-mêmel’a signé). Mais quel est le sens de “confiance: inconnu” ?

Dans ce cas “confiance” (aussi appellée “confiance dans le propriétaire”) indique quelle confianced’Artagnan place en Porthos pour vérifier les identités des autres gens (en demandant à desamis communs de se porter garants pour eux, . . . ). Partons du principe que d’Artagnan faitpleinement confiance à Porthos pour faire un bon travail de vérification de l’identité des gensavant de signer leur clé. Il édite la clé de Porthos et modifie la confiance en “complète (full)” :

dartagnan[~]$ gpg --edit-key porthospub 2048R/51CDD613 created: 2014-01-23 expires: never usage: SC

trust: unknown validity: full[ unknown] (1). M. du Vallon (Porthos)gpg> trustpub 2048R/51CDD613 created: 2014-01-23 expires: never usage: SC

trust: unknown validity: full[ full ] (1). M. du Vallon (Porthos)Please decide how far you trust this user to correctly verify other users' keys(by looking at passports, checking fingerprints from different sources, etc.)

1 = I don't know or won't say2 = I do NOT trust3 = I trust marginally4 = I trust fully5 = I trust ultimatelym = back to the main menu

Your decision? 4pub 2048R/51CDD613 created: 2014-01-23 expires: never usage: SC

trust: full validity: full[ full ] (1). M. du Vallon (Porthos)Please note that the shown key validity is not necessarily correctunless you restart the program.gpg> q

Aprés que d’Artagnan ait signé les clés d’Arthos, Porthos et Aramis, son réseau de confiance esttrés direct et peut se représenter par un schéma simple.

Lorsque Porthos recommande Planchet, qui doit devenir le nouveau valet de d’Artagnan,d’Artagnan utilise sa toile de confiance pour vérifier que Planchet est bien celui qu’il dit, car saclé porte la signature de Porthos :

dartagnan[~]$ gpg --list-sigs planchetpub 2048R/30EA3A2A 2014-01-23uid Planchetsig 3 30EA3A2A 2014-01-23 Planchetsig 51CDD613 2014-01-23 M. du Vallon (Porthos)

20

Page 21: La cryptographie   cl©s publiques avec GnuPG

Définir la confiance dans le propriétaire

Figure 3.1: Rapports de confiance directe

Et GnuPG lui indique que la clé est complétement valable :

dartagnan[~]$ gpg --edit-key planchetpub 2048R/30EA3A2A created: 2014-01-23 expires: never usage: SC

trust: unknown validity: full[ full ] (1). Planchet

Ceci est la démonstration de la toile de confiance. Comme d’Artagnan fait confiance à Porthospour vérifier l’identité des gens avant de signer leur clé, lorsque Planchet se présente, d’Artagnansait qu’il est bien Planchet – par ce que Porthos c’est porté garant de lui en signant sa clé.

Définir la confiance dans le propriétaire

Vous remarquerez que nous avons encore “confiance: inconnu” pour Planchet – car nous n’avonspar encore défini notre confiance dans cette clé. En régle générale, la “validité” est quelquechose qui est calculée depuis les signatures sur la clé, alors que la “confiance” estquelque chose que nous définissons nous-mêmes pour chaque clé dans le but d’indiquerautre chose que “inconnu”.Chaque fois que nous signons la clé de quelqu’un, c’est un bonne habitude que de définir laconfiance dans le propriétaire dans le même temps, afin de pouvoir utiliser plus tard ce rapportde confiance pour vérifier l’identité de la clé d’autres personnes. Dans le cas de Planchet,d’Artagnan a décidé qu’il lui faissait marginalement confiance, au moins pour l’instant – aprèstout, ils viennent juste de se rencontrer :

gpg> trustpub 2048R/30EA3A2A created: 2014-01-23 expires: never usage: SC

trust: unknown validity: full[ full ] (1). PlanchetPlease decide how far you trust this user to correctly verify other users' keys(by looking at passports, checking fingerprints from different sources, etc.)

1 = I don't know or won't say2 = I do NOT trust3 = I trust marginally

21

Page 22: La cryptographie   cl©s publiques avec GnuPG

3 Réseau de confiance

Figure 3.2: Rapports de confiance directe

4 = I trust fully5 = I trust ultimatelym = back to the main menu

Your decision? 3pub 2048R/30EA3A2A created: 2014-01-23 expires: never usage: SC

trust: marginal validity: full[ full ] (1). PlanchetPlease note that the shown key validity is not necessarily correctunless you restart the program.gpg> q

Il fait la même chose pour tous les valets de ses amis : il définit la confiance qu’il a dans les clésde Bazin, Grimaud et Mousqueton comme “marginale”. Donc maintenant la toile de confiancede d’Artagnan ressemble à celle du schéma suivant. La couleur des éléments indique la confianceque d’Artagnan a dans chaque clé (rouge pour la pleine confiance et blue pour la confiancemarginale) et les fléches indiquent qui a signé chaque clé.

Comprendre le concept de confiance marginale

Qu’arrive t’il lorsque nous trouvons une clé signée par quelqu’un à qui nous faisons confiance quemarginalement ? Imaginons qu’un jour d’Artagnan rencontre son propriétaire, M. Bonacieux, etque la seule signature sur la clé de M. Bonacieux sois celle de Plancet ?Voici le resultat :

dargagnan[~]$ gpg --list-sigs bonacieux

22

Page 23: La cryptographie   cl©s publiques avec GnuPG

Comprendre le concept de confiance marginale

Figure 3.3: Rapports de confiance directe

pub 2048R/D672573B 2014-01-28uid M. Bonacieuxsig 3 D672573B 2014-01-28 M. Bonacieuxsig 99CCAC09 2014-01-28 Planchetdargagnan[~]$ gpg --edit-key bonacieuxpub 2048R/D672573B created: 2014-01-28 expires: never usage: SC

trust: unknown validity: marginal[marginal] (1). M. Bonacieux

Comme vous pouvez le voir, la validité est “marginale”, ce qui veut dire dans le language deGnuPG qu’on a seulement une assurance marginale que ce “M. Bonacieux” soit effectivementcelui qu’il prétent être. En fait, si d’Artagnan recevait un message signé par M. Bonacieux etexécutait gpg --verify dessus, il optiendrait le résultat suivant :

dartagnan[~]$ gpg --verify message-from-bonacieux.ascgpg: Signature made Tue 28 Jan 2014 02:10:41 PM EST using RSA key ID D672573Bgpg: Good signature from "M. Bonacieuxgpg: WARNING: This key is not certified with sufficiently trusted signatures!gpg: It is not certain that the signature belongs to the owner.Primary key fingerprint: BE8B 2FE0 C433 79A4 7A6B C045 F04F 9E3D D672 573B

Si nous représentons les rapports de confiance comme un organigramme, nous colorions M.Bonacieux en gris car il n’y a pas assez de signatures pour indiquer une compléte validité.Pour augmenter la validité de la clé, nous aurions besoin soit que quelqu’un d’autre à qui nousfaisons pleinement confiance signe la clé, soit que nous trouvions deux autres personnes quilui font marginalement confiance, afin d’obtenir un total de trois signatures de confiancemarginale sur la clé de M. Bonacieux. Voila ce qui se produirait si Mousqueton et Bazinajoutent tous deux leur signature à la clé de M. Bonacieux :

dartagnan[~]$ gpg --verify message-from-bonacieux.ascgpg: Signature made Tue 28 Jan 2014 02:10:41 PM EST using RSA key ID D672573Bgpg: Good signature from "M. Bonacieux"Primary key fingerprint: BE8B 2FE0 C433 79A4 7A6B C045 F04F 9E3D D672 573Bdargagnan[~]$ gpg --edit-key bonacieux

23

Page 24: La cryptographie   cl©s publiques avec GnuPG

3 Réseau de confiance

Figure 3.4: Rapports de confiance marginale

24

Page 25: La cryptographie   cl©s publiques avec GnuPG

Récapitulatif

pub 2048R/D672573B created: 2014-01-28 expires: never usage: SCtrust: unknown validity: full

[full] (1). M. Bonacieux

Parce que M. Bonacieux a maintenant sur sa clé trois signatures à qui nous faisons marginallementconfiance, la validité de sa clé est maintenant indiquée à “compléte”.

Figure 3.5: M. Bonacieux avec une compléte confiance

Récapitulatif

Ceci est basiquement tout ce qu’il y a à savoir pour comprendre les principaux concepts de latoile de confiance avec OpenPGP. Pour récapituler :

• Vous vous portez garant de l’identité de quelqu’un en signant sa clé.• La “validité” d’une clé est la certitude que nous avons que la clé appartient bien à la

personne avec qui nous voulons communiquer. Elle est établie en fonction du niveau deconfiance et du nombre de signatures sur la clé.

• La “confiance” dans une clé doit être définie par vous, pour chaque clé de votre trousseauavant qu’elle soit utilisée dans les calculs de votre toile de confiance.

25

Page 26: La cryptographie   cl©s publiques avec GnuPG

3 Réseau de confiance

• La “confiance” peut être compléte ou marginale. Il faut seulement une signature à quivous faite complétement confiance pour marquer une clé comme “valide” mais il faut aumoins trois signatures à qui vous faite marginalement confiance pour obtenir le mêmerésultat.

Les toiles de confiance deviennent vite grandes et complexes. Dans la suite nous allons étudierquels outils la communauté d’OpenPGP a développé pour simplifier la gestion de la confiance,et nous parlerons des serveurs de clés et de la délégation de confiance.

26

Page 27: La cryptographie   cl©s publiques avec GnuPG

4 Usages

Nous allons maintenant mettre en pratique ce que nous venons de voir avec l’application enligne de commande gpg.Pourquoi la ligne de commande ? Parce que premièrement, gpg sera toujours accessible etdeuxièmement, parce que c’est plus facile à comprendre, si, si je vous assure.Pour suivre ce guide, il vous faudra un support USB, du genre clé USB qui peut être defaible capacité, pour stocker le trousseau de clés, un ordinateur avec son système d’exploitationhabituel (si c’est un linux) ou bien un live CD du genre TAILS.

Préparation du support USB

Nous allons placer le trousseau de clé sur un support amovible, dans le but de vous en faciliter sonusage. En effet vous pourrez l’utiliser avec plusieurs ordinateurs, plusieurs comptes utilisateurs.ATTENTION toutefois à ne pas égarer le support ni à le laisser sans surveillance car, bien quenous allons rendre cela plus difficile, n’importe qui s’en emparant pourrait potentiellement êtreou devenir en mesure de l’utiliser à votre encontre en pouvant déchiffrer les messages à votreattention, signer des messages en votre nom, connaitre votre reseau de confiance et infiltrer ceréseau de confiance.

Effacer le support

Avant toute chose, il vous faut identifier votre support (quel chemin permet l’accès à cepériphèrique). Attention à ne pas vous tromper car les commandes que nous allons exécuter parla suite sont destructrices et si vous les appliquez au disque dur de votre ordinateur ou à toutautre support vous risquer de perdre des données qui vous sont capitales. Prenez bien le tempsd’être sûr.Pour cela, brancher le support USB puis exécuter :

root:~# dmesg | tail -n 19[67458.524169] usb 6-1: new high-speed USB device number 12 using ehci-pci[67458.656495] usb 6-1: New USB device found, idVendor=0457, idProduct=0151[67458.656503] usb 6-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0[67458.656920] usb-storage 6-1:1.0: USB Mass Storage device detected[67458.656995] usb-storage 6-1:1.0: Quirks match for vid 0457 pid 0151: 80[67458.657044] scsi13 : usb-storage 6-1:1.0[67459.658460] scsi 13:0:0:0: Direct-Access USB2.0 USB Flash Disk 0.00 PQ: 0 ANSI: 2[67459.659081] sd 13:0:0:0: Attached scsi generic sg1 type 0[67459.660259] sd 13:0:0:0: [sdb] 1040384 512-byte logical blocks: (532 MB/508 MiB)[67459.661257] sd 13:0:0:0: [sdb] Write Protect is off[67459.661266] sd 13:0:0:0: [sdb] Mode Sense: 00 00 00 00[67459.662257] sd 13:0:0:0: [sdb] Asking for cache data failed

27

Page 28: La cryptographie   cl©s publiques avec GnuPG

4 Usages

[67459.662265] sd 13:0:0:0: [sdb] Assuming drive cache: write through[67459.666029] sd 13:0:0:0: [sdb] Asking for cache data failed[67459.666037] sd 13:0:0:0: [sdb] Assuming drive cache: write through[67459.855693] sdb: sdb1[67459.859638] sd 13:0:0:0: [sdb] Asking for cache data failed[67459.859642] sd 13:0:0:0: [sdb] Assuming drive cache: write through[67459.859646] sd 13:0:0:0: [sdb] Attached SCSI removable disk

L’information qui nous intèresse est celle indiquant : sdb: sdb1, sdb est l’identifiant dusupport, sdb1 est la première partition du support sdb. L’identifiant et les partitions peuventêtre diffèrent.

Pour le système d’exploitation linux, le support se nomme /dev/sdb et la première partition/dev/sdb1.

Maintenant que vous avez identifié la clé avec certitude, il est temps de l’effacer de manièresécurisée, c’est à dire en écrivant plusieurs fois des élements pseudo-aléatoires afin d’améliorer larésilience du chiffrement que nous allons ajouter par la suite.

root:~# sudo shred -v /dev/sdbshred: /dev/sdb : passe 1/3 (random)...shred: /dev/sdb : passe 1/3 (random)...501MiB/508MiB 98 %shred: /dev/sdb : passe 1/3 (random)...502MiB/508MiB 98 %shred: /dev/sdb : passe 1/3 (random)...508MiB/508MiB 100 %shred: /dev/sdb : passe 2/3 (random)...shred: /dev/sdb : passe 2/3 (random)...458MiB/508MiB 90 %shred: /dev/sdb : passe 2/3 (random)...459MiB/508MiB 90 %shred: /dev/sdb : passe 2/3 (random)...508MiB/508MiB 100 %shred: /dev/sdb : passe 3/3 (random)...shred: /dev/sdb : passe 3/3 (random)...457MiB/508MiB 90 %shred: /dev/sdb : passe 3/3 (random)...458MiB/508MiB 90 %shred: /dev/sdb : passe 3/3 (random)...508MiB/508MiB 100 %

Le support étant complètement réecrit, nous devons reconstruire une table de partition afin queles systèmes d’exploitation soient en mesure d’utiliser le support. Pour cela, nous allons utilisersfdisk pour créer une unique partition s’étendant sur tout le volume :

root:~# echo "0,+,83" | sudo sfdisk -q /dev/sdbDisque /dev/sdb : 1019 cylindres, 17 têtes, 60 secteurs/piste

sfdisk: Erreur : le secteur 0 n'a pas une signature MS-DOS/dev/sdb : type non reconnu de table de partitionPrécédente situation :Aucune partition repéréeNouvelle situation :Unités = cylindres de 522240 octets, blocs de 1024 octets, décompte à partir de 0

Périph Amor Début Fin #cyls #blocs Id Système/dev/sdb1 0+ 1018 1019- 519689+ 83 Linux/dev/sdb2 0 - 0 0 0 Vide/dev/sdb3 0 - 0 0 0 Vide/dev/sdb4 0 - 0 0 0 VideSuccès d'écriture de la nouvelle table de partitions

Relecture de la table de partitions...

28

Page 29: La cryptographie   cl©s publiques avec GnuPG

Préparation du support USB

Chiffer le support

Nous ne pouvons que trop vous recommender de chiffrer ce support afin que même égaré ou volé,il soit très difficile (voir impossible) d’en utiliser le contenu. Lorsque vous voudrez utiliser votretrousseau de clé, il vous faudra connecter le support, rendre le support lisible en fournissantvotre phrase de passe, puis monter la partition contenant les données. Sur des systèmes récents,le dernier point est fait de manière automatique. Bien sûr, il ne vous faudra pas oublier cettephrase de passe sans quoi adieu votre trousseau de clé.

Le vrai problème rencontré lors de l’utilisation de partitions chiffrées est qu’elles sont plusdifficile à utiliser avec un système d’exploitation basé sur windows ou mac. C’est certes possiblemais il faut installer des utilitaires spécifiques mais je ne les connais pas. Mais est-ce une bonneidée d’utiliser sa paire de clé avec un système que l’on ne peut maitriser, qui contient sansdoute des portes dérobées, qui peut être configuré pour enregistrer à votre insu le contenu desdifférents supports qui y sont connectés ?

Si vous devez utiliser votre support avec un système d’exploitation de ce type ou sur desordinateurs qui ne vous appartiennent pas, il serait préférable d’utiliser un live CD TAILS aulieu du système d’exploitation habituel. C’est un système amnésique et d’usage temporaire quipermet de limitter drastiquement les traces que vous allez laisser sur l’ordinateur ou sur lesréseaux et vous protège d’un système hostile qui pourrait vous dérober votre trousseau de clé.Vous pouvez consulter le guide d’autodéfense numérique ou bien la documentation officielle deTails pour plus de détails.

Pour chiffrer le support, nous allons utiliser LUKS (Linux Unified Key Setup) qui est un outilpermettant de stocker sur le support les informations permettant de déchiffrer la partitionchiffrée. La clé est protégé par une, ou plusieurs, phrase de passe. Il est possible, bien que nousle verrons pas ici, d’en ajouter, d’en supprimer. L’intéret réel est qu’il n’y a qu’à connaître laphrase de passe et non tous les parametres nécessaire pour le déchiffrage.

root:~# sudo cryptsetup luksFormat /dev/sdb1

WARNING!========Cette action écrasera définitivement les données sur /dev/sdb1.

Are you sure? (Type uppercase yes): YESSaisissez la phrase secrète :Vérifiez la phrase secrète :

Formater le support

Afin de ne pas se rendre la vie plus compliquée, nous allons utiliser un système de fichier quetous les systèmes d’exploitation comprennent, en l’occurance le système de fichiers FAT32.

La première chose à faire est de rendre accessible le volume que nous venons de chiffrer :

root:~# sudo cryptsetup luksOpen /dev/sdb1 luksSaisissez la phrase secrète pour /dev/sdb1 :

Maintenant nous formatons le volume :

29

Page 30: La cryptographie   cl©s publiques avec GnuPG

4 Usages

root:~# sudo mkfs.vfat -F 32 -n Trousseau /dev/mapper/luksmkfs.vfat 3.0.16 (01 Mar 2013)unable to get drive geometry, using default 255/63

Puis nous fermons le support :

root:~# sudo cryptsetup luksClose luks

Accéder au support

Dans la suite du guide, nous n’indiquerons pas qu’il vous faut monter cette clé, cela étantimplicite.Lorsque vous connectez votre support à un ordinateur, une interface graphique vous demandevotre phrase de passe puis monte le volume.Ce qui suit est à faire la première fois que vous utilisez votre support avec un nouveau ordinateurou un nouveau compte. Attention une nouvelle session de TAILS compte comme une premièrefois.Une fois votre support ouvert, il vous faut identifier le chemin d’accés au volume maintenantrendu accessible :

nobody@sea:~# mount | grep TROUSSEAU | awk ' { print $3 } '/media/nobody/TROUSSEAU

Puis créer un lien symbolique entre le dossier de GNUPG et le volume sur le support :

nobody@sea:~# ln -s /media/nobody/TROUSSEAU ./gnupg

Configurer GnuPG

Ceci est à faire la toute première fois que vous utilisez votre support USB.Premièrement, nous supprimons l’affichage du copyright au lancement des commandes afin deréduire un peu la longeur de ce guide. Ce n’est pas une necessité.

echo "# Supprime l'affichage du copyright au début des commandes" >> ~/.gnupg/gpg.confecho "no-greeting" >> ~/.gnupg/gpg.conf

Création d’une paire de clés

Améliorer l’entropie du système

La génération d’une paire de clés nécessite la présence d’une grande quantité de nombresaléatoires et donc d’une entropie importante dans le système. On conseille généralement delancer une commande gourmande en ressources afin de générer l’entropie nécessaire.Il existe toutefois des solutions plus simples : installer le paquet rng-tools (sous Debian) etconfigurer /etc/default/rng-tools en intégrant la ligne HRNGDEVICE=/dev/urandom. Il voussuffira ensuite d’un petit sudo /etc/init.d/rng-tools restart pour disposer de suffisam-ment d’entropie en permanence, à la fois pour GnuPG et pour toutes les autres applicationsayant besoin d’un grand nombre de valeurs aléatoires en stock.

30

Page 31: La cryptographie   cl©s publiques avec GnuPG

Création d’une paire de clés

Générer la clé de signature principale

On lance la génération avec :

aduhler:~$ gpg --gen-keySélectionnez le type de clef désiré :

(1) RSA et RSA (par défaut)(2) DSA et Elgamal(3) DSA (signature seule)(4) RSA (signature seule)

Quel est votre choix ?

Pour l’instant, nous voulons uniquement créer une paire de clés de signature principale afin deconstituer une paire de clés étape après étape pour améliorer la compréhension du fonctionnementde GnuPG. Les choix qui nous intéressent ici sont d’une part (3) DSA (signature seule) etd’autre part (4) RSA (signature seule). Les choix (1) et (2) servant quant à eux à créerune paire de clés constituée d’une clé de signature principale ainsi que d’une clé de chiffrement.RSA repose sur la difficulté de mise en facteurs premiers de grands entiers (le fait de retrouver lesdeux facteurs premiers d’un produit). DSA et Elgamal reposent sur un problème mathématiquedit de logarithme discret.Le choix entre l’une ou l’autre option est largement discutable (RSA plus courant, générationDSA plus rapide, vérification de signature RSA plus rapide, signature DSA plus rapide, etc).De manière générale, l’étape suivante qui consite à choisir la taille de clé, est plus importante.On lit souvent que 4096 bits est une valeur conseillée pour RSA et 2048 pour DSA.Nous nous choississons ici une clé RSA de signature ainsi que la taille la plus grande possible,soit 4096, car la clé de signature principale doit être valable pendant un temps long. En effetc’est la pièce principale de notre paire de clés.

Quel est votre choix ? 4les clefs RSA peuvent faire entre 1024 et 4096 bits de longueur.Quelle taille de clef désirez-vous ? (2048) 4096La taille demandée est 4096 bits

L’étape suivante consiste à déterminer la durée de validité de la paire de clés. Comme il s’agitde notre clé de signature principale, nous décidons qu’elle sera valable indéfiniment.

Veuillez indiquer le temps pendant lequel cette clef devrait être valable.0 = la clef n'expire pas

<n> = la clef expire dans n jours<n>w = la clef expire dans n semaines<n>m = la clef expire dans n mois<n>y = la clef expire dans n ans

Pendant combien de temps la clef est-elle valable ? (0) 0La clef n'expire pas du toutEst-ce correct ? (o/N) o

Nous allons maintenant ajouter une identité utilisateur à notre paire de clés en spécifiant lesinformations personnelles que sont notre nom et notre adresse mail. GnuPG permet d’ajouterun commentaire afin de présiser l’identité, par exemple si vous avez des homonymes. Vouspouvez bien sûr choisir d’utiliser une identité d’emprunt.

31

Page 32: La cryptographie   cl©s publiques avec GnuPG

4 Usages

Une identité est nécessaire à la clef ; le programme la construit à partirdu nom réel, d'un commentaire et d'une adresse électronique de cette façon :

« Heinrich Heine (le poète) <[email protected]> »

Nom réel : Alfred DuhlerAdresse électronique : [email protected] : le rôleVous utilisez le jeu de caractères « utf-8 ».Vous avez sélectionné cette identité :

« Alfred Duhler (le rôle) <[email protected]> »

Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électroniqueou (O)ui/(Q)uitter ? O

Notez qu’il est possible par la suite d’ajouter d’autre identité afin de spécifier, par exemple,d’autres adresses mail.L’étape suivante consistera à la génération proprement dite, mais avant on vous demandera laphrase de passe permettant de protéger la clé privée. Attention, tout le fonctionnement et lasécurité de ce mécanisme de protection et de signature repose sur le fait que votre clé privéene tombe JAMAIS entre de mauvaises mains (donc entre les mains de PERSONNE si ce n’estles vôtres). En cas de compromission de votre système ou du support contenant la clé secrète(secring.gpg), le dernier rempart est le chiffrement protégeant ces données et donc, la phrasede passe permettant le déchiffrement. Ce n’est pas simplement important, c’est capital ! Oubliezdonc toute forme de phrase de passe intelligible, trop courte, basée sur des informations quipuissent être déduites d’autres mots de passe ou de vos goûts et préférences. . . Par la suite,nous prendrons soin de mettre en sécurité cette clé de signature principale secrète, mais cela nevous dispense en aucun cas de choisir une phrase de passe robuste, sûre et longue !

Une phrase de passe est nécessaire pour protéger votre clef secrète.

De nombreux octets aléatoires doivent être générés. Vous devriez faireautre chose (taper au clavier, déplacer la souris, utiliser les disques)pendant la génération de nombres premiers ; cela donne au générateur denombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie...........................+++++..+++++

Les symboles . et + permettent de suivre la progression de la génération des clés (surtout surdes machines peu puissantes). Comme le précise le message, la génération des clés nécessite del’entropie dans le système. Plutôt que de lancer des commandes faisant “travailler” le système,nous utilisons rng-tools comme précisé précédemment. Ceci vous évitera un éventuel messagevous signifiant que les clés ne peuvent être générées faute de valeurs aléatoires en quantitésuffisante.Au terme de la génération, GnuPG va construire une première version de la base de donnéespermettant de déduire la confiance qu’on peut accorder dans les clés publiques à notre disposition:

gpg: clef CD486A1C marquée de confiance ultime.les clefs publique et secrète ont été créées et signées.

gpg: vérification de la base de confiancegpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),

32

Page 33: La cryptographie   cl©s publiques avec GnuPG

Création d’une paire de clés

modèle de confiance PGPgpg: profondeur : 0 valables : 1 signées : 0

confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.

Les clés sont identifiées par un identifiant héxadécimal. 9B90966B est notre clé de signatureprincipale et nous lui accordons une confiance ultime (au-delà donc de “complète” et “marginale”,puisqu’il s’agit de notre propre clé. GnuPG rappelle également les régles (le modèle de confiance)utilisées par défaut pour considérer une clé publique comme valide (une clé doit être signée parun utilisateur à qui on accorde une confiance complète, ou trois utilisateurs à qui on accorde uneconfiance marginale). Pour l’heure, la seule clé publique en notre possession est celle, fraîchementcréée, qui nous est rattachée. Elle est donc considérée comme valable (valide), puisqu’on luiaccorde une confiance ultime (1 u sur la ligne commencant par confiance :). Voir Consulterla base de confiance pour l’explication des autres champs.Enfin, dans les dernières lignes de la sortie, nous obtenons un résumé des informations sur ceque nous venons de générer. Notez que GnuPG nous prévient que la clé que nous venons degénérer n’est pas complète, nous la compléterons dans une prochaine étape.

pub 4096R/CD486A1C 2014-05-09Empreinte de la clef = 0DE7 939A E09C B779 C094 17B1 D5EA E51A CD48 6A1Cuid Alfred Duhler (le rôle) <[email protected]>

Remarquez que cette clef ne peut pas être utilisée pour chiffrer. Vous pouvezutiliser la commande « --edit-key » pour générer une sous-clef à cette fin.

Nous avons maintenant une clé de signature principale qui peut être identifiée par son empreinte0DE7 939A E09C B779 C094 17B1 D5EA E51A CD48 6A1C par un morceau de son empreinteCD486A1C (appelée aussi identifiant de clé) ou par des éléments de son identité utilisateur (uid)Alfred Duhler (le rôle) <[email protected]>.

Générer un certificat de révocation

La sécurité de la clé de signature principale nécessite une attention toute particulière car endépend la validité de la paire de clés ainsi que de toutes ses sous-clés. Il vous est possible decréer autant de sous-clés que vous le souhaitez. Vous le faites en utilisant la clé de signatureprincipale secrète. Il en va de même pour la révocation d’une sous-clé, la clé secrète principaleest indispensable.En revanche la paire de clés de signature principale elle, ne dispose pas de clé “supérieure”permettant de la contrôler, elle ne peut être révoquée que par l’utilisation de la clé privéecorrespondante. De ce fait, si vous perdez votre clé secrète ou êtes incapable de vous souvenirde votre phrase de passe qui la protège, vous êtes dans l’impossibilité de la révoquer et donc,de dire au monde entier qu’il ne faut plus s’en servir. Pour éviter ce genre de situation, vouspouvez préparer le terrain et produire par avance un certificat de révocation.Autrement dit, vous prenez les devants, tant que vous avez la maîtrisse de la situation, pourcréer un “objet” qui vous permettra de révoquer votre paire principale sans le mot de passede la clé secrète. Vous programmez une future révocation en quelque sorte, qu’il vous suffiraensuite d’appliquer.Pour générer ce certificat, nous procédons comme suit :

33

Page 34: La cryptographie   cl©s publiques avec GnuPG

4 Usages

aduhler:~$ gpg --armor --output revoke.asc --gen-revoke 9B90966B

sec 4096R/CD486A1C 2014-05-09 Alfred Duhler (le rôle) <[email protected]>

Faut-il créer un certificat de révocation pour cette clef ? (o/N) ochoisissez la cause de la révocation :0 = Aucune raison indiquée1 = La clef a été compromise2 = La clef a été remplacée3 = La clef n'est plus utiliséeQ = Annuler

(Vous devriez sûrement sélectionner 1 ici)Quelle est votre décision ? 0Entrez une description facultative, en terminant par une ligne vide :>Cause de révocation : Aucune raison indiquée(Aucune description donnée)Est-ce d'accord ? (o/N) o

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (le rôle) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

sortie forcée avec armure ASCII.Certificat de révocation créé.

Veuillez le déplacer sur un support que vous pouvez cacher ; toute personneaccédant à ce certificat peut l'utiliser pour rendre votre clef inutilisable.Imprimer ce certificat et le stocker ailleurs est une bonne idée, au cas où lesupport devienne illisible. Attention quand même : le système d'impressionutilisé pourrait stocker ces données et les rendre accessibles à d'autres.

Modification de la paire de clés

Ajouter une sous-clé de chiffrement

Dans l’état, notre utilisateur dispose d’une clé principale. L’idée est ici de créer une sous-clé dechiffrement, afin de pouvoir chiffrer et déchiffrer.

aduhler:~$ gpg --edit-key [email protected] (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law.

La clef secrète est disponible.

pub 1024R/BD2379C8 créé : 2014-03-13 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 1024R/032BB7A8 créé : 2014-03-13 expire : 2014-09-09 utilisation : S[ ultime ] (1). Alfred Duhler (le cinéaste) <[email protected]>[ ultime ] (2) Alfred Duhler (le patron) <[email protected]>[ ultime ] (3) [jpeg image of size 865]gpg> addkeyLa clef est protégée.

Une phrase de passe est nécessaire pour déverrouiller la clef secrète de

34

Page 35: La cryptographie   cl©s publiques avec GnuPG

Modification de la paire de clés

l'utilisateur : « Alfred Duhler (le rôle) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

On nous demande, bien entendu, la phrase de passe de la clé secrète principale, puis le type declé que nous souhaitons ajouter. Ici, RSA (chiffrement seul) 2048 (par défault) fera l’affaire,contrairement à la génération de la clé principale, nous choisissons de faire expirer la sous-clédans un certain temps (6m pour 6 mois). Après plusieurs confirmations, la clé est générée :

Sélectionnez le type de clef désiré :(3) DSA (signature seule)(4) RSA (signature seule)(5) Elgamal (chiffrement seul)(6) RSA (chiffrement seul)

Quel est votre choix ? 6les clefs RSA peuvent faire entre 1024 et 4096 bits de longueur.Quelle taille de clef désirez-vous ? (2048) 2048La taille demandée est 2048 bitsVeuillez indiquer le temps pendant lequel cette clef devrait être valable.

0 = la clef n'expire pas<n> = la clef expire dans n jours<n>w = la clef expire dans n semaines<n>m = la clef expire dans n mois<n>y = la clef expire dans n ans

Pendant combien de temps la clef est-elle valable ? (0) 6mLa clef expire le mer. 05 nov. 2014 20:13:56 CETEst-ce correct ? (o/N) oFaut-il vraiment la créer ? (o/N) oDe nombreux octets aléatoires doivent être générés. Vous devriez faireautre chose (taper au clavier, déplacer la souris, utiliser les disques)pendant la génération de nombres premiers ; cela donne au générateur denombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie......+++++.......+++++

Ceci est clairement affiché lors du listage des informations :

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : E[ ultime ] (1). Alfred Duhler (le rôle) <[email protected]>

Nous venons de créer 4BD512B8, dédié au chiffrement (E pour encryption). Si vous changezd’avis concernant l’expiration de la sous-clé, ce n’est pas un problème. Il vous suffit de lasélectionner (ici avec key 2) et d’utiliser la commande expire. Le nouveau délai d’expirationvous sera alors demandé, ainsi que la phrase de passe de la clé principale pour appliquer leschangements.

Sauvegardons les modifications que nous venons d’effectuer en quittant avec la commande quit:

gpg> quitFaut-il enregistrer les modifications ? (o/N) o

35

Page 36: La cryptographie   cl©s publiques avec GnuPG

4 Usages

Ajouter une sous-clé de signature

Dans l’état, notre utilisateur dispose d’une clé principale et d’une sous-clé de chiffrement. L’idéeest ici de créer une sous-clé de signature, afin de ne plus avoir besoin d’utiliser la clé principalepour signer des documents. Attention cependant, la clé principale est toujours celle utiliséepour signer d’autres clés publiques. C’est une tâche qui ne peut être déléguée à une sous-clé.

aduhler:~$ gpg --edit-key "0DE7 939A E09C B779 C094 17B1 D5EA E51A CD48 6A1C"La clef secrète est disponible.

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : E[ ultime ] (1). Alfred Duhler (le rôle) <[email protected]>

gpg> addkeyLa clef est protégée.

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (le rôle) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

On nous demande, bien entendu, la phrase de passe de la clé secrète principale, puis le typede clé que nous souhaitons ajouter. Ici, RSA 2048 (par défault) fera l’affaire, contrairement àla génération de la clé principale, nous choisissons de faire expirer la sous-clé dans un certaintemps (6m pour 6 mois). Après plusieurs confirmations, la clé est générée.

Sélectionnez le type de clef désiré :(3) DSA (signature seule)(4) RSA (signature seule)(5) Elgamal (chiffrement seul)(6) RSA (chiffrement seul)

Quel est votre choix ? 4les clefs RSA peuvent faire entre 1024 et 4096 bits de longueur.Quelle taille de clef désirez-vous ? (2048) 2048La taille demandée est 2048 bitsVeuillez indiquer le temps pendant lequel cette clef devrait être valable.

0 = la clef n'expire pas<n> = la clef expire dans n jours<n>w = la clef expire dans n semaines<n>m = la clef expire dans n mois<n>y = la clef expire dans n ans

Pendant combien de temps la clef est-elle valable ? (0) 6mLa clef expire le mer. 05 nov. 2014 20:21:14 CETEst-ce correct ? (o/N) oFaut-il vraiment la créer ? (o/N) oDe nombreux octets aléatoires doivent être générés. Vous devriez faireautre chose (taper au clavier, déplacer la souris, utiliser les disques)pendant la génération de nombres premiers ; cela donne au générateur denombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie....+++++...+++++

Ceci est clairement affiché lors du listage des informations :

36

Page 37: La cryptographie   cl©s publiques avec GnuPG

Modification de la paire de clés

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1). Alfred Duhler (le rôle) <[email protected]>

Nous venons de créer 89B9AEB3, dédié à la signature (S). Si vous changez d’avis concernantl’expiration de la sous-clé, ce n’est pas un problème. Il vous suffit de la sélectionner (ici avec key2) et d’utiliser la commande expire. Le nouveau délai d’expiration vous sera alors demandé,ainsi que la phrase de passe de la clé principale pour appliquer les changements.Nous pouvons maintenant enregistrer les modifications effectuées en quittant :

gpg> quitFaut-il enregistrer les modifications ? (o/N) o

Nous pouvons visualiser les parties privées que nous possédons dans notre trousseau de clés enéxecutant :

aduhler:~$ gpg --list-secret-keys/home/test/.gnupg/secring.gpg-----------------------------sec 4096R/CD486A1C 2014-05-09uid Alfred Duhler (le rôle) <[email protected]>ssb 2048R/4BD512B8 2014-05-09ssb 2048R/89B9AEB3 2014-05-09

Ajouter une identité

L’une des choses qu’un utilisateur de GnuPG est obligé de faire est d’ajouter une nouvelle“identité” associée à sa clé publique. En d’autres termes, il doit ajouter une ou plusieurs identité,généralement de manière à faire apparaître une nouvelle addresse mail.

aduhler:~$ gpg --edit-key CD486A1CLa clef secrète est disponible.

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1). Alfred Duhler (le rôle) <[email protected]>

On utilisera ensuite la commande adduid comme suit :

gpg> adduidNom réel : Alfred DuhlerAdresse électronique : [email protected] : l'acteurVous avez sélectionné cette identité :

« Alfred Duhler (l'acteur) <[email protected]> »

Faut-il modifier le (N)om, le (C)ommentaire, l'(A)dresse électroniqueou (O)ui/(Q)uitter ? O

37

Page 38: La cryptographie   cl©s publiques avec GnuPG

4 Usages

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (le rôle) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

Ce qui aurra pour effet, d’obtenir la clé suivante :

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1) Alfred Duhler (le rôle) <[email protected]>[ inconnue] (2). Alfred Duhler (l'acteur) <[email protected]>

Il vous faudra ensuite enregistrer les modifications en quittant GnuPG :

gpg> quitFaut-il enregistrer les modifications ? (o/N) o

Voila la nouvelle clé publique que l’on a obtenue :

aduhler:~$ gpg --list-options show-uid-validity --list-key CD486A1Cpub 4096R/CD486A1C 2014-05-09uid [ ultime ] Alfred Duhler (l'acteur) <[email protected]>uid [ ultime ] Alfred Duhler (le rôle) <[email protected]>sub 2048R/4BD512B8 2014-05-09 [expire : 2014-11-05]sub 2048R/89B9AEB3 2014-05-09 [expire : 2014-11-05]

Si vous utilisez des adresses mails différents pour vos activités, mieux vaut créer des clés propresà chaque adresse mail pour éviter que le lien entre vos différentes adresses mails soit fait.En dehors de ces informations, qui peuvent vous faciliter la vie et surtout celle des personnes quisouhaitent communiquer avec vous, certains utilisateurs apprécient d’intégrer leur photo dansleur clé publique. GnuPG supporte en effet ce genre de fonctionnalités, qu’on peut allègrementconsidérer comme plus amusantes qu’utiles. Rappelons que le fait de voir la photo d’un utilisateuret reconnaître ce dernier n’est EN AUCUN CAS un modif légitime pour signer sa clé. On nesigne une clé que lorsqu’on peut réellement vérifier son identité et la correspondance entre lui etl’empreinte de sa clé !Pour intégrer une photo, on éditera la clé comme précédemment et nous utiliserons la com-mande addphoto. La photo est intégrée dans la clé publique et fera donc augmenter sa tailleproportionnellement. GnuPG conseille une image d’une taille de 240x288 pixels, mais si celle-cifait plus de 6 ko un avertissement sera affiché (vous pourrez passer outre). Il est donc de bon tond’utiliser un JPEG avec un niveau de compression important (qualité réglée sur 20% ou 30%)et, pourquoi pas, en niveau de gris. Après avoir spécifié le chemin vers le JPEG, l’image seraaffichée avec l’un des outils disponibles sur votre plateforme avant que vous puissiez confirmeret enfin, entrer votre phrase de passe pour intégrer l’image dans la clé.

aduhler:~$ gpg --edit-key CD486A1CLa clef secrète est disponible.

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SC

38

Page 39: La cryptographie   cl©s publiques avec GnuPG

Modification de la paire de clés

confiance : ultime validité : ultimesub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1). Alfred Duhler (l'acteur) <[email protected]>[ ultime ] (2) Alfred Duhler (le rôle) <[email protected]>

gpg> addphoto

Choisissez une image pour votre photo d'identité. L'image doit êtreun fichier JPEG. Rappelez-vous que cette image est stockée dans laclef publique. Si l'image est très grosse, la clef le sera aussi.Une taille de l'ordre de 240x288 est conseillée.

Entrez le nom du fichier JPEG pour la photo d'identité : alfred_duhler.jpg

Cette photo est-elle correcte (o/N/q) ? o

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1). Alfred Duhler (l'acteur) <[email protected]>[ ultime ] (2) Alfred Duhler (le rôle) <[email protected]>[ inconnue] (3) [jpeg image of size 865]

gpg> quitFaut-il enregistrer les modifications ? (o/N) o

Vous pouvez alors afficher une image présente dans une clé avec :

aduhler:~$ gpg --list-options show-uid-validity,show-photo --list-key CD486A1Cpub 4096R/CD486A1C 2014-05-09uid [ ultime ] Alfred Duhler (l'acteur) <[email protected]>uid [ ultime ] Alfred Duhler (le rôle) <[email protected]>uid [ ultime ] [jpeg image of size 865]sub 2048R/4BD512B8 2014-05-09 [expire : 2014-11-05]sub 2048R/89B9AEB3 2014-05-09 [expire : 2014-11-05]

L’utilitaire servant à l’affichage est précisé dans votre ~/.gnupg/gpg.conf après la directivephoto-viewer. Par défaut, en l’absence de précision explicite, la version GNU/Linux de GnuPGtentera d’utiliser xloadimage (X utils), eog (GNOME) ou display (ImageMagick).

Sauvegarder la paire de clé

Maintenant que nous avons une paire de clés complètement fonctionnelle, nous allons en garderune sauvegarde quelque part. C’est bien pratique en cas de perte ou de destruction du supportUSB, de fausse manipulation. Pour cela nous allons exporter une copie de la clé privée, unecopie de la clé publique, ainsi qu’une copie du réseau de confiance.ATTENTION à ne pas laissé trainer ces copies n’importe où, car elles permettent une foisimportées de réaliser toute les opérations qui vous sont possibles. Toutefois la clé privée est

39

Page 40: La cryptographie   cl©s publiques avec GnuPG

4 Usages

toujours conservée protégée par sa phrase de passe. Vous comprennez donc tout l’interêt d’unebonne phrase de passe.Premièrement nous exportons la clé publique avec :

gpg --export --armor --output clé_publique.asc CD486A1C

Puis nous exportons la clé privée avec :

gpg --export-secret-keys --armor --output clé_privée.asc CD486A1C

Et enfin nous exportons la base de confiance afin de pouvoir reconstituer notre réseau deconfiance avec :

gpg --export-ownertrust > base_de_confiance.asc

Ces opérations peuvent être répetées à intervals réguliés lorsque vous faites des modificationsimportantes de votre paire de clés.

Publier la clé publique

Pour qu’une clé publique, avec toutes les informations qu’elle contient (partie publique dessous-clés et différentes identités), puisse être utilisée afin d’être signée par d’autres utilisateurs,utilisée pour vous envoyer des documents/mails chiffrés ou vérifier la signature sur ceux quevous émettez, il faut qu’elle soit accessible publiquement. Pour ce faire, il existe des serveursde clés publiques avec lequels GnuPG est en mesure de communiquer. keyserver.gpg.com,keys.gnupg.net ou encore pgp.mit.edu sont quelques-uns d’entre eux et il est très certainementfait mention dans votre configuration GnuPG (~/.gnupg/gpg.conf) d’un serveur par défaut.Sachez également qu’en dehors de quelques exceptions, ces systèmes se synchronisent entre euxrégulièrement, afin de maintenir une version la plus à jour possible des informations de tous lesutilisateurs.Lors de la modification d’une clé publique, qu’il s’agisse de la votre (ajout de sous-clés ou d’UID)ou de celle d’un autre utilisateur (signature de clé), vous utiliserez la commande suivante pourrepublier la clé publique modifiée :

aduhler:~$ gpg --keyserver subkeys.pgp.net --send-key CD486A1Cgpg: envoi de la clef CD486A1C au serveur hkp subkeys.pgp.net

Vous pouvez également placer votre clé publique sur un serveur HTTP qui vous est propre oubien échanger la clé publique par mail (ou même en version papier), mais cela devient alorsrapidement difficile à gérer, car il vous faudra fournir à vos correspondants votre nouvelle clépublique à chaque modification de votre paire de clés. Rassurez vous ce n’est pas si fréquent.Mais sauf contrainte particulière, il vaut mieux utiliser un serveur de clé.Pour exporter votre clé publique en version texte (par opposition à une version binaire comprésséen l’absense de --armor), utiliser la commande suivante :

gpg --export --armor --output clé_publique.asc CD486A1C

40

Page 41: La cryptographie   cl©s publiques avec GnuPG

Modification du réseau de confiance

Modification du réseau de confiance

Importer une clé publique

Pour pouvoir utiliser avec vos correspondants la cryptographie asymétrique, il vous faut dansun premier temps, ajouter la clé publique de vos correpondants dans votre trousseau de clés.Pour cela, il existe deux méthodes :

• La première consiste à vous échanger directement la clé publique sous forme de fichierpar les moyens que vous jugerez bon (par mail, par téléchargement, par transmissionsur support USB, . . . ). Vous avez donc un fichier contenant la clé publique de votrecorrespondant, il vous faut maintenant l’importer dans votre trousseau de clés eneffectuant : aduhler:~$ gpg --import amnesia.asc gpg: clef BE2CD9C1 : clefpublique « Tails developers (signing key) <[email protected]> » importéegpg: Quantité totale traitée : 1 gpg: importées : 1 (RSA: 1) gpg:3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s), modèle deconfiance PGP gpg: profondeur : 0 valables : 1 signées : 0 confiance :0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.

• La deuxième consiste à récupérer la clé publique de vos correspondants depuis unserveur de clés. Pour cela il vous faut avoir l’identifiant de sa clé. aduhler:~$ gpg--keyserver subkeys.pgp.net --recv-key BE2CD9C1 gpg: demande de la clefBE2CD9C1 sur le serveur hkp subkeys.pgp.net gpg: clef BE2CD9C1 : clefpublique « Tails developers (signing key) <[email protected]> » importée gpg:3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s), modèle deconfiance PGP gpg: profondeur : 0 valables : 1 signées : 0 confiance :0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u. gpg: Quantité totale traitée : 1gpg: importées : 1 (RSA: 1)

Vous pouvez maintenant utiliser la clé publique que vous avez importée. Mais pour être sûrqu’elle appartient bien au correspondant attendu et non à quelqu’un se fessant passer pour lui,il vous faut vérifier la validité de la clé publique.

Vérifier la validité d’une clé publique

Maintenant que vous avez importé la clé publique de votre correspondant, il vous reste à vérifieravec cette personne que c’est bien sa clé et non celle de quelqu’un d’autre que vous avez importé.Les huits caractères de l’identifiant d’une clé servent à l’identifier. Cependant, par soucide prudence, mieux vaut utiliser l’empreinte complète de la clé afin d’éviter les erreurs demanipulation.En guise d’exemple, nous venons de rencontrer une des personnes développant TAILS lors d’unévenement quelconque. Celui-ci nous a transmis l’empreinte 0D24 B36A A9A2 A651 7878 76451202 821C BE2C D9C1. Nous récupérons donc la clé correspondante, puis affichons l’empreintecorrespondante avec :

aduhler:~$ gpg --fingerprint BE2CD9C1pub 4096R/BE2CD9C1 2010-10-07 [expire : 2015-02-05]Empreinte de la clef = 0D24 B36A A9A2 A651 7878 7645 1202 821C BE2C D9C1uid Tails developers (signing key) <[email protected]>uid T(A)ILS developers (signing key) <[email protected]>

41

Page 42: La cryptographie   cl©s publiques avec GnuPG

4 Usages

Les données correspondent, c’est parfait.Maintenant que vous êtes sûr de la correspondance entre la clé publique et votre correspondant,vous pouvez utiliser sa clé publique en confiance. Lui seul pourra lire les messages que vous luiadresserez. À condition toutefois que la partie privée de sa paire de clés ne soit pas compromise.

Définir le niveau de confiance

Maintenant que nous avons importé la clé publique de notre correspondant, et que nous sommesassurés qu’elle est bien sienne, nous allons attribuer à cette personne un niveau de confiancesensé indiquer notre perception de la faculté de cette personne à étendre le réseau de confiance.Pour cela, nous éditons donc sa clé publique :

aduhler:~$ gpg --edit-key BE2CD9C1

pub 4096R/BE2CD9C1 créé : 2010-10-07 expire : 2015-02-05 utilisation : SCconfiance : inconnu validité : inconnu

[ inconnue] (1). Tails developers (signing key) <[email protected]>[ inconnue] (2) T(A)ILS developers (signing key) <[email protected]>

Puis nous utilisons la commande trust afin de consigner notre niveau de confiance. Méfiants,nous décidons de n’accorder qu’une confiance marginale quant à son sérieux dans la vérificationdes identités et dans la signature d’autres clés utilisateurs :

gpg> trustpub 4096R/BE2CD9C1 créé : 2010-10-07 expire : 2015-02-05 utilisation : SC

confiance : inconnu validité : inconnu[ inconnue] (1). Tails developers (signing key) <[email protected]>[ inconnue] (2) T(A)ILS developers (signing key) <[email protected]>

Décidez maintenant de la confiance que vous portez en cet utilisateur pourvérifier les clefs des autres utilisateurs (en regardant les passeports, envérifiant les empreintes depuis diverses sources, etc.)

1 = je ne sais pas ou n'ai pas d'avis2 = je ne fais PAS confiance3 = je fais très légèrement confiance4 = je fais entièrement confiance5 = j'attribue une confiance ultimem = retour au menu principal

Quelle est votre décision ? 3

pub 4096R/BE2CD9C1 créé : 2010-10-07 expire : 2015-02-05 utilisation : SCconfiance : marginale validité : inconnu

[ inconnue] (1). Tails developers (signing key) <[email protected]>[ inconnue] (2) T(A)ILS developers (signing key) <[email protected]>Veuillez remarquer que la validité affichée pour la clef n'est pasforcément correcte avant d'avoir relancé le programme.

Nous terminons par quit afin d’enregistrer les changements en quittant le mode interactif.

gpg> quit

42

Page 43: La cryptographie   cl©s publiques avec GnuPG

Modification du réseau de confiance

Signer une clé publique

Si vous souhaitez améliorer le réseau de confiance, vous pouvez indiquer au monde que vousvous portez garant de la correspondance entre la clé publique et l’identité de la personne.Enfin, l’une des dernières opérations plus ou moins courantes consiste en la signature de cléspubliques d’utilisateurs dont on aura vérifié l’identité. La manière dont se passe normalementles choses est la suivante :

• Vous rencontrez quelqu’un qui souhaite faire signer sa clé,• celui-ci vous transmet l’empreinte de sa clé (souvent sous une forme imprimée sur un petit

bout de papier ou une carte de visite),• et vous prouve (dans la messure du possible) son identité,• une fois en mesure d’accéder à Internet, vous récupérez sa clé publique (via un serveur de

clés, ou éventuellement un mail transmis par la personne elle-même),• vous vous assurez de la correspondance entre l’empreinte transmise et celle de la clé

réceptionnée,• vous signez la clé avec votre clé secrète principale,• et enfin, vous rendez cette version à jour disponible via un serveur de clé (ou éventuellement

en la retournant à l’utilisateur).

Nous allons donc éditer la clé en question :

aduhler:~$ gpg --edit-key "0D24 B36A A9A2 A651 7878 7645 1202 821C BE2C D9C1"pub 4096R/BE2CD9C1 créé : 2010-10-07 expire : 2015-02-05 utilisation : SC

confiance : marginale validité : inconnu[ inconnue] (1). Tails developers (signing key) <[email protected]>[ inconnue] (2) T(A)ILS developers (signing key) <[email protected]>

Il nous reste à utiliser la commande sign en mode interactif pour déclencher la signature de laclé éditée :

gpg> signVoulez-vous vraiment signer toutes les identités ? (o/N) o

pub 4096R/BE2CD9C1 créé : 2010-10-07 expire : 2015-02-05 utilisation : SCconfiance : marginale validité : inconnu

Empreinte clef princip. : 0D24 B36A A9A2 A651 7878 7645 1202 821C BE2C D9C1

Tails developers (signing key) <[email protected]>T(A)ILS developers (signing key) <[email protected]>

Cette clef va expirer le 2015-02-05.Voulez-vous vraiment signer cette clef avec votreclef « Alfred Duhler (l'acteur) <[email protected]> » (CD486A1C)

Voulez-vous vraiment signer ? (o/N) o

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

Nous terminons par quit afin d’enregistrer les changements en quittant le mode interactif.

43

Page 44: La cryptographie   cl©s publiques avec GnuPG

4 Usages

gpg> quitFaut-il enregistrer les modifications ? (o/N) o

Profitez de ce moment pour Définir le niveau de confiance dans la capacité en votre correspondantà étendre le réseau de confiance, si cela n’est pas déja fait.

Diffusion de la signature

Maintenant que nous avons signé la clé de notre correspondant nous pouvons la lui transmettre.Nous pouvons aussi, si sa clé se trouve déjà sur les serveurs de clés, l’envoyer à un serveur declés qui se chargera de la mettre à jour afin que les autres correspondants sache que vous vousêtes porté garant. Mais, il est sans doute préférable que ce soit le propriétaire de la clé quichoissise ce qu’il en est.

Consulter la base de confiance

Avec la commande --check-trustdb, il est possible de connaître le nombres de clés à quiGnuPG fait confiance en notre nom.

aduhler:~$ gpg --check-trustdbgpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),

modèle de confiance PGPgpg: profondeur : 0 valables : 1 signées : 1

confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.gpg: profondeur : 1 valables : 1 signées : 0

confiance : 0 i., 0 n.d., 0 j., 1 m., 0 t., 0 u.gpg: la prochaine vérification de la base de confiance aura lieu le 2015-02-05

Le niveau de confiance est précisé avec la nomenclature suivante :

• i. : inconnu (non calculable),• n.d. : non décidé, pas d’avis, je ne sais pas,• j. : aucune, pas confiance,• m. : confiance marginale,• t. : confiance totale/complète,• u. : confiance ultime.

Afficher les signatures d’une clé publique

Avec la commande --list-sigs, il est possible de voir les signatures sur les clés publiques devotre trousseau :

aduhler:~$ gpg --list-sigs [email protected]: vérification de la base de confiancegpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),

modèle de confiance PGPgpg: profondeur : 0 valables : 1 signées : 1

confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.gpg: profondeur : 1 valables : 1 signées : 0

44

Page 45: La cryptographie   cl©s publiques avec GnuPG

Utilisation sur des fichiers

confiance : 0 i., 0 n.d., 0 j., 1 m., 0 t., 0 u.gpg: la prochaine vérification de la base de confiance aura lieu le 2015-02-05pub 4096R/BE2CD9C1 2010-10-07 [expire : 2015-02-05]uid Tails developers (signing key) <[email protected]>sig 1207BFBA 2013-06-29 [identité introuvable][...]sig X D21739E9 2011-06-12 [identité introuvable]sig D21739E9 2013-05-05 [identité introuvable]sig 2 1F70AA46 2013-09-19 [identité introuvable]sig 3 BE2CD9C1 2011-04-16 Tails developers (signing key) <[email protected]>sig 3 BE2CD9C1 2012-08-28 Tails developers (signing key) <[email protected]>sig CD486A1C 2014-05-09 Alfred Duhler (l'acteur) <[email protected]>uid T(A)ILS developers (signing key) <[email protected]>sig 85821C42 2011-03-22 [identité introuvable]sig 1207BFBA 2013-06-29 [identité introuvable][...]sig X D21739E9 2010-12-29 [identité introuvable]sig D21739E9 2013-05-05 [identité introuvable]sig 2 1F70AA46 2013-09-19 [identité introuvable]sig 3 BE2CD9C1 2012-08-28 Tails developers (signing key) <[email protected]>sig 3 BE2CD9C1 2010-10-07 Tails developers (signing key) <[email protected]>sig CD486A1C 2014-05-09 Alfred Duhler (l'acteur) <[email protected]>

Les élements de la première colonne signifie :

• pub : clé publique (de la clé maitresse),• uid : identité utilisateur,• sig : signature sur une clé ou sur une identité,• sub : sous-clés,• rev : signature qui a été révoqué.

Lorsqu’il est indiqué [identité introuvable] cela signifie que vous ne possèdez pas la clépublique correspondante dans votre trousseau. Si vous souhaitez connaître l’identité de lapersonne ayant ajoutée cette signature, il vous faudra importer sa clé publique.

Comme vous pouvez le voir les différentes identités de la clé publique affichéeont chacune leurpropre signature. Vous pouvez ainsi vous porter garant d’une identité sans le faire pour toutescelles de vos correspondants.

Utilisation sur des fichiers

Chiffrer un fichier (TODO)

Déchiffrer un fichier (TODO)

Signer un fichier

L’un des principaux usages de GnuPG est de prouver l’authenticité d’un document ou d’unfichier grâce à la signature électronique. Pour ce faire, il existe plusieurs manières de procéder,en fonction du document et du résultat qu’on souhaite obtenir. Bien entendu, dans tous les cas,les principes de la cryptographie à clé publique impliquent l’utilisation, pour une telle signature,

45

Page 46: La cryptographie   cl©s publiques avec GnuPG

4 Usages

de la clé privée de l’expéditeur. la clé publique, connue de tous, est utilisée pour vérifier cettesignature et la valider.Il existe différent méthode pour signer un document :

• La signature attaché qui consiste à lire un fichier, de signer son contenu, et de générerun nouveau fichier combinant le contenu et la signature. L’intéret est justement que cesdeux élements soit manipulés ensemble, ce qui s’implifie la transmition.Pour générer une signature sur un fichier, on utilise l’option --sign. Le format par défautétant binaire, le contenu ne sera donc pas lisible directement avec un éditeur de texte.Attention, il ne s’agit ici en aucune manière d’un chiffrement.

aduhler:~$ cat fichier_à_signer.txtExemple de documentaduhler:~$ gpg --sign fichier_à_signer.txt

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 2048 bits, identifiant 89B9AEB3, créée le 2014-05-09 (identifiant de clef principale CD486A1C)

aduhler:~$ file fichier_à_signer.txtfichier_à_signer.txt fichier_à_signer.txt.gpgaduhler:~$ file fichier_à_signer.txt.gpgfichier_à_signer.txt.gpg: data

Mais si vous souhaitez garder la possibilité de pouvoir lire le contenu du fichier dans lefichier contenant la signature, vous pouvez ajouter l’option --armor ce qui générera unesortie au format textuel.

aduhler:~$ gpg --sign --armor fichier_à_signer.txt

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 2048 bits, identifiant 89B9AEB3, créée le 2014-05-09 (identifiant de clef principale CD486A1C)

aduhler:~$ cat fichier_à_signer.txt.asc-----BEGIN PGP MESSAGE-----Version: GnuPG v1

owEBXwGg/pANAwACATC8gdCJua6zAawvYhVmaWNoaWVyX8OgX3NpZ25lci50eHRTbUVFRXhlbXBsZSBkZSBkb2N1bWVudAqJARwEAAECAAYFAlNtRUUACgkQMLyB0Im5rrN0pQf+IKqEBbb8fcUwp0qzRq0IsU7bHz7I+pqm9xg71A7uRLC1xd7EtvQou713F2bvlb4o21pOgcWZByXggNNo073TN7ivrxRgE6cNBctPHUvZZyrn9/CyN7uxoQNuTMJrBys8o0GkGZIq3kcdpfASjPmHh5mbReYJEWy2He6SbJ7hnOPME0bE+3SFODO/NbQS6bD/+EGIosUtj1EhGCFVALPDGuK3+d6uYcO+mXObk6txQUS19EuSpnsQpdKwnyajKm155wtzgrlWybK/dOkuoPgMMZI2hHGVnKdE+/SyIg8ldMC0nVvRDJ9ZxG4PW/B6KuAVWEXRavmqwgwOdYFkBiqxFA===8RnI-----END PGP MESSAGE-----

• La signature détachée permet de diffuser la signature indépendament du fichier, ce quiest pratique pour les fichiers qu’il est peu judicieux de modifier.

aduhler:~$ gpg --detach-sign fichier_à_signer.txt

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 2048 bits, identifiant 89B9AEB3, créée le 2014-05-09 (identifiant de clef principale CD486A1C)

46

Page 47: La cryptographie   cl©s publiques avec GnuPG

Utilisation sur des fichiers

aduhler:~$ file fichier_à_signer.txt.sigfichier_à_signer.txt.sig: data

Ici, le fichier fichier_à_signer.txt.sig produit ne contient que la signature (par défauten binaire) et aucune donnée signée. Il faut donc transmettre le fichier original et le fichierde signature au destinataire, qui pourra alors tout vérifier comme précédemment.

Enfin, si vous préférez obtenir une signature sour la forme d’un fichier ASCII, ajoutezsimplement l’option --armor.

aduhler:~$ gpg --armor --detach-sign fichier_à_signer.txt

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 2048 bits, identifiant 89B9AEB3, créée le 2014-05-09 (identifiant de clef principale CD486A1C)

Le fichier « fichier_à_signer.txt.asc » existe. Réécrire par-dessus ? (o/N) oaduhler:~$ cat fichier_à_signer.txt.asc-----BEGIN PGP SIGNATURE-----Version: GnuPG v1

iQEcBAABAgAGBQJTbUXkAAoJEDC8gdCJua6zwKcIALCjHSrARKFWNS8XY0UMMYcXP5Lohov918heLUH9Ss8sByCSQzTi95y5Px/c6u8Y+Ip/+oCpKPA6HICyrQtT6QkTfWClKHy1YYJXAF2KuNA51LS7PV4sYfqutUrlwbNEf0Mvag428R7o0Dv2v5kYqSWJPDSyRHY5a1kAOadVEbvA1dBh+4S2nsYJKBGo9uzSQUbG0FUQfOKExop+mybQGh6DdRgEN8CO9fjKyHE8EzUdU7OSeURCtTuE3z9JR9K6RqS1mE4zlE/oh770AoGFU1WbIV6EeRYMVMnq83vZX4oWPoC8n5TsmVTWFRpxEstx0vdz8pa4DBBA9p1X/HLvck8==3Cjd-----END PGP SIGNATURE-----

Ici, le fichier fichier_à_signer.txt.asc produit ne contient que la signature en clair etaucune donnée signée. Il faut donc transmettre le fichier original et le fichier de signatureau destinataire, qui pourra alors tout vérifier comme précédemment.

Notez aussi qu’il est possible de spécifier un nom pour le fichier de sortie avec l’option --output.

Vérifier une signature

Pour vérifier une signature sur un fichier, un utilisateur doit disposer de notre clé publique. Ceciétant, il lui suffira d’utiliser l’option --verify.

Vu qu’il existe plusieurs types de signatures nous allons détailler les différents cas pouvant seprésenter :

• La signature attachée au format binaire (extension en .gpg) :

Les données étant attachée à la signature sous forme binaire ne sont pas lisible directement.C’est lors de la vérification de la signature que les données seront extraite dans un nouveaufichier. On peut utiliser --output pour indiquer un nom de fichier.

aduhler:~$ gpg --verify fichier_à_signer.txt.gpggpg: Signature faite le ven. 09 mai 2014 23:13:49 CEST avec la clef RSA d'identifiant 89B9AEB3gpg: Bonne signature de « Alfred Duhler (l'acteur) <[email protected]> »gpg: alias « Alfred Duhler (le rôle) <[email protected]> »gpg: alias « [jpeg image of size 865] »

47

Page 48: La cryptographie   cl©s publiques avec GnuPG

4 Usages

• La signature attaché au format text (extension en .asc) :Les données sont attachée à la signature au format texte il est possible de les lire directement.Il suffit pour cela d’ouvrir le fichier. Pour vérifier que les données n’ont pas été modifiées :aduhler:~$ gpg --verify fichier_à_signer.txt.ascgpg: Signature faite le ven. 09 mai 2014 23:22:47 CEST avec la clef RSA d'identifiant 89B9AEB3gpg: Bonne signature de « Alfred Duhler (l'acteur) <[email protected]> »gpg: alias « Alfred Duhler (le rôle) <[email protected]> »gpg: alias « [jpeg image of size 865] »

• La signature détachée au format binaire (extension en .sig) :Le fichier fichier.sig produit ne contient que la signature sous forme binaire et aucunedes données signées. Vous devez donc avoir le fichier original ainsi que le fichier de signaturedans le même dossier.aduhler:~$ gpg --verify fichier_à_signer.txt.siggpg: Signature faite le ven. 09 mai 2014 23:15:56 CEST avec la clef RSA d'identifiant 89B9AEB3gpg: Bonne signature de « Alfred Duhler (l'acteur) <[email protected]> »gpg: alias « Alfred Duhler (le rôle) <[email protected]> »gpg: alias « [jpeg image of size 865] »

Le fichier fichier.sig contennant le nom du fichier original qui devra être présent, fautede quoi le destinataire obtiendra une erreur :aduhler:~$ gpg --verify fichier_à_signer.txt.siggpg: pas de données signéesgpg: can't hash datafile: erreur d'ouverture de fichier

Il est cependant possible de spécifier un autre nom pour le fichier original :aduhler:~$ gpg --verify fichier_à_signer.txt.sig nom_du_fichiergpg: Signature faite le ven. 09 mai 2014 23:15:56 CEST avec la clef RSA d'identifiant 89B9AEB3gpg: Bonne signature de « Alfred Duhler (l'acteur) <[email protected]> »gpg: alias « Alfred Duhler (le rôle) <[email protected]> »gpg: alias « [jpeg image of size 865] »

• La signature détachée au format texte (extension .asc) :Le fichier fichier.asc produit ne contient que la signature sous forme textuel et aucunedes données signées. Vous devez donx avoir le Il faut donc transmettre le fichier original etle fichier de signature au destinataire, qui pourra alors tout vérifier comme précédemment.aduhler:~$ gpg --verify fichier_à_signer.txt.ascgpg: Signature faite le ven. 09 mai 2014 23:17:24 CEST avec la clef RSA d'identifiant 89B9AEB3gpg: Bonne signature de « Alfred Duhler (l'acteur) <[email protected]> »gpg: alias « Alfred Duhler (le rôle) <[email protected]> »gpg: alias « [jpeg image of size 865] »

Si vous n’avez pas le fichier original où qu’il existe sous un autre nom, reportez vous à laprocédure précedente.

Révocation

Dans le standard OpenPGP, il n’existe pas de moyen d’annuler une modification, c’est à dire defaire comme si une opération n’avais pas était effectué. Vous devez donc faire particulièrementattention aux actions que vous entreprennez, car une fois publié vous ne pourrez pas revenir dessus.

48

Page 49: La cryptographie   cl©s publiques avec GnuPG

Révocation

Avant de faire des modifications importantes, il est conseillé de faire une copie du répertoire~/.gnupg (copie que vous affacerez ensuite de manière sécurisée une fois la manipulation opéréeavec succès).Pour indique aux autres que certaines parties de votre clé publique ne doivent plus servir, onrévoque ses élements. C’est à dire qu’on ajoute un certificat de révocation à la clé publique,certificat que l’on signe avec notre clé de signature maitresse afin d’indiquer aux autres quenous sommes bien à l’origine de cette révocation.

Révoquer une identité (TODO)

Révoquer un signature de clé (TODO)

Révoquer une clé

Vous pouvez révoquer la clé principale ou bien une sous-clé avec la méthode suivante.Remarquez que si vous révoquez la clé principale, ceci aura pour conséquence de révoquer la cléprincipale AINSI QUE TOUTES LES SOUS-CLÉS ! C’est logique, puisque la clé principalepermet de manipuler à souhait les sous-clés. Si elle est corrompue, tout le reste s’effondre. Soyezdonc très prudent avec ces commandes.

aduhler:~$ gpg --edit-key CD486A1CLa clef secrète est disponible.

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1). Alfred Duhler (l'acteur) <[email protected]>[ ultime ] (2) Alfred Duhler (le rôle) <[email protected]>[ ultime ] (3) [jpeg image of size 865]

On utilise alors la commande key pour sélectionner la clé concernée :

gpg> key 2

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : Esub* 2048R/89B9AEB3 créé : 2014-05-09 expire : 2014-11-05 utilisation : S[ ultime ] (1). Alfred Duhler (l'acteur) <[email protected]>[ ultime ] (2) Alfred Duhler (le rôle) <[email protected]>[ ultime ] (3) [jpeg image of size 865]

Notez qu’on commence à compter à partir de 0 (le numéro de la clé principale) et que le caractère* placé sur la ligne de la sous-clé, après la commande, indique que celle-ci est bien sélectionnée.On utilise ensuite revkey et on spécifie la cause de la révocation :

gpg> revkeyVoulez-vous vraiment révoquer cette sous-clef ? (o/N) ochoisissez la cause de la révocation :

49

Page 50: La cryptographie   cl©s publiques avec GnuPG

4 Usages

0 = Aucune raison indiquée1 = La clef a été compromise2 = La clef a été remplacée3 = La clef n'est plus utiliséeQ = Annuler

Quelle est votre décision ? 3Entrez une description facultative, en terminant par une ligne vide :> Plus d'usage de cette sous-clé>Cause de révocation : La clef n'est plus utiliséePlus d'usage de cette sous-cléEst-ce d'accord ? (o/N) o

Une phrase de passe est nécessaire pour déverrouiller la clef secrète del'utilisateur : « Alfred Duhler (l'acteur) <[email protected]> »clef RSA de 4096 bits, identifiant CD486A1C, créée le 2014-05-09

Le résultat est immédiat :

pub 4096R/CD486A1C créé : 2014-05-09 expire : jamais utilisation : SCconfiance : ultime validité : ultime

sub 2048R/4BD512B8 créé : 2014-05-09 expire : 2014-11-05 utilisation : ECette clef a été révoquée le 2014-05-09 par la clef RSA CD486A1C Alfred Duhler (l'acteur) <[email protected]>sub 2048R/89B9AEB3 créé : 2014-05-09 révoquée : 2014-05-09 utilisation : S[ ultime ] (1). Alfred Duhler (l'acteur) <[email protected]>[ ultime ] (2) Alfred Duhler (le rôle) <[email protected]>[ ultime ] (3) [jpeg image of size 865]

La sous-clé 89B9AEB3 est révoquée, mais GnuPG vous demandera s’il doit enregistrer leschangements dès lors que vous utiliserez quit pour terminer la session interactive.

gpg> quitFaut-il enregistrer les modifications ? (o/N) o

Il nous reste maintenant à publier la clé publique afin d’informer nos correspondants que cetteclé révoquée ne doit plus être utilisé.

Révoquer la clé maitresse avec un certificat de révocation

Lors de la création de la clé de signature maitresse, nous avons générer un certificat de révocationau cas où nous perdions l’usage de la partie privée de la paire de clé. Nous allons maintenantvoir la procédure necessaire pour appliquer et diffuser cette révocation.

ATTENTION ceci aura pour conséquence de révoquer la clé principale AINSI QUE TOUTESLES SOUS-CLÉS ! C’est logique, puisque la clé principale permet de manipuler à souhait lessous-clés. Si elle est corrompue, tout le reste s’effondre. Soyez donc très attentif pour ne pasvous tromper de certificat de révocation car il n’y aura pas de confirmation.

Premièrement nous allons importer le certificat de révocation dans le trousseau de clé, afin queGnuPG mette à jour la paire de clés, avec :

50

Page 51: La cryptographie   cl©s publiques avec GnuPG

Récapitulatif

gpg: clef CD486A1C : « Alfred Duhler (l'acteur) <[email protected]> » certificat de révocation importégpg: Quantité totale traitée : 1gpg: nouvelles révocations de clef : 1gpg: 3 marginale(s) nécessaire(s), 1 complète(s) nécessaire(s),

modèle de confiance PGPgpg: profondeur : 0 valables : 1 signées : 1

confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 1 u.gpg: profondeur : 1 valables : 1 signées : 0

confiance : 0 i., 0 n.d., 0 j., 1 m., 0 t., 0 u.gpg: la prochaine vérification de la base de confiance aura lieu le 2015-02-05

Il nous faut maintenant publier la clé publique afin d’informer nos correspondants que cettepaire de clé ne doit plus être utilisée.

Récapitulatif

Ajouter une identité d’utilisateur nécessite :

1. d’éditer votre paire de clé (option --edit-key),2. d’ajouter le nouvel identité d’utilisateur (commande adduid),3. d’enregistrer les modifications en quittant (commande quit),4. de diffuser votre clé publique mise à jour (option --send-key).5. d’en informer vos correspondants.

Révoquer une identité d’utilisateur nécessite :

1. d’éditer votre paire de clé (option --edit-key),2. de sélectionner l’identité d’utilisateur concerné (commande uid),3. de révoquer l’identité d’utilisateur (commande revuid),4. d’enregistrer les modifications en quittant (commande quit),5. de diffuser votre clé publique mise à jour (option --send-key).6. d’en informer vos correspondants.

Signer la clé publique de vos correspondants nécessite :

1. de vous être assuré de l’identité de la personne. En effet, vous allez vous porter garant dela correspondance entre la clé publique et la personne qu’elle représente en apposant votresignature en vue d’étendre le réseau de confiance.

2. d’éditer la clé publique concerné (option --edit-key),3. de signer la clé publique avec votre clé de signature principale (commande sign),4. d’indiquer le niveau de confiance en les capacités de votre correpondant (commande

trust),5. de transmettre la clé que vous venez de signer à votre correspondant.

Révoquer votre paire de clés ou une sous-clé nécessite :

1. d’éditer votre paire de clés (option --edit-key),2. de sélectionner la sous-clé concernée (attention à ne pas se tromper) (commande key),3. de révoquer la sous-clé en indiquant les raisons (commande revkey),4. d’enregistrer les modifications en quittant (commande quit),5. de diffuser votre clé publique mise à jour (option --send-key,

51

Page 52: La cryptographie   cl©s publiques avec GnuPG

4 Usages

6. d’en informer vos correspondants.

Révoquer votre paire de clés si vous possédez un certificat de révocation nécessite :

1. d’importer le certificat de révocation (option --import),2. de diffuser votre clé publique mise à jour (option --send-key),3. de générer une nouvelle paire de clés (option --gen-key),4. de diffuser votre nouvelle clé publique (option --send-key),5. d’en informer vos correspondants.

Avoir défini une date d’expiration sur votre paire de clés (la clé de signature principale)nécessite, par exemple un mois avant son expiration :

1. de générer une nouvelle paire de clés (option --gen-key),2. d’éditer la nouvelle paire de clés (option --edit-key),3. de signer la nouvelle paire de clés avec l’ancienne pour préserver son capital de confiance

(commande sign),4. de signer les clés publiques de votre trousseau de clés avec la nouvelle clé privée,5. de transmettre la nouvelle clé publique (option --send-key),6. de transmettre à un serveur de clés les nouvelles signatures,7. d’en informer vos correspondants.

Avoir défini une date d’expiration sur une sous-clé nécessite, par exemple un mois avant sonexpiration :

1. d’éditer votre paire de clés (option --edit-key),2. de générer une nouvelle sous-clé du même type (commande addkey),3. de sauvegarder les modifications en quittant (commande quit),4. de transmettre à un serveur de clés votre clé publique ainsi mise à jour (option --send-key),5. d’en informer vos correspondants.

52