With Let's Encrypt, using HTTPS on your website will soon be easier than taking that famous walk in the park. But should we just blindly use the service?
With Edward Snowden’s NSA leaks in 2013, and the unveiling of PRISM and XKeyscore, it became obvious how important it is to protect your privacy from the snooping eyes of government agencies. That the NSA had the capabilities to eavesdrop on electronic communication if necessary shouldn’t come as a surprise to anyone, but the sheer scale of their operation - the amount of data that was collected, who they collected it from, and how it could be analyzed - was shocking.
But, why, exactly, is that a problem? Most of us have noting to hide, so why should it worry us that our government knows everything? At first, I didn’t really see the problem either, but reading the following quote online made it very clear to me why a government harvesting everything they can about us is a serious issue:
Either way, [mass surveillance] will move forward, for better or for worst (sic). I guess we are going to find out. I truly hope it’s for the better and someone doesn’t come into power and ask the following… I need a list of all the Jews.
One way of preventing spies from prying into our privacy is to encrypt electronic communication. Pre-Edward Snowden, encrypted communication - web sites using HTTPS to communicate with the client - was something we associated with banking sites, online shopping and other online services where we wanted to prevent criminals from getting hold of credit card numbers, social security details and other sensitive information. Now that it has become apparent that we also have to hide from our elected officials, encrypting electronic communication should be the rule, not the exception.
We’re seeing a slow-but-steady adaption of encryption by companies not primarily dealing with banking and other sensitive information. Most of Google’s services are now encrypted, the popular instant messaging app WhatsApp is encrypting communication between the app and their servers, and the use of HTTPS will become an important factor for app developers in iOS 9.
But the number of sites that is using HTTPS is still very low compared to the number of sites that doesn’t. Two of the reason for this can be the cost and the technical hurdles often associated with setting up a server with HTTPS. Digital certificates used to cost a lot of money, but that is no longer the case. At least one certificate authority (CA), StartSSL, is even providing free digital certificates for anyone who is interested. Others sell basic digital certificates for just a few dollars a year. The only hassle when you have obtained the certificate is to configure your web server to use it and remember to renew the certificate when it expires. But is that really hard? No, it’s not. Even I managed to do it; this very site has been served over HTTPS for over three years now.
If you still think it sounds like too much work, you’ll soon be all out of excuses not to use HTTPS on your site. In the middle of September this year, Let’s Encrypt will launch. It will provide you with free digital certificates that are automatically installed and configured on your server. The service will even renew your free certificates automatically before they expire. Did I mention Let’s Encrypt is free and automatic?
But what’s the catch? You’re probably familiar with the expression that “if it’s free, you’re the product”. This goes for sites and services like Facebook and Google: It doesn’t cost you anything to use them, but you give away a lot of personal information along the way. That information will be sold or used to show you “relevant” advertisements based on the information. In the case of Let’s Encrypt, however, there isn’t any valuable information to sell. There might be some server statistics, but nothing that anyone can really monetize on. Does this mean that there really is such a thing as a free lunch?
Perhaps. But let’s shut the blinds and put on our tinfoil hats for a minute. A service that gives away free certificates and automatically renews them before they expire is great. That kind of service will probably get a massive uptake and the number of sites secured with digital certificates from Let’s Encrypt will soar. The people behind Let’s Encrypt are focusing a lot on transparency. The scripts that will run on your server and the protocol that will be used are open source and available on GitHub. Transparency like this is great, because it gives you the option to look through the code and confirm that there’s nothing fishy going on.
The only thing you can’t be sure about is the most important factor in the Let’s Encrypt value chain: The whereabouts of the private root key.
If someone, oh, let’s say, the NSA, got hold of the private key, they could break the encryption. They could, without too much effort, set up the perfect man-in-the-middle attack. For you and your browser, it would look like you’re communicating directly with site X, but what you are really doing is communicating via an NSA server - the man-in-the-middle. The man-in-the-middle decrypts what your browser sent to site X, stores the unencrypted data for later, encrypts it again and passes it on to the server hosting site X. Neither you nor the server will have a slightest clue the message was read by a third party.
According to a blog post by Let’s Encrypt, their private keys are stored in a Hardware Security Module (HSM). But again; how secure are these modules? The NSA has the capability to plant back doors in network hardware, how do we know they don’t also have access to the HSMs used by Let’s Encrypt?
By now you probably think that there is no real need for me to take off my tinfoil hat; with this state of mind, I might as well keep it on. But this is what I’ve become after all the Snowden leaks. I regard all digital communication as insecure. I don’t believe that encryption makes it impossible for someone to listen in, but I do believe it can make it harder - and I’d like it to be as hard as possible.
That said, I think free digital certificates is a great idea. I strongly support the Let’s Encrypt initiative, and salute the people involved in the project. Hell, I’ll probably even start using it myself when it’s available. But the only thing I’ll use it for is this site, which doesn’t contain any secrets. The main reason why I’m using HTTPS on this site is that I think that all communication on the internet should be encrypted by default, and for once I practice what I preach. But if I had to encrypt communication between a server and a client because it was actually important that no one eavesdropped, I’d use a certificate signed by someone who had the financial intensives to take very, very good care of their private keys1.
But who’s to say that the NSA hasn’t got every single private key already? Oh… Hang on a second, there are some unmarked, black vans pulling up in our driveway.
That the encryption of communication on the web is based on trust, the credibility of a certificate authority and their ability to keep its private keys private feels like a fundamental flaw to me. An adaption of PGP would perhaps be a better solution? But I’m sure that method also has some weaknesses. ↩︎