[security] The potential benefits of HTTPS and SSL

Dan Lyke danlyke at flutterby.com
Wed Oct 25 20:50:00 UTC 2006


After a cursory read of the OpenID 2.0-10 spec, I see three potential  
applications for SSL:

1. For the User to communicate with the Relying Party.
2. For the Relying Party to query the Claimed Identifier.
3. For the Relying Party to query the IdP Endpoint URL.

As others have mentioned, communication between the User and the  
Identity Provider is out of scope for the document, and while SSL  
SHOULD be used for user name and password communications between the  
User and the Identity Provider, there is no way for the spec to  
mandate this, and requiring it may block future enhancements which use  
more secure communications systems than SSL.

SSL provides two things:

I. A somewhat secure communications channel between two hosts.
II. The assurance of a Certificate Authority that the server is the  
server that the client wanted to connect to.

So for application #1, the potential exploits involve:

a. A Man-In-The-Middle attack between the User and the Relying Party.
b. Observation of messages between the User and the Relying Party.

I can't figure out anything that a Man-In-The-Middle attack would  
provide the potential cracker that observation of messages would, so I  
think we can reduce this to the user's trust of their communication  
channel. This seems to be between the User and the Relying Party.

For application #2, no secrets are involved, so the only exploit is a  
Man-In-The-Middle attack which would provide a false IdP Endpoint URL  
to the Relying Party. Since the Relying Party will soon pass the IdP  
Endpoint URL to the user as part of the authentication process, any  
exploit here would involve simultaneous DNS poisoning of both the  
Relying Party's DNS chain, and the User's DNS chain, and then  
convincing the user that they're actually using their Identity  
Provider, as in any other phishing exploit.

For application #3, the "nonce" prevents replay attacks, and the  
"association" prevents tampering with the IdP Endpoint URL after the  
Relying Party's first use of an IdP Endpoint URL.

So the two potential exploits are:

A. An attacker poisoning both the Relying Party's DNS *and*,  
simultaneously, the User's DNS. I believe this scenario to be unlikely.

B. An attacker poisoning the Relying Party's DNS, and hijacking the  
*initial* "association" for an IdP Endpoint URL, thereafter being able  
to artificially approve a User who specifies that IdP Endpoint URL.  
This would be much the same as using HTTPS with self-signed  
certificates, or, as we've discussed on the general mailing list, SSH  
without passing the server identity through a separate secure channel.

I believe that 3.B. is the only exploit that could reasonably result  
in damage to the User or the Relying Party, by allowing anyone to log  
in as a specific User, if a specific Identity Provider were targeted.

Where am I wrong?

Dan
(I also believe that if you're able to muck with a network enough to  
build a 3.B. style attack, then OpenID authentication is the least of  
your data center's worries.)



More information about the security mailing list