Remix.run Logo
▲ otabdeveloper4 8 hours ago

Correct, we only need zero.

▲sebzim4500 7 hours ago | parent [-]

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.

▲__MatrixMan__ 6 hours ago | parent | next [-]

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.

▲diarrhea 5 hours ago | parent | next [-]

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

▲__MatrixMan__ 2 hours ago | parent [-]

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.

▲pixl97 an hour ago | parent [-]

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

▲lokar 3 hours ago | parent | prev | next [-]

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?

▲__MatrixMan__ 2 hours ago | parent [-]

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.

▲chrisjj 5 hours ago | parent | prev [-]

> 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

▲__MatrixMan__ an hour ago | parent [-]

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.

▲rocqua 4 hours ago | parent | prev | next [-]

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.

▲zaptheimpaler 10 minutes ago | parent [-]

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.

▲josephg 7 hours ago | parent | prev | next [-]

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.

▲three14 6 hours ago | parent | next [-]

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

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

▲josephg 5 hours ago | parent | next [-]

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.

▲chimeracoder 4 hours ago | parent [-]

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.

▲tptacek 3 hours ago | parent [-]

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.

▲GoblinSlayer 5 hours ago | parent | prev | next [-]

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

▲tptacek 3 hours ago | parent [-]

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!

▲GoblinSlayer 32 minutes ago | parent [-]

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

▲tptacek 14 minutes ago | parent [-]

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.

▲ranger_danger 6 hours ago | parent | prev [-]

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

▲icedchai 5 hours ago | parent [-]

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?

▲GoblinSlayer an hour ago | parent | next [-]

Then propose a censorship resistant protocol.

▲ranger_danger 4 hours ago | parent | prev [-]

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

▲tptacek an hour ago | parent [-]

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.

▲shiandow 7 hours ago | parent | prev | next [-]

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

▲josephg 5 hours ago | parent | next [-]

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.

▲tptacek an hour ago | parent | next [-]

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

▲GoblinSlayer 16 minutes ago | parent [-]

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.

▲darkwater 5 hours ago | parent | prev [-]

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.

▲GoblinSlayer an hour ago | parent | next [-]

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.

▲shiandow 3 hours ago | parent | prev [-]

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.

▲vesinisa 7 hours ago | parent | prev [-]

Isn't this what DNSSEC solves?

▲muvlon 7 hours ago | parent | next [-]

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.

▲tptacek an hour ago | parent | next [-]

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

https://dnssecmenot.fly.dev/

▲giantrobot 5 hours ago | parent | prev [-]

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

▲shiandow 6 hours ago | parent | prev [-]

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.

▲jayd16 2 hours ago | parent | prev | next [-]

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

shudders

▲tptacek an hour ago | parent [-]

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.

▲braiamp 7 hours ago | parent | prev | next [-]

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

▲otabdeveloper4 7 hours ago | parent [-]

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

▲woodruffw 6 hours ago | parent [-]

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

▲josephg 5 hours ago | parent [-]

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

▲itintheory 3 hours ago | parent | next [-]

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

▲parasyte 2 hours ago | parent | next [-]

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.

▲Scott_Helme_ 2 hours ago | parent | prev [-]

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.

▲woodruffw 5 hours ago | parent | prev [-]

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.

▲asksomeoneelse 7 hours ago | parent | prev [-]

But how do you make DNS secure without CAs?

▲growse 7 hours ago | parent [-]

You just have one big one on the root.

(Half joking).

▲josephg 5 hours ago | parent | next [-]

Better to trust 1 organisation than trust 100.

▲asksomeoneelse 6 hours ago | parent | prev [-]

Is that a reference to the Root Key of DNSSEC?

▲lukewarm707 7 hours ago | parent | prev | next [-]

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.

▲Ohentis 6 hours ago | parent | prev | next [-]

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

▲embedding-shape 7 hours ago | parent | prev [-]

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.

▲bluehatbrit 7 hours ago | parent | next [-]

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.

▲monsieurbanana 6 hours ago | parent | next [-]

> 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

▲ 5 hours ago | parent [-]
[deleted]
▲__MatrixMan__ 5 hours ago | parent | prev | next [-]

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.

▲pixl97 39 minutes ago | parent [-]

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

▲chrisjj 5 hours ago | parent | prev [-]

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

▲venzaspa 4 hours ago | parent [-]

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.

▲chrisjj 2 hours ago | parent [-]

Yes. As I said, we're doomed.

▲bee_rider 5 hours ago | parent | prev | next [-]

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?

▲whywhywhywhy 7 hours ago | parent | prev | next [-]

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.

▲u8080 5 hours ago | parent | prev | next [-]

Like...TOTP or FIDO2?

▲lirolero 7 hours ago | parent | prev [-]

[dead]