Ci-dessous, les différences entre deux révisions de la page.
wiki:guide_du_debutant:cle_openpgp [2018/02/28 01:35] varens [Suppression de clé] ajout signature simtrami |
wiki:guide_du_debutant:cle_openpgp [2020/06/27 18:16] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Clés OpenPGP ====== | ||
- | |||
- | <WRAP center round todo 60%> | ||
- | Cette page est inachevée, certaines sections reste à être complétée ! Néanmoins, les autres sections sont complètes et peuvent être suivies sans crainte.\\ | ||
- | À faire : | ||
- | * Description succinte du fonctionnement d' | ||
- | * Faire une cheatsheet pour GnuPG | ||
- | * Passer à l' | ||
- | * Corriger les fautes éventuelles et les répétitions | ||
- | </ | ||
- | |||
- | |||
- | Cette page explique les bonnes pratiques d' | ||
- | |||
- | <WRAP center round important 50%> | ||
- | Ce guide part du principe que vous possédez une clé USB chiffrée. [[http:// | ||
- | </ | ||
- | |||
- | ===== Un peu d' | ||
- | |||
- | Avant de se lancer, rien de mieux que de se cultiver un peu pour éviter toute forme de cacophonie puriste dans le local. Et puis c'est toujours bien de se coucher moins bête ;-) | ||
- | |||
- | ==== Qu' | ||
- | |||
- | Ce que nous dit Wikipédia((https:// | ||
- | OpenPGP est un format de cryptographie initialement proposé par l' | ||
- | |||
- | Alors justement c'est quoi l' | ||
- | |||
- | ==== La différence entre GnuPG et OpenPGP ==== | ||
- | [[https:// | ||
- | |||
- | === Pretty Good Privacy (PGP) === | ||
- | C'est un logiciel propriétaire qui a été initialement écrit par Phil Zimmerman & Associates, LLC et publié en 1991. Le but était d' | ||
- | Le chiffrement PGP utilise une combinaison de méthodes comme le hashing, la compression de données, la cryptographie symétrique et la cryptographie à clé publique afin de sécuriser les données. On peut s'en servir pour chiffrer du simple fichier texte à la partition de disque. | ||
- | |||
- | === OpenPGP === | ||
- | Zimmerman, en bon hipster, commença à développer une version open-source de PGP. Celle-ci n' | ||
- | En 1997 il proposa les normes OpenPGP à l'IETF pour permettre aux fournisseurs de chiffrement conformes aux normes PGP de fournir des solutions compatibles avec d' | ||
- | Aujourd' | ||
- | |||
- | === GnuPG (GNU Privacy Guard) === | ||
- | GnuPGP a été développé par Werner Koch et publié en 1999 en tant qu' | ||
- | GPG fourni une interface utilisateur lors de son intégration dans des logiciels de messagerie électronique ou des systèmes d' | ||
- | |||
- | === Conclusion === | ||
- | * OpenPGP est la norme approuvée par l'IETF qui décrit les technologies de chiffrement qui utilise des processus interopérables avec PGP. | ||
- | * PGP est une solution propriétaire de chiffrement et les droits de ce logiciel sont détenus pas Symantec. | ||
- | * GPG est une autre solution très populaire qui suit la norme OpenPGP et offre une interface utilisateur pour chiffrer facilement ses fichiers. | ||
- | |||
- | ==== OpenPGP, comment ça marche ? ==== | ||
- | |||
- | <WRAP center round todo 70%> | ||
- | Section à compléter | ||
- | </ | ||
- | |||
- | ===== Créer sa clé OpenPGP avec GnuPG ===== | ||
- | |||
- | Maintenant que vous avez une idée plus claire de ce dont il est question ici, munissez-vous de votre clé USB chiffrée et d'un ordinateur sous une distribution end-user de GNU/Linux (pas Android svp jouez pas sur les mots). | ||
- | |||
- | ==== Faire une sauvegarde ==== | ||
- | Faire des copier-coller ici ne sera pas suffisant, il faudra modifier une partie de la commande écrite et cela peut donner lieu à des erreurs. Avant de commencer il est indispensable de faire une sauvegarde de votre dossier GnuPG si le logiciel est déjà installé et utilisé (si vous n'avez encore rien fait, faites-le quand même : responsable ou pas, je me dois de vous inculquer les bonnes pratiques). | ||
- | < | ||
- | $ umask 077; tar -cf $HOME/ | ||
- | </ | ||
- | Notez que umask ici restreint les droits UNIX du fichier de backup.\\ | ||
- | |||
- | ==== Installation de GnuPG2 ==== | ||
- | Dépendamment de votre distribution, | ||
- | Pour savoir quelle version de GnuPG est actuellement installée : | ||
- | < | ||
- | $ gpg --version | ||
- | </ | ||
- | Si la version est inférieure à 2.1, il est impératif de la mettre à jour en installant le paquet //gnupg2// depuis vos sources officielles et en désinstallant '' | ||
- | Pas d' | ||
- | |||
- | ==== (Facultatif) Génération d'une nouvelle clé ==== | ||
- | Si vous n'avez pas encore de clé ou que vous souhaitez repartir sur de bonnes bases, générez votre clé comme suit. | ||
- | < | ||
- | $ gpg --full-generate-key | ||
- | </ | ||
- | La clé doit suivre la configuration suivante : | ||
- | - Type de clé : (1) RSA et RSA | ||
- | - Taille : 4096 bits | ||
- | - Expiration : 0 (jamais) - //Votre clé définissant votre identité et servant à évaluer votre fiabilité, elle doit pouvoir vous suivre toute votre vie.// | ||
- | - Nom réel : Prénom et nom pour votre identité primaire (pourra être changée/ | ||
- | - Adresse électronique : Celle de cette identité | ||
- | - Commentaire : Description de l' | ||
- | - Phrase secrète : Choisissez un mot de passe complexe((http:// | ||
- | |||
- | GnuPG s' | ||
- | Vous êtes alors gratifié de 3 messages : | ||
- | * L' | ||
- | * Le chemin vers votre certificat de révocation (généralement // | ||
- | * Les clés publiques et uid créées (une '' | ||
- | |||
- | On peut désormais éditer la clé.\\\\ | ||
- | IMPORTANT : N' | ||
- | IMPORTANT 2 : Si, dans la suite de ce tutoriel, vous faites une erreur de manipulation irréparables sur votre clé **et que celle-ci n'a pas été partagée**, | ||
- | |||
- | ==== Génération d'une subkey de signature ==== | ||
- | //Cette section a été écrite en majeure partie d' | ||
- | \\ | ||
- | Pour éditer la clé il faut indiquer sont identifiant, | ||
- | < | ||
- | $ gpg --list-keys | ||
- | </ | ||
- | Cet identifiant est propre à chaque clé, il sera référé [KEYID] ici.\\ | ||
- | //Note : vous pouvez aussi indiquer un élément non ambiguë référant une clé (nom, pseudo, email, etc.)//\\ | ||
- | On souhaite donc éditer la clé. | ||
- | < | ||
- | $ gpg --edit-key [KEYID] | ||
- | </ | ||
- | Vous êtes alors amené dans un menu Perl avec en tête des informations relatives à votre GnuPG et la clé (key) sélectionnée. Il devrait, si vous l'avez généré comme indiqué précédemment, | ||
- | < | ||
- | $ gpg --edit-key 2E8E92BA2A1EA6117F5C25DF7DD672F2005DB344 | ||
- | gpg (GnuPG) 2.2.4; Copyright (C) 2017 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. | ||
- | |||
- | sec rsa4096/ | ||
- | | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | [ ultime ] (1). Alice (XxAlicexX) < | ||
- | |||
- | gpg> | ||
- | </ | ||
- | '' | ||
- | Ces rôles, utilisations ou flags indiquent ce qu'il est possible de faire avec la clé en question. En voici la liste pour les clés secrètes : | ||
- | * A : Authentication - Permet de s' | ||
- | * C : Certification - Permet de signer d' | ||
- | * E : Encryption - Permet de chiffrer (clé publique) ou déchiffrer (clé secrète) | ||
- | * S : Signing - Permet de signer des données | ||
- | |||
- | GnuPG ne semble implémenter que ces flags, néanmoins les spécifications d' | ||
- | \\ | ||
- | Nous allons générer une subkey qui servira à signer. On crée une nouvelle clé depuis l' | ||
- | Suivez la création comme suit : | ||
- | < | ||
- | gpg> addkey | ||
- | 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 ? 4 | ||
- | les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits. | ||
- | Quelle taille de clef désirez-vous ? | ||
- | La taille demandée est 4096 bits | ||
- | Veuillez indiquer le temps pendant lequel cette clef devrait être valable. | ||
- | 0 = la clef n' | ||
- | < | ||
- | <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) [voir la note au dessous] | ||
- | La clef expire le mer. 27 févr. 2019 13:09:32 CET | ||
- | Est-ce correct ? (o/N) o | ||
- | Faut-il vraiment la créer ? (o/N) o | ||
- | De nombreux octets aléatoires doivent être générés. Vous devriez faire | ||
- | autre 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 de | ||
- | nombres aléatoires une meilleure chance d' | ||
- | |||
- | sec rsa4096/ | ||
- | | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | [ ultime ] (1). Alice (XxAlicexX) < | ||
- | |||
- | gpg> | ||
- | </ | ||
- | //Note : Je vous déconseille de choisir une date d' | ||
- | |||
- | Vous pouvez désormais signer avec cette subkey ou avec votre master. Comme vous l' | ||
- | À présent, si vous le souhaitez, vous pouvez changer la date d' | ||
- | Commencez par sélectionner la clé en indiquant son ID et changez sa durée de vie. | ||
- | < | ||
- | gpg> list | ||
- | [...] | ||
- | gpg> key [SUBKEYID] | ||
- | [Un * devrait apparaître devant la clé sélectionnée, | ||
- | attention à ne pas en sélectionner plusieurs.] | ||
- | gpg> expire | ||
- | </ | ||
- | |||
- | Vous pouvez alors sauvegarder votre clé. | ||
- | < | ||
- | gpg> save | ||
- | </ | ||
- | |||
- | //Note : Avant de passer à la suite, jeter un œil à la section [[cle_openpgp# | ||
- | |||
- | ===== Sécurisation des clés et bonnes pratiques ===== | ||
- | |||
- | ==== Protéger la clé maître secrète ==== | ||
- | |||
- | Comme vous disposez de subkeys pour les deux opérations les plus fréquentes (signer des données et déchiffrer des messages), vous n'avez pas besoin de conserver votre master sur votre ordinateur, de plus, cela est dangereux car il suffit de supprimer le dossier .gnupg pour que tout soit perdu (pas besoin d' | ||
- | Copiez alors votre dossier .gnupg vers votre clé USB chiffrée (ne l' | ||
- | < | ||
- | $ cp $HOME/ | ||
- | </ | ||
- | Ensuite exportez (1) toutes vos subkeys ou (2) celles de votre choix. Et entrez le mot de passe de la clé. | ||
- | < | ||
- | (1) $ gpg --export-secret-subkeys [KEYID] > nom_identifiant_clairement_lensemble.secret-subkeys | ||
- | ou | ||
- | (2) $ gpg --export-secret-subkeys [SUBKEYID_1]! [SUBKEYID_2]! .. > nom_identifiant_clairement_lensemble.secret-subkeys | ||
- | </ | ||
- | Supprimez alors votre clé secrète maître (si si). | ||
- | < | ||
- | $ gpg --delete-secret-key [KEYID] | ||
- | </ | ||
- | Importez les '' | ||
- | < | ||
- | $ gpg --import nom_identifiant_clairement_lensemble.secret-subkeys | ||
- | </ | ||
- | Et vérifiez le bon déroulement de l' | ||
- | < | ||
- | $ gpg -K | ||
- | </ | ||
- | Un # devrait être apparu à droite de '' | ||
- | (Factultatif) Vous pouvez changer le mot de passe protégeant vos subkeys sur l' | ||
- | < | ||
- | $ gpg --edit-key [KEYID] passwd | ||
- | [...] | ||
- | gpg> quit | ||
- | </ | ||
- | |||
- | Votre ordinateur est désormais près pour une utilisation normale. | ||
- | |||
- | ==== Utiliser la clé maître secrète ==== | ||
- | |||
- | Vous allez être amené à devoir utiliser votre clé maître secrète dans l'un des cas suivant : | ||
- | * Certifier la clé de quelqu' | ||
- | * Révoquer une certification existante | ||
- | * Ajouter un uid faire d'un uid l'uid principal | ||
- | * Créer une subkey | ||
- | * Révoquer un uid ou une subkey | ||
- | * Changer les préférences d'un uid | ||
- | * Changer la date d' | ||
- | * Révoquer ou générer un certificat de révocation pour toute une clé | ||
- | |||
- | Pour ce faire, branchez votre clé USB chiffrée contenant la copie du dossier .gnupg et indiquez à GnuPG le chemin vers le répertoire .gnupg de votre clé. | ||
- | < | ||
- | $ gpg --homedir / | ||
- | ou | ||
- | $ export GNUPGHOME=/ | ||
- | | ||
- | $ export GNUPGHOME=$HOME/ | ||
- | </ | ||
- | N' | ||
- | Si des modifications concernant les uid (par exemple) ont été apportées, n' | ||
- | Vous pouvez alors démonter et détacher votre clé USB chiffrée. | ||
- | |||
- | ==== Utiliser sa clé sur ses appareils ==== | ||
- | |||
- | Finalement c'est cette étape la plus utile de cette page : comment on s'en sert de cette clé ?\\ | ||
- | Pour une utilisation quotidienne, | ||
- | |||
- | === Thunderbird avec Enigmail (Linux/ | ||
- | |||
- | L' | ||
- | Elle intègre dans les fenêtres d' | ||
- | Si vos clés secrètes n'est pas importée automatiquement, | ||
- | === K-9 Mail avec OpenKeychain (Android) === | ||
- | |||
- | [[https:// | ||
- | Pour utiliser votre clé, mettez le fichier contenant vos subkeys secrètes sur la mémoire de votre téléphone par la méthode de votre choix. Après l' | ||
- | Afin de vous en servir avec K-9, ouvrez cette dernière : Paramètres > Paramètres généraux > Cryptography((C' | ||
- | Revenez à la page d' | ||
- | Vous voilà opérationnel pour vous faire spammer toute la journée de mail MiNET et pouvoir y répondre ! | ||
- | === Utilisation du terminal === | ||
- | |||
- | <WRAP center round todo 70%> | ||
- | Section à compléter | ||
- | </ | ||
- | |||
- | Se référer au manuel de '' | ||
- | |||
- | ===== Modifier une clé ===== | ||
- | |||
- | ==== Ajouter des éléments à la clé ==== | ||
- | |||
- | Une clé OpenPGP peut contenir plus d' | ||
- | Pour l' | ||
- | |||
- | === Création d'une nouvelle identité === | ||
- | < | ||
- | $ gpg --edit-key Alice | ||
- | gpg (GnuPG) 2.2.4; Copyright (C) 2017 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. | ||
- | |||
- | gpg: vérification de la base de confiance | ||
- | gpg: marginals needed: 3 completes needed: 1 trust model: pgp | ||
- | gpg: profondeur : | ||
- | | ||
- | sec rsa4096/ | ||
- | | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | [ ultime ] (1). Alice (XxAlicexX) < | ||
- | |||
- | gpg> adduid | ||
- | Nom réel : Alice | ||
- | Adresse électronique : | ||
- | Commentaire : | ||
- | Vous avez sélectionné cette identité : | ||
- | « Alice (Adresse MiNET) < | ||
- | |||
- | Changer le (N)om, le (C)ommentaire, | ||
- | ou (O)ui/ | ||
- | |||
- | sec rsa4096/ | ||
- | | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | [ ultime ] (1). Alice (XxAlicexX) < | ||
- | [ inconnue] (2) Alice (Adresse MiNET) < | ||
- | </ | ||
- | //La seconde identité n'est pas automatiquement auto-signée (noter le '' | ||
- | |||
- | === Ajout d'une photo d' | ||
- | La taille conseillée est de l' | ||
- | < | ||
- | gpg> addphoto | ||
- | |||
- | Choisissez une image pour votre photo d' | ||
- | un fichier JPEG. Rappelez-vous que cette image est stockée dans la | ||
- | clef publique. Si l' | ||
- | Une taille de l' | ||
- | |||
- | Entrez le nom du fichier JPEG pour la photo d' | ||
- | Ce JPEG est vraiment très grand (26341 octets). | ||
- | Voulez-vous vraiment l' | ||
- | Cette photo est-elle correcte (o/N/q) ? o | ||
- | |||
- | sec rsa4096/ | ||
- | | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | [ ultime ] (1). Alice (XxAlicexX) < | ||
- | [ inconnue] (2) Alice (Adresse MiNET) < | ||
- | [ inconnue] (3) [jpeg image of size 26341] | ||
- | </ | ||
- | Pour afficher les photos d' | ||
- | < | ||
- | gpg> showphoto | ||
- | </ | ||
- | |||
- | === Modifier les préférence d'un uid === | ||
- | Enfin, on change les préférences de profile pour l'uid créée. | ||
- | < | ||
- | gpg> uid 2 | ||
- | | ||
- | |||
- | gpg> setpref AES192,AES SHA512, | ||
- | Définir la liste de préférences en : | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | Faut-il vraiment mettre à jour les préférences pour les | ||
- | identités sélectionnées ? | ||
- | [...] | ||
- | |||
- | gpg> uid 2 #Pour désélectionner l'uid 2 | ||
- | |||
- | sec rsa4096/ | ||
- | | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | ssb rsa4096/ | ||
- | | ||
- | [ ultime ] (1). Alice (XxAlicexX) < | ||
- | [ ultime ] (2)* Alice (Adresse MiNET) < | ||
- | [ ultime ] (3) [jpeg image of size 26341] | ||
- | </ | ||
- | Pour afficher les préférences d'un profile, on sélectionne l'uid avec '' | ||
- | Les préférences à doivent toutes être indiquées même si certaines catégories restent inchangées. Pour changer la méthode de compression préférée de ZLIB à BZIP2 on écrit : | ||
- | < | ||
- | gpg> setpref AES256, | ||
- | </ | ||
- | Les valeurs 3DES, SHA1, Non compressé et Serveur de clefs sans modification seront toujours sur la liste en dernière position.\\ | ||
- | \\ | ||
- | Votre clé est prête à l' | ||
- | |||
- | |||
- | |||
- | ==== Suppression de clé ==== | ||
- | |||
- | <WRAP center round important 80%> | ||
- | Cette opération doit uniquement être effectuée si la clé en question n'a jamais été partagée avec quiconque et s'est toujours trouvée sur l' | ||
- | </ | ||
- | |||
- | Afin de supprimer une clé (master et subkeys), il faut préalablement supprimer la clé maître. | ||
- | < | ||
- | $ gpg --delete-secrete-keys [KeyID] | ||
- | </ | ||
- | Il vous sera alors plusieurs fois demandé confirmation.\\ | ||
- | Ensuite, on supprime la clé. | ||
- | < | ||
- | $ gpg --delete-keys [KeyID] | ||
- | </ | ||
- | Vous pouvez par ce biais supprimer plusieurs clés à la fois en indiquant plusieurs [KeyID].\\ | ||
- | Vérifiez enfin que la(les) clé(s) a(ont) bien été supprimée(s). | ||
- | < | ||
- | $ gpg -K | ||
- | </ | ||
- | |||
- | --- // | ||