Teknik - Private Key Leaks in the Wild - Insights from Certificate Transparency (nsec) - Parce que... c'est l'épisode 0x300!
Contenu de l'épisode
- 3 au 5 juin 2026 - Rennes, France - - SSTIC 2026
- 24 et 25 juin 2026 - Allemagne - - Troopers
- 26 et 27 juin 2026 - Paris, France - - leHACK
- 30 juin au 2 juillet 2026 - Lille, France - - Pass the SALT
- 6 au 9 août 2026 - Las Vegas, USA - - DEFCON 34
- 19 septembre 2026 - Montréal Canada - - Bsides Montréal 2026
- 22 septembre 2026 - Belgique - - BE-Cyber
- 24 au 25 septembre 2026 - Belgique - - BruCON
- 1er au 3 octobre 2026 - Krakow, Pologne - - AligatorCon
- 13 et 14 novembre 2026 - Worldwide - - DEATHCon
- 16 au 19 novembre - Rennes, France - Pôle d'Excellence Cyber (PEC) - European Cyber Week 2026
Dans cet épisode du podcast Polysécure enregistré au NorthSec, Gaëtan Ferry et Guillaume Valadon, tous deux cyber security researchers chez GitGuardian depuis deux ans, présentent une recherche consacrée aux fuites de clés privées cryptographiques. Guillaume est par ailleurs mainteneur du logiciel Scapy et rédacteur en chef du magazine MISC.
Le problème de l’attribution
Contrairement à des secrets classiques comme les clés AWS, dont on peut retrouver le propriétaire en interrogeant les services associés, une clé privée cryptographique (RSA par exemple) ne se rattache à aucune identité. C’est un simple objet mathématique aux propriétés cryptographiques, utilisable pour de multiples usages : connexion SSH, protection d’un site web en TLS, etc. En regardant la clé seule, impossible de savoir à quoi elle sert ou à qui elle appartient. Quelques indices existent parfois — le nom de fichier (norssec.io.key) — mais souvent on tombe sur des private.key inexploitables. L’enjeu de la recherche était donc de trouver une technique générique de catégorisation.
La méthode : Certificate Transparency
La solution repose sur les Certificate Transparency logs, un mécanisme de l’infrastructure X.509 datant de 2015. Chaque fois qu’une autorité de certification émet un certificat, elle doit le journaliser dans ces registres publics, souvent opérés par d’autres autorités. Ces journaux contiennent donc l’historique de tous les certificats émis.
Le principe du matching est le suivant : une clé privée contient des informations sur sa partie publique (le module, dans le cas de RSA). On extrait cette partie publique, on calcule une empreinte SHA-256, et on fait de même pour les certificats. Comme un certificat TLS associe une clé publique à une identité (généralement le nom du site protégé), une simple jointure entre les deux bases d’empreintes permet de relier une clé privée à un site et à son propriétaire.
La recherche s’est accélérée lors de la conférence Pass the SALT à Lille, où des contacts chez Google les ont alertés : les anciens logs de Certificate Transparency, coûteux à opérer, allaient être mis hors ligne. Or c’était précisément la dimension historique du dataset qui les intéressait. Un partenariat s’est noué : GitGuardian a fourni une liste d’empreintes, et Google a effectué la correspondance dans sa base propriétaire, renvoyant les certificats associés.
Les chiffres
Le dataset de fin 2025 comptait un million de clés privées distinctes, collectées via l’activité historique de GitGuardian — le public monitoring qui scanne GitHub, Docker Hub et d’autres sources à la recherche de secrets codés en dur, puis avertit les victimes en mode « bon samaritain ».
Sur ce million, 42 000 clés correspondaient à des certificats émis par des autorités. Le chiffre peut sembler modeste, mais la majorité des clés ne servent jamais au TLS (projets personnels, SSH, autorités privées d’entreprise absentes des logs publics). Ces 42 000 clés étaient liées à plus de 140 000 certificats, signe que certaines avaient servi à émettre plusieurs certificats successifs, prolongeant d’autant la durée d’exposition. A