Why Browsers Need Encrypted-Only Mode

Update August 27, 2013:

Here’s a link to the discussion about this post at reddit.com/r/netsec.

Original Post:

Recently I had a conversation with my uncle about his lack of computer use. He told me he doesn’t get online much, doesn’t “have a Facebook”, and has only sent a dozen or so emails. Ever.

I was impressed. By avoiding online activity, he’s managed to escape a lot of the high-tech threats many of us face on a daily basis. Except, as he explained, he still needs to buy things online. And it turns out his credit card number has been swiped multiple times. It’s impossible to say exactly how it was stolen, but sending it over an unencrypted web connection is one real possibility.

 Shall we play a game?

It’s been said that protecting yourself online is like War Games; the only way to win is not to play. To disconnect. Or in my uncle’s case, to never connect much to begin with. The problem is, if you fully disconnect, you’re sacrificing a huge number of of modern conveniences. Online shopping is a big one.

So I asked him if he knew about HTTPS. He said he didn’t, then took out his notebook and wrote it down while I tried to hide my astonishment.

Having successfully evaded the horrors of Facebook and lolcats, my uncle is clearly in the minority in the U.S.. But should I be surprised that anyone who doesn’t do this stuff for a living doesn’t really know what HTTPS is or why it’s so important? Probably not.

Still, it makes me uneasy, and I think something ought to be done about it. I want to be clear, though. I don’t think the problem is really just that people don’t know what HTTPS is. The real problem is that many people don’t understand when they’re easily susceptible to eavesdropping and when they’re not, and it’s a direct consequence of the following fact:

Web-based communication is unencrypted by default.

Green address bars and lock icons help, but they’re implemented inconsistently across different browsers. Worse, they’re only passive indicators, so they have a high probability of being ignored after a while. Even by experts.

If the entire web were encrypted, we wouldn’t have this problem. Every site you visit would offer confidential communication between your browser and it, and we’d all be better off. I think it’s a worthy goal, and a lot of people agree that we should be moving in that direction, but there’s good reason to believe that we’ll be dealing with a hybrid web for many years to come.

Since the web isn’t going to be fully encrypted anytime soon, we need to find ways to improve people’s awareness of when their communication is and is not encrypted. More conspicuous and consistently implemented visual cues would be an improvement, but those are still just passive indicators. I think something more active is needed. I call it encrypted-only mode.

Encrypted-only mode would give users better awareness and control.

Here’s how it would work:

  1. Before logging into your bank’s website, you tell your browser you don’t want to allow any unencrypted communication, so you click a button to enter encrypted-only mode.
  2. You login and conduct your transaction, secure in the knowledge that none of the information  your browser transmitted during the session was sent in the clear. Any attempts to communicate with non-https URLs are forcibly blocked by your browser while in this mode.
  3. When finished, you log out of your bank’s website and switch off encrypted-only mode.

The idea is that entering this mode would provide an additional layer of protection by temporarily disabling all unencrypted traffic. It would also be a conscious decision, and therefore difficult to ignore.

Introducing HTTP Nowhere.

HTTP Nowhere is a Firefox browser extension I recently wrote to implement this idea. You can install it from the Firefox Add-Ons site, and check out the source at github. Beyond what is discussed above, it allows you to see which unencrypted requests were made while in this mode, and lets you add specific URLs or URL patterns to a whitelist.

This is just an initial Firefox-only implementation of the concept. I can imagine a future where the conscious action could be inserting and removing a hardware usb key to get your browser to go into this mode. This could work in concert with existing solutions that store client certificates on hardware devices.

Feedback and Patches Welcome.

If HTTP Nowhere sounds interesting to you, please try it out and let me know what you think in the comments below, or by writing a review on the Firefox Add-On page. If you have ideas for improvements or want to contribute some code, get in touch here or via github.

Also, if you haven’t heard of it yet, I’d urge you to check out HTTPS Everywhere, which is available for Firefox and Chrome, and is supported by the Electronic Frontier Foundation (EFF). It doesn’t implement a strict HTTPS-only policy (yet), but it’s a great way to discover and automatically jump to more secure versions of sites you might visit regularly.

This entry was posted in Uncategorized. Bookmark the permalink.

8 Responses to Why Browsers Need Encrypted-Only Mode

  1. bacon says:

    your surprise he does not know what https is? why should he..he just wants to buy stuff. Like when you drive to work you just want to get there not care about all the car internals.

  2. Pingback: Why Browsers Need Encrypted-Only Mode | d@n3n |...

  3. Jamie Hall says:

    One thing to keep an eye on is the experimental QUIC protocol, which will be encrypted at all times. It’s not going to be in common use for a while, but it could easily be the future of the web. Similarly, HTTP/2.0 is likely to use TLS all the time.

  4. Having websites use https (SSL / TLS) is fine, EXCEPT it is of NO USE until we fix the problem with ROOT CERTIFICATE AUTHORITIES. We must assume that the NSA has the master private keys of root cert authorities. They did with two Korean Cert Authorties and one in Scandinavia that they used when carrying out the Iranian attack Stuxnet. Iran did it with a man-in-the-middle attack on SSL to gmail.com.

  5. Fellow Traveler says:

    I think a lot of people actually don’t know what HTTPS really is: a giant backdoor. A man-in-the-middle attack. HTTPS is definitely not real security, but it’s at least better than walking around naked using HTTP.

  6. Security though unscalability says:

    HTTPS actually could be good enough even without Root CAs, meaning that the key a server gives you can be easily man-in-the-middled.

    Fortunately, this is not a problem.

    HTTPS without trust would be like switching from postcards to letters, which still can be opened and read by the postman, but require active effort of opening and re-sealing the letter. This would make mass surveillance a nightmare, as NSA would have to actively man-in-the-middle every connection ever made to spy on everybody as they are now.

    • > This would make mass surveillance a nightmare, as NSA would have to actively man-in-the-middle every connection ever made to spy on everybody as they are now.

      They would. But this would be easy. I have a friend of mine who works for F5, which is similar to Cisco. They sell the networking hardware that does routing of very high speed traffic. They love to pack extra “features” into that hardware to win customers over their competitors, and charge more.

      That networking hardware enables reading/modifying traffic in real time. It also includes forking a copy of traffic, even as it travels at very high speed.

      This attack would be trivial. With a CA’s private key, they can make their own MitM cert and return that, which they can do at scale since they can hand out the same cert to all users. It would be more work for them to handle TLS encrypt/decrypt on the router during the MitM attack, but straight forward and they wouldn’t need to add latency of routing traffic towards NSA because the routers could handle all of the MitM encrypt/decrypt/fork work.

      Even Iran pulled this off with TLS to gmail.com for their citizens. http://news.cnet.com/8301-27080_3-20099421-245/google-users-in-iran-targeted-in-ssl-spoof/

  7. John says:

    Once Browsers had warnings, when submitting unencrypted data from an encrypted page.

Leave a reply to Jamie Hall Cancel reply