The HTTPS-Only Standard
https.cio.gov
https.cio.gov
I don't use Safari, so I don't know how they render their address bar.
[1] https://18f.gsa.gov/2015/02/09/the-first-gov-domains-hardcod...
I wasn't calling it a social engineering trick, more that it just felt like one. To the average person they wouldn't second guess the icon. To those who believe in HTTPSAllTheThings, we question anything out of the ordinary.. and that little padlock shouldn't appear in the tab.
As I said, it just felt weird, sort of the same feeling you get when you go to Apple or YouTube and there's a warning on the lock icon. You just want to hit the back button almost instantly fearing something dodgy is happening.
Seems like an odd choice of UI chrome that browsers decided to keep.
0: http://www.wired.co.uk/news/archive/2012-04/25/firefox-fires...
Oh wait, nevermind... I just realized something.
Trusting the individuals or groups who validate identity at some level seems to be unavoidable.
No cert is trusted if it isn't in such a list, and the lists are mirrored (and cross-signed) by a bunch of trustworthy authorities, hashes written into the blockchain, and so on.
Then any CA who issues a cert for www.google.com will also have to publish irrevocable proof that they done fucked up; and when their CA status is revoked it's possible to grandfather in certs they've already issued to avoid breaking lots of sites.
Of course, it won't solve the problem of CAs unjustifiably charging $$$ for certain types of cert - or the problem of the dubious authentication done for affordable domain-validated certs.
I wish. Even in cases today where we have conclusive proof of CAs willfully issuing fraudulent certificates, they get a pass. TrustWave still has a valid CA cert even after having been caught with their hand in the cookie jar.
Oddly, DigiNotar got the death sentence. The only lesson I can see in this is that incompetence is inexcusable, but willfully subverting the CA system is A-OK.
Honest question: with a decentralized system for certificate signing, what would be the trust root?
The current system has the browser makers as the root of trust; this trust is delegated to a set of certificate authorities through the list of root certificates which comes with the browser; these certificate authorities then delegate to their intermediates, which finally certify a server as trusted for a fully-qualified domain name.
Without a root of trust, anyone could say "I'm example.gov, this is my certificate", and present "proof" of that. A trust root is necessary to prevent this.
So far, the only working proposals I've seen for decentralized trust (which don't do away with the human readability side of Zooko's triangle) are based in distributed proof-of-work systems like Bitcoin's, where the trust root is the distributed "chain". Has anyone ever tried to apply a system like that for certificate signing for TLS?
https://namecoin.info/ is trying to solve a similar problem but by rebuilding the entire DNS system.
IMO, it's more important to emphasize the idea of secure origins, and HTTPS hits that note. TLS could be swapped out, the CA system could be changed, but what matters is the expectation that connections across the web are expected to be secure by default.
At least with CAs you can (theoretically) remove trust from a subset of them and things (mostly) keep working.
Most SSL certs in the wild are legitimate and trust has already been established. So if you hit FooCo's corporate website and get one certificate, and some other guy hits the same website and they get another, it's likely something fishy is happening. Replace this model of two people with a few million, and you have a pretty decent verification system happening.
Really, what we have now isn't okay. We're training users to click past SSL warnings which, 99.999% of the time, are due to misconfiguration or BS reasons (i.e. expiration).
In this model, the trust root is the verification system which compares your "hit" with other people's "hits". If an attacker can pretend to be the verification system and tell you "everything's fine", the system won't work. Also, it's centralized: the verification system itself becomes the central component.
- Don't just check the certs you want to verify, but also check others, and publish your findings.
- Check with multiple alternative systems, so that the chance of
- Allow users to assign trust to third party monitors that checks the logs.
Rotating certs is not really a different problem than issuing it in the first place - it just requires you to not trust a cert indefinitely.
Separate the problems! It is much easier to find realistic solutions when the requirements are narrower. The remaining needs can be solved later on. Once some usable infrastructure has been established, it might be possible to leverage that infrastructure to add back in some of the missing features.
For HTTPS, a good start would be PHK's suggestion of simply auto-generating self-signed certs in apache by default, as a replacement for plaintext. Authenticating those certs can happen later.
After keys are everywhere, a potential solution might be t o allow both PKI authorities and some sort of web-of-trust (or other methods? blockchain? something new?), and exposing the source of trust to the user in way they can manage.
There is no one-size-fits-all solution to the trust problem, so let the user decide because they know what their requirements are. If I'm browsing to some bank, a well-known PKI root might be a good trust source. If I'm chatting on some local forum, a web-of-trust auth might be better (it's a local forum, so fingerprints can be exchanged manually, friend-to-friend).
All you need for encryption is to be able to share a secret - this in no way requires authentication.
This is confidentiality without authenticity. It is an incoherent idea.
Yet again, encryption is a replacement for plantext, which is the only thing it should be compared to. Of course you can MitM attack it, but that's not something that is easily done in bulk.
Simple encryption raises the cost of an attack from "trivial wiretaps, DPI optional" to the time, money, and effort required to do a targeted MitM attack. Additionally, while it is generally impossible to detect wiretaps, MitM can leak information that betrays the presence of an attack.
Remember, this isn't intended to stop all types of attacks. It is simply a very easy to implement feature that lets you replace plaintext with something resistant (not proof) to eavesdropping in general, and proof against some types of bulk surveillance.
Note: I haven't said anything about presenting this type of non-authenticated communication to the user as "secure".
[1] see PHK's "Operation Orchestra" talk
It doesn't matter how secure the phone line is when you have no idea who you're actually talking to. Especially when there are people with money, means and access to make sure that you're always talking to them.
First time to https://example.com - I get a prompt and a UI element telling me it's self signed. I accept the risk (This may not be who you think it is! - but it probably is)
2 - nth time to https://example.com - UI element tells me it's self signed, but the same as before. Whether it's the NSA or the site, it's the same person at the other end.
Next - does the cert change to a PKI-trusted? Then great! I get a UI element (no prompt) showing the site is trusted. Does the site get a new self-signed cert? Back to the first step.
I believe this, and the parent notion of default cert generation by apache installs, is better than no SSL. It's not as good as fully verifiable auth.
---
And son of a gun, I know this isn't an original idea, but I can't believe it took another post to remind me this is exactly how SSH works. Sure, you can get the server key to your DO host and transfer it to your client, but how many people do that? They accept the fingerprint they see at first, assume it's good, and probably raise an eyebrow if it changes. Don't like it? OK, let's go back to telnet.
Whereas if you do this on HTTP, a: you're constantly having a lot more "first time" connections. B: you've got no real way to know when the key changed legitimately. Users would quickly grow accustomed to key change warnings and ignore them. Or you'd see banners on sites like "ignore the key warning; I reinstalled my blog and the key changed". Attacks could even inject such a banner.
If you want to manually verify every cert, you can already do that today: just go and add certs to your browser!
Unauthed HTTPS-by-default just adds complexity and a false sense of security and isn't worth pushing out on the public.
Lets change the name of it to something like httpe e for encrypted, s for secure.
Let's change the behavior of httpe to automatically accept the first key it sees for a domain.
Browsers have the option of uploading the lists of domains and keys to their creator, Firefox, Google, etc which can then be collated and updated from the browser.
This data could be used to spot where MITM attacks are taking place.
https://www.eff.org/deeplinks/2014/11/certificate-authority-...
An untargetted attacker cannot know that there is no authentication. Dragnetting connections where they don't recognize any authentication therefore risks detection.
That risk to the attacker is not present when observing plaintext connections.
.
I'm not safe from muggers because I have eyes in the back of my head to see them trying to sneak up on me. I'm (largely) safe because someone else is likely to see them (or catch them on camera) and get them caught.
Suspicious changes in the environment might be another, as would detecting data that leak past the middleman. Key pinning would be an example of a change in the environment, unexpected changes in important network topology or routing could be another. An example of a leaking middleman might be detection of the real (non-poisoned) "duplicate" packet in a DNS-poisoning packet race.
These methods are nowhere near as good as proper authentication, of course. Reliability of detection is probably very low. The point is that it is better than the case of sending plaintext that anybody can trivially wiretap with zero chance of detection[1].
As always, it is important to define your threat model. If you are defending against any kind of targeted attack, then yes, authentication is a firm requirement. If your threat model is only concerned with avoiding the trivial surveillance that can be done in bulk, anything that forces the opponent to use a more complicated ("expensive") MitM attack is a success.
[1] modulo any still-very-hypothetical quantum communication methods. We can reevaluate our options if those technologies ever work well enough for common use,
One thing I do not like about the popular "strong" encryption solutions are that they are tied to relatively "weak" authentication solutions. Instead of two programs that each do one thing, we are instructed to use one program that does two things.
I prefer that encryption and authentication were are viewed as distinct programs. If desired they can be used together. Sometimes we may not wish to rely on the hope of an "encrypted channel", but instead we might just want to send an encrypted blob over an untrusted channel (=the internet).
Obviously it makes sense to send your encrypted blob to the correct destination, but that does not mean you _must_ use encryption to verify the destination is the correct one; it is an option, but not the only one.
For example, it is possible to do the authentication part via some old-fashioned method that does not require the internet.
It prevents passive eavesdropping, but is useless against active attackers.
In the end, it's of little use, but that doesn't mean you can separate both things.
SSH works basically this way, certs are autogenerated, the client records the key, and lets you know if it changes.
And doesn't everyone recommend SSH over Telnet, despite certs mostly (never?) not being signed?
Regardless of who is "trusted", the true critical points are in the Private Key and the Cryptographic primitives. Fixing the CA model addresses neither.
Symantec CA does not ever get to see my private key when I purchase a certificate from them. They dont get to determine the encryption methods I use. All they do is verify my identity (and do a damn good job at it in my opinion). Server Authentication is an important part of SSL, but its only one part.
The other part, encryption, is able to be undermined in many other ways - ways where we have much more direct proof of gov't surveillance and tampering.
You can perfect Server Authentication all you want, but if there are holes in the encryption, thats all for naught.
If I was going to 'fix' SSL I would start there.
I think this is a great initiative.
When reading the https gov doc -- it's very important to remember that the government runs its own CA.
Superfish was certainly a huge abuse of the trust network. However, if we look at other recent SSL vulnerabilities: Heartbleed, POODLE, FREAK - most of these are all dealing with flaws in the encryption (some directly, through most with the use of side-channel or other clever attacks).
We also know that the NSA is saving encrypted messages for mass decryption in the future. New technologies like Perfect Forward Secrecy (PFS) can help eliminate this issue. I think that fact that nearly 100% of servers were still allowing SSL 3 up until the POODLE attack a few months ago highlights how poor most SSL configurations are. Unlike the trust network, which has infrequent but serious breaches, the encryption side seems to be poorly implemented almost universally.
However, unlike Superfish, which we know affected thousands, alot of these other SSL vulnerabilities are usually just PoCs...
A complex issue for sure.
I support their initiative too, but we have evidence of their compatriots performing MITM attacks as well so this is a multifaceted problem. https://www.schneier.com/blog/archives/2013/09/new_nsa_leak_...
Also it is aggravating to me that the cost of implementing SSL on a single site is too high because of the CA signing cartel. In my experience this is the main reason that many sites eschew the matter altogether. We're creating a digital security ghetto like this, and it is completely unnecessary.
This is one area where government has the capability to lead the way at a very low cost, which is all I was trying to say, perhaps with a bit too much snark.
Cost does not seem to be a major issue for most organizations (or even independent websites). Sure, Symantec and other high profile CAs charge an arm and a leg, but thats all marketing. There are affordable and trusted certs out there for <$10 if you just need a single domain cert, and <$100 for Wildcard and Multidomains.
In order to be an improvement over the CA model a new system would have to satisfy all 3 points of zooko's triangle. https://en.wikipedia.org/wiki/Zooko%27s_triangle
> All browsing activity should be considered private and sensitive.
The latter, however, should be preferred as a permanent solution. The Web is by no means the only part of the Internet that needs to be secured.
It doesn't protect the mapping between a computer name and a IP address, but that's not its job.
So, IPSEC is a non-starter.
In contrast, TLS requires using a new client library and works just about everywhere. All of the work people have been doing to switch to strong crypto everywhere and deploy things like perfect-forward security? Imagine how quickly that'd have happened if it required everyone to install a kernel update.
Until IPsec becomes easier to use (something as simple as checking that a socket is actually secure used to be shamefully under-documented) the best way to think of it is as a potential replacement for proprietary VPN protocols. Anything which cares about security will still need TLS over that so most people will simply use only TLS.
This is a step in the right direction. Worldwide HTTPS adoption makes the Internet a safer place for everyone.
In 2015 it should be impossible to send a fake email from chase.com
PGP FTW!
Now if only STEED would be implemented... http://g10code.com/docs/steed-usable-e2ee.pdf
But, unfortunately, even mail from a properly configured mail server on properly protected domain will still end up in gmail users' spam boxes by default. Domain and server rep systems are a bear to work with.
Of the communication that's nominally protected by TLS, a lot of it can probably be trivially broken by an active MITM attack that either (1) prevents a connection from being upgraded to TLS, in which case it typically remains plaintext (see STARTTLS), or (2) establishes the connection under a self-signed certificate, which will suffice since many email systems do not perform certificate path validation.
I used to do X.400 and x.500 for a Large Telco back in the Day.
It's a trade off between ease of use and cost - and is a tech example of Gresham's Law
What strikes me is that their conf is inaccessible to old client (no sslv3, no sha-1 cert). Honest question: does the government think it's ok to break website access from ancient clients (XPSP2 IE6)? Or will they be forced to enable legacy ciphers when the first citizens complain? I'm genuinely interested, because the topic of TLS modernity is a hard problem to solve. If that was easy, google.com wouldn't be using RC4-MD5 and a sha-1 cert...
> "the financial cost of procuring a certificate"
Doesn't the government have a few of its own CAs installed in every browser? Can't they procure their own certificates for free?