La sécurité évolue constamment, et ce qui était considéré comme sûr il y a 10 ans est maintenant obsolète. L’algorithme SHA1, utilisé pour signer des clés OpenPGP, en est un parfait exemple. Aujourd’hui, GnuPG rejette par défaut les signatures basées sur SHA1, mais que faire si tu veux garder des signatures historiques ou des clés existantes qui dépendent encore de cet algorithme ? Cet article te montre comment gérer ces signatures faibles avec l’option allow-weak-key-signatures
.
Table of Contents
Pourquoi SHA1 pose problème ?
SHA1 est un algorithme de hachage qui a été massivement utilisé pendant les années 2000. Le problème, c’est que cet algorithme est vulnérable aux attaques de collision, ce qui signifie qu’il est possible de générer deux ensembles de données différents qui produisent le même hachage SHA1. Cela compromet la fiabilité des signatures qui l’utilisent, car un attaquant pourrait modifier le contenu sans casser la signature.
Depuis 2019, GnuPG rejette automatiquement les signatures tierces utilisant SHA1 pour se conformer aux normes de sécurité actuelles. Cependant, il est parfois nécessaire de continuer à utiliser ces signatures, par exemple si tu travailles avec des systèmes anciens ou si tu veux préserver des signatures historiques sur une clé.
Comment savoir si tu es affecté par le problème ?
Si tu essaies de signer une clé OpenPGP avec une clé existante et que tu obtiens l’erreur suivante :
gpg: Note: third-party key signatures using the SHA1 algorithm are rejected
gpg: signing failed: Invalid digest algorithm
Cela signifie probablement que ta clé ou la clé que tu essaies de signer contient des signatures SHA1.
Vérifier les paquets SHA1 dans ta clé
Pour être sûr, tu peux exporter ta clé et vérifier directement si elle contient des signatures SHA1. Voici la commande à utiliser :
gpg --export <empreinte-clé> | gpg --list-packets | grep -B2 "digest algo 2"
Si tu vois ton ID de clé dans la ligne « signature », c’est qu’elle contient des signatures SHA1. Si ce n’est pas ton ID, la signature provient d’une tierce partie et tu peux simplement nettoyer ta clé.
Comment préserver ou gérer les signatures SHA1 avec allow-weak-key-signatures
Maintenant que tu sais si ta clé est affectée, il est temps de voir comment gérer ces signatures faibles sans tout casser. Si tu veux les conserver, tu peux activer l’option allow-weak-key-signatures
dans ta configuration GnuPG.
Activer allow-weak-key-signatures
- Ouvre ton fichier de configuration GnuPG :
nano ~/.gnupg/gpg.conf
- Ajoute l’option suivante :
allow-weak-key-signatures
- Sauvegarde et ferme le fichier.
Cette option permet à GnuPG d’accepter et de traiter des signatures utilisant SHA1 ou tout autre algorithme jugé faible. C’est une solution temporaire pour maintenir la compatibilité avec des clés anciennes ou des signatures historiques.
Nettoyer les signatures SHA1 (si tu préfères ne pas les garder)
Si tu veux au contraire te débarrasser de ces signatures SHA1, voici comment procéder.
Étape 1 : Vérifie ton fichier gpg.conf
Assure-toi que tu n’as pas de paramètres anciens qui forcent l’utilisation de SHA1. Par exemple, les options suivantes dans ton fichier gpg.conf
peuvent poser problème si elles sont mal configurées :
digest-algo
cert-digest-algo
default-preference-list
personal-digest-preferences
Si tu utilises GnuPG 2.2 ou plus récent, vérifie que ces options n’incluent pas SHA1.
Étape 2 : Réinitialiser la date d’expiration
Même si tu n’as pas défini de date d’expiration pour ta clé, réinitialiser ou prolonger cette date permet souvent de nettoyer les signatures SHA1 associées à ta clé. Utilise la commande suivante pour modifier la date d’expiration :
gpg --quick-set-expire <empreinte-clé> 5y '*'
Le '*'
est important pour appliquer la modification à toutes les sous-clés.
Étape 3 : Mise à jour des préférences et nettoyage des signatures
Une fois que tu as vérifié et mis à jour les préférences, tu peux nettoyer ta clé des signatures obsolètes avec cette commande :
gpg --batch --yes --edit-key <empreinte-clé> setpref clean quit
Cela supprime toutes les signatures SHA1, ainsi que d’autres signatures invalides ou expirées.
Étape 4 : Publier ta clé (optionnel)
Si tu veux que les autres puissent accéder à ta clé mise à jour, pense à la republier sur un serveur de clés :
gpg --keyserver keys.gnupg.net --send-keys <empreinte-clé>
Faut-il garder les signatures SHA1 ?
La réponse dépend vraiment de ton cas d’utilisation. Si tu as besoin de maintenir la compatibilité avec des systèmes anciens ou si tu tiens à préserver des signatures historiques, allow-weak-key-signatures
est un bon compromis. Cela te permet de continuer à utiliser des clés anciennes sans tout casser. En revanche, si tu es dans un environnement où la sécurité est une priorité, il est préférable de nettoyer ces signatures et de migrer vers des algorithmes modernes comme SHA256 ou SHA512.
Conclusion
Les signatures SHA1 sont désormais obsolètes, mais il est parfois nécessaire de les garder pour des raisons historiques ou de compatibilité. Grâce à l’option allow-weak-key-signatures
, tu peux continuer à utiliser ces signatures faibles dans GnuPG tout en étant conscient des risques associés. Si tu n’as plus besoin de ces signatures, prends le temps de nettoyer ta clé et de migrer vers des algorithmes plus robustes.
Cet article propose à la fois une solution pour ceux qui souhaitent préserver leurs anciennes signatures SHA1 et pour ceux qui veulent s’en débarrasser. Quoi qu’il en soit, il est important de suivre les bonnes pratiques de sécurité pour s’assurer que tes clés OpenPGP restent fiables et sécurisées.