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

(scotthelme.co.uk)

174 points | by hkc 2 hours ago

21 comments

  • jlmorton 1 hour ago
    In retrospect, having 100 trusted certificate authorities might have been excessive.
    • tclancy 1 hour ago
      In retrospect, not having a tiny competency check may have been an oversight.
    • BirAdam 31 minutes ago
      or, perhaps you need more so that one being stupid doesn't effect so much.
    • otabdeveloper4 28 minutes ago
      Correct, we only need zero.
      • sebzim4500 11 minutes 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.

        • josephg 5 minutes 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.
          • asksomeoneelse 1 minute ago
            But how do you make DNS secure without CAs?
        • embedding-shape 7 minutes 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.

          • whywhywhywhy 3 minutes 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.
  • WalterGR 1 hour ago
    Related: https://news.ycombinator.com/item?id=50166579

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

  • bombcar 1 hour ago
    Of COURSE it's easy to crack, 4 isn't even prime!
    • chompychop 2 minutes ago
      They should have gone with 57. Everyone knows it's prime.
    • DavidSJ 1 hour ago
      In their defense, they were probably targeting the Mersenne prime 2^2 - 1 and just made a typo.
      • throw0101a 44 minutes 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.

    • wolfi1 19 minutes ago
      ok, it's joke. but for those who don't get it: elliptic curves don't need primes
    • joshuat 1 hour ago
      It’s really impressive no one caught their three previous private key values
      • bcvvvy 1 hour ago
        I suspect they did but it wasn't publicised.
    • delibes 53 minutes ago
    • walrus01 46 minutes ago
      Hey, that's the same combination I have on my luggage!
  • supernes 58 minutes 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.
  • tniemi 43 minutes ago
    Someone used the Dilbert random number generator. https://www.random.org/analysis/
  • positive-spite 1 hour ago
    That's some criminal negligence right there.

    8 bits is crazytalk!

    • joshuat 1 hour ago
      “4”

      hey chatgbg what is a “private key”

      • Agentlien 36 minutes 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.

      • Hamuko 1 hour 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”.
  • Qision 1 hour ago
    It feels like they chose the private keys by hand.
    • muvlon 42 minutes 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.

      • account42 23 minutes ago
        All the numbers also have digits going from left to right on a keyboard. I think the manual "random" input theory is plausible.
      • Avamander 14 minutes ago
        Some error code being used? FIPS mode gone wrong?
    • PalmPilotProMax 1 hour ago
      Artisanal cryptography. Hand-picked private keys salted with organically sourced nonces.
      • tclancy 1 hour ago
        Brooklyn-based. Guy in overalls and a waxed mustache hands out the bits.
      • account42 23 minutes ago
        Sharing is caring after all.
      • donandon 1 hour ago
        Made with love
    • Fabricio20 35 minutes 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/

    • walrus01 42 minutes 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.
  • joelkoen 5 minutes ago
    Someone else has published usable .key files here: https://github.com/Fluepke/emudrahahahahaha
  • tclancy 1 hour 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.
  • TazeTSchnitzel 1 hour ago
    Could HN start feeding submissions through Pangram so us human readers don't have to suffer with reading the nauseating AI-prose?
    • swiftcoder 34 minutes ago
      Count yourself lucky - compared to Claude's prose, this is fairly readable.
    • jadamson 1 hour ago
      It reads fine to me. If it is AI, I'd like to know which one so I can use it too.
      • stratos123 52 minutes 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.
      • TazeTSchnitzel 1 hour 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.
    • marsven_422 57 minutes ago
      [dead]
  • sscaryterry 1 hour ago
    I wouldn't be surprised if we learn in the near future, that this was deliberate.
    • edent 54 minutes 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.

      • sscaryterry 50 minutes ago
        Why are many of them, suspicious?
        • kenniskrag 2 minutes 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.

        • matsemann 18 minutes 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..
          • sscaryterry 5 minutes 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 :)
    • hannob 36 minutes 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.

    • yoavm 59 minutes ago
      Why would it be?
      • sscaryterry 48 minutes ago
        Do I honestly need to enumerate what you can do if you have the keys for a CA?
        • swiftcoder 36 minutes 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
          • sscaryterry 17 minutes ago
            In case it wasn't obvious. The NSA and many other organisation would find this extremely useful.
    • skywhopper 47 minutes ago
      Sounds more like extremely sloppy procedures. Which depressingly I doubt are unusual among CAs.
      • sscaryterry 3 minutes 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.
  • hypfer 1 hour 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".
  • siwatanejo 1 hour ago
    • Qision 1 hour ago
      Literally the tutorial they used
  • maeln 1 hour 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.

    • sobkas 1 hour ago
      Any sufficiently advanced malice is indistinguishable from stupidity.
    • dist-epoch 58 minutes 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?

      • silvestrov 46 minutes 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.

  • dbcooper 50 minutes ago
    All the numbers were under 384. Surely they couldn't have ...
    • MrDOS 34 minutes ago
      All the numbers were under 256. Surely they did.
  • dist-epoch 59 minutes 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?

    • skywhopper 43 minutes 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_germany 4 minutes 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?
  • koolba 30 minutes ago
    What the chances there’s another CA key out there with something like unix time as the key?
  • glimshe 44 minutes ago
    "Hah! 0x000...0 is the most secure private key I could use because nobody will think of trying that! Too obvious! Just like my 1234 bank pin!"
  • naabozaurus 1 hour ago
    hey, at least it was easy to remember...
  • binyu 36 minutes ago
    [dead]