Eight Bits of Trust; eMudhra's CA keys cracked in milliseconds

432 points · 199 comments on HN · read original →

Points and comments are a snapshot, not live.

eMudhra's CA private keys were single-byte numbers like 4, recoverable in milliseconds from public certificates.

Eight eMudhra intermediate certificates used P-384 private keys that were only 8 bits of entropy (e.g., d=4, d=56). Scott Helme brute-forced all keys from public certificates in under a second. The keys were created in April 2025 and cross-signed by Sectigo. Mozilla and Chrome blocked them after a researcher reported on October 17. While browsers are protected by Certificate Transparency, most non-browser TLS clients (curl, Python, Node, Go, Java, git, package managers, IoT devices) trust the chain by default, do not check revocation, and do not verify CT. Helme demonstrated that a forged certificate for api.stripe.com was accepted by curl and Python on Linux and macOS.

What commenters are saying

Commenters expressed shock at the negligence, calling an 8-bit key 'crazytalk' and joking that the numbers (4, 56, 115, 155, 156, 230, 66, 237) look hand-picked or like keyboard sequences. Some noted consecutive G3B keys suggest a sequence number was accidentally used as the private key. A Mozilla bug report linked by commenters says a KGC script flaw created a second weak key pair, and similar labels caused the wrong keys to be used for the CSR. Several commenters questioned the lack of unit tests or human review before trusting the CAs.