Skip the navigation

Kenneth van Wyk: Digital duct tape for SSL

Secure Sockets Layer has been implicated in several security problems of late. Certificate pinning might patch it up for a bit longer.

By Kenneth van Wyk
July 31, 2012 12:49 PM ET

Computerworld - Secure Sockets Layer (SSL) just can't catch a break these days. Everywhere we turn, it seems, SSL is being implicated in security problems.

We've seen attacks against root certificate authorities (CA). We've seen weaknesses in how SSL certificates are validated. And now, those weaknesses have been used to attack Apple's in-app purchase mechanism. As I pointed out in my September 2011 column, these things erode our trust in the systems on the Internet that we all rely on.

Certificate pinning might be one solution, though it isn't an easy pill to swallow.

First, let's review what happens with SSL.

Whenever an SSL connection attempt is made, two fundamental things are verified before the connection is allowed to proceed. First, the remote system's certificate is checked to ensure that it has been signed by a trusted root CA. Each system (or, in many cases, browser) maintains a list of trusted root CAs. Further, there is a hierarchical chain of digital signatures for valid SSL certificates, making it quite trivial to verify any SSL certificate to ensure that it is worthy of our trust.

Next, the SSL software verifies that the remote system's name matches the name in the certificate and vice versa. This is to make sure that an attacker hasn't stolen a valid certificate from one machine to run it on another, thereby having the ability to fraudulently open network connections.

This all sounds well and good, but much to Apple's chagrin, there is still an opportunity for an attacker to break the system. It requires a fairly complicated attack in which the attacker inserts a root CA certificate onto his system and tampers with the domain name system (DNS) in order to get it to return incorrect results. Then the attacker can effect a man-in-the-middle (MITM) attack on an otherwise secure SSL network connection. This is how Russian developer Alexey Borodin was recently able to trick iOS apps into accepting in-app purchases.

On the surface, it would seem that SSL's worthiness has just about run its course. Almost. But there may still be some digital duct tape we can apply to get a few more years out of this venerable protocol. That digital duct tape is known as certificate pinning.

With certificate pinning, a third test is performed on each network connection before it is allowed to proceed, verifying that the remote certificate is not just valid and that its host name matches, but also that it is the exact certificate we were expecting.

As you might figure, certificate pinning is especially well suited to a situation where an app can know in advance which certificate belongs to each server to which it needs to connect. Therein lies the major burden in using this technique.



Our Commenting Policies