Everybody is talking about OpenID. Big players are adopting it. But should you trust it for things that matter – financial transactions, for example?
Here’s an important post from Microsoft’s identity architect Kim Cameron:
So let’s think about this. Where is the root of trust? In conventional systems like PKI or SAML or Kerberos, the root of trust is the identity provider. I trust the identity provider to say something about the subject. How do I know I’m hearing from the legitimate identity provider? I have some kind of cryptographic key. The relevant key distribution has a cost – such as that involved in obtaining or issuing public key certificates, or registering with a Key Distribution Center.
But in OpenID, the root of trust is the OpenID URL itself. What you see is what you get. In the example above, I trust Francis’ web page since it represents his thinking and is under his control. His web page delegates to his OpenID identity provider (OP) through the link mechanism in (5). Because of that, I trust his identity provider to speak on behalf of his web page. How do I know I am looking at his web page or talking to his identity provider? By calling them up on DNS.
I’m delving into the details here because I think this is what gives OpenID its legs. It is as strong, and as weak, as DNS. In other words, it is great for transactions that won’t attract criminal attack, and terrible for those that will.
And here’s Cameron’s conclusion:
OpenID cannot replace crypto-based approaches in which there are trusted authorities rather than trusted web pages. But it can add a whole new dimension, and bring the “long tail” of web sites into the identity fabric.
Note that Cameron is not opposed to OpenID. Apart from anything else, he recognizes that this may well be the beginning of an identity revolution – part of a process, at the end of which we get a safer, less spam laden, less criminal-infested internet.
At the same time, he’s right. The whole OpenID structure hinges on the URL routing to the correct machine on the Internet. In other words, DNS. Now do some research on DNS poisoning. Scary.
Now, it strikes me that you can largely fix this by requiring SSL connections. In other words, have the OpenID URL be an https:// URL, and have the relying party (the website where you want to log in) check for a valid SSL certificate. Note thought that SSL must be used at every stage. OpenID lets you use your own URL as the identifier, but redirect to another OpenID identity provider. Both URLs must use SSL to maintain integrity.
Another idea is to use an OpenID for non-critical logins, however you define those.
Note that this issue is different from the phishing risk, for which CardSpace strikes me as a good solution.
I started an OpenID service that uses only client-side SSL certificates for authentication. So there’s no passwords, no phishing. It’s called https://certifi.ca/, and although registration is more of a chore than for username/password sites, I’ve found that once it’s set up using a certs-enabled OpenID is considerably smoother than having to login to my OpenID server over and over again.
Why not just use PKI and be done with it. A self signed cert would be good enough, once trust is established.
Problem with public keys is they need to be copied to different computers.
But if you use a password as the seed to generate the public key, then no problem. Just regenerate each time you need it.
And you use the private key to encrypt the actual
SSL symmetric key, so stops phishing.
Much cleaner than OpenID, no need for a server.
Anthony