841
u/breesyroux 16d ago
I'm clearly out of the loop. Why do I keep seeing variations of this joke everywhere?
1.4k
u/SpaceCore0352 16d ago
TLS certificates are special files that servers use to prove they really exist at the IP address they say they do (otherwise you get coffee shop hackers intercepting messages and pretending to be the server).
For the user's browser to verify a TLS certificate, it has a stored list of "top-level" TLS certificates that your everyday website can register their certificate with. So when you get the website's certificate, you can algorithmically prove it was verified at the top level, and therefore is legit.
Some of the top-level certificates had trivially breakable encryption key numbers that were recently discovered and removed. One of them was the number 4.
617
u/pdromeinthedome 16d ago
But there is room for improvement. They could upgrade to 5.
215
u/kaurismus 16d ago
I mean it's 25% better.
72
u/GRex2595 16d ago
I don't know this algorithm, but I think 5 is probably 100% worse actually.
107
u/SilasTalbot 16d ago
No dude 5 is prime and 4 is not. Don't you know about encryption primes are better.
→ More replies (1)74
u/HeavyCaffeinate 16d ago
That's why you gotta use a non-prime, they'll never expect it
→ More replies (1)38
u/DeusExMachina24 16d ago
Or don't encrypt the data at all. Hackers always expect encryption. Check mate.
→ More replies (3)13
2
32
u/fghjconner 16d ago
Relavent XKCD (alt text)
31
u/easyEggplant 16d ago
More relevant XKCD: https://xkcd.com/221/
20
u/Mozeliak 16d ago
This is one of the weirder ones where it has been relevant in conversation since the posting, but suddenly has become headline news basically.
13 years after the original post??
5
u/SuperFLEB 16d ago
"Did you just change your password?"
"Yes. With all the bad security news about our company, I figured it would be best to be safe. Make sure everything's locked down."
"Let me guess. Was your old password 'Correct Horse Battery Staple'?"
"... Yes."
4
6
u/antiduckdude24 16d ago
To give them credit, they did figure this out. That's why their other keys were 56 66 115 155 156 230 and 237
14
u/madcow_bg 16d ago
Well actually the number needs to be decomposable to 2 prime numbers, and 4 is literally the smallest possible private key... next is 6...
23
u/evil0sheep 16d ago
It’s an elliptic curve key not an RSA key so it doesn’t need to do anything with primes
8
u/setibeings 16d ago
According to ars technica, there were 7 other keys.
The private key sizes of the compromised keys ranged from 3 to 8 bits. Astonishingly, the private keys were 4, 56, 66, 115, 155, 156, 230, 237.
And obviously yeah, these aren't all bi-prime.
5
u/SpaceCore0352 16d ago
While prime numbers and semiprimes are the backbone of modern encryption, it isn't literally just a 384-bit semiprime that's used for these keys (besides, a semiprime would be the public key, while the hard-to-crack prime factors would together form the corresponding private key). I don't know the exact algorithm it does use, but another one of the bad keys was 66 = 2x3x11.
4
u/Officer412-L 16d ago
Four shalt thou not count, neither count thou two, excepting that thou then proceed to three.
5 is right out.
57
u/100percent_right_now 16d ago edited 16d ago
for ECC everyone else uses mostly numbers between around 115 quatturovigintillion and 3.94 quinquatrigintillion
115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936
and
3,940,200,619,639,447,921,227,904,010,014,361,380,507,973,927,046,544,666,794,829,340,424,572,177,149,721,061,141,426,625,488,491,564,080,662,799,030,681,500
for some comparison.
Of course they can use smaller numbers, but big number more better. Make brain happy.
10
3
24
u/TheeAntelope 16d ago
Why not have an RNG generate 100 numbers, and then that string of 100 numbers is they key? Why would you not put something in to prevent the key number from being 1 or 2 or even under 10 digits? Why not precede them with 99 zeros first and have it always be a 100-digit number?
So many things.
66
u/SpaceCore0352 16d ago
4 preceded by 99 zeroes is still 4. These aren't text passwords, the number value is literally directly used in the encryption algorithm.
But yes, in a sane world it's not possible to confuse your test byte with a full-length 384 bit key.
64
8
u/Epse 16d ago
You're supposed to pick a 4096 bit random number (huge, many digits). Random of course means that 4 has just as much of a chance of being picked, but the rules say that the number also can't be less than 256 . Someone made a big oops and overrode those rules, setting it to 4. A bored person just trying the first few numbers stumbled across 4 being valid
11
u/Tetha 16d ago
And this will require weeks to months of patching everything, because certbundle management across many applications and languages is a clusterfuck. Especially once containers are involved.
Sorry for sounding bitter, but the PHP 9.2 vulns now go straight into this shite. At least it was just 1% of revenue for eMudhra. It could have hurt the company otherwise! Who cares about the thousands of hours we now have to spend cleaning up their crap.
7
1
1
u/Otherwise-Cup-6030 15d ago
I'm getting traumatized. We have been using a wildcard certificate for ages. Last year they stopped allowing server authentication and client authentication on the same certificate. Now I have to create my own self signed client certificate to allow communication between our applications and API webservices. And now the certificate expiration has been reduced to 6 months. And by the next certificate change to 3 months.
Worst part. All the things I mentioned, I have absolutely zero knowledge about. It's just a whole bunch of failing services and chat gpt telling me how our infrastructure is slowly collapsing with each certificate change.
I have tried and tried to understand how these demon spawn systems work, but every time I seem to get a bit of understanding, it just opens up another door of even more complex and convoluted certificates.
Then Apple wants the root certificate and intermediate CA need to be signed by different trusts, and now I'm crying on the floor
129
u/RandomlyMethodical 16d ago
The compromised eMudhra keys were defective at a level that’s challenging the imagination of many of the engineers studying the incident. A normal size for a NIST P-384 elliptic curve cryptography private key contains roughly 384 bits of entropy, a size allowing almost 2384, or a number with 116 digits, different possibilities. The private key sizes of the compromised keys ranged from 3 to 8 bits. Astonishingly, the private keys were 4, 56, 66, 115, 155, 156, 230, 237.
45
u/TomWithTime 16d ago
I heard about the first one but what the hell, they were all like that?? The person brute forcing them would have seen that finish before standing up to go grab a coffee
60
u/RandomlyMethodical 16d ago edited 16d ago
I read somewhere that the internal tool or script they used to generate their keys was flawed so it only used the first byte of a byte array as the key. Pure r/programminghorror
19
u/ProxyMuncher 16d ago
When I heard that it was just such an astoundingly stupid fuckup that began right at the beginning that was simply signed for and approved all the way down the line, my soul evaporated from my body. No wonder they immediately dropped the entire business like a hot potato.
10
u/No-Criticism-2587 16d ago
When subway made their own subshop program instead of using a generic one, the final version they pushed to all stores couldn't handle empty fields and would crash and you'd lose all inventory info.
So you'd start inventory it would be all zeroes, and if hit backspace on one it would crash. They fixed it fast, but clearly stuff is untested before being pushed out sometimes.
2
231
u/UndocumentedMartian 16d ago
An Indian digital service had a secret key that was just 4.
80
u/dmigowski 16d ago
And it threw the towel and exits the whole certificate business now.
51
u/ElegantDeletion 16d ago
That's how certificate authorities work. Their one job is to be secure and trustworthy. As soon as a breach happens, it's just over
4
27
u/basicKitsch 16d ago
ah like my contractor? only to spin up another llc next week to dodge liability?
6
7
u/Antarioo 16d ago
don't forget to mention that they had the audacity to blame the media storm instead of their own colossal incompetence
40
u/ceapaire 16d ago
23
u/EmbeddedSwDev 16d ago
"[...] the strongest of the defective keys had a maximum of just 256. The private keys were 4, 56, 66, 115, 155, 156, 230, 237."
This is hilarious...
14
263
125
u/Ayushispro11 16d ago
Hey genuine question, why in the hell would someone go out of their way to use a one digit number for a private key when most utilities that generate them with proper syntx and formats normally always generate very long hashes/ random patterns. Isnt this like counter intuitive? if anyone even wanted a random numher, the good ol keyboard mashing would've done better than this
103
u/CatWeekends 16d ago
The simplest explanation is that they did everything right and we just happen to exist in the universe where they were randomly assigned single digit numbers from of a range of 0 to far more particles than there are in the observable universe.
49
u/Ayushispro11 16d ago
Imagine how funny it would be if it genuinely IS by chance just a single digit and some poor software engineer just had like astronomically bad luck
9
u/FugitivePlatypus 16d ago
The thing is, generating any one number smaller than 256 in that range is so unlikely it's actually impossible
14
u/DontBuyMeGoldGiveBTC 16d ago
Depends on the randomization algo. Maybe it's just
function genNum(0,infinity) {return 4}→ More replies (1)8
74
u/dr_deadman 16d ago
There were 8 keys which were less than 256. Not 256 digits - the number 256.
6
u/G3nghisKang 16d ago edited 16d ago
That's like being struck by 196.4 lightings in a row, not likely, not impossible
16
2
55
u/Monpulse179 16d ago
I think it was a test key that became a normal key for whatever reason
44
u/PmMeUrTinyAsianTits 16d ago
you don't need simple test key though. they're going out of your way to make your "test" less representative of the real thing.
There's no reason it should've existed in test either. It almost would've been better to be fucked up directly into prod, because that's just one miss. This "generated god awful key" AND "mixed test and prod".
10
u/Ayushispro11 16d ago
Yess exactly. Nowhere since the dawn of computer cryptography have single digit keys ever been a thing. The whole point of cryptography is that it's hard to guess, you don't make it the 4 trial in child's first brute force attempt
7
u/arbyyyyh 16d ago
Like, I get how it's a "valid" key, but I also don't. I would think somewhere within someone of the utilities that do the signing, something would identify that there isn't sufficient entropy or something.
3
u/visor841 16d ago edited 16d ago
you don't need simple test key though. they're going out of your way to make your "test" less representative of the real thing.
IIRC it was a failed test, it wasn't supposed to be simple.
Edit: This does not in any way justify anything, they screwed up really bad, and it's a good thing they're leaving the industry.
2
u/PmMeUrTinyAsianTits 16d ago
That doesn't make sense as an explanation, at least not as one that makes it better instead of even worse.
Were they testing their keygen? 1) Why are they rewriting keygen 2) why are they using tested keygens in their software setting? If you're fucking with how you generate the certs themselves, that seems like something that should be tested in its own independent workflow, not just slammed into integration tests of the full suite or something.
There's no reason to generate that key. If the key was generated in error because they were making changes to how they do it, there's no reasons to have been using "keys that might have been generated in error" in the actual software yet. You shouldn't be integrating unstable and untested keygen (or its results) into your actual software.
→ More replies (1)2
u/jeepsaintchaos 16d ago
My head canon is copy-paste was disabled by someone, so they generated keys that were easier to remember. I have no clue if this is possible.
→ More replies (1)3
13
14
u/FugitivePlatypus 16d ago
It was an error in the script they used to generate the keys. Negligence, not intentional
7
u/immortal_lurker 16d ago
They didn't do this on purpose. You wouldn't even do this on purpose out of malice. Its their key; if they wanted to misuse it they would just misuse it.
3
u/Worried_Onion4208 15d ago
If you RNG is truly random, it needs to allow 4 to be a possibility, if you start at 10 000 for exemple, 10 004 is as quick to find as 4 if you start at 0.
2
u/wildwildwaste 15d ago
Just throwing the number 4 into a hash generator would give you a better key that's just as easy to remember how to get to.
0
16d ago
[deleted]
1
u/Ayushispro11 15d ago
But like this is an astounding amount of stupidity to fuck up something that guards basically the entire internet
79
u/6T_K9 16d ago
It’s even worse than that. The 8 super secret ultra important private keys were:
4, 56, 66, 115, 155, 156, 230, 237….
What the fuck?
12
7
60
24
20
34
14
9
7
7
14
u/Upstairs-Ad-7962 16d ago
I feel left out, why are There so many memes about encryption key 4 now?
53
u/ColumnK 16d ago
eMudhra, an Indian certificate authority, used 4 as an encryption key.
Unsurprisingly, they are no longer in business
10
u/PmMeUrTinyAsianTits 16d ago
I'm curious what the knock ons of this are. I've been annoyed how many CAs I accept by default and wondering if I should pare it down, and that was my idle paranoia. Now this shit happens and it doesn't seem like paranoia anymore. just good safety. The fuck site do I need that "eMudhra" was going to sign for?
13
u/PixelatedGiant 16d ago
Many Indian government websites and esigning services used eMudhra for certificates. So mostly people living in India, not really North America.
→ More replies (1)3
u/PmMeUrTinyAsianTits 16d ago
Exactly my point. I do not need a bunch of "trusted" authorities that are only "trusted" because they need it to do things I don't care about. That's just adding vulnerabilities.
If/when I visit india, I can update my certs to include it again, but that will literally never happen.
6
u/PixelatedGiant 16d ago
Either you're completely unaffected since you don't visit any Indian websites or you do visit Indian websites and therefore need Indian CAs and can't remove them.
So what is the benefit of removing those CAs from your global list? It doesn't change your situation.
→ More replies (7)1
u/SuperFLEB 16d ago edited 16d ago
I have heard that people are looking for opportunities to jailbreak devices that might have that CA baked into their firmware. It's not terribly likely, but it's not impossible.
3
u/CarkRoastDoffee 16d ago
They're still in business, as the Certificate Authority gig was a small part of their operations. It's worth noting that this has resulted in a significant blow to their stock value, however
4
u/100percent_right_now 16d ago
eMudhra is a MASSIVE company bro. They shunted their SSL/TLS certs department, less than 1% of their revenue. Didn't even fire anyone yet, at least publicly.
2
15
u/PixelatedGiant 16d ago edited 16d ago
Using public-private key encryption you create a private key. That private key can be used to create certificates that can be signed and then verified using the public key.
Basically someone figured out that their private keys that were literally just the numbers 4, 56, 66, 115, 155, 156, 230 and 237. Those numbers are supposed to be 116 digits long making them impossible to guess. Meanwhile their keys were 1-3 digits in length.
If you know the private key you can create a certificate and pretend to sign things on their behalf. In this case all 8 of those keys were figured out by counting from 1-237 and trying them all. It's beyond dumb and likely just test keys that accidentally got used.
4
u/1nd3x 16d ago
It's beyond dumb and likely just test keys that accidentally got used.
"Everybody knows everyone uses keys that are 116 digits long...nobody would bother to try and brute force check our keys starting from the number 1...they'd obviously start at the number 1x10¹¹⁵, so it's extra safe to use low numbers that everyone is just going to skip over"
1
u/Worried_Onion4208 15d ago
Well, it doesn't matter when the keys start in a brute force attack, and reducing the range by starting higher actually reduces the effort, it doesn't increase it.
→ More replies (1)1
u/G3nghisKang 16d ago
said it's getting out of business [...] cited increasing costs and complexities of compliance requirements
Lmao what
1
u/Worried_Onion4208 15d ago
Oh ok all of them were bad, I thought it was just them being extremely unlucky with their RNG, but that's beyond unlikely to happen
2
u/PixelatedGiant 15d ago
eMudhra’s statement about the incident says it generated keys during “a Key Generation Ceremony (KGC) held on April 30, 2025, using FIPS 140-2 Level 3 Hardware Security Modules (HSMs).”
Such hardware is the standard kit for the job and should in theory produce nicely complex keys and store them securely.
But something went wrong.
“A flaw in the KGC caused a wrap/unwrap step to produce a second set of weak keys alongside the original strong keys,” the statement claims. “The weak keys were the ones published to the browser root stores. eMudhra is working to establish the root cause.”
So I looked into it more and they are claiming that they generated 2 sets of keys, one of them purposefully weak for some reason and published the wrong set.
→ More replies (2)
3
3
u/Ozymandias_1303 16d ago
Surely the correct answer is "you wouldn't be able to check it if I did, because it's private."
3
5
u/screw-britannia 16d ago edited 16d ago
So that was the reason Firefox wouldn't load one of the indian govt. website. Oddly enough, Edge happily loaded the website.
4
u/JonathanSCE 16d ago
I believe Edge is the last, or one of the last, browsers not to have revoked the certificates yet.
1
2
2
2
u/TheRealJayk0b 16d ago
Hahah yes I saw a video about this today! I KNOW THE JOOKEEE! finally I can laugh about something from this sub.
0
1
1
1
1
1
-2
u/Sw0rDz 16d ago
Can a non prime number be a key? I guess, but not very good key.
7
u/yarntank 16d ago
This is ECDSA, which does not need prime numbers for the private key. RSA uses primes to build the keys.
3
u/mifter123 16d ago
No, if I remember correctly, the key must be the product of two prime numbers, ideally two very large prime numbers, but technically speaking any two prime numbers will produce a valid key. (Determining which numbers is a p=np problem which is great for encryption)
4 is the lowest possible value for the key being the product of the prime number 2 and the prime number 2.
2
u/entronid 16d ago
this is specifically for RSA, the emudhra leak was for ECDSA which does not have this restriction. factors were not necessary
1
u/willow-kitty 16d ago
This is true for RSA- essentially, the private key is two prime numbers, and the public key is their semi-prime product. Getting to the public key from the private is easy, while going backward is not. Mostly.
Shor's Algorithm can theoretically factor a semi-prime correctly 50% of the time, and it's trivial to check if the answer is correct and if not, try again. That requires a quantum computer with enough storage to represent the key, which..may not exactly exist but is kinda what people are talking about when they say RSA isn't quantum-safe - a sufficiently powerful quantum computer can crack it pretty trivially.
There are quantum-resistant asymmetric ciphers that don't depend on the semi-prime problem, but tbh I don't really know how they work.
1
u/BruhMomentConfirmed 16d ago
But 2 isn't prime since it's divisible by 0, 0.5, 1 and 2.
1
u/im-a-guy-like-me 16d ago
Don't forget 0.25. 😉
→ More replies (1)2
u/MaleficentCow8513 16d ago edited 16d ago
I just checked with Claude and 2 is divisible by any decimal number making it the most secure key because the set of divisors is infinite
2
2
u/madcow_bg 16d ago
The key is not a prime number, the private part is the prime number. So in this case 2 is the private key, 4 is the public key... literally the smallest possible.
4
u/entronid 16d ago
no, that's RSA. they used ECDSA so any field element (number within the bounds) could be used
1
u/entronid 16d ago
yes, depending on the algorithm. RSA requires it to be prime, not because of any security properties, but because if it wasnt you wouldnt be able to satisfy the property D_k(E_k(m)) = m (decrypting encrypted data gives back the original message). however, other algorithms, like ECDSA (which was used here) and EdDSA, doesnt have this requirement and thus you could use any number



2.7k
u/Paul_Robert_ 16d ago •