Forked from
Vincent MAZENOD / blog.limos.fr
272 commits behind the upstream repository.
pgp.md 17.58 KiB
PGP / GPG
PGP
- Chiffrement asymétrique
- Phil Zimmermann
- 1991
- munition / cryptowar
- PGP abandonné
- GPG GnuPG sous GPL devient est le standard
Gérer son envrionnement GPG
gpgenv
- Simplifie la gestion des clés en créant des environnements temporaires
- Permet de repartir de 0 simplement
$ wget http://m4z3.me/gpgenv -O /tmp/gpgenv
$ source /tmp/gpgenv
gpg --help
gpgenv
$ gpgenv create
new GNUPGHOME=/tmp/gnupg-Lw4Ck
- Crée un environnement (env) vierge localisé dans /tmp/gnupg-Lw4Ck.
$ gpgenv cd
- permet de se positionner dans le nouveau répertoire
gpgenv
$ gpgenv backup ~/Bureau/batman.tgz
- permet de sauvegarder son env dans un archive
$ gpgenv restore ~/Bureau/batman.tgz
Restored backup in /tmp/gnupg-ZuXYw
To activate it, use
gpgenv use /tmp/gnupg-ZuXYw
- permet de restaurer un env à partir d'une archive
$ gpgenv use /tmp/gnupg-ZuXYw && gpgenv cd
- permet d'utiliser l'env restauré et de se positionner dans le répertoire associé
Gérer ses clés GPG
Création d’une clé PGP
- Création de la paire de clés de l’utilisateur
- un « certificat » avec
- la clé publique
- signée avec la clé privée
- identité de l’utilisateur
- la clé publique
- un « certificat » avec
Création d’une clé PGP maître
$ gpg --full-gen-key # or --gen-key
gpg (GnuPG) 2.1.11; Copyright (C) 2016 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.
Sélectionnez le type de clés 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 ? 1
Création d’une clé PGP maître
- Choisir une taille de clé maximale
- Choisir une durée de vie infinie
- elle doit être valide pour être utilisée
- plus la durée de vie est nogue
- plus on récolte de signature
- Saisir son identité
- Choisir un mot de passe fort
Lister les clés
$ gpg --list-keys
pub rsa4096/3E5AC6A0 2018-01-09 [SC]
uid [ ultime ] Batman (clés à usage professionnel) <batman@batcave.com>
sub rsa4096/31C5E7B9 2018-01-09 [E]
sub rsa4096/DD6A21D4 2018-01-09 [S]
- liste toutes les clés de l'environnement
$ gpg --list-private-keys
- liste toutes les clés privées de l'environnement
- dont on a le mot de passe
Fonctions des clés
Constant | Character |
---|---|
PUBKEY_USAGE_SIG | S |
PUBKEY_USAGE_CERT | C |
PUBKEY_USAGE_ENC | E |
PUBKEY_USAGE_AUTH | A |
Authentication
Exporter une clé GPG
$ gpg --export --armor batman@batcave.com > batman.pub.asc
$ gpg --export --armor 3E5AC6A0 > batman.pub.asc
$ gpg --export --armor DD6A21D4 > batman.pub.asc
- exportent le même certificat (celui de la clé maître)
- ASCII-armor encrypted or signed output
gpg --export-secret-keys --armor \
batman@batcave.com > batman.asc
- exporte la clé privée
- le mot de passe est nécessaire
Importer une clé
$ gpg --import batman.asc
- s'il s'agit d'une clé privée
- le mot de passe sera demandé
- les fonctionnalités de la clé seront ensuite utilisables
$ gpg --import robin.pub.asc
- s'il s'agit d'un certificat
- aucun mot de passe ne sera demandé
- la clé pourra être utilisée pour chiffrer à destination du détenteur de la clé
Editer une clé / Durcir le hashage
$ gpg --edit-key batman@batcave.com
$ gpg> setpref SHA512 SHA384 SHA256 SHA224 \
AES256 AES192 AES CAST5 ZLIB BZIP2 \
ZIP Uncompressed
$ gpg> save
- il faut bien sauvegarder avant de quitter le mode édition
Editer une clé clé maître / Ajouter une identité
$ gpg --edit-key batman@batcave.com
$ gpg> adduid
Nom réel : Bruce Wayne
Adresse électronique : bruce.wayne@gmail.com
Commentaire : clé à usage personnel
Vous utilisez le jeu de caractères « utf-8 ».
Vous avez sélectionné cette identité :
« Bruce Wayne (clé à usage personnel) <bruce.wayne@gmail.com> »
Changer le (N)om, le (C)ommentaire, l\'(A)dresse électronique
ou (O)ui/(Q)uitter ? O
$ gpg> save
- Toutes les identités sont liées dans le certificat
- pour utiliser GPG en tant que Bruce Wayne il faudra générer une autre clé maître
Editer une clé clé maître / Ajouter une photo
$ gpg --edit-key batman@batcave.com
$ gpg> addphoto
$ gpg> save
- l'image doit être petite pour garder une taille de clé raisonnable
- 240x288 is a good size to use
Sous clé
-
Permet de conserver sa clé maître déconnectée
- Mais de pouvoir utiliser la foncationnalités de la sous clé
- idéal pour gérer une clé par appareil (mobile, laptop, fix, ...)
- Mais de pouvoir utiliser la foncationnalités de la sous clé
-
quel est l'intérêt d'une sous clé de chiffrement?
-
quel est l'intérêt d'une sous clé de signature?
Editer une clé / Ajouter une sous clé
$ gpg --edit-key batman@batcave.com
$ gpg> addkey
Sélectionnez le type de clés désiré :
(3) DSA (signature seule)
(4) RSA (signature seule)
(5) Elgamal (chiffrement seul)
(6) RSA (chiffrement seul)
Quel est votre choix ? 4
- choisir la fonctionnalité
- choisir une durée de vie
- choisir un nouveau mot de passe fort
$ gpg> save
Voir la nouvelle sous clé
$ gpg --list-secret-keys
/tmp/gnupg-RL2R8/pubring.kbx
----------------------------
sec rsa4096/3E5AC6A0 2018-01-09 [SC]
uid [ inconnu ???] Batman (clés à usage professionnel) <batman@batcave.com>
ssb rsa4096/31C5E7B9 2018-01-09 [E]
ssb rsa4096/DD6A21D4 2018-01-09 [S]
Exporter une sous clé
L'enjeu est de rendre la clé maître inutilisable
$ gpg --export-secret-subkeys --armor DD6A21D4 batman@batcave.com > batman@batcave.com.mobile.private.subkey
- l'id de la sous clé doit être précisé sans quoi toutes les sous clés sont exportées
- --armor ne fonctionne pas
Autre stratégie
gpg --delete-secret-key batman@batcave.com
gpg --export-secret-keys --armor batman@batcave.com > batman.mobile.asc
- ici --armor fonctionne
Voir la nouvelle sous clé "nettoyée"
$ gpg --list-secret-keys
/tmp/gnupg-RL2R8/pubring.kbx
----------------------------
sec# rsa4096/3E5AC6A0 2018-01-09 [SC]
uid [ inconnue ???] Batman (clés à usage professionnel) <batman@batcave.com>
ssb rsa4096/31C5E7B9 2018-01-09 [E]
ssb rsa4096/DD6A21D4 2018-01-09 [S]
- '#' signifie que la clé maître est inutilisable \o/
- --edit-key refusera de sauver les opérations
Publication d'un certificat
Partout
- sur une page web
- sur une carte de visite
- en pièce jointe ou dans le corps d'un message
Serveurs de clé PGP
- existent depuis que gpg existe
-
http://pgp.mit.edu/ est un des plus populaires
- informations synchrones entre tous les Serveurs
- suppression quasi impossible
- beaucoup de clés obsolètes (non révoquées et non maîtrisées)
- suppression quasi impossible
- n'importe qui peut publier des clés publiques pour n'importe quelle identité
- aucune vérification
- informations synchrones entre tous les Serveurs
Serveur de clé 2nd génération
-
PGP Global Directory
- vérification de la maîtrise du (des) mail(s) associé(s) au certificats à la création
- confirmation d'existence de la clé envoyée au(x) mail(s) associé(s) au certificats à intervalles réguliers
- non synchronisés avec les serveurs 1ère génération
Keybase.io
-
Keybase.io
- récent
- basé sur PGP
- 2 parties
- publication de la clé publique
- confirmation via différents réseaux sociaux
- correspondance / partage chiffré
- nécessite l'import de la clé privée :/
- publication de la clé publique
Keybase.io ... the right way
Une autre fois peut être ;)
Keybase.io ... the right way
Keybase.io ... the right way
Hardocre mode \o/
et une sous clé dédiée?
une clé PGP sur une carte de visite?
-
- ne marche pas
-
Putting my pgp idl ink on printed business cards
-
qrencode
- just do it!
-
qrencode
Révocation
- secret ou clé perdu
- secret ou clé compromis
- l'attaquant peut
- écrire en se faisant passer pour le propriétaire des clés
- signer en général
- lire tout message (passé et avenir) chiffré avec la clé publique
- écrire en se faisant passer pour le propriétaire des clés
- l'attaquant peut
Révocation
- révoquer la clé en question
- distribuer la clé révoquée à tout ceux qui l'utilisent
- appelé aussi certificat de révocation
- distribuer la clé révoquée à tout ceux qui l'utilisent
Révocation de la clé maître
- Il faut anticiper
- créer le certificat de révocation dés la création de la clé
$ gpg --output batman.revoke.asc --gen-revoke batman@batcave.com
sec 4096R/0DCD0D14 2017-09-04 Batman (clés à usage professionnel)
Faut-il créer un certificat de révocation pour cette clés ? (o/N) o
choisissez la cause de la révocation :
0 = Aucune raison indiquée
1 = La clés a été compromise
2 = La clés a été remplacée
3 = La clés n'est plus utilisée
Q = Annuler
Révocation d'une sous clé
- créer un certificat de révocation
- à tout moment avec la clé maître
$ gpg --output batman.mobile.revoke.asc --gen-revoke batman@batcave.com
Publication du certificat de révocation
$ gpg --import batman.mobile.revoke.asc # ou batman.revoke.asc
$ gpg --keyserver pgp.mit.edu --send-keys 6382285E
- En cas de perte ou de compromission uniquement
- sinon la clé est invalidée
- la clé de révocation est à garder en lieu sûr
- mais à un autre endroit que la clé maître
Utiliser ses clés GPG
Chiffrer
$ gpg --encrypt --armor --output msg.gpg \
--recipient robin@batcave.com msg
- La clé (publique) robin@batcave.com doit faire partie du trousseau
- importation au préalable
- --recipient permet de spécifier la clé publique à utiliser
Déchiffrer
$ gpg --decrypt msg.gpg
- Effectué avec la clé privée robin@batcave.com
- nécessite le mot de passe de cette clé privée
Signer
- La signature
- certifie un document à date
- utilise la clé privée de l'émetteur
- non répudiation
$ gpg --output doc.sig --sign doc
$ gpg --output doc --decrypt doc.sig
gpg: Signature made Fri Jun 4 12:02:38 1999 CDT using DSA key ID BB7576AC
gpg: Good signature from "Alice (Judge) <alice@cyb.org>"
- doc.sig contient le document compressé (format binaire) et signé
- pas pratique pour une ISO par exemple
Signature en claire
$ gpg --clearsign doc
Evite la compression