a semi-formalization of of the openid protocol

Imran Ghory imranghory at gmail.com
Fri May 20 17:10:03 PDT 2005


I've produced a semi-formalization of the protocol used stripping out
the implementation details so it's easier to analyze from a
security/efficency viewpoint as well as providing an alternative
explaination to the main spec page to help focus on any points that
may be open to misinterpretation.

If someones bored they can take the formalization a bit further and
try attacking the protocol using something like BAN logic to try and
find vulnerabilites.  I also plan to go through my formalization and
try and produce justification for every piece of info sent/recieved to
try and help improve the understanding of why the protocol is designed
like it is.

The format I've used is

Source
---------> Information being sent
Destination.

I've used various other bits of notation (for example information
being sent is prefixed by the name of whoever generated the data so
the flow of information can be seen) but hopefully it's mostly
self-explanatory.

So here it is:

User 
---------> User_server_url
Consumer


Consumer
---------> User_server_url
---------> Consumer_Request_for_id_server_url
User-site


User-site
---------> User-site_id_server_url
Consumer


Consumer
---------> User-site_id_server_url
---------> consumer_nonce
---------> consumer_return_to_url
---------> consumer_trust_root_url
---------> user_server_url
User


User
---------> consumer_nonce
---------> consumer_return_to_url
---------> consumer_trust_root_url
---------> user_server_url
id-server


id-server
---------> user_server_url
---------> consumer_return_to_url
---------> consumer_nonce
---------> id-server_timestamp
---------> id-server_signed
--------->              (id-server_timestamp, 
--------->               user_server_url, 
--------->               consumer_return_to_url,
--------->               consumer nonce)
User


User
---------> user_server_url
---------> consumer_return_to_url
---------> consumer_nonce
---------> id-server_timestamp
---------> id-server_signed
--------->              (id-server_timestamp, 
--------->               user_server_url, 
--------->               consumer_return_to_url,
--------->               consumer nonce)
Consumer


Any questions/mistakes/whatever welcome.

Imran


More information about the yadis mailing list