Introduction
Avec la prolifération des cartes intelligentes vierges prenant en charge Java Card 3.0.4, les cartes OpenPGP faites maison sont devenues populaires pour stocker les clés privées OpenPGP à l’aide de projets tels que SmartPGP. Bien que GnuPG (GPG) prenne en charge les cartes OpenPGP, le transfert des clés privées demande de la prudence pour éviter la perte de clé et les violations de sécurité. Cet article décrit un flux de travail robuste assurant une tolérance aux pannes plus élevée. Ces méthodes sont applicables aux solutions de garde cryptographique utilisant des modules matériels de sécurité FIPS-140-2/3 (HSM) avec un réglage spécifique.
Optimisation de l’utilisation des trousseaux de clés
Par défaut, les trousseaux de clés GPG sont situés dans ${HOME}/.gnupg/. Ce flux de travail préconise l’utilisation de trois trousseaux de clés pour une tolérance aux pannes améliorée :
- Trousseau de clés du coffre-fort (${VAULTRING}): Stocké hors ligne sur un support de stockage amovible chiffré, déchiffré uniquement lors de la génération de clés.
- Trousseau de clés temporaire (${TMPRING}): Créé dans tmpfs à la demande, détruit après usage.
- Trousseau de clés de travail (${WORKRING}): Utilisé pour les opérations cryptographiques quotidiennes, emplacement flexible.
Génération de la clé principale
Générer une clé principale de signature uniquement hors ligne, en utilisant :
$ gpg --homedir ${VAULTRING} --expert --full-gen-key
Assurez-vous que la clé principale a une durée de vie définie. Évitez les durées de vie illimitées ; renouvelez les clés avant l’expiration. Les sous-clés doivent avoir des durées de vie plus courtes. Après la génération, éditez la clé pour le nom réel et l’adresse e-mail, puis enregistrez les modifications.
Génération des sous-clés
Éditez la clé pour ajouter des sous-clés avec la commande addkey. Il est recommandé de créer des sous-clés distinctes pour le chiffrement et la signature avec plusieurs cartes OpenPGP. Pour une seule carte, créez une sous-clé de chiffrement et utilisez la clé principale pour la signature.
Importation de la clé privée dans la carte intelligente
Importez la clé privée dans l’emplacement de signature de la carte intelligente en utilisant :
gpg --homedir ${TMPRING} --import ${VAULTRING}/[email protected]
Éditez la clé et transférez-la vers la carte en utilisant la commande keytocard. Après l’importation, détruisez le trousseau de clés temporaire.
Importation de la clé publique
Importez la clé publique complète dans le trousseau de clés de travail :
gpg (--homedir ${WORKRING}) --import [email protected]
Publication de la clé publique
Dans un trousseau de clés temporaire, importez la clé principale brute, supprimez les vraies identités d’utilisateur et téléversez-la vers un serveur de clés. Ensuite, téléversez la clé publique complète sur keys.openpgp.org.
Renouvellement de la clé principale
Dans le trousseau de clés temporaire, importez la clé principale brute, générez un stub et réinitialisez sa durée de vie. Réexportez-la et importez-la dans les trousseaux de clés de travail et de coffre-fort pour renouveler la durée de vie de la clé principale.
Changement de la clé principale
Pour une nouvelle clé principale avec la même identité d’utilisateur valide, effectuez une certification croisée. Importez l’ancienne et la nouvelle clé principale dans un trousseau de clés temporaire. Certifiez l’ancienne clé avec la nouvelle clé, exportez et partagez les deux clés avec des personnes de confiance.
Conclusion
Cette approche de gestion sécurisée des clés OpenPGP sur la carte OpenPGP garantit la sécurité et la facilité d’utilisation. En suivant ces étapes, les utilisateurs peuvent protéger leurs clés, les renouveler en toute sécurité et passer à de nouvelles clés au besoin, tout en maintenant une posture de sécurité robuste.