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

952 points
1/21/1970
4 days ago
by hkc

Comments


john_strinlai

new email from wayne, who is the original reporter:

"I've had more than a few emails asking on how this was discovered. The simple answer is: https://github.com/google/paranoid_crypto

Yeah, out of the box. CCADB was intended to be a quick corpus test before looking at subscriber certificates...

I've done a far more thorough check of all existing CCADB certificates, thankfully no more hits. Most of my time has been spent going over the basics that everyone assumed someone else had already done - a critical mistake to ever make near security.

So unless someone has significantly more computational resources or access to more cryptanalysis research the low-hanging fruit has been caught so far."

https://groups.google.com/a/mozilla.org/g/dev-security-polic...

4 days ago

TheJoeMan

I must say, if I was writing a password cracker, I probably would not think to actually start at "1".

4 days ago

tejtm

Of course not, we start at negative zero.

https://en.wikipedia.org/wiki/Signed_zero

4 days ago

myself248

When I walk into a bar, I always ask the bartender for negative zero beers, just to check the place out, before placing my actual order.

I have not yet been accused of arson, but it's only a matter of time.

4 days ago

aomix

Learning about the concept of “negative zero” in school stuck with me. It was one of those lessons where the professor had us bang our heads against one’s complement to understand the shortcomings and introduced two’s complement like Moses coming down with the stone tablets.

3 days ago

jasomill

I don't know, when I run a password cracker, I always start with a brute force pass of very short passwords. Doing so adds a negligible amount of time to the crack, and its surprising how many short passwords you'll find in systems that permit them.

4 days ago

ErroneousBosh

I was a little surprised when a well-known password cracker managed to pop a bunch of passwords set by a sysadmin at a place I used to work at, who had left under something of a cloud.

I wouldn't have got them if I hadn't set it to start at three characters, on a hunch.

Cameron, if you're out there, I hope you're making less of an arse of it and not still using "CAM" as a password for everything.

2 days ago

perlgeek

You should start at "" or 0, not "1".

4 days ago

fcatalan

First time I pointed John the Ripper to a password file it immediately started beeping like crazy. Turns out default password was no password, and 70% of the accounts were unused. Those happy quaint 90s...

4 days ago

nsbdhciebsbdhc

And space / newline / carriage return / null byre should be in your charsets, even if the people who use those belong in prison.

3 days ago

atanasi

As I understood it, any private key up to N can be cracked in √Ν steps. I don't know what threshold they used, but they probably ran the scan for small private keys.

3 days ago

zbentley

I don't think that's true. Got a source?

3 days ago

atanasi

It's called the baby-step giant-step algorithm, and it's referred in the report thread to Mozilla:

"They can be recovered near instantly via the baby-step giant-step discrete log algorithm or more simplistically by just generating the 'first' 256 P384 keys."

3 days ago

zbentley

Oh, I thought you meant "private key up to N bits", not "private key up to the exact value N". In that case, sure, but for non-eMudhra-issued keys BSGS's more relevant complexity figure is O(2^keybits). Unless you've a quantum computer on you, in which case I'm told it's easy-peasy :)

2 days ago

unrented7977

Security through incredulity

4 days ago

lenerdenator

"Certainly no one is that lazy/stupid/ironic..."

4 days ago

awesome_dude

Welp, there goes that password

4 days ago

renhanxue

> https://github.com/google/paranoid_crypto

This repository was archived by the owner on Aug 19, 2026. It is now read-only.

I guess now that we've checked, nobody will ever make a mistake like this again so we don't need this anymore? :)

4 days ago

wildzzz

Archive is a nice solution in between just letting it rot on the vine forever and deleting it. Leaving it open doesn't immediately signal to users that the codebase is no longer in development, youd have to check when the last commit was. And even then, that doesn't tell you much. Is this so simple of an app that there's really nothing to patch or upgrade for long periods? A python script that converts some legacy file format into an open one might effectively be complete, there's nothing left to add or fix and there's no real threat vector to exploit. Or is this a cutting edge app that someone committed daily for years but now hasn't moved in a year.

The one thing I don't like about archive is the inability to add new issues. If I encounter a new issue, I don't necessarily want to fork it and track the new issue myself. I don't want to take responsibility for the code, I just want to let people know so someone else can fix it if they care.

4 days ago

Aurornis

Archived means it’s still available but signals that it won’t be developed.

Last commit was 2 years ago anyway.

4 days ago

fortran77

You can still use a read-only archive.

4 days ago

0cf8612b2e1e

I am sure the NSA will keep checking on our behalf.

4 days ago

commandersaki

4 days ago

Scott_Helme_

I have to be honest, that hasn't stopped me from trying!

4 days ago

iririririr

the audacity of guessing all low hanging fruits have been found, right after guessing privkey=4

4 days ago

jlmorton

In retrospect, having 100 trusted certificate authorities might have been excessive.

4 days ago

tclancy

In retrospect, not having a tiny competency check may have been an oversight.

4 days ago

oofbey

Competence is difficult to check systematically. The problem is in the auditing process. The CA auditors check a much shorter list than an application that needs FIPS compliance. They just check that the CA is using a FIPS compliant key generator, and then basic things like following a logged, standard, multi person process.

Anybody writing a system for a bank or the govt needs to have every line of code checked that it’s not doing something stupid with its crypto keys. That level of assurance would have caught this. But the process was defined too weakly.

4 days ago

InsidiousWombat

> They just check that the CA is using a FIPS compliant key generator, and then basic things like following a logged, standard, multi person process.

FIPS-compliant key generator allowed key to be 4 ?

No, they just didn't check thoroughly enough

4 days ago

oofbey

The key generator is a FIPS certified HSM that created a strong key. They ran the key through some stupid script that zeroed out all the bytes except the last one. The point of a full FIPS audit is to check that you don’t do anything stupid with crypto like try to implement anything yourself and that you only use certified implementations. But that standard apparently doesn’t apply to CA’s. They only have to use FIPS modules to generate the keys but can do whatever idiocy they want after that. Therein lies the real problem.

3 days ago

vg

> They ran the key through some stupid script that zeroed out all the bytes except the last one.

If a script zeroed out the private key, wont the public key not work anymore?

3 days ago

Scott_Helme_

The public key is calculated from the private key, so it all still works, it's just a public key for a private key of 4.

3 days ago

tclancy

Oh for sure. And at the time these were done, I'd guess cracking them was a lot more work. But still. 4.

4 days ago

knowinow

This key 4 was from a new ceremony, they must have hit the highest security key just recently and wrapped around.

4 days ago

tclancy

That is certainly a theory. Another one would be they mistyped a command and rolled with it.

3 days ago

junofan

I mean more than a typo the keys look like some guy just typing in random numbers, and the company did say they had some deviations to procedure.

3 days ago

sampli

Especially as more of the third world comes online

3 days ago

[deleted]
4 days ago

[deleted]
4 days ago

Scott_Helme_

That really depends how you define "trusted certificate authorities".

If you're talking about root certs then it's almost 350 currently trusted by at least one major operator.

If you include intermediates, you're talking more than 3,600!

4 days ago

londons_explore

Certificate transparency requirements effectively take the power away from certificate authorities.

They instead place the burden on individual webmasters again to actually verify that nobody has been falsely issuing for their domains. There are also some new vulnerabilities about CT logs who might be malicious.

4 days ago

Scott_Helme_

I agree this is a burden placed on domain owners, but who else can know if a certificate for my domain 'scotthelme.co.uk' was supposed to be issued other than me, the owner of 'scotthelme.co.uk'?

Do you have any info on the malicious CT logs? I'd be interested to read something on that!

4 days ago

jasomill

Possibly CT logs revealing information about domain name and IP address spaces, or other information through implementation details, that might not otherwise be public.

4 days ago

londons_explore

CT logs stapling proof, but then never actually including that cert in the log.

4 days ago

Scott_Helme_

But that's detectable and what we have MMD for, a log operator that does this can be found out.

4 days ago

m3kw9

How are they trusted if they can just generate any key they like in their back room?

4 days ago

swores

"Trusted" means how people treated them, it doesn't mean the extent to which they deserved trust.

4 days ago

chrisjj

This.

Good: trustworthy Often bad: trusted

4 days ago

bigfishrunning

That's the thing about trust -- in order to get into the root key store for windows, chrome, linux, etc they were trusted not to do that.

they violated that trust.

4 days ago

RALaBarge

There are chains of trust which are established for SSL certs, centered around the idea that if we can believe Mozilla et al. that the server responding is who they claim they are. Up until now, that is good enough to establish the trust needed to accept the 2 keys in the connection are connected, and then a secure connection could be established to the host server.

Mozilla et al. could claim trust for Microsoft and then MS would be an intermediary for Mozilla. There is a long history of sketchy intermediaries like GoDaddy and others that root certificate providers like Mozilla would block at times due to abuse.

This leads to users, usually ones that are not that technically savvy, seeing 'insecure' warnings on a page that actually offers HTTPS. ..but since the root servers no longer accept them as trusted, everything that GoDaddy supported, and every intermediary (child) cert which they approved would no longer be trusted and you would see a non-secure warning.

4 days ago

BubbleRings

Which leads to users that are not that technically savvy learning to always click "Load it anyway!" and not think about it, even in financial management firms. Ask me how I know...

4 days ago

creatonez

3 days ago

otabdeveloper4

Correct, we only need zero.

4 days ago

sebzim4500

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.

4 days ago

rocqua

In practice we have Certificate Transparency Logs that let us check whether a CA has issued a certificate for a domain you control without you asking them to.

This really reduces how much we need to trust the CAs, because we can detect any untrustworthy actions after the fact. Now detecting after it happened is too late. But it does mean that mistakes or malicious actions are much more expensive to a CA. In practice this has really reduced the risk, especially to those whom aren't interesting enough to burn a valuable capacity on. Which is the vast majority of people. Though perhaps if you count TLS traffic weighted by importance that count is different.

4 days ago

zaptheimpaler

I think someone explained that only browsers and maybe some applications check the CT logs in the first place. Most applications don't, so someone can impersonate any URL an application connects to and the attacker doesn't have to publish to a CT log.

4 days ago

krackers

How would certificate transparency logs have helped here though? If the private key leaks and anyone can mint a valid certificate that gets accepted, those logs aren't going to reveal it.

4 days ago

Scott_Helme_

If an attacker takes the CA key and issues a valid certificate, but does not log it to CT, mainstream browser clients will not accept it.

When a certificate is logged to CT, you get back an SCT, and the issuing CA will normally include that in the certificate. The browser will then accept this certificate as it has the correct SCTs (there are always at least two).

The attacker issued certificate hasn't been logged, so can't have an SCT, so won't be accepted by the browser.

We can't say that no certificates have been issued by an attacker. We can say that no certificates have been issued by an attacker that a modern browser client would accept.

4 days ago

krackers

Oh interesting thank you. I had misunderstood how CT works.

3 days ago

josephg

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.

4 days ago

three14

tptacek argues that DNSSEC is too flawed to actually do this:

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

4 days ago

josephg

He's right. DNSSEC is a mess, and we should fix that. We should fix that whether or not we delete CAs because CAs rely on DNS to verify that you own your domain. If DNS isn't secure, neither are CAs.

In the long run, fixing bugs is almost always better than working around them. DNSSEC is a bug. So are CAs. We can and should fix both.

4 days ago

chimeracoder

His argument is that DNSSEC is fundamentally broken, and you can't fix it via incremental improvements.

He is not arguing that DNS security cannot or should not be improved; in fact, he explicitly states the exact opposite.

4 days ago

tptacek

I don't have an objection to doing a different DNS security system, and in fact I like DoH a lot. You can do DoH all the way back from authority servers if you like, and that addresses domain validation without boiling the ocean with 1990s cryptography the way DNSSEC tries to do.

4 days ago

GoblinSlayer

ECDSA was added to DNSSEC 3 years before that blog post in april 2012 (rfc6605).

4 days ago

tptacek

And then for the next 10 years APNIC wrote posts about how actually using ECDSA broke resolvers.

It's going to settle into general usability at just about the time cryptographers deprecate ECC entirely!

4 days ago

GoblinSlayer

They can be deprecated for confidentiality purpose, but DNSSEC doesn't use confidentiality.

4 days ago

tptacek

You're trying to argue that DNSSEC isn't exposed to HNDL attacks, so can use signature algorithms that CRQCs break. But that's neither here nor there: the approaching cryptographic research consensus is going to deprecate all ECC (and all RSA); yes, signatures aren't the priority for immediate removal, but nobody is recommending ECC signatures. The point is all this is happening just as ECC in DNSSEC may finally be stabilizing.

4 days ago

ranger_danger

I have seen their comments across this site for a very long time. Unfortunately I do not respect or put any stock in what they say, because of how unbelievably rude and dogmatic they are, and always have been.

"As a rule, strong feelings about issues do not emerge from deep understanding."

4 days ago

icedchai

Fortunately, you can investigate this stuff for yourself and develop your own opinion. IMHO, DNSSEC doesn't actually "secure" much of anything. It can be disabled trivially by anyone operating a resolver. As I mentioned elsewhere, none of the major sites (FAANG) use it. What does that tell you?

4 days ago

ranger_danger

Yes I'm not saying DNSSEC is or isn't good. I think a multi-layered approach would be best for redundancy.

4 days ago

tptacek

Wait. Hold on. It is either good or it isn't. If it's good, we should be using it (maybe in a layer cake, maybe a la carte). If it's bad, it should not be used anywhere.

4 days ago

GoblinSlayer

Then propose a censorship resistant protocol.

4 days ago

shiandow

Making DNS secure is not trivial though. In a way that's just moving the problem.

4 days ago

josephg

A secure DNS is valuable whether or not we get rid of CAs, since CAs rely on DNS queries to verify domain ownership.

And if we have a secure DNS, then CAs are completely redundant. I'd much rather trust a handful of domain registrars than a handful of domain registrars, plus 100 random questionably competent organisations all over the world. Especially when any one of them can generate keys for every domain on the planet.

4 days ago

tptacek

"Secure" doesn't mean anything. A closer (though still imprecise) descriptor is the CIA triad --- confidentiality, integrity, and availability.

A confidential DNS has real value. Without it, ISPs actively monitor customers and sell analytics about usage upstream; there are other problems, but virtually every US user faces that one. It's hard to imagine wanting to trade confidentiality off.

A high-integrity DNS is a more dubious proposition. You'd obviously rather have integrity than not, ceteris paribus, but we have effective mitigating controls for DNS forgery, so you might imagine trading it off.

Availability also sounds like a no-brainer, until you remember that almost every other component of the networking stack also has availability issues. You might not want to trade anything at all to get a more highly-available DNS, if you're going to be just as susceptible to DOS attacks because the current DDoS meta is application-layer anyways.

There are a bunch of different approaches to securing the DNS, and they make different tradeoffs.

DoH focuses on confidentiality, and has bank-shot benefits to integrity (because it breaks forgery attacks from on-path attackers). Confidentiality is its primary purpose and it trades basically everything else off.

DNSSEC makes the opposite tradeoffs: it's exclusively for integrity, provides no confidentiality, and highly prioritizes availability (that's why it has elaborate authenticated denial systems).

Depending on what you want to achieve, "secure" DNS can make sense and actually get deployed and used, as DoH is, or it can make almost no sense and see almost no uptake.

4 days ago

InsidiousWombat

DoH was mostly forced by few companies, it doesn't solve any real problems because the places that would like to spy on your DNS can just block few DoH providers that are used by default. Like, it's nice to have that random MITM can't see your DNS but if ISP wants it, they can just block it.

4 days ago

tptacek

This mostly describes the difference between DoT (which is trivial to block) and DoH (which is deliberately harder to block). Are you aware of any ISP blocking DoH?

4 days ago

InsidiousWombat

https://github.com/net4people/bbs/issues/295 China for example ?

It's just few IPs on a known port. It's trivial to block.

now if the cloud providers ran it on every of their internet facing load balancers so you could use any of their IPs for DNS maybe it would be more effective, but as it is, it is entirely trivial to block it.

We actually did it for corporate network for entirely different reason, we just have a bunch of internal-only DNS zones and want browser to use that.

2 days ago

tptacek

The whole point of DoH is that the "known port" is the encrypted one the whole Internet runs over (443/tcp), which makes it more difficult to block than DoT.

2 days ago

GoblinSlayer

Security provided by CAs is TLS Web Server Authentication (1.3.6.1.5.5.7.3.1). CAs too are exclusively for integrity, provide no confidentiality and don't prioritize availability.

4 days ago

darkwater

It seems a nice thing to have indeed, but domain registrars have already a history to cede control and bend to $GOVERNMENT. We have countries already trying to MiTM all their citizens by mandating CAs injection in every device under their jurisdiction, what would be the defense against this threat in a world where registrars hold the keys to TLS encryption for the web on the TLDs they own as root? I'm not that expert in this field so I really would like to learn if it's possible.

4 days ago

shiandow

Not that it isn't an interesting question but what's preventing them now? You can get a certificate for any domain you control. It is just really obvious if you abuse that power. Which shouldn't really change with DNSSEC I think.

4 days ago

GoblinSlayer

Government can compel servers in its jurisdiction to use a mandated CA. DNS would nicely compartmentalize it to the zone controlled by that government as opposed to the CA system where every random eMudhra CA has infinite reach.

4 days ago

darkwater

That's true, but I still think that in a "government goes dictatorial" scenario, where for example there is already a widely usage of up to that moment perfectly safe ccTLD websites and services, they could MITM all of them more easily just going to a single place, and doing it in a manner more difficult to uncover.

Although I'm not sure where a specific domain private keys would be hold in DNS in this case, and that could make my point moot.

3 days ago

darkwater

Example: an green-haired guy is elected President of Zootopia [1] but not all the State branches are still under his power, but he can force the .zoo registrar to release all their private keys so it can siphon all the encrypted data going back and forth .zoo domains that are used by other State branches, and blackmail them or find out how they are organizing.

[1] yeah I know it's a city in reality

3 days ago

vesinisa

Isn't this what DNSSEC solves?

4 days ago

SAI_Peregrinus

No, DNSSEC tries to solve one part of the security of DNS (security of records between resolvers) and does nothing for the security between the user and their DNS server. And doesn't even do a good job at the bit it tries to solve.

4 days ago

shiandow

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.

4 days ago

muvlon

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.

4 days ago

tptacek

I track DNSSEC adoption across the Tranco research list of top domains:

https://dnssecmenot.fly.dev/

4 days ago

giantrobot

2107: The year of IPv6, DNSSEC, and The Linux Desktop.

4 days ago

jayd16

So like, the cable company now controls the certs for most consumers?

shudders

4 days ago

tptacek

Yes. This is basically the DANE pitch. Subtextually, supporters argue that two big shifts will immediately happen:

(1) We're also rearchitect the way all DNS is done so that every lookup from every phone and laptop is fully recursive, so that everyone validates DNSSEC chains instead of relying on the AD bit that cable company DPI devices switch off.

(2) People will lose all attachment to their current domain names and simply migrate to TLDs that have policies they agree with, rather than .COM and .IO, which are under the demonstrated de facto control of the NATO IC.

4 days ago

braiamp

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

4 days ago

otabdeveloper4

> 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.

4 days ago

woodruffw

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.)

4 days ago

josephg

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

Better in DNS though. You could have certs mirror the structure of DNS. Install a single root signing key for the top level DNS registry on client devices. Then you can query that to find out the signing keys for .com, .net, .au, etc. And continue from there.

One big problem with the CA system is that any CA - even the most incompetent - can sign certificates for any domain. If trust was moved to DNS, there would only be a single organisation that could forge certificates for any given domain. Using 7 as a private key? What a joke. The CAs aren't worthy of trust.

We already have to trust the domain name registrars anyway, since CAs query them to figure out if you own a domain before signing a certificate. In total, removing CAs would not only simplify the system. But it would allow scoped signatures. And we'd end up needing to trust far fewer actors to have a secure internet.

4 days ago

itintheory

> One big problem with the CA system is that any CA - even the most incompetent - can sign certificates for any domain.

Is this not what CAA records were intended to solve? It seems like in practice they're only used by CAs to decide if they can sign a cert for a given domain, but it seems like a client could use it to determine if a server cert was from the correct CA.

4 days ago

Scott_Helme_

CAA records are only checked by the CA at the point of issuance, not by the client later. If they did, there are problems to consider:

1. A domain would have to keep the CAA records for a CA in place to keep using the certificates from that CA, but that means continuing to authorise new issuance too. Right now, I can remove the `letsencrypt.org` value to stop them from issuing new certificates for me, but I can keep using any certificates I have until they expire.

2. The client would need to have support for this new DNS RR type.

3. The client would need a secure way to query DNS, which is not widespread.

4 days ago

itintheory

1. Yeah, that's true. It'd need to be something akin to SPF where it gets validated and kept up to date. 2. Yep, you're right. CAA isn't the correct record type. 3. I'd guess that in the vast majority of cases where a TLS cert is used, DNS is also in use. In the case of an offline validation, you're also not able to check CRL, OCSP, etc. so there are already tradeoffs there. Oh, wrt to "secure" - I guess that's the gotcha. DoH would be chicken-and-egg... something like DNSSEC would be needed, though that may be an impossible prerequisite.

3 days ago

parasyte

CAA records were never intended to be used by clients (Relying Parties), the RFC specifically prohibits them from using the CAA record to determine if the issuer was allowed to have issued the cert.

I infer from the wording around there and elsewhere in the RFC that this is mostly because someone could switch issuers but still serve valid certs from the prior issuer, and there's no way an RP would have a historical record of which CAA values were in effect when to be able to determine if the issuance was valid or not.

4 days ago

itintheory

That makes sense. Seems like there could be a different record type, similar to SPF that could be used in this way though...

3 days ago

woodruffw

Why would I trust my domain registrar to maintain PKI? They don’t seem inherently better suited for it, and in various ways are more susceptible to meddling for e.g. ccTLDs.

I think the idea that CAs are uniquely incompetent is probably incorrect.

4 days ago

josephg

> I think the idea that CAs are uniquely incompetent is probably incorrect.

The problem with the certificate authority system is that any CA can sign a cert for any domain name. It only takes 1 incompetent or malicious CA to break the whole system wide open. And there are so many CAs that inevitably some of them are incompetent, and use keys like 7. And some are definitely in bed with a government you don't like.

Moving certs into DNS means we only have to trust the registrars. Not the registrars AND the huge set of CAs.

3 days ago

asksomeoneelse

But how do you make DNS secure without CAs?

4 days ago

growse

You just have one big one on the root.

(Half joking).

4 days ago

josephg

Better to trust 1 organisation than trust 100.

4 days ago

asksomeoneelse

Is that a reference to the Root Key of DNSSEC?

4 days ago

1vuio0pswjnm7

Perhaps browser fans will check the source code to verify that their browsers or operating systems using DoH ("Private DNS" or whatever they call it) check the certificates presented by DoH providers against CT logs

The dependency of "accetpable", i.e., not self-signed, TLS certificates on DNS, i.e., a domain name in a TLD created by "ICANN", is funny when one considers that the traffic to authoritative nameservers is still unencrypted. It stands to reason that DoH and other "accepted" forms of "DNS security" are only to stop ISPs from stealing Silicon Valley's surveillance advertising racket. Neither is "DNSSEC" providing the user with any real "security"; it's protecting a monopoly. The "security" is against anyone who might try to use domains names not blessed by "ICANN"

Indeed there's no need for CAs just as there is no need for ICANN

4 days ago

1vuio0pswjnm7

*acceptable

4 days ago

__MatrixMan__

Stop validating names, start signing content.

Scan a QR code when you open the bank account, add it to the keys you trust as authorities on financial things. When your browser runs accross data tagged "financial" it checks the trusted keys in that domain and renders it only if it was signed by a key that is trusted in that domain (the domains prevent your bank from abusing that trust by causing you to see political ads or some such).

If you ever see something that you suspect is malicious, you untrust whichever key signed it and take it up with whoever asked you to trust their key. If you verify it's malicious, gossip the bad keys to your friends so they can distrust also.

4 days ago

diarrhea

That solves integrity but not confidentiality. It does not protect against MITM.

4 days ago

__MatrixMan__

It does protect against MITM. A man in the middle can pass the content along or they can refuse to do so but they can't forge a signature.

If confidentiality is required, well you already have a public key that you're using to verify content, then the content can say: "reach us at 196.7.3.45" and then you encrypt communications to that address with the same public key you use for validating content.

Or maybe they'll specify, in the content, that you should use a different key for that, but either way the chain of trust is preserved.

This would of course all be protocol level stuff, handled by the browser, not a human. They just have to maintain a list of keys they trust.

4 days ago

pixl97

>It does protect against MITM. A man in the middle can pass the content along or they can refuse to do so but they can't forge a signature.

Um, I don't think you understand this problem near as good as you think you do?

>A man in the middle can pass the content along or they can refuse to do so but they can't forge a signature.

So where do you get this signature exactly so they don't MITM you the first time?

> well you already have a public key that you're using to verify content,

Who what where when why? Where did I get this public key? Who provided it? Is this my public key or their public key? How do I trust it?

>They just have to maintain a list of keys they trust.

So you've solved exactly nothing.

4 days ago

__MatrixMan__

> So where do you get this signature exactly so they don't MITM you the first time?

That's always going to depend on why you're trusting them in the first place. If somebody handed you a business card the key should be on the card. If it was a recommendation from a friend you should use whatever key they use.

If you're expecting to just type random IP addresses into your browser until you hit something and then be told that you should trust what you see... Well that's not in the cards because you shouldn't trust what you see in that scenario.

We already don't type in URL's, we send links to each other. It really wouldn't be so difficult to change the UX so that when we delegate trust in that way it's public keys that are being trafficked instead.

> So you've solved exactly nothing.

Removing untrustworthy third parties and the need to revoke trust in them on the user's behalf is the solution. Users don't know what a CA is or how they should evaluate its trustworthiness. We need a system where they're instead evaluating the trustworthiness of things they understand, like other people.

When they get burned they should have the ability to immediately revoke trust in whoever burned them. This thing we're doing where we expect them to wait around while some nerd pushes the updated list to them and to blindly trust that that nerd isn't curating that list with ulterior motives is totally bonkers.

4 days ago

tptacek

You are describing key pinning. You have invented QR-code-based key pinning.

4 days ago

__MatrixMan__

My intent is to provide users with the ability to revoke trust if in a source of information if they realize it is malicious, and to gossip that revocation among their peers.

RFC 7469 appears to be more geared towards service providers attempting to protect their users. Laudable, but we're still assuming we know something about who the user deems trustworthy, which I think is presumptuous.

It's one thing to suss out cases where somebody is lying about their name, that's pretty cut and dry. But ever since web2.0 there's no longer much of an association between the hostname and the trustworthiness of the content. If we instead provided a means of validating the content's provenance it wouldn't much matter which host was involved in its delivery.

4 days ago

EraYaN

Well the user certainly doesn't know how to determine trust, otherwise scams and social engineering wouldn't work.

3 days ago

lokar

So, have each domain run its own root CA (scoped to the domain), and have users trust them one at a time when they have cause to interact with them?

4 days ago

xp84

In the modern day that's arguably fine, most users only interact with a few actual companies online (though many of them haphazardly use dozens of domains and dozens of unrelated certificates).

The only 'real' problem though with this approach is it requires a trusted path for the bank to get the "JP Morgan Chase root CA cert" into my hands (like a QR code they hand me physically). Serving it up over http: or over an unvalidated SSL context at first use seems to defeat the purpose since I could be being MitMd the first time I hit chase.com. In practice most people would be angry that they couldn't use the bank's website if their new phone or PC didn't have the certificate yet, and if places start advertising their cert QRs everywhere, it will normalize the idea that you add a CA certs all the time, leading to CA cert QRs being on billboards and bus stops and eventually fraudulent ones would be snuck in that way.

4 days ago

GoblinSlayer

QR codes are already everywhere, and are even used to distribute software, it's already normalized.

4 days ago

xp84

Sure, but if "scan this and do FaceID and click 'Yes, I trust this CA'" was as common as "Accept terms & conditions" or "Allow necessary cookies" or (the worst:) "Check your email for the six-digit code" then people would be installing CAs so often that everyone would have dozens of extremely shady ones installed at all times.

3 days ago

__MatrixMan__

Yes to smaller scopes, with keys passed of during interactions that organically arise, preferably face to face, but maybe not always. No to making domain names be the thing that's being trusted.

We should push this into the application layer, so rather than scoping the keys to domain names let's scope them to something relevant to whatever the user authentically trusts. Something to do with their intentions for using this app. Because most users don't even know what a CA is, but they understand that most of the time they'll need to trust somebody. So let the app decide what that's going to mean because those dynamics are always going to depend on the situation.

So the user (or OS) would pass an object at runtime to indicate which keys they want the process to trust for this session. Typically it'll be another human or a company, not a server name, but I suppose it could also be a device. Something that can guard a key pair and be identified by its ability to produce valid signatures. That way you're just not relying on globally unique human friendly names at all. Doing so puts you in a cursed corner of zooko's triangle.

Users can assign a pet name for whoever they're trusting at the time they're configuring that trust since that's the moment they're best able to scrutinize the trustworthiness of this individual or company or device. Not later on when they're installing software updates and have no context for the decisions they're making.

This way your application can work over alternative transport layers: carrier pigeons, lobbing an SD card over the border wall, whatever, and doesn't break just because the other party has a different name on the new transport. Relevant for when the internet goes down and you still want it to work with other hosts on the LAN or the local mesh or whatever.

4 days ago

chrisjj

> When your browser runs accross data tagged "financial" it checks the trusted keys

'Cos no scammer would ever be so sneaky as to leave off the tag... /s

> it up with whoever asked you to trust their key

'Cos no scammer would ever pretend to be that person... /s

4 days ago

__MatrixMan__

Well if you find unsigned content, you should probably just not show it to the user at all.

As for tagging... We could use something like color to indicate domain. So if your well trusted plumber is giving financial advice maybe it shows up, but not in the "financial" color? Idk it seems like a solvable UX problem.

4 days ago

chrisjj

Anything relying on user recognising some tag colour seems like an unsolvable UX problem to me.

4 days ago

embedding-shape

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.

4 days ago

bluehatbrit

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.

4 days ago

monsieurbanana

> 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

4 days ago

[deleted]
4 days ago

chrisjj

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

We need to recognise that is impossible. Making getting into a bank account easier for the owner does so for everyone else too. And also makes it easier for the bank to ditch the secure fallback - a building.

And ask why vendor-indepedent trust shops aren't sprouting in every locale. Answer: same security problems.

We are well and truly doomed to living in a scammers' paradise.

4 days ago

venzaspa

But my bank has no physical buildings whatsoever?

And also, how is my bank supposed to safely generate and distribute a key that we can exchange securely if an organisations who's primary purpose to generate these keys couldn't even manage to do so.

I have plenty of other services I use too. Suddenly my phone company, doctors, supermarket has to create and distribute keys for me to go around collecting so that I can securely talk to them and we have to do this in a way that stops anyone from swapping those keys out before they get to me.

I mean the current system isn't perfect, but it's a Utopia compared to that.

4 days ago

GoblinSlayer

Then the key is delivered to your door with the contract and bank card.

4 days ago

chrisjj

Yes. As I said, we're doomed.

4 days ago

__MatrixMan__

Presumably you had some reason to trust the bank in the first place. Maybe a recommendation from somebody you know? Get the key from them.

The current level of ease is not being achieved securely. If it's not possible to do so, we should walk it back.

4 days ago

pixl97

> Maybe a recommendation from somebody you know?

This works great for something that are obvious. "Hey, this plumber was good and cheap".

The problem is this completely and totally breaks down where things are obscure. When things turn from "reals" to "feels" the amount of manipulation a bad actor can perform is great.

4 days ago

__MatrixMan__

Agreed, but what would you propose we do about it? The current pki just washes its hands of the situation and restricts itself to only validating server names. Which probably made sense back when the people running the servers were also the authors of the content those servers served, but now it's a false sense of security.

I'm trying to do more than that. If we validate claims made by the content as anchored in the user's trust graph, we don't have to care which server it came from--it's trusted for different reasons. Are you saying we shouldn't try just because it's hard?

4 days ago

pixl97

It's not that we shouldn't try, it's that it gets depressing really quick because most of these efforts will fail for reasons of human behaviors.

Trust doesn't scale, and the internet is something that operates at scale.

All of the systems you're talking about have already existed and been tossed by the wayside. People could always have exchanged things like GPG keys, and yet here we are in a world in which we don't.

The vast majority of your users do not want to manage trust. They want it to be taken care of. Almost no one gives two shits about a trust graph, except maybe nerds like you or me. Exposing the average person to these concepts doesn't increase trust. It just makes the world more confusing for them.

This starts to delve into the monkeysphere and how many 'close' relationships people can form. If we have just a few things we trust it might work. Once you get over 15 or so it starts breaking down, and at 100 it's out of the question. Again, trust works on our evolutionary monkey brain that is used to a small tribe and systems requiring personal trust do not scale past that.

Trust graphs are worthless when they are built on a house of security lies. It's easy to get kicked out of them, but nearly impossible to secure your systems to the point you can keep attackers from stealing them and pretending to be you.

4 days ago

whywhywhywhy

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.

4 days ago

bee_rider

That could be kind of interesting.

It does seem to lean on the physical bank-front being trustworthy (no evil clerks).

If we’re meeting physically to set up connections, we could even use something like a one-time-pad, and be information-theoretically secure. How many bits does your bank really need to send you securely anyway?

4 days ago

u8080

Like...TOTP or FIDO2?

4 days ago

lirolero

[dead]

4 days ago

InsidiousWombat

Zero would be hard but we could have signed CA cert put into DNS record and from that the org itself can create the certs for that domain.

Then at the very least one of the CAs leaking isn't automatic compromise, as leaking the key still doesn't make you insecure, that would also require intercepting and changing DNS records

4 days ago

lukewarm707

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.

4 days ago

Ohentis

I quite like how i2p does it. Public keys are part of addresses, human readable names are user defined and shared but static.

4 days ago

BirAdam

or, perhaps you need more so that one being stupid doesn't effect so much.

4 days ago

epanchin

Each CA is like a padlock locked in series with other padlocks. The weakest padlock is the only one that matters.

4 days ago

akerl_

In a world with CT logs and CAA records, is that actually the case?

4 days ago

zbentley

Yes, because as we are seeing with this incident, plenty of things don’t check CT logs (and thus can still be hacked if CT isn’t published for bad certs), and CAA records are fundamentally advisory.

4 days ago

akerl_

You said "yes" but then answered "no"?

Like it seems your disagreement is that you're pointing out there are systems today that trust WebPKI CAs but don't validate CT/SCTs. I'd agree that that's an issue and I want those systems to join the world where CT exists.

As I said, in a world with CAA records and CT logs, this isn't an issue. If your CA wants to be in root trust stores, you have to put your certs in CT logs. CAA records are "advisory" in the sense that we mandate that root-trusted CAs obey CAA records and that they write cert issuance to CT logs, so a trusted CA that violates CAA records has to tell on itself in a very detectable way.

4 days ago

Scott_Helme_

I'm just not sure that I can see a world where all devices that rely on TLS/PKI are capable of CT SCT validation. Look at the issues we have around stale root stores still happening when we have validity periods of literally decades. Some of these clients out there simply won't ever be able to keep their trusted log store updated.

Refs: Part 1: https://scotthelme.co.uk/impending-doom-root-ca-expiring-leg... Part 2: https://scotthelme.co.uk/complexities-chain-building-ca-infr... Part 3: https://scotthelme.co.uk/cross-signing-alternate-trust-paths... Part 4: https://scotthelme.co.uk/building-certificate-chains/

There's also the Let's Encrypt root migration that was postponed due to legacy devices: https://scotthelme.co.uk/lets-encrypt-postpone-isrg-root-tra...

4 days ago

akerl_

Similarly to vaccines, part of the magic is that you don't need "all", you just need "most".

Right now CT support is rough for things outside of browsers; it's a pretty fair bet that if you pick up a command line tool or library, it is not checking SCTs, and that makes those workflows vulnerable. If we flipped that, and the average command line tool or library did validate by default, it would dramatically alter the risk calculus for attackers.

4 days ago

Scott_Helme_

For a scenario like this it doesn't help a given client what % of the ecosystem does SCT validation or not, all that matters is whether that client does it.

I agree that more SCT validation across the ecosystem reduces the value of a mis-issued certificate to an attacker, but a lot of value still remains.

If 90% of clients did SCT validation, an attacker can still succeed against the 10% that don't, there's no herd immunity.

4 days ago

lelandbatey

You said:

> In a world [where] CT logs and CAA records [exist]

And we are in that world. CT logs and CAA records exist. They are around. What you are implying you said is:

> In a world with CT logs and CAA records [and everyone/everything reads and validates them]

We are not in that world, and we probably won't enter that world for the next 15 to 20 years because we are also in a world where folks expect networked devices to be able to communicate (mostly) securely without constantly communicating with a centralized set of clearinghouses arbitrating "what is secure".

As we are discovering, our flawed systems may need broader rethinking, especially if we want secure communication (with all the epistemological ball of yarn that comes with it) without constant total centralization, which seems to be the approach-of-least-resistance lately.

4 days ago

caaqil

> 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.

4 days ago

Gabrys1

I would assume that the client would need to validate the certs against more than 1 trust path (for the comment to make sense)

4 days ago

jasonjayr

> 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!

4 days ago

__MatrixMan__

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.

4 days ago

tonyhart7

"let the user install their own certs should not exist"

are you sure that this is not opening to more attack vector ?????

4 days ago

__MatrixMan__

Yes. We're giving the user the ability to protect themselves from the vendor.

Your logic only makes sense if the user is your enemy.

4 days ago

mitxela

I am the vendor and the user is my enemy. Fortunately I get to decide his capabilities and not the other way around, so I win.

4 days ago

JoshTriplett

The device is in the user's possession, so you'll lose eventually, it's just a matter of how long it takes.

4 days ago

esseph

Oops, claude just cracked your system!

4 days ago

tempfile

Which is better - two attack vectors that can be mitigated by an expert, or one attack vector that can't be mitigated by anyone?

4 days ago

andix

You can even install your own certs into the golden cage (also known as iPhones).

4 days ago

LtWorf

Users aren't supposed to be considered an attack vector. I don't care what the advertisers think.

4 days ago

axus

The infected devices on the LAN are an attack vector, though.

4 days ago

mapontosevenths

If I want my IOT garbage to be infected that's between me and my local botherder.

The vendor loses the right to decide how my things are used the minute they take my money.

4 days ago

mitxela

Not in the EU. If devices you made get hacked in the EU and you have a business presence there, you're liable for the resulting damages under the Cyber Resiliency Act. If you don't notify the authorities promptly upon discovery, you might also be criminally liable.

4 days ago

esseph

What if your company doesn't exist anymore, and you have checks billions of devices out there that won't be getting firmware updates?

4 days ago

mitxela

Not sure. You're probably out of luck in that case if someone can't prove that your out of business was a manipulative attempt to avoid liability.

3 days ago

antonvs

Users are attack vectors in one of the more commonly successful attacks: social engineering.

4 days ago

gus_massa

Like: To verify you are human, clik on the two ducks and install this new certificate.

Bonus points if it's during a fake job interview.

4 days ago

mitxela

I did a job interview in a VM once and my legitimate accounts on some platforms got banned for using them in a VM. So you can't even protect yourself.

4 days ago

no-name-here

> my legitimate accounts on some platforms got banned for using them in a VM

Which legitimate accounts get banned for use in a VM?

That seems like an incredibly important thing I should know as I use legitimate accounts in VMs.

4 days ago

Y_Y

Bullshit. How would a website even detect a VM?

4 days ago

jasonjayr

They can ask your web browser what GPU you have.

If it says QEMU, the jig is up.

See here:

https://developer.mozilla.org/en-US/docs/Web/API/GPUAdapterI...

Live demo here:

https://www.checkadevice.com/tests/gpu/ (random web site that came up in a quick search)

You have to make sure your VM + GPU hide or falsify all identity information. They just have to find one API or signal that you missed that reveals it.

3 days ago

mrheosuper

RCE then run an exploit to break out VM. If it's success, then you are on VM.

3 days ago

antonvs

Absolutely. "To access our secure site, install this certificate as follows..."

4 days ago

ruszki

Yes, however, this causes people who know what they do suffer because of people who don't. My question is whether this affects innovation, because the same thing at different places definitely does, and we actively fight against this exactly to help innovation.

4 days ago

LtWorf

Right. Let's no longer sell computers then.

4 days ago

mschuster91

> > 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.

4 days ago

cromka

> how many of these devices will have the compromised CA root certificate in place?

I have two Google devices at home and both are compromised still. If Google can't handle pushing out a quick cert chain update, then I truly doubt other manufacturers can.

4 days ago

londons_explore

I'm rather surprised google doesn't require cert pinning for all connections to any google server....

4 days ago

ezoe

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.

4 days ago

Sayrus

Not always true. I have IoT devices where a valid certificate is useful because the original host doesn't exist anymore and the certificate isn't pinned.

Flashing the devices require direct UART/USB access which may involve soldering, if it even exists. This leak is gold for those because these devices will never get an updated CRL.

4 days ago

panarky

It's easy enough to apt upgrade, and curl shows it's not vulnerable.

But what about python pip and node and bun which bundle their own certs?

And then you'll have a compiled binary like Claude Code, which was built with bun, and has its vulnerable certificates bundled in, ignoring the system certs.

4 days ago

Scott_Helme_

Yep, it's a long tail. Anything that ships it's own CA bundle will ignore whatever you fix at the OS level. Those bundles are generally root-only and don't have revocation checking, so they can't block a bad intermediate cert.

The fix can only come from the tool shipping an updated bundle, or if there's some way you can point it at the OS store once that's updated.

4 days ago

justincormack

Some of them seem to do some cert pinning

4 days ago

Scott_Helme_

Just imagine how much stuff you're going to be able to MiTM now!!

4 days ago

happyPersonR

If you just take them offline you can do this without having to rush.

Just change your WiFi password, don’t give them the new one and don’t update them lol.

4 days ago

junon

You can't hardly use the TVs then. I've seen TVs that don't let you use the HDMI port without it being connected if you have a streaming dongle connected. Hopefully that practice has mostly died off now (Samsung used to do this on some models, iirc), but it's still a risk and only kicks the can down the road a bit.

4 days ago

happyPersonR

Yeah those devices also need to be “opened up” as it were. Some of them already have been. Just think about it like fermented whiskey. Leave them alone for a month or two until they run an opensource firmware you control.

4 days ago

geeio

I have a terrible LG smart TV (that seems to connect to WiFi that is not mine), but I would instantly return a TV that did this.

4 days ago

[deleted]
4 days ago

binyu

[dead]

4 days ago

irusensei

Okay hear me out. People are complaining about unpatcheable IOT device and thats indeed concerning. But can’t we use the bad keys to generate seemingly value certificates that can be used to jailbreak these devices?

EDIT: seems its already happening? https://x.com/otomir23/status/2112697830687047918

4 days ago

no_time

>yandex-station-lite

At last, russians got better at installing wiretaps. Reminds me of the old joke that goes "How do you know there is a soviet made bug installed in your home?

There is an extra wardrobe."

4 days ago

Scott_Helme_

Yeah this is absolutely possible, and while they are a few good opportunities like this, it also means that someone else can decrypt all of your traffic in the same way.

4 days ago

reisse

Yeah, it's happening in the wild already. Seen more cases like that.

4 days ago

cromka

I really hope someone manages to root the Google Home speakers. Been waiting for ages to be able to repurpose them for Home Assistant integration!

EDIT: just whipped up a quick hacking session with DeepSeek and, indeed, Google hasn't updated the cert chain yet on these devices, I am sniffing everything with MITM! Let's see if I can put that to use and gain root. At the very least, a mock endpoint server is possible now for use with Home Assistant.

4 days ago

mgoblue5453

If you find something, please post about it! I was trying to do this same thing literally last weekend

3 days ago

WalterGR

Related: https://news.ycombinator.com/item?id=50166579

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

4 days ago

bombcar

Of COURSE it's easy to crack, 4 isn't even prime!

4 days ago

DavidSJ

In their defense, they were probably targeting the Mersenne prime 2^2 - 1 and just made a typo.

4 days ago

throw0101a

> 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.

4 days ago

zapkyeskrill

Two, and only two?

4 days ago

throw0101a

Well:

    There are actually only two hard problems in computer science:
        0) Cache invalidation
        1) Naming things
        4) Asynchronous callbacks
        2) Off-by-one errors
        3) Scope creep
        6) Bounds checking
* https://news.ycombinator.com/item?id=38806257

Also: https://martinfowler.com/bliki/TwoHardThings.html

4 days ago

amoss

You have almost understood the joke.

4 days ago

floydnoel

two is off-by-one from three btw

4 days ago

arzmir

But the cache invalidation failed

3 days ago

motionlessveloc

[dead]

4 days ago

wolfi1

ok, it's joke. but for those who don't get it: elliptic curves don't need primes

4 days ago

joshuat

It’s really impressive no one caught their three previous private key values

4 days ago

bcvvvy

I suspect they did but it wasn't publicised.

4 days ago

chompychop

They should have gone with 57. Everyone knows it's prime.

4 days ago

bee_rider

I wonder if anyone wants to over-analyze this joke to come up with the best candidates for the number? 57 falls too easily to the quick divisibility by 3 trick, IMO. (I realize over-analyzing jokes always makes them unfunny but we can pick the best number here and nobody has to know).

4 days ago

samatman

Me! I'm in!

Most-nearly-prime number under 100 is.... 91.

13 x 7. You've either memorized that or you're going to have fun deciding it's not prime. And if you did times tables up to 13, congratulations, you're special.

4 days ago

sejje

7 is an easy check, not because i did them up to 13.

because 10x7 = 70, i'm left with 21. everyone knows 21 is divisible by 7.

4 days ago

bee_rider

I think 91 is a strong contender. Sejje has a way of working it out, but of course any small non-prime will have some trick to it.

4 days ago

kachnuv_ocasek

Alex? You're alive after all?

4 days ago

delibes

4 days ago

lta

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

4 days ago

Zeetah

The number 4 is very famous.

https://xkcd.com/221/

4 days ago

ohuf

it doesn't have to be and it actually never is: this isn't RSA, it's an elliptic curve algorithm. if you'd have read the article, you'd have understood this

4 days ago

walrus01

Hey, that's the same combination I have on my luggage!

4 days ago

wowczarek

Good job the Earth doesn't have an air shield protected by this byte or we'd be Skroob'd.

4 days ago

gagan2020

"Importantly, none of the affected intermediate CAs were deployed in production, with the exception of one. Furthermore, none of these intermediate CAs, including the one deployed in production, have issued any end-entity certificates. This has been confirmed through our internal analysis and corroborated by publicly available Certificate Transparency records on crt.sh."

This statement is more discerning than anything else. It raises question about why this certificates exists in first place if not deployed since 2025. Is it deliberate attempt to do compromising of system?

In recent times, Indian Government is becoming quite rogue and don't follow the said procedures. So, it might be related to that as well.

4 days ago

jopsen

If this is an attempt to put in a backdoor, it's remarkably dumb.

CA has the key, if it wanted to give someone a backdoor, it wouldn't issue a weak key.

3 days ago

gagan2020

Correct, Now my comment seems dumb to me as well.

19 hours ago

amluto

For all that DNSSEC is crap, DANE would at least mean that a domain is only vulnerable to failures of the authorities relevant to the domain.

Meanwhile there are two less invasive changes that really ought to happen:

1. A clean way for things like curl and Python to start checking CT logs like Chrome does.

2. Name constraints. It’s long past time for the CAs of the world to have name constraints enforced. A CA that is not appropriate to use for .com should not work for .com. A CA that is not appropriate to use for .ae should not work for .ae. And the CA/B Forum should should requiring that all newly approved roots and all newly signed intermediates have appropriate name constraints.

4 days ago

Scott_Helme_

1. They could do this now, the implementation exists publicly, but I think it would be better at the OS level like upki for revocation: https://discourse.ubuntu.com/t/addressing-linuxs-missing-pki...

2. I don't think such constraints would really work. My company might have 4 domains on different TLDs and then end up needing to use 4 different CAs. Geography doesn't really apply on the Internet.

4 days ago

amluto

> I don't think such constraints would really work. My company might have 4 domains on different TLDs and then end up needing to use 4 different CAs. Geography doesn't really apply on the Internet.

I'm not sure it needs to map out this way. In the last few years people have gotten used to the idea that ACME means that the client interacts directly with the actual CA, but there's another model that at least used to be widespread: certificate brokers. Right now, I tell my ACME cliejnt to get me a Let's Encrypt certificate, and Let's Encrypt validates my request and makes it happen.

But what if I instead tell my ACME client to talk to a broker? The broker would arrange with various CAs for whatever portions of the overall namespace it supports, and it would give me TOS that those CAs find acceptable. And it would then forward my requests to appropriate backend CAs, and those backend CAs would (and would be required to by CA/B rules) validate my request. And I'd get a cert without particularly caring who the backend CA is.

The root stores would treat the backends as fully responsible for validation.

I don't know whether the current ACME model actually supports this very well. The tricky bits I can imagine mostly involve ACME account identification, CAA record details and dns-persist-01. If I authorize my ACME account (held with the broker) for my domain, the backend needs to be able to validate, in a manner that the broker cannot forge except to the extent that it's unavoidable. So if I have account 12345 (just an identifier), then I think the backend should be able to trust the broker's assertion that the client really did convince it (with replay protection) that it's the client for account 12345. But if I have an account where the account itself indicates a public key, then the broker should not be able to forge it.

In any case, I think it's vaguely ridiculous that, right now, the UK government has essentially no say in whether Let's Encrypt may issue certificates for .gov.uk domains. (This is just an example.)

4 days ago

Parodper

> My company might have 4 domains on different TLDs

Your CA would have a root cert per TLD. Alternatively, we get rid of non-cc TLD (and leave ccTLD only for truly geography-bound organizations, like governments).

4 days ago

Scott_Helme_

Wouldn't that be almost 2,000 root CAs?

Also if it's the same CA operating a bunch of different roots for different TLDs, they're likely to just make the same mistake that impacts them all. Sadly, I can't see anything like this working.

4 days ago

alphager

1 already exists. You don't check the ctlogs; the ctlogs as their signed timestamp to the certificates. All you need to verify that a certificate has been published is to verify the timestamp signatures.

4 days ago

creatonez

> 2. Name constraints. It’s long past time for the CAs of the world to have name constraints enforced. A CA that is not appropriate to use for .com should not work for .com. A CA that is not appropriate to use for .ae should not work for .ae. And the CA/B Forum should should requiring that all newly approved roots and all newly signed intermediates have appropriate name constraints.

This suggestion seems to be a symptom of thinking different TLDs represent different levels of trustworthiness... which hasn't been the case in ages

3 days ago

tptacek

This is everyone's first pitch for why DANE would improve the WebPKI. But it doesn't make sense as risk management. It assumes that the most important TLD operators, .COM especially, are trustworthy. But we know .COM is not trustworthy, at all. And it gets worse when you leave the US. In much of the world, state organizations have explicit de jure control over all the popular top level domains.

This is a simple point but there's something subtler underneath it. Strict name constraints are an obvious seeming improvement to the WebPKI. I like them too. but eMudhra isn't just an Indian sovereign CA; it's an important global commercial vendor. On the other thread about this incident, 'agwa pointed out that an eMudhra subsidiary does a lot of the certificates for US universities.

You're still going to end up with the same concentrations of risk, because large CAs are going to want to issue in the most popular domains.

Don't get me wrong, anything that ratchets up the difficulty of running a CA (without unduly burdening LetsEncrypt) is a positive as far as I'm concerned. I'm just saying these are hard problems.

4 days ago

tclancy

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.

4 days ago

skinfaxi

The more cynical among us think that is part of it. Remember when Bush Jr. became a bumbling idiot for a few years?

4 days ago

supernes

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.

4 days ago

the_why_of_y

If the application uses p11-kit, or a TLS library that uses p11-kit such as OpenSSL, NSS, or GnuTLS, then Flatpak should automatically give it access to the host system's CA certificates.

4 days ago

Ambroos

My oven (which has a camera and WiFi, don't ask, it's a great oven otherwise and doesn't exist without WiFi) received a software update this morning. I can't help but wonder if it's related.

4 days ago

M2Ys4U

Either that or it's running PHP

4 days ago

chrisjj

You'll know this evening when it demands $10 to release your meal.

4 days ago

Pesthuf

No, that's just them patching out a feature it used to have so you buy their newest model instead.

4 days ago

sam1714

Giving them way too much credit... it's probably for a bug discovered in 2024.

4 days ago

jesuswasjew

I see you love technology.

4 days ago

seanalltogether

Quick question for the crypto experts. I thought that the goal of a true random number generator was that all values between 0 and MAXCOUNT are equally likely, and therefore all private keys between those values are equally likely. Is this not true? If people are going to attempt to brute force your key, don't you want the floor to start at 0? If the floor is higher, won't the brute force start higher too?

4 days ago

CSMastermind

It's not that 4 isn't a valid seed (though insanely unlikely) it's that once I know your values weren't picked randomly because I guessed one of them I can easily figure out the others.

In this case one cert gets defeated and you go the odds of that number being that low are 2^-384. Essentially impossible if it were randomly selected. It's much more likely you didn't choose that at random so I start guessing a bunch of other low numbers for your other certificates and find them quickly.

4 days ago

chrisjj

> It's not that 4 isn't a valid seed (though insanely unlikely)

I have an insanely unlikely unique car licence plate number to sell you.

4 days ago

nomel

> Essentially impossible if it were randomly selected.

You would say the same of any seed I gave you. You've just artificially assigned this number with some sort of emotional importance.

4 days ago

ooopdddddd

There are several very practical reasons (and not emotional) reasons to expect that "4" is the result of bad implementation.

I can think any number of programming mistakes that will result in a supposed (pseudo-)random number generator to be be biased to very small numbers. I have made such mistakes myself.

By any reasonable estimate, the probability of randomly picking a number below 256 is MUCH smaller than the probability of someone having made a mistake.

4 days ago

palata

So you say that programming mistakes make small numbers more likely to be picked, and therefore seeing a small number is less likely than seeing a bigger number?

That doesn't make sense, does it?

4 days ago

echoangle

The claim is “if I generate a random number with equal distribution in a gigantic range and get a very tiny number, it’s more likely that there’s a mistake somewhere than that I just got this number randomly”.

4 days ago

palata

Which is... wrong?

If you generate a random number with equal distribution in a gigantic range, 0 is just as likely to happen as any other number in the range, right?

That's the meaning of "equal distribution".

3 days ago

echoangle

I think you misunderstood the point.

In a working RNG, every number has equal probability.

But there's a probability <1 that the RNG is working as it should and a probability >0 that the RNG erroneously generates numbers that aren't equally distributed.

And because the range of possible numbers is so large and the probability of a mistake is not that tiny, a small result is more likely to be an error than a random result that happens to be small.

If I write a program to flip a coin and it generates heads 30 times in a row, is it more likely that this is just a random result or that I made a mistake in my programming?

One probability is 2^30, and the probability that someone makes an error resulting in this pattern is probably higher than 1/2^30.

3 days ago

[deleted]
3 days ago

palata

Right, ok I get it now!

3 days ago

creatonez

Huh? Smaller numbers are a smaller part of the space.

3 days ago

palata

So if I take a random number between 1 and 100, you think it's less likely that I pick 4 than, say, 83?

3 days ago

chopin

No but it's less likely to pick a number <10 than >50.

2 days ago

palata

So what? It's more likely to pick a number <10 than a number between 42 and 44.

2 days ago

Quinner

If you cherry-pick that statement in isolation you're technically correct. But in practice the whole comment you're replying to is actually correct, in this case if you saw the number four, one would be correct in concluding that's unlikely and searching other low digit numbers, the proof of that is that it happened here.

4 days ago

palata

I think they are right and you are wrong. If I understand properly you say:

"Playing roulette, in isolation after RED - RED - RED - RED - RED, there is not a higher chance of getting BLACK than RED in the next run. But in practice, one would be correct in concluding that it will probably be BLACK. The proof is that in our test, the next run gave BLACK".

Said differently, it was not particularly unlikely that the number would be 4. But maybe it got the attention of the person who decided to try assuming that it was a mistake, and they were indeed lucky.

4 days ago

gizzlon

I think it's more like seeing RED - RED - RED - RED - RED and concluding the roulette is broken

3 days ago

palata

My understanding is more that it's like seeing RED - RED - RED - RED - RED and wondering if the roulette is broken, testing it, and realising it is.

The hypothesis is "I see a small number, I can test if it is broken or not... oh it is". Could totally have been "no it's all good, just happened to be a small number".

3 days ago

eatkd

They had multiple keys and 7 of the keys were numbers less than 256.

4 days ago

nomel

Yes, and that is what's statistically impossible. They said one cert.

> In this case one cert gets defeated and you go the odds of that number being that low are 2^-384.

4 days ago

palata

I don't see why you would get downvoted for that. You're right.

It just happened that that particular number got the attention of a human, which was luck. But in terms of statistics, this number was not less likely than another one.

4 days ago

wakamoleguy

Imagine you have a 3 digit PIN code. That’s 1,000 options to brute force. If you remove 000-009 as “too weak”, you still have 99% of the search space available. These numbers scale favorably as the private key size gets bigger.

In short, raising the floor doesn’t really hurt the search space meaningfully.

4 days ago

kstrauser

It also acts as a test case. "Hey seed-generator, give me a random number between 0 and a gazillion." "Does 4 sound good?" "No, it sounds like you're obviously broken."

In theory, all values would be equally random. In practice, some results are exceedingly more likely to occur when something's wrong with the algorithm.

While any given outcome of flipping a coin randomly N times is equally likely, if that series looks like [heads, heads, heads, heads, ...], then there's probably something other than pure random affecting the output.

4 days ago

adzm

You are technically correct, the best kind of correct! Though I have a feeling we'll never see a 384-bit CSRNG generate 352 0-bits in a row in this Universe's lifetime.

That said, a sanity check on the value somewhere in the code would indeed have prevented this.

4 days ago

superxpro12

Its more like every byte should have entropy in it. When you limit yourself to a single byte of entropy, you only have one byte of possibilities to guess (256 possibilities), when you should have had 384 bits of entropy, now you only have.... 8

Its the range that changes.

you can either try and guess the key from

range(0, 255) (which is easy!)

or

range(0, 39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319)

(it exceeds the heat death of the universe)

3 days ago

betterunix2

Yes, what matters is the size of the range, not the bounds on the range. Also keep in mind that in some cases private keys are not uniformly sampled from a range of integers; for example RSA keys, which are sampled from prime numbers.

More generally, it is common to sample a bit string and use that as a seed for a PRG, from which the private key is generated. So in that case the range is [0, 2^k] and what matters is the quality of the randomness. Unfortunately high-quality randomness is not always available, especially for embedded devices and rack-mounted "appliances."

4 days ago

himinlomax

IIRC in RSA the key, a prime number, is selected between 2^(bits-1) and 2^bits, or iow it always starts with a 1₂.

4 days ago

saulpw

Yeah this was my impression too, I thought it was structurally impossible to have a private key like "4"?

3 days ago

perlgeek

It seems that somebody / something only created a single byte of randomness for each certificate.

4 days ago

mrheosuper

You are correct, there is a very slim chance that they are innocent. Small, but not zero.

I wonder how they would argue in court, like "I guess we were unlucky huh ?"

3 days ago

asveikau

This issue is highlighting a few things for me:

* It's absurd that Python, Go, or Node need their own certificate stores that need separate updates. (Probably OK for browsers because they seem very on top of updating them without user intervention.)

* This issue is especially bad when you consider deployment through containers, docker, etc. More parallel copies of vulnerable certificate stores. With docker volumes you could mount the host's certificates into the containers and get "update once" behavior but I doubt people are doing this.

* It wouldn't be too hard to implement CRLs against the OpenSSL certs as a script that runs from cron. I might end up doing this.

4 days ago

creatonez

> * It's absurd that Python, Go, or Node need their own certificate stores that need separate updates.

They don't. They use the OS certificate store, which on all platforms has already had this certificate revoked from it.

These runtimes are just doing this as a secondary precaution to deliver the revocations to anyone paying attention to version numbers for their runtime but not their OS. It's a bit of an odd approach, and for most of these projects it's their first time ever doing such a thing, but there's no big issue with it as long as it doesn't encourage complacency and is only applied to truly revoked certificates.

You are thinking of Java, which does actually have its own certificate store. Java users are familiar with how wacky this is, so there have been 3rd party attempts at a cleaner solution, such as the way RHEL keeps the Java certificates in sync with the system certificates.

3 days ago

asveikau

> They don't. They use the OS certificate store,

It appears to me they do, and that is why everybody is saying to patch your python, go, and node infrastructure separately from /etc/ssl.

> which on all platforms has already had this certificate revoked from it.

I know of two systems which this doesn't seem to be the case as of yesterday.

1. I manually edited cert.pm on OpenBSD. I don't see the OpenBSD errata yet.

2. As of yesterday Mac safari was still vulnerable when I tried.

3 days ago

creatonez

> It appears to me they do, and that is why everybody is saying to patch your python, go, and node infrastructure separately from /etc/ssl.

No it is not. As I said, the revoked key IDs is a supplementary list. It is not a root store. They do not add new root keys or transmit any public key material via this path. It may not contain data that is applicable to the root store being used, but it is perfectly permissible to relay a revocation 'out of band' as long as it represents a truly revoked certificate (CRLs and OCSP are out of band in the same sense)

Only in Java is the practice you're describing (full root store bundled with the runtime) widespread. (Edit: Node.js too, apparently)

3 days ago

asveikau

I guess everybody is lying when they say to patch nodejs and python's certifi in response to this issue. They should listen to you instead about how it doesn't work that way, and stay vulnerable to MITM.

3 days ago

creatonez

On second look, I guess I'm wrong about Node.js... shockingly, they follow in Java's idiotic footsteps and do use a builtin root store by default.

Is certifi used widely in the Python ecosystem?

3 days ago

asveikau

Update: The OpenBSD errata just dropped.

3 days ago

whatevaa

For python, certifi is still a thing and it still has it's own cert bundle.

3 days ago

geye1234

For those running Ubuntu, the following page tells you what to do. It's two commands:

https://ubuntu.com/blog/emudhra-ca-compromise-fixes-availabl...

4 days ago

tniemi

Someone used the Dilbert random number generator. https://www.random.org/analysis/

4 days ago

bsza

They clearly used the one from XKCD.

https://xkcd.com/221

4 days ago

nmeofthestate

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.

4 days ago

jhalstead

This question seems to be answered in another comment now: https://news.ycombinator.com/item?id=50180284

4 days ago

cvwright

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.

4 days ago

hnfong

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"?

4 days ago

consp

> 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).

4 days ago

nmeofthestate

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.

4 days ago

consp

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.

4 days ago

smaudet

And here you learn why security is often just theater (not saying a proper elliptic key is theater)...

It took less than a second to factor this key. Why not attempt, say, to factor every CA, with a budget of less than a minute each?

The reward/risk ratio is skewed so heavily in favor of trying, the only reason not to is this idea that it is "impossible".

It's clearly not, hence, the theater. Your locks don't have to work, they often only have to look like they work...

4 days ago

cowlevel

Factoring is for RSA. The best non-quantum attack against ECDSA is meet-in-the-middle brute force, with sqrt complexity. With RSA you can check if any keys in the world have any low factors and that might be interesting to do, even if you don't get any complete keys. With ECDSA the search is all or nothing and without an obvious starting point.

4 days ago

[deleted]
4 days ago

positive-spite

That's some criminal negligence right there.

8 bits is crazytalk!

4 days ago

joshuat

“4”

hey chatgbg what is a “private key”

4 days ago

Agentlien

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.

4 days ago

Hamuko

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”.

4 days ago

[deleted]
4 days ago

bombcar

Isn't 4 simply 2 bits?

Silly 2-bit outfit.

Maybe it's 3 bits.

4 days ago

patrickthebold

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.

4 days ago

thesz

Their other keys are also in 0..255 range. This is definitely not "really unlucky."

I guess they used (x `mod` 256) instead of (x `mod` (2^256)).

4 days ago

dlcarrier

I thought CAs automatically filtered out really low keys. There's a great Suckerpinch video (https://youtu.be/M1si1y5lvkk) about trying to purposely make the least secure HTTPS page possible, and Tom initially tried to choose a laughably-low number as the key, but the CA automatically rejected it.

4 days ago

gizzlon

think the key is actually long, it's just a bunch of 0s first.. 0000..4

3 days ago

charles_f

I reckon that was an attempt to fend off the enemy. "Everyone expects us to set 196 bits of entropy, but you know what they won't expect? A single byte!"

4 days ago

Qision

It feels like they chose the private keys by hand.

4 days ago

PalmPilotProMax

Artisanal cryptography. Hand-picked private keys salted with organically sourced nonces.

4 days ago

tclancy

Brooklyn-based. Guy in overalls and a waxed mustache hands out the bits.

4 days ago

bigfishrunning

Don't forget the leather apron, it's a messy job

4 days ago

donandon

Made with love

4 days ago

account42

Sharing is caring after all.

4 days ago

muvlon

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.

4 days ago

account42

All the numbers also have digits going from left to right on a keyboard. I think the manual "random" input theory is plausible.

4 days ago

[deleted]
4 days ago

muvlon

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???).

4 days ago

idontwantthis

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

I will never in my life not look up “for of vs for in” before writing a loop in Javascript.

3 days ago

Avamander

Some error code being used? FIPS mode gone wrong?

4 days ago

gquere

There's a beginning of an explanation in the mozilla bugrepor thttps://bugzilla.mozilla.org/show_bug.cgi?id=2083449

4 days ago

mminer237

Thanks. The relevant quote:

> We have done some preliminary assessment, there appears to be a flaw in the KGC script that was used on that specific day to create these ECC issuers. As for these ECC keys, our review of the KGC, assessment of the code and view of HSM keys so far indicate that a) a set of original ECC keys were created onboard as expected b) an approved deviation to our usual KGC to test a wrap/unwrap was introduced as these keys were meant for export for this instance c) a flaw in the code resulted in the second pair of keys being created onboard which were weaker d) these second pair of weaker keys were used by mistake to create the csr (because the key labels were similar) and signed by our root e) the CSR from these weaker keys were also sent over to Sectigo for cross signing (we verified the files sent over to Sectigo)

4 days ago

benmmurphy

`a flaw in the code resulted in the second pair of keys being created onboard which were weaker`

that sounds like the HSM is capable of generating keys in a range that is smaller than [1..group_order). such a feature makes no sense at all. or is this some kind of weird thing where people want to generate weak keys for 'testing' and HSM vendors have added such a strange feature. its actually satisfying to see someone get burned by this because such a feature should never exist and this is the reason why. if the HSM can generate keys in a smaller range (especially some arbitrary small range) then you are putting a lot of trust in the operators of the HSM. hopefully there are good audit logs and people actually check the audit logs every time keys are generated to make sure the keys being generated aren't from a special range.

4 days ago

GoblinSlayer

Maybe it follows openssl keygen process: you first generate private key, then export public key from it as k*G. In case of ecc private key is a random number, streamed from RNG, but RNG doesn't know for what purpose you generate a random number and can generate a number of any size.

3 days ago

walrus01

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.

4 days ago

Fabricio20

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/

4 days ago

mnx

I made test.key4.lol if you want to quickly check if your device/browser is vulnerable still.

4 days ago

childintime

1. So there was no certification of the certifiers?

2. This is stupidity that rises to the level of being malicious. There is no excuse, this was a fraud. Their business was literally to promise security and.. make a profit. Nothing was ever delivered.

4 days ago

greengreengrass

> promise security and.. make a profit

Some would argue the inherent moral hazard makes these opposing outcomes that cannot be achieved simultaneously.

4 days ago

missinglugnut

The company had a valuation of about $500million USD (converted from INR) before the incident. Now it's likely worthless, because of an incident that could have been prevented by hiring one competent person.

Moral hazard describes situations where an entity is incentivized to take undue risk. With an upside of saving a single Indian endineers salary and a downside of destroying the entire company, it's safe to say the market wasn't incentivizing this. They were just stupid.

4 days ago

greengreengrass

[flagged]

4 days ago

badgersnake

Like a web-of-trust model?

4 days ago

kristofferR

This is amazing! I've already been able to grab firmware images for two locked down ESP32-using devices that I struggled to jailbreak before.

4 days ago

maeln

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.

4 days ago

dist-epoch

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?

4 days ago

silvestrov

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.

4 days ago

karel-3d

Well humans should NOT glance at private keys! That is the whole point of HSMs!

4 days ago

consp

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.

4 days ago

karel-3d

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.

4 days ago

consp

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.

4 days ago

karel-3d

Yes there was something about key names in the write-up (which I cannot find now)

oh here

https://bugzilla.mozilla.org/show_bug.cgi?id=2083449#c11

4 days ago

silvestrov

But eMudhra wanted to (was required to) export the keys.

So using an HSM in the first place is a security theater. Or that this HSM isn't really an HSM since it allows for export of the private key.

The trusted enclave in a MacBook is more secure than this HSM.

4 days ago

karel-3d

There is something called "wrapping/unwrapping" - you encrypt the key, move it to the other HSM, and it unwraps it. So what moves around is encrypted. I don't know enough about HSMs to tell you if it's done using symetric or asymetric crypto, but no the key should not move around in the plaintext.

The write-up from eMudhra mentions something about wrapping/unwrapping ceremony failing.

4 days ago

xvector

Most HSMs used by CAs are pretty trash tbh.

4 days ago

amoss

Given the usefulness of this to anybody who knew about it between the ceremony and now - assume malice.

4 days ago

palata

If I was to leak a private key for malicious use, I would leak a good key that only I know.

4 days ago

sobkas

Any sufficiently advanced malice is indistinguishable from stupidity.

4 days ago

RetroTechie

The reverse is also true:

Any sufficiently advanced stupidity is indistinguishable from malice.

4 days ago

SAI_Peregrinus

Never assume stupidity for what can adequately be explained by profitable malice.

Never assume unprofitable malice for what can adequately be explained by stupidity.

4 days ago

GoblinSlayer

vipe coding

3 days ago

TazeTSchnitzel

Could HN start feeding submissions through Pangram so us human readers don't have to suffer with reading the nauseating AI-prose?

4 days ago

jadamson

It reads fine to me. If it is AI, I'd like to know which one so I can use it too.

4 days ago

stratos123

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.

4 days ago

TazeTSchnitzel

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.

4 days ago

karel-3d

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.

4 days ago

Scott_Helme_

It was all written by me and then I had final pass/tweak with Claude.

4 days ago

queenkjuul

So parts were generated... Unless you're saying Claude just went "lgtm, ship it"

4 days ago

Scott_Helme_

Fair enough, call it a mix if you like. I'm happy to stand behind every claim in my post, and if something's wrong, tell me and I'll fix it.

4 days ago

queenkjuul

I got the impression you did a very good job of writing it by yourself and adding claudisms just makes it feel less trustworthy and slightly grating.

Not calling you out or anything i just take don't understand what people think they're gaining when they add a dash of claudeslop to an otherwise well written article, it confuses me. You do you though

3 days ago

swiftcoder

Count yourself lucky - compared to Claude's prose, this is fairly readable.

4 days ago

marsven_422

[dead]

4 days ago

kyleomalley

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).

4 days ago

sam1714

My impression is "why" is political, with regulations like EU's eIDAS and other national digital sovereignty efforts setting the rules. It's not even WebTrust that's the target in most cases, it's the ETSI EN 319 series and ISO 21188.

Is it possible to convince the EU to say that, no, each one of your 27 member states isn't allowed to have a PKI? I don't think so.

4 days ago

andix

I'm wondering how many other private keys might be cropped to 32, 64 or 128 bit and much weaker than we think. Seems like nobody tested it yet. Otherwise the 8 bit would've been found within minutes.

4 days ago

cududa

It’d be absurd to believe nobody tested these, and that no individuals involved in relevant standards bodies were aware of this weakness.

4 days ago

andix

Those 8 bit certs were out for over a year, in the public. So nobody tested them. At least no independent security researcher.

4 days ago

mrheosuper

>. So nobody tested them.

A lot of people would benefit a lot from this incident if they keep it to themself

3 days ago

pixl97

We live in an absurd universe, the absurd should be expected.

4 days ago

floydnoel

"absolutely no way that there is a $100 bill on the sidewalk- if there were, somebody would have picked it up already"

4 days ago

Scott_Helme_

If you've got the compute power, it's easy enough to have a go at it!

4 days ago

__MatrixMan__

Is it legal? I thought the DMCA protects flimsy security of this kind by making it illegal to check if its flimsy.

4 days ago

andix

No idea what the DMCA says. It doesn't apply in most parts of the world, and also not where I live. So it's for sure legal somewhere.

4 days ago

[deleted]
4 days ago

Scott_Helme_

I'm not sure what laws apply to you where you live so you'd have to check, but you could also do this on pen and paper if that helps :)

4 days ago

andix

What I've heard about the DMCA, they will even throw you in jail if you crack the calculation in your head. Without telling anyone or writing it down. ;)

4 days ago

[deleted]
4 days ago

closetheloopdev

After my shock and anger subside, I can think more clearly now. I see many have mentioned using this to perform MITM on the IoT devices.

On the other hand, can we not utilize that to also protect the IoT devices? Can we not create a MITM proxy on our own network that proxies all of our IoT devices's traffic and then forwards them to the trusted HTTPS, MQTTS, ... endpoints upstream? Since the proxy already revokes these bad certificates, the upstream traffic should be protected. We should be able to revoke any other bad certs in the the future as well.

4 days ago

Scott_Helme_

Yeah, this would work.

4 days ago

closetheloopdev

Thank you! Working on the proxy now ...

4 days ago

[deleted]
4 days ago

zkmon

>> "These roots and issuing CAs have gone through independent audits for two years in a row and have been in browser trust lists since mid-2025".

the Audit part is scary. The same audit process might have cleared many other stuff.

https://www.einpresswire.com/article/951151580/emudhra-state...

4 days ago

icedchai

Scary perhaps, but not surprising. Most IT "audits" and security reviews are little more than performative box checking activities. I'm sure their documentation and screenshots looked great.

4 days ago

sashank_1509

I’ve tried asking Opus 5.5 but I don’t fully get the mechanics of this Certificate Authority stuff, wonder if someone can dumb it down here for me.

Here’s what I understand, every website sends some data encrypted by some key issued by CA and then the browser decrypts it first and then decrypts something in that message, to verify that Google.com, is google.com. I still don’t get why CA’s even exist, not sure what they are solving and how they’re doing it.

4 days ago

sethhochberg

The real problem the CAs try to solve is, basically, being a trusted middleman who vouches for other certificates.

The first time you connect to google.com in your browser and get the google.com certificate, your web browser has to decide whether or not to trust that cert. It would be very complicated if every website on the internet had to prove its identity via some sort of out of band process, so web browsers, operating systems, etc all ship with a collection of trusted, institutionally-important certificates which are allowed to vouch for other certificates that aren't yet known to the browser, OS, etc.

Your browser (or whatever HTTPS client) basically says "I've never seen this certificate before, but Lets Encrypt (or Digicert or whoever) says they trust it and we trust Lets Encrypt, so we can treat it as trusted". You as a user are trusting that whatever verification/validation process the CA does is at least good enough to ensure that the owner of the domain is the entity giving you a certificate for that domain.

This is obviously not a perfect system. These CAs can be compromised and break the trust, and they have various levels of validation of the people and companies who come to them and ask to be included in their vouching network, etc. But its a compromise to make sure that users can connect to a wide variety of internet sites, using encryption, without needing to somehow decide whether they themselves trust the certificate provided by the website.

The most important thing to remember is that in most cases the CA is not vouching for the quality or integrity of the website - they are just vouching for whether the person/group who controls the domain/server is also the person/group providing the certificate for encrypted communication with the website. Its a protection against MITM attacks and snooping, not a protection against phishing or anything else that might happen once the connection is established.

4 days ago

sashank_1509

I see thanks for the explanation.

The way it’s setup can any CA verify any website, so the weakest link of your CA basically allows an attacker to mimic any website you connect to?

4 days ago

sethhochberg

Generally yes - a compromised CA can be used to issue certificates for any domain, which is why when a CA is compromised the first step is usually for browser vendors, OS vendors, etc to immediately remove the compromised CA from their trust lists.

This is the compromise. In exchange for having the ability to easily establish an encrypted connection to pretty much any public web service, the tradeoff is that the entire public internet's encryption is only as good as the operations of the weakest of the big public certificate authorities.

4 days ago

Scott_Helme_

Yes, exactly this.

4 days ago

Scott_Helme_

I have an older blog post that goes in to a little detail on what a CA is and how it works: https://scotthelme.co.uk/impending-doom-root-ca-expiring-leg...

4 days ago

dang

Related ongoing thread: Your MCU Likely Escaped the eMudhra Intermediate CA Compromise - https://news.ycombinator.com/item?id=50183280

Previously: eMudhra intermediate CA compromise - https://news.ycombinator.com/item?id=50166579 - Oct 2026 (458 comments)

4 days ago

pwfisher

Test your browser and update your system's certificates: https://emudhra.we-have-a-problem.com/

4 days ago

dist-epoch

> 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?

4 days ago

skywhopper

These are intermediate roots, signed by trusted root certs, so the trust from your OS or browser is implicit to the roots it trusts.

4 days ago

akino_germany

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?

4 days ago

Uvix

Their other intermediates have issued certs.

4 days ago

JoshTriplett

At this point, I think it'd be reasonable to start saying "why do we trust intermediate roots, period".

4 days ago

[deleted]
4 days ago

teyc

Maybe they are a CIA front like CryptoAG

4 days ago

mitxela

From the author of "Passkeys are not a trap", and written by Claude from the looks of it...

4 days ago

Scott_Helme_

Hey what's wrong with Passkeys?!

4 days ago

mitxela

Lock-in, control

3 days ago

Scott_Helme_

I wrote my thoughts on that already: https://scotthelme.co.uk/passkeys-are-not-a-trap/

3 days ago

jesuswasjew

This does not look like blunder; more like espionage. The bigger guys are throwing emudra under the bus.

4 days ago

bstsb

“espionage” would involve a private key shared with the three-letter agencies, not a key anyone could crack in seconds

4 days ago

jesuswasjew

anyone = themselves. The key ceremony is supposed to be nuke launch level secure. That 4 pass many eyes.

4 days ago

Ohentis

I somewhat doubt it. Having many people, even at your own company, know your private key seems like a problem of it's own. In fact it's likely to me that no human has ever seen it until now.

4 days ago

unsupp0rted

Never attribute to malice what can be explained by ignorance?

In this case I wonder if this was an intentional wide open doorway to fraud

4 days ago

MiroslavPokorny

This wasnt malice its was laziness.

They literally were too lazy to type more than just a single '4'.

4 days ago

unsupp0rted

Either that or they intentionally wanted to create a publicly-accessible backdoor, with plausible deniability of laziness

4 days ago

[deleted]
4 days ago

sylware

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.

4 days ago

Scott_Helme_

It's an interesting idea, but how would a user make that decision on who to trust? As in, what 'things' could we look at to make that call?

4 days ago

sylware

gov and hype...

Personnaly, I think this is completely broken and even dangerous as it induce in normal people some kind of third-party trust which is worth nothing in reality.

In the end people are tricked in believing that information system security is really a thing and very strong/solid, which is, as we all know here, a fantasy, it does not exist. It is even worse when you have some 'people' pretending to sell 'deliverable security'.

3 days ago

gquere

Doesn't ACME+CT solve this threat?

4 days ago

tonymet

How did this get published? And for how long? doesn't google chrome / firefox run basic sanity checks before adding it to the CA-certs? Isn't there a top-level signature that verifies the CA-cert package?

4 days ago

russfink

> One of eMudhra's certificate authority private keys is the number 4.

https://imgs.xkcd.com/comics/random_number.png

4 days ago

hypfer

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".

4 days ago

eviks

> 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?

4 days ago

Scott_Helme_

It's a valid question at this point.

4 days ago

Gabrys1

This has a big upside: I can now MITM any Android app / IOT device without any suspicious set up on the device? (given it'll run on the unupdated OS and that cert revocation is not ON).

4 days ago

buzer

You also need to block access to the approved CT list until it fails open after 70 days.

This is assuming the CT logs no longer issue SCTs for these CAs. If they do then you just need to the CT dance and publish that certificate there.

Of course this assumes the app/device isn't using certificate pinning.

4 days ago

eob

With the speed of vibe coding.. I'd expect the "Reverse Engineer Anything" folks to come out with a "Man in the Middle Anything" app by lunch

4 days ago

AnkitGuptaTruth

The needful is complete

4 days ago

dbcooper

All the numbers were under 384. Surely they couldn't have ...

4 days ago

MrDOS

All the numbers were under 256. Surely they did.

4 days ago

throwitaway222

Predicting more LAN devices come pre-installed with a variety of private VPN options and an option to route all traffic from specific devices through that.

4 days ago

alwa

Bugzilla bug in question:

https://.mozilla.org/showbug.cgi?id=2083449

4 days ago

megous

Well, so what now? It's not like I have these in my system CA store, they're just intermediaries cross-signed by sectigo.

4 days ago

akdev1l

You can add the intermediate CA to your block list, presumably the distros will do this

4 days ago

megous

Looks like archlinux already did. After update my fake st*pe.com cert no longer verifies. Ufff.

4 days ago

Scott_Helme_

The problem now becomes all of the things that can't be so easily updated.

4 days ago

joelkoen

Someone else has published usable .key files here: https://github.com/Fluepke/emudrahahahahaha

4 days ago

zkmon

Anything to update/check for Macs running on various versions of the OS?

4 days ago

Scott_Helme_

Apple has blocked the intermediates, so updating is good enough to resolve it for you.

4 days ago

bandrami

Shakti de. This should be firm-ending for them but I fear it won't be.

4 days ago

yoyohello13

I love how this article explains multiplication... very carefully.

4 days ago

siwatanejo

4 days ago

Qision

Literally the tutorial they used

4 days ago

Scott_Helme_

I think this might be proprietary source code, did you get permission to share this?..

4 days ago

ligarota

Man in the middle just for the love of the game

4 days ago

koolba

What the chances there’s another CA key out there with something like unix time as the key?

4 days ago

ls65536

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.).

4 days ago

GuestFAUniverse

Oh, come on! It should have been "3"!

Now did the Lord say, “First thou pullest the Holy Pin. Then thou must count to three. Three shall be the number of the counting and the number of the counting shall be three. Four shalt thou not count, neither shalt thou count two, excepting that thou then proceedeth to three. Five is right out.

3 days ago

naabozaurus

hey, at least it was easy to remember...

4 days ago

Scott_Helme_

Can't lose your key if it's easy to remember!

4 days ago

g-b-r

4 days ago

[deleted]
4 days ago

jesuswasjew

My izzat is down right now.

4 days ago

AlexITC

Another very unfortunate even next to the php, fun times we are living in.

4 days ago

soloviber

[flagged]

4 days ago

latencyharbor

[flagged]

4 days ago

[deleted]
4 days ago

[deleted]
4 days ago

axionbraid

[flagged]

4 days ago

freebsd_lovefes

[dead]

4 days ago

sscaryterry

I wouldn't be surprised if we learn in the near future, that this was deliberate.

4 days ago

edent

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.

4 days ago

K0balt

But that would be obviously intentional. Much more plausible deniability with 0x4.

4 days ago

sscaryterry

Why are many of them, suspicious?

4 days ago

kenniskrag

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.

4 days ago

matsemann

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..

4 days ago

sscaryterry

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 :)

4 days ago

betterunix2

Sure, if they were actually sampling 384 bits. Sounds like they sampled a lot less than that; maybe someone though "384 bits" meant "in the range [0, 383]" or whatever.

4 days ago

kenniskrag

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

4 days ago

SAI_Peregrinus

It's a 384-bit curve, so between 0 and 2^384 which has about 115 decimal digits.

4 days ago

hannob

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.

4 days ago

bombcar

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.

4 days ago

sscaryterry

Exactly :) Its a pity people are so gullible that they cannot see, that people, truly are bastards.

3 days ago

skywhopper

Sounds more like extremely sloppy procedures. Which depressingly I doubt are unusual among CAs.

4 days ago

sscaryterry

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.

4 days ago

woodruffw

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.

4 days ago

chrisjj

> The entire premise of a CA, is trust.

No need for trustworthiness, then. /s

4 days ago

yoavm

Why would it be?

4 days ago

sscaryterry

Do I honestly need to enumerate what you can do if you have the keys for a CA?

4 days ago

swiftcoder

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

4 days ago

sscaryterry

In case it wasn't obvious. The NSA and many other organisation would find this extremely useful.

4 days ago

yoavm

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"

4 days ago

skinfaxi

A weak key means use is unattributable.

4 days ago

NetMageSCW

A secret strong key is also unattributable.

4 days ago

betterunix2

I would be shocked if this was anything other than a bug. A CA already has the power to issue MITM certificates, so what reason would a CA have to deliberately generate bad keys?

In all likelihood it is code that reads 1 byte from /dev/random, or reads 32 bytes but writes it into a 1 byte array, or something to that effect.

4 days ago

m3kw9

This has to be a backdoor planted by hackers, mess with the key gen, say is all good. Must be known since issuance.

4 days ago