J’ai décidé de m’intéresser plus sérieusement à la cryptographie et plus particulièrement au standard PGP (Pretty Good Privacy) et à son implémentation GNU Privacy Guard (GnuPG ou GPG). Voici donc certains points à considérer; en vrac, pour commencer à défricher le sujet.
Clé publique, clé privée
Les clés viennent par paire, une privée, l’autre publique. La clé privée est à « protéger » car celle-ci sert aux opérations de déchiffrement et de signature (Maj: Incorrect, voir commentaire).
Type de clé
Il existe plusieurs types de clés, en particulier, la clé de signature (signing key) et la clé de chiffrement (encryption key), la première servant à signer un mail (ou un contenu) et la seconde, à le chiffrer.
Confidentialité et génération des clés
Afin de s’assurer au maximum de la sureté de ses clés, l’idéal est de générer les clés sur une machine n’ayant jamais été connectée au réseau et sur un système d’exploitation dédié, à jour et dont on aura au préalable vérifié la somme de hashage du fichier iso utilisé pour installer l’OS (il me semble que le point faible se situe alors dans le média utilisé pour réaliser l’installation de l’OS, clé USB, CD, carte SD. CD et carte SD me semble moins susceptible d’être compromis en amont, ou lors d’une utilisation sur un PC vérolé.). Il est indispensable de vérifier les sommes de hashage après écriture de l’OS sur le support. Sur cette machine isolée du réseau, il convient alors de générer un ensemble de clé et plusieurs sous-clés (subkey). La clé maîtresse sera sauvegardée sur plusieurs supports chiffrés. Seul les sous-clés seront utilisées. Enfin, l’idéal semble être d’exporter les sous-clés sur une smartcard telle qu’une YubiKey. A défaut d’une machine dédiée à la génération des clés, on pourra se limiter à un système live chargé en RAM et coupé du réseau.
A priori, il semble envisageable et possible d’exporter les clés sur 2 smartcard : les sous-clés sur l’une des smartcards et la clé maîtresse sur l’autre. Cela pourrait peut-être permettre de simplifier la signature de clés (implications en termes de sécurité de la clé maître ?). Néanmoins, je n’ai pas été en mesure de trouver un témoignage de l’utilisation d’une telle configuration lors de mes recherches.
Terminologie
- sec ‘SECret key’
- ssb ‘Secret SuBkey’
- pub ‘PUBlic key’
- sub ‘public SUBkey’
- S ->Sign, Signer
- C -> Certify, Certifier
- E -> Encrypt, Chiffrer
- A -> Authenticate, Authentifier
Limitations
- La signature de clés doit s’effectuer avec la clé maîtresse.
- Taille des clés limitée à 2048 pour un export sur une YubiKey Neo (sauf YubiKey 4 qui supporte les clés jusqu’à 4096).
Étapes à vérifier
- Génération des clés, sauvegarde sur support chiffré et export vers YubiKey.
- Expiration d’une clé et mise à jour de la date d’expiration.
- Export vers une nouvelle YubiKey à partir de la sauvegarde en cas de perte, vol ou bris de matériel.
- Redéploiement des clés sur les périphériques à partir de la sauvegarde (si pertinent).
- Test d’utilisation sur GNU/Linux et Windows.
- Test d’intégration avec pass.
- Test de la signature d’une clé.
- Test de la signature de commit et tag dans Git.
- (Test d’authentification SSH par clé. Pertinence ?)
Conclusion
Après lecture de plusieurs articles sur le sujet, je commence à avoir une vue d’ensemble du fonctionnement et de l’utilisation des clefs GPG. Il me reste donc à passer à la phase d’expérimentation et de mise en place afin de valider ma compréhension du sujet et de vérifier que rien n’a été oublié.
Aux lecteurs avisés et spécialistes du sujet, n’hésitez pas à pointer d’éventuelles erreurs ou zones d’ombre qui m’aurait échappé, et à partager les ressources incontournables sur le sujet.
Sources
GPG : comment créer une paire de clefs presque parfaite – NextInpact
Clefs GPG : comment les stocker et les utiliser via une clef USB OpenPGP Card ? – NextInpact
Offline GnuPG Master Key and Subkeys on Yubikey NEO Smartcard – Simon Josefsson
Guide to using YubiKey as a SmartCard for GPG and SSH – drduh
Email Encryption with the Yubikey-NEO, GPG and Linux (Part 1, Part 2) – ankitrasto