After being on a DKIM panel discussion at LinuxWorld yesterday, I'm spending today in a PKI (Public Key Infrastructure) workshop, where I chaired a panel on DKIM. Both went well, and I've been soaking in the rest of today's stuff about PKI. What's very interesting to me is the validation that those who are here, those who do the PKI stuff as their fields of expertise, acknowledge what I see from the periphery: It's not working.
That's not to say that it's not working technically: the cryptography is solid, the generation of the keys is fine, and all that. It's that the infrastructure and the usability are failing. This stuff is too hard to use.
Those of us who are adept at it nevertheless have problems dealing with it, so there's no hope for Aunt Mildred, and Aunt Mildred needs it as much as the rest of us do. We should be in a state, now, where every financial transaction on the Internet, every piece of email from your bank or your credit card company, every notice about your eBay or PayPal or EZ-Pass account ought to be protected with public-key cryptography, signed and/or encrypted as appropriate. They're not, and the reason they're not is that, while setting up the keys for secure web sites mostly works (mostly), setting up keys for individual users does not. And the usability of encrypted and signed email is poor.
It's just too hard to get a public-key certificate. Anyone can go to Thawte or CA Cert and request a certificate, and on the surface that's easy. But now try to understand what you can do with that, and it's not the same. How do you install them? How do you use them to sign mail, or to authenticate yourself to your bank's web site? How do you send encrypted mail to your bank, and how does your bank send some to you?
Apart from that, it's hard to understand why, when you get these certs, they have your email address only, but not your name. That, of course, is because when you get the certificate it sends a confirmation message to your email address first, and the cert is only issued after you respond to that. So they know that the cert was issued to someone who can see mail at that address. But they have no idea who that someone is. If you want that, you have to go through a fairly involved process, finding accredited certifiers, meeting them and showing them documentation (driver's license, passport), accumulating "points" until you have enough points to get your name on your cert.
Once you have the cert, the user interfaces for using it in your favourite computer programs are often poor. So are the user interfaces for dealing with certificates from others. There are issues with mail that arrives with self-signed certificates, certificates that are signed by entities your programs don't already trust, expired certificates, and so on. Not all programs use the same certificate repositories, so the decisions made by different programs may be different. And the user interfaces for the different programs are different, confusing the user even more.
I think we should be able to get certificates when we get passports or driver's licenses, making the process easy. We need to standardize the systems that use them, to provide consistent behaviour that's less confusing. And there's much more, too, that needs to be done. It's good to see that there are a bunch of competent people here, dedicated toward making it work. I hope they can succeed some day.
Update (20 April): Peter St Andre posts here that Estonia has implemented a system of giving digital certs along with national ID cards. Cool.