security

Martin Atkins mart at degeneration.co.uk
Mon Oct 23 18:41:04 UTC 2006


Recordon, David wrote:
> Alaric,
> I think both you and Dick are right.  Don't get me wrong, security is
> very important to see anything like OpenID be adopted.  I think the
> point Dick is trying to make is that security needs to scale depending
> on context, or at least that is the point I'd try to make.
> 
> Starting with 2.0, or 1.2 whatever we end up calling it, I personally
> would not use an Identity Provider which does not both host my
> identifier and it's server endpoint via a valid SSL certificate.  There
> are however use cases where SSL is not required, running OpenID solely
> on an intranet for example, but for the majority of cases SSL is highly
> recommended which I think the spec makes clear.  If it doesn't, please
> let us know!
> 
> So I don't think security is binary, IMHO what is important is that the
> spec makes it clear where the weaknesses are, how to protect them, and
> recommends the use of things like valid SSL certificates for the entire
> protocol flow.
> 

In order to aid the discussion I've made a diagram of the flow of 
information between parties during a "smart mode" authentication request:

http://i13.tinypic.com/2w3ch7b.png   [1]

("Dumb mode" is not much different; the RP -> IdP interaction just moves 
about a bit.)

This shows the various information passed between the four involved 
parties. I have omitted messages that are merely requests for 
information for the sake of brevity. The arrows show whether this 
information is flowing from client to server or server to client.

The bright red arrows show information that would be 
spoofable/interceptable if the RP doesn't have an SSL. The dark red 
arrow shows information that would be spoofable/interceptable if the 
Identifier URL (and, by implication, the host of the Yadis document) 
isn't a HTTPS URL. I assume that the IdP has an SSL server and all 
requests to it are therefore encrypted and certified.

----------------------------------

I think the most notable thing to take away from this diagram is that 
there is really no pressing need for your average RP to run an SSL 
server. The only two OpenID-related items passed over this channel are:
   * The user's claimed_identity, which is public information anyway.
   * The signature from the IdP, which is protected from spoofing using 
a shared secret previously negotiated over an SSL link, is RP-specific, 
and is valid only once.

Of course, the RP MUST be an SSL-able *client*, in order that it can 
talk to the IdPs and Identifier URLs on SSL servers.

My current views on SSL requirements in the spec, then:

Party                Client     Server
------------------------------------------
RP                   MUST     unspecified [2]
IdP                  -          MUST
Browser              MUST         -
Identifier URL       SHOULD       -

The IdP MUST be an SSL server [3] because at this point I see no good 
reason not to require this for version 2.0: there's no advantage to a 
low barrier of entry for IdPs, since we need the majority of IdPs to be 
dedicated to doing things *properly* or OpenID's reputation will suffer.

The Identifier URL is only a SHOULD as a compromise for adoption's sake. 
Early adopters with their vanity URLs are unlikely to be able/willing to 
use SSL, but I find that acceptable because early adopters are 
presumably knowledgeable enough to evaluate the risks and take 
responsibility for any consequences. Moving forward, your average user 
will have his identifier hosted by a trustworthy IdP that will hopefully 
be able to sort out certificates. Relying Parties MAY refuse to accept 
identifiers that are not SSL-hosted.

The above represents my vote on the subject.


[1] Feel free to copy this image to somewhere more permanent if you 
think it'd be useful.

[2] RP as server is unspecified because as far as pure OpenID is 
concerned there is no risk to RP being on an unsecure link. The RP is 
free to decide for itself whether to use SSL; the OpenID spec does not 
need to say anything on this subject.

[3] OpenID 1.1 servers will, of course, still be allowed to be on 
non-SSL links. However, there are relatively few IdPs in comparison to 
the number of RPs, so getting all of the mainstream 1.1 IdPs upgraded to 
2.0+SSL will hopefully not be to arduous a task.




More information about the general mailing list