315 pointsby hkc4 hours ago29 comments
  • kyleomalleya minute ago
    Question: what about the other trusted roots? Has anyone tested them?

    I’ve tested most of them (from historical archives) and have automated testing any new CA certificates that show up in CT.

    I’m calling the check “luggage code entropy” (1 byte).

    It was a mistake to trust so many root CAs and misapply the same level of trust where clearly it is impossible to independently verify and most of the accountability is smoke and mirrors. We need to be asking “why” here, the stated reason needs to be much more than “because webtrust audit” and “we recorded the entire operational process for key material handling on YouTube with this open source implementation of key ceremony tooling and have underwritten the strength of the private key with a few $mm dollars, to be paid out to the rest of the roots for the shared reputational damage to the entire ecosystem should we fuck up (intentional or otherwise).

  • jasonjayran hour ago
    > It's fortunate that the steps required here aren't particularly complicated for the devices you can update, and the advice essentially boils down to 'update them'. The problem is the devices you can't update or update easily.

    > Update everything that ships a CA bundle: your OS ca-certificates package, certifi, Node, Homebrew, and rebuild your container images once the base images pick up the change.

    > Devices you can't update are the hard part. Routers, printers, TVs, appliances with frozen firmware will trust these certificates until expiry, which is July 2039...

    Quick -- we need to MITM all the smart TVs so they can be jailbroken in one fell swoop!

    • __MatrixMan__16 minutes ago
      Devices that are smart enough to talk to the internet but not smart enough to let the user install their own certs should not exist.
    • ezoe22 minutes ago
      These devices are already very weak and many of them even do non-TLS updates with no signing check anyway.

      If it has been so weak already, it can't be weaker.

    • justincormackan hour ago
      Some of them seem to do some cert pinning
    • 15 minutes ago
      undefined
    • mschuster91an hour ago
      > > Devices you can't update are the hard part. Routers, printers, TVs, appliances with frozen firmware will trust these certificates until expiry, which is July 2039...

      The interesting question is, how many of these devices will have the compromised CA root certificate in place?

      Oh and another thing is problematic, many a Java app ships with its own keystore.jks if it needs to trust some privately hosted endpoint, and that keystore.jks may or may not contain the compromised CA root certificate... updating the OS will not catch this kind of stuff.

    • binyuan hour ago
      [dead]
  • jlmorton3 hours ago
    In retrospect, having 100 trusted certificate authorities might have been excessive.
    • tclancy2 hours ago
      In retrospect, not having a tiny competency check may have been an oversight.
      • an hour ago
        undefined
      • 2 hours ago
        undefined
    • otabdeveloper42 hours ago
      Correct, we only need zero.
      • sebzim45002 hours ago
        Interesting, what would be the alternative?

        I mean specifically for the use case of the browser warning the user if there is a MITM between them and e.g. their bank.

        • josephgan hour ago
          Make dns secure and put certs / public keys in dns. Control over dns already gives you the right to get tls certs. It should just be connected directly. We don’t need CAs.
          • braiampan hour ago
            That still requires trust stores to be distributed to the clients and some clients don't need that baggage on the dns. Also, dns is by default insecure, dnssec is a configuration nightmare
            • otabdeveloper4an hour ago
              > That still requires trust stores to be distributed to the clients

              There's no such thing as a "trust store" in practice. To be "trusted" you just need to demonstrate you have control over a DNS TXT record, and we don't need a special "store" or intermediary for that.

              Certificate authorities are an artifact of a bygone time and an entirely different model of internet infrastructure.

              • woodruffw23 minutes ago
                The trust store refers to the collection of parties that ultimately verify the signed claim of your control over a domain, which might have taken the form of a DNS TXT challenge (or any other number of challenges). You still need it, because there would otherwise be a basic circularity when determining whether to trust a connection.

                (Moving the PKI into DNS does not remove it, it just moves it around.)

          • shiandowan hour ago
            Making DNS secure is not trivial though. In a way that's just moving the problem.
            • vesinisaan hour ago
              Isn't this what DNSSEC solves?
              • shiandow8 minutes ago
                It should, though it achieves that goal by a chain of certificates not unlike CAs just tied to DNS. Like I said, it essentially just moves the problem.

                Which might still be better, if only because it limits the surface area.

              • muvlon42 minutes ago
                DNSSEC deployment has been anything but trivial. This APNIC post from 2024 estimated that about 1% of DNS queries were being validated via DNSSEC: https://blog.apnic.net/2024/05/28/calling-time-on-dnssec/. That's more than 25 years after the IETF first standardized DNSSEC.
          • three1426 minutes ago
            tptacek argues that DNSSEC is too flawed to actually do this:

            https://sockpuppet.org/blog/2015/01/15/against-dnssec/

          • asksomeoneelsean hour ago
            But how do you make DNS secure without CAs?
            • growsean hour ago
              You just have one big one on the root.

              (Half joking).

              • asksomeoneelse29 minutes ago
                Is that a reference to the Root Key of DNSSEC?
        • lukewarm70743 minutes ago
          For me the complexity of anything connected to public internet is now over what I can secure.

          I genuinely can't say I secured a PC, when it needs to phone home for a configuration at this point.

          We are most likely over the line for needing to airgap a personal PC.

        • embedding-shapean hour ago
          The first time you go to the bank, you do the "trust exchange" (maybe scanning a QR? People sure love that) that verifies future connections, similar to how you acquire digital certificates today when you deal with the government online and similar.

          Edit: > Every time you access your bank on different devices normalizes it so that visiting a typo domain would show the dialog and many would just click through.

          Show the dialog? What dialog? There is no dialogues here, you cannot login to the bank unless you've verified the connection. You do it with your phone, then you can propagate the trust from there to other devices if needed.

          • bluehatbritan hour ago
            Not all banks have physical locations, not everyone has the ability to get to the ones which do.

            You can't walk back from the existing expectation and ease of use we have today. It's just not going to happen, people will opt for the current path because it's easy and seems good enough to them.

            Most normal people don't even know this whole thing is going on. They don't know the difference between http and https other than "it's secure".

            If we want to improve on this, it has to come with the current level of ease of use at a minimum.

            • monsieurbanana12 minutes ago
              > If we want to improve on this, it has to come with the current level of ease of use at a minimum.

              OR it has to be a situation catastrophic enough. I don't think this one is, but it's hard to be optimistic for the future

          • whywhywhywhyan hour ago
            Every time you access your bank on different devices normalizes it so that visiting a typo domain would show the dialog and many would just click through.
          • liroleroan hour ago
            [dead]
    • BirAdam2 hours ago
      or, perhaps you need more so that one being stupid doesn't effect so much.
      • epanchinan hour ago
        Each CA is like a padlock locked in series with other padlocks. The weakest padlock is the only one that matters.
      • caaqilan hour ago
        > perhaps you need more so that one being stupid doesn't effect so much.

        So you create more surface area for vulnerability? We might already be at or close to the sweet spot. Security is hard.

        • Gabrys114 minutes ago
          I would assume that the client would need to validate the certs against more than 1 trust path (for the comment to make sense)
  • WalterGR3 hours ago
    Related: https://news.ycombinator.com/item?id=50166579

    “eMudhra intermediate CA compromise” | 947 points | 19 hours ago | 408 comments

  • bombcar3 hours ago
    Of COURSE it's easy to crack, 4 isn't even prime!
    • DavidSJ3 hours ago
      In their defense, they were probably targeting the Mersenne prime 2^2 - 1 and just made a typo.
      • throw0101a2 hours ago
        > In their defense, they were probably targeting the Mersenne prime 2^2 - 1 and just made a typo.

        There are two hard problems in computer science: naming things, cache invalidation, and off-by-one errors.

    • wolfi12 hours ago
      ok, it's joke. but for those who don't get it: elliptic curves don't need primes
    • joshuat3 hours ago
      It’s really impressive no one caught their three previous private key values
      • bcvvvy3 hours ago
        I suspect they did but it wasn't publicised.
    • chompychopan hour ago
      They should have gone with 57. Everyone knows it's prime.
    • delibes2 hours ago
      • ltaan hour ago
        It's been a while since this one popped up. It's surprising how many of those doodles are surviving the test if times, in the midst unexpected ways
    • walrus012 hours ago
      Hey, that's the same combination I have on my luggage!
      • wowczarek39 minutes ago
        Good job the Earth doesn't have an air shield protected by this byte or we'd be Skroob'd.
  • supernes2 hours ago
    Two more things to note about impact assessment: Flatpak uses the selected runtime's baked-in trust store (I think), so any apps may be susceptible even if you update the system package. Containers also don't inherit the host's trust store and use the one from the base image.
  • nmeofthestatean hour ago
    I wonder how someone stumbled upon this - maybe leaked by someone inside eMudhra?

    Since there's nothing to indicate that the private key was all zeroes and one non-zero lsbyte, and presumably nobody would try to brute-force a private key.

    • cvwright29 minutes ago
      I suspect that they read the article last Friday about Claude finding the origin of the ECDSA constants. That was only a few hours before Google received the vulnerability report.

      The two cases are very similar. The only difference is that the weak randomness was harmless in the earlier story, and here it’s devastating.

    • hnfongan hour ago
      Of the thousands of people bored with a swarm of AI agents, is it not plausible that somebody would just say "hey, let's do a vibe check to see whether any CAs are trivially crackable"?
    • conspan hour ago
      > and presumably nobody would try to brute-force a private key.

      Why not? There are examples of RNGs providing very poor entropy which might be a reason to check it (looking at you Sony).

      • nmeofthestatean hour ago
        Just seems weird for anyone to focus on trying to crack private keys starting with absurd 8-bit values that "nobody would use for a private key", let alone bother to do it at all, given the search space.
        • conspan hour ago
          I would not expect anyone to be on the lookout continuously, but like the researcher doing a "yolo" and trying. There are enough people out there that it is likely to happen at least once in a while. Or for instance someone looking for a firmware exploit in a downstream device.
        • 32 minutes ago
          undefined
  • tniemi2 hours ago
    Someone used the Dilbert random number generator. https://www.random.org/analysis/
  • tclancy2 hours ago
    I will say, there’s something almost reassuring when something goes boom that badly and the story is really silly. It’s like [horrific human-caused disaster] but it’s because of a Three Stooges episode.
  • positive-spite3 hours ago
    That's some criminal negligence right there.

    8 bits is crazytalk!

    • joshuat3 hours ago
      “4”

      hey chatgbg what is a “private key”

      • Agentlien2 hours ago
        As someone from Gothenburg, Sweden (often referred to as gbg) I shall answer:

        A private key is a tiny number you don't need to share publicly because it is easy enough to guess.

      • Hamuko2 hours ago
        Maybe they were counting on the fact that usually the right answer to “I’m thinking of a number between 1 and 10” is “7”.
    • bombcaran hour ago
      Isn't 4 simply 2 bits?

      Silly 2-bit outfit.

      Maybe it's 3 bits.

      • patricktheboldan hour ago
        I think the way that the bits are counted is based on the pool from which the number was randomly drawn. So it's possible they had 256 bits of entropy but got really unlucky.
    • 3 hours ago
      undefined
  • Qision3 hours ago
    It feels like they chose the private keys by hand.
    • PalmPilotProMax3 hours ago
      Artisanal cryptography. Hand-picked private keys salted with organically sourced nonces.
      • tclancy2 hours ago
        Brooklyn-based. Guy in overalls and a waxed mustache hands out the bits.
      • account422 hours ago
        Sharing is caring after all.
      • donandon3 hours ago
        Made with love
    • muvlon2 hours ago
      My bet is on one of

      - A sequence number being accidentally used as the private key or

      - The private key being generated securely but then accidentally truncated to 8 bits (e.g. writing a single char into a zeroed buffer when you should've memcpy'd from a char*).

      The sequence number idea is supported by the fact that two of the G3B private keys are consecutive numbers. I ran a quick Monte Carlo simulation and if I got it right, sampling 8 keys from [0,255] uniformly at random (as in the truncation scenario), you'd expect them to contain 2 consecutive numbers only about 18% of the time.

      • account422 hours ago
        All the numbers also have digits going from left to right on a keyboard. I think the manual "random" input theory is plausible.
        • muvlonan hour ago
          Oh wow, that is even more damning. Only 146 out of the possible 256 keys have this property. You only have about a 1% chance to get that 8 times in a row (A little more than 1% if sampling with replacement and a little less if sampling without. You'd expect them to at least not use the exact same key twice but at this point???).
      • Avamander2 hours ago
        Some error code being used? FIPS mode gone wrong?
    • gquere14 minutes ago
      There's a beginning of an explanation in the mozilla bugrepor thttps://bugzilla.mozilla.org/show_bug.cgi?id=2083449
    • Fabricio202 hours ago
      The fact that there are more than the "4" one, and all the low numbers are below 384 (384 being the bits for private key) makes me think whoever was creating these thought "Oh a random number between 1-384" let me choose... 4! (156, 230, 115, 56, 66, 237, 155)...

      https://xkcd.com/221/

    • walrus012 hours ago
      A long time ago one time pads used to be chosen by hand by women picking numbered lottery balls out of a spherical tumbling machine on a table.
  • eviksan hour ago
    > recovered all of them from their public certificates on my laptop just now, and it took less than a second.

    Why wasn't this second spend by the parties accepting those certificates as valid before they were accepted?

  • TazeTSchnitzel3 hours ago
    Could HN start feeding submissions through Pangram so us human readers don't have to suffer with reading the nauseating AI-prose?
    • swiftcoder2 hours ago
      Count yourself lucky - compared to Claude's prose, this is fairly readable.
    • jadamson2 hours ago
      It reads fine to me. If it is AI, I'd like to know which one so I can use it too.
      • stratos1232 hours ago
        It reads okay to me too, yet Pangram says it's mixed - the "What a private key actually is" section is AI, so is 'Why "it cannot be contained"' and some others.
      • TazeTSchnitzel2 hours ago
        I think it's a hybrid text. The section about how elliptic curve keys work is particularly aggravating. Unfortunately it's also the only section that gave me new information.
      • karel-3dan hour ago
        It has parts that are human written and parts that are generated. I couldn't tell at first, but now seeing it in Pangram, it's kind of clear.
    • marsven_4222 hours ago
      [dead]
  • mnxan hour ago
    I made test.key4.lol if you want to quickly check if your device/browser is vulnerable still.
  • maeln3 hours ago
    eMudhra explanation : https://bugzilla.mozilla.org/show_bug.cgi?id=2083449#c11

    Kind of hard to understand how a bug would have generated a second pair of key so bad, and how would human would have ended up using them. Never attribute to malice what can be attributed to stupidity, but sometimes you wonder.

    • amossa few seconds ago
      Given the usefulness of this to anybody who knew about it between the ceremony and now - assume malice.
    • sobkas2 hours ago
      Any sufficiently advanced malice is indistinguishable from stupidity.
    • dist-epoch2 hours ago
      And an equal amount of stupidity in the whole ecosystem, apparently there are no "unit-tests" for trivial failure modes, like 8 bits of entropy, before adding a CA to the trusted list.

      What next, googling the public key finds a 2 year old pastebin with the private key?

      • silvestrov2 hours ago
        Even just a human glancing at the private key should do it.

        Don't they even test script changes on a staging server? How could there be such a script error in production that was not caught in testing/staging?

        This sounds very like a fundamental organization error, not an innocent whoopsie. It should lead to a permanent ban of the organization.

        • karel-3dan hour ago
          Well humans should NOT glance at private keys! That is the whole point of HSMs!
          • conspan hour ago
            I'm still flabergasted the HSM allowed this key to be generated. Then again, I've worked with HSMs, there are always many mistakes in the firmware, usually less severe though.
            • karel-3d44 minutes ago
              It seems there was some issue with the ceremony with some wrapping/unwrapping scripts.

              They explicitly said they wanted to export the keys from the HSM; the keys were intended for USA/Europe (for sovereignty reasons) but were never actually used.

              It seems the HSM itself worked, their ceremony around wrapping/unwrapping didn't.

              • consp30 minutes ago
                Makes more sense.

                I'm sure the Utimaco's used (haven't worked with one) also allow all slots to contain the same name or keys with the same name and the device always selecting the first one if you only provide the name and not the slot ID or token identifier. Don't ask how I found out the hard way.

  • dbcooper2 hours ago
    All the numbers were under 384. Surely they couldn't have ...
    • MrDOS2 hours ago
      All the numbers were under 256. Surely they did.
  • hypfer2 hours ago
    This is not a good write-up. Yesterday's discussion did contain better data, less self-Promotion and actually asked why it happened, instead of just saying "number small".
  • sylwarean hour ago
    The CA concept itself is flawed, unless normal users were able to cherry pick the CA they do trust, dream. And even with that, they must keep in mind that many authorities and/or mafias have very probably rogue certificates for browser invisible man-in-the-middle.
    • gquere12 minutes ago
      Doesn't ACME solve this threat?
  • sscaryterry2 hours ago
    I wouldn't be surprised if we learn in the near future, that this was deliberate.
    • edent2 hours ago
      I'm not so sure. If you wanted to be deliberate, you'd choose a plausible value that you could control.

      No one is going to suspect `98761316832165974216498789746` is anything other than random. But `000000000000000123` looks suspicious.

      • K0balt33 minutes ago
        But that would be obviously intentional. Much more plausible deniability with 0x4.
      • sscaryterry2 hours ago
        Why are many of them, suspicious?
        • kenniskragan hour ago
          The probability of getting a 0 is the same for every digit. However, in my opinion, the probability of getting a number that starts with two zeros is 1/10 * 1/10, and the probability of getting a number that starts with the same two digits is 10 * 1/10 * 1/10.

          But the probability to receive one number or the other are the same.

        • matsemann2 hours ago
          By random chance you probably wouldn't get that many zeros. Of course, one could say it's just as random as any other string, but..
          • sscaryterryan hour ago
            Not a mathematician, but I'm sure the probability of them all being below 384 is going to be in the order of 0.000000001% if not less :)
            • kenniskragan hour ago
              10 times the amount of digits is the possible number space.

              smaller than 384 means 384 numbers (including 0) divided by the amount of possible numbers (see above) imho

    • hannob2 hours ago
      Makes no sense.

      If it was deliberate, one would use keys that only the person abusing it has. Not keys everyone can guess if they get a hint.

      • bombcaran hour ago
        Deliberate deniability - if you leak a real key, it's pretty obvious you leaked a real key.

        Here, you didn't leak anything, you just fucked up.

    • yoavm2 hours ago
      Why would it be?
      • sscaryterry2 hours ago
        Do I honestly need to enumerate what you can do if you have the keys for a CA?
        • swiftcoder2 hours ago
          Yeah, but if you are the one issuing the CA's private key, you already, by definition, have the keys to that CA. You don't need to make stupid keys in that scenario
          • sscaryterry2 hours ago
            In case it wasn't obvious. The NSA and many other organisation would find this extremely useful.
            • yoavman hour ago
              But it doesn't make sense. Sure they'd find it extremely useful to have the key, but it doesn't need to be a weak key for it to be useful. If anything, it makes it less useful to them.

              If I'm going to ask you or force you to share your password with me, there's no reason I'd ask you to set the password to 4. We might as well agree that the password would be D#!(s9fj0jalk!4af095SF42 , and it's much more likely our collaboration will continue working for years.

              "Never attribute to malice that which is adequately explained by stupidity"

    • skywhopper2 hours ago
      Sounds more like extremely sloppy procedures. Which depressingly I doubt are unusual among CAs.
      • sscaryterryan hour ago
        As far as I know, to become a CA, with the requirements and ceremonies involved, this type of mistake must never happen. Assuming malice instead of ignorance is reasonable here. The entire premise of a CA, is trust.
        • woodruffw14 minutes ago
          There are a lot of CAs that are essentially grandfathered into root programs (and there’s no “one” root program, every OS and verifier gets to choose their own inclusion policies). They might need to jump through hoops to stay in any given program, but being there in the first place is not a strong indicator of quality.
  • dist-epoch2 hours ago
    > and no TLS certificates chaining to these CAs ever showed up in CT

    Why are browsers trusting CAs which issued zero certificates since their creation 1 year ago?

    • 2 hours ago
      undefined
    • skywhopper2 hours ago
      These are intermediate roots, signed by trusted root certs, so the trust from your OS or browser is implicit to the roots it trusts.
      • akino_germanyan hour ago
        Yes, but there was no TLS cert issued that had these intermediate certs in its chain of trust at all anywhere. So why are they a CA if they don't issue any certs?
        • Uvix35 minutes ago
          Their other intermediates have issued certs.
  • joelkoenan hour ago
    Someone else has published usable .key files here: https://github.com/Fluepke/emudrahahahahaha
  • koolba2 hours ago
    What the chances there’s another CA key out there with something like unix time as the key?
    • ls6553638 minutes ago
      Another place to search for private key candidates would be the outputs of various common PRNGs when they have been seeded with a timestamp (for all timestamps in, say, the past 20 years).

      These would look like nice random values (unlike the ones that were recently compromised), but they would be trivial to generate by anyone who knows the initial inputs (PRNG algorithm, seed, maybe starting byte position, etc.).

  • karel-3dan hour ago
    Crypto nerds: "we need to worry about post quantum crypto! we need to worry about AI breaking foundational math that we use for cryptography! make new cryptographic algorithms yesterday"

    some random CA: "lol. 4."

  • 2 hours ago
    undefined
  • AlexITCan hour ago
    Another very unfortunate even next to the php, fun times we are living in.
  • siwatanejo3 hours ago
    • Qision2 hours ago
      Literally the tutorial they used
  • naabozaurus3 hours ago
    hey, at least it was easy to remember...
  • 2 hours ago
    undefined
  • 3 hours ago
    undefined