HTTPS has been around nearly as long as the Web, but it’s primarily used by sites that handle money—your bank’s website or shopping carts that capture credit card data. Even many sites that do use HTTPS only use it for the portions of their websites that need it—like shopping carts or account pages.
Web security got a shot in the arm last year when the FireSheep network sniffing tool made it easy for anyone to capture your current session’s log-in cookie insecure networks—your local coffeeshop’s hotspot or public WiFi at the library. That prompted a number of large sites to begin offering encrypted versions of their services via HTTPS connections.
Lately even sites like Twitter, which has almost entirely public data anyway, is nevertheless offering HTTPS connections. You might not mind anyone sniffing and reading your Twitter messages en route to the server, but most people don’t want someone also reading their username and password info. That’s why Twitter recently announced a new option to force HTTPS connections (note that Twitter’s HTTPS option only works with a desktop browser, not the mobile site, which still requires manually entering the https address).
Google has even announced it will adding HTTPS to many of the company’s APIs. Firefox users can go a step further and use the HTTPS Everywhere add-on to force HTTPS connections to several dozen websites that all offer HTTPS, but don’t use it by default.
So the Web is clearly moving toward more HTTPS connections; why not just make everything HTTPS?
That’s the question I put to Yves Lafon, one of the resident experts on HTTP(s) at the W3C. There are some practical issues most Web developers are probably aware of, such as the high cost of secure certificates, but obviously that’s not as much of an issue with large Web services that have millions of dollars.
The real problem, according to Lafon, is that with HTTPS you lose the ability to cache. “Not really an issue when servers and clients are in the same region (meaning continent),” writes Lafon in an e-mail to Webmonkey, “but people in Australia (for example) love when something can be cached and served without a huge response time.”
Lafon also notes that there’s another small performance hit when using HTTPS, since “the SSL initial key exchange adds to the latency.” In other words, a purely security-focused, HTTPS-only Web would, with today’s technology, be slower.
For sites that don’t have any reason to encrypt anything—in other words, you never log in, so there’s nothing to protect—the overhead and loss of caching that comes with HTTPS just doesn’t make sense. However, for big sites like Facebook, Google Apps, or Twitter, many users might be willing to take the slight performance hit in exchange for a more secure connection. And the fact that more and more websites are adding support of HTTPS shows that users do value security over speed, so long as the speed difference is minimal.
Another problem with running an HTTPS site is the cost of operations. “Although servers are faster and implementations of SSL more optimized, it still costs more than doing plain http,” writes Lafon. While less of a concern for smaller sites with little traffic, HTTPS can add up should your site suddenly become popular.
Perhaps the main reason most of us are not using HTTPS to serve our websites is simply that it doesn’t work with virtual hosts. Virtual hosts, which are what the most common cheap Web hosting providers offer, allow the Web host to serve multiple websites from the same physical server—hundreds of websites all with the same IP address. That works just fine with regular HTTP connections, but it doesn’t work at all with HTTPS.
There is a way to make virtual hosting and HTTPS work together—the TLS Extensions protocol—but Lafon notes that, so far, it’s only partially implemented. Of course that’s not an issue for big sites, which often have entire server farms behind them. But until that spec—or something similar—is widely used, HTTPS isn’t going to work for small, virtually hosted websites.
In the end there is no real reason the whole Web couldn’t use HTTPS. There are practical reasons why it isn’t happening today, but eventually the practical hurdles will fall away. Broadband speeds will improve, making caching less of a concern, and improved servers will be further optimized for secure connections.
In the Web of the future the main concern won’t just be how fast a site loads, but how well it safeguards you and protects your data once it does load.