7 ms·
The downgrade attacks on TLS are only really present in the case of client behaviour where, on failing to achieve one version, they retry a new connection witho
by mcpherrinm 1y ago
The downgrade attacks on TLS are only really present in the case of client behaviour where, on failing to achieve one version, they retry a new connection without it.
This was necessary to bypass various broken server side implementations, and broken middleboxes, but wasn’t necessarily a flaw in TLS itself.
But from the learnings of this issue preventing 1.2 deployment, TLS 1.3 goes out of its way to look very similar on the wire to 1.2
- ekr____ 1y agoMoreover, there's not really much in the way of choices here. If you don't have this kind of automatic version negotiation then it's essentially impossible to deploy a new version.
- Dylan16807 1y agoDepends on what you mean by "this kind" because you want a way to detect attacker-forced downgrades and that used to be missing.
- pcthrowaway 1y agoYou could deploy a new version, you'd just have older clients unable to connect to servers implementing the newer versions. It wouldn't have been insane to rename https to httpt or something after TLS 1.2 and screw backwards compatibility (yes I realize the 's' stands for secure, not 'ssl', but httpt would have still worked as "HTTP with TLS")
- josephg 1y ago> It wouldn't have been insane to rename https to httpt or something after TLS 1.2 and screw backwards compatibility That would have been at least little bit insane, since then web links would be embedding the protocol version number. As a result, we'd need to keep old versions of TLS around indefinitely to make sure old URLs still work. I wish we could go the other way - and make http:// http:// implicitly use TLS when TLS is available. Having http://.../x http://.../x and https://.../x https://.../x be able to resolve to different resources was a huge mistake.
- cpach 1y agoRegarding your last paragraph: Isn’t that pretty much solved thanks to HSTS preload? A non-technical author of a small recipe blog might not know how to set it up, but a bank ought to have staff (and auditors) who takes care of stuff like that.
- account42 1y agoIt doesn't solve the problem of a client having to treat https:// https:// and http:// http:// URLs with the same string after the :// as distinct resources.
- dotancohen 1y agoAre there any real world online resources where, modulo redirect, a different resource is presented on the HTTP and the HTTPS protocols? Or alternatively, on ports 80 and 443?
- ekr____ 1y agoThere used to be, though it's less true now. However, the reason to treat them distinctly (as different origins, technically) is that HTTPS provides integrity whereas HTTP does not. So, consider the case where the client enters an HTTP URL and is redirected, just as you say above. If the attacker injects their own JS and it is cached in an origin that is just `example.com`, then they control the user's experience of the site, even if later the user securely goes to the site with HTTPS.
- dotancohen 1y agoThank you. That really is a novel attack that I didn't think of.
- pcthrowaway 1y ago> As a result, we'd need to keep old versions of TLS around indefinitely to make sure old URLs still work Wouldn't we be able to just redirect https->httpt like http requests do right now? Sure it'd be a tiny bit more overhead for servers, but no different than what we already experienced moving away from unencrypted http
- tgma 1y agoTLS is one of the best success stories of widely applied security with great UX. It would be nowhere as successful with that attitude.
- account42 1y agoYes it would absolutely have been insane.
- ekr____ 1y agoThis has a number of negative downstream effects. First, recall that links are very often inter-site, so the consequence would be that even when a server upgraded to TLS 1.2, clients would still try to connect with TLS 1.1 because they were using the wrong kind of link. This would relay delay deployment. By contrast, today when the server upgrades then new clients upgrade as well. Second, in the Web security model, the Origin of a resource (e.g., the context in which the JS runs) is based on scheme/host/port. So httpt would be a different origin from HTTPS. Consider what happens if the incoming link is https and internal links are httpt now different pages are different origins for the same site. These considerations are so important that when QUIC was developed, the IETF decided that QUIC would also be an https URL (it helps that IETF QUIC's cryptographic handshake is TLS 1.3).
- immibis 1y agoYou mean like the way we use h2:// everywhere now? Oh wait, we don't.
- upofadown 1y agoWell you can, but that would require a higher level of political skill than normally exists for such things. What would have to happen is that almost everyone would have to agree on the new version and then implement it. Once implementation was sufficiently high enough then you have a switchover day. The big risk with such an approach is that you could implement something, then the politics could fail and you would end up with nothing. The big downside of negotiation is that no one ever has to commit to anything so everything is possible. In the case of TLS, that seems to have led to endless bikeshedding which has created a standard which has so many options is is hardly a standard anymore. The only part that has to be truly standard is the negotiation scheme.
- freeone3000 1y ago> The big risk with such an approach is that you could implement something, then the politics could fail and you would end up with nothing. They learned the lesson of IPv6 here.
- ekr____ 1y agoThis seems like a truly unreasonable level of political skill for nearly any setting. We're talking about changing every endpoint in the Internet, including those which can no longer be upgraded. I struggle to think of any entity or set of entities which could plausibly do that. Moreover, even in the best case scenario this means that you don't get the benefits of deployment for years if not decades. Even 7 years out, TLS 1.3 is well below 100% deployment. To take a specific example here: we want to deploy PQ ciphers ASAP to prevent harvest-and-decrypt attacks. Why should this wait for 100% deployment? > The big downside of negotiation is that no one ever has to commit to anything so everything is possible. In the case of TLS, that seems to have led to endless bikeshedding which has created a standard which has so many options is is hardly a standard anymore. The only part that has to be truly standard is the negotiation scheme. I don't think this is really that accurate, especially on the Web. The actual widely in use options are fairly narrow. TLS is used in a lot of different settings, so it's unsurprising that there are a lot of options to cover those settings. TLS 1.3 did manage to reduce those quite a bit, however.
- 1y ago
- frollogaston 1y agoIf a protocol is widely used wrongly, I consider it a flaw in the protocol. But overall, SSL standardization has gone decently well. I always bring it up as a good example to contrast with XMPP as a bad example.
- mcpherrinm 1y agoWell, my only real point is that it’s not the version negotiation in TLS that’s broken. It’s the workaround for intolerance of newer versions that had downgrade attacks. Fortunately that’s all behind us now, and transitioning from 1.2 to 1.3 is going much smoother than 1.0 to 1.2 went.
- tialaramex 1y agoOne of the big differences was in attitude. The TLS 1.3 anti-downgrade feature was not compatible with some popular middlebox products. Google told people too bad, either your vendor fixes it (most shipped free bug fixes for this issue, presumably "encouraged" by the resulting customer anger) or you can't run Chrome once this temporary fudge goes away in a year's time. Previously (in earlier protocol versions) nobody stood up to the crap middleboxes even though it's bad for all normal users.
- drob518 1y agoThe service providers were the worst offenders here because they wanted to be the MIM to be able to look at the data and “add value” to their networks some how. Moving to TLS 1.3 took a lot of that away from them and it was only Google’s market power that could break them.
- frollogaston 1y agoSimilar thing has been happening with email sender auth, with Gmail and other big providers enforcing things
- adgjlsfhk1 1y ago
- sjducb 1y agoMan in the middle interfering with TLS handshakes? The handshake is unencrypted so you can modify the messages to make it look like the server only supports broken ciphers. Then the man in the middle can read all of the encrypted data because it was badly encrypted. A surprising number of servers still support broken ciphers due to legacy uses or incompetence.
- kevincox 1y agoYou could encrypt the handshake that you recieved with the server's certificate and send it back. Then if it doesn't match what the server thought it sent it aborts the handshake. As long as the server's cert isn't broken this would detect a munged handshake, and if the server's cert is broken you have no root of trust to start the connection in the first place.
- dotancohen 1y agoThe fine man in the middle could still intercept that.
- sjducb 1y agoHow do you agree a protocol to encrypt the message to agree the protocol? This is the message that returns a list of supported ciphers and key exchange protocols. There’s no data in this first packet. Alice: I’d like to connect Bob: Sure here is a list of protocols we could use: You modify bob’s message so that bob only suggests insecure protocols. You might be proposing that Alice asks Trent for Bob’s public key … But that’s not how TLS works.
- lxgr 1y agoBob's list of supported protocols is an input into the (authenticated) final handshake message, and that authentication failing will prevent the connection from being considered successfully established. If the "negotiated" cipher suite is weak enough to allow real-time impersonation of Bob, though, pre-1.3 versions are still vulnerable; that's another reason not to keep insecure cipher suites around in a TLS config.
- matthewdgreen 1y agoThis isn't really accurate historically. TLS has both ciphersuite and version negotiation. Logjam (2015) [1] was a downgrade attack on the former that's now fixed, but is an extension of an attack that was first noticed way back in 1996 [2]. Similar problems occurred with the FREAK attack, though that was actually a client vulnerability. TLS 1.3 goes out of its way to fix all of this using a better negotiation mechanism, and by reducing agility. [1] https://en.wikipedia.org/wiki/Logjam_(computer_security) https://en.wikipedia.org/wiki/Logjam_(computer_security) [2] https://www.usenix.org/legacy/publications/library/proceedings/ec96/full_papers/wagner/wagner.pdf https://www.usenix.org/legacy/publications/library/proceedin...