Tim Berners-Lee: TLS Everywhere, Not Https: URIs
w3.org
w3.org
I think the best bet would be to allow TLS over port 80, call it http. Mark any sites that don't upgrade to TLS on port 80 as insecure, like unsigned certs are now. Allow unsigned certs on port 80. Enforce key pinning on port 80 and warn users when the pins don't match. Keep 443 for TLS with valid certs.
This leaves port 80 as untrusted traffic and explicitly marks trivially exploited traffic as broken. It protects against many attacks as any http traffic that's MITMed will show up as being intercepted as long as it's not the first time the user makes that connection. https can stay as the secure one that non-technical users are trained to look for when they need security.
Here is what I think it might be saying. Critique, please.
1. Web security is increasingly important, both in terms of data being delivered securely, and users knowing what has been done securely and what has not.
2. The move to use HTTPS as much as possible is a problem, since, if some resources involved in a web app can be fetched via HTTPS, but some cannot, then all-or-nothing browser security policies break the app.
3. An alternate solution is:
A. Regular HTTP should fetch things securely as much as possible, using Transport Layer Security (TLS).
B. Browsers should give the user a clear indication of whether all data related to the current display are being handled securely.
----
And my response:
I don't see why SSL vs. TLS is an issue.
What matters is, first, whether any given bunch of data can be handled securely, second, whether a fallback is used if it cannot be, third, whether the browser clearly and reliably informs the user of the security situation, and fourth, whether the user gets information they can understand and use.
Why then, is TBL concerned about which protocol is used? I don't see it.
This seems like a pedantic argument to make and it pushes the burden on users, who consistently make terrible choices regarding security. TBL's idea that content owners should not define that something must be accessed security, but that the users should seems to fly in the face of security best practices. Additionally, there are severe technical challenges in upgrading an insecure communications channel (http) to a secure one (https). Look at the problems with STARTTLS. You need some extra data or side channel or configuration so the client know when it should not keep using a channel, unless it is secure. Otherwise you are screwed. So you are back to the problem of how does an owner communicate to a client, in a hyperlink, to access something only with security.
TBL also ignores that shifting to HTTPS does not necessarily "break the web". There are many mechanisms that can be used to the hyperlinks don't break, and redirect you where you need to go.
2) TBL is concerned that changing the URI by appending an 's' to 'http' it breaks web links. He considers it a mistake made 20 years ago to indicate the use of encryption in the URI prefix.
This scenario:
1) Resource located at 'http'
2) Operator in charge of resource enforces HTTPS
3) Link from #1 no longer works because URI is now 'https'