{"id":659,"date":"2007-01-21T01:21:28","date_gmt":"2007-01-21T09:21:28","guid":{"rendered":"\/?p=659"},"modified":"2007-01-21T12:44:37","modified_gmt":"2007-01-21T20:44:37","slug":"integrating-openid-and-infocard-part-1","status":"publish","type":"post","link":"https:\/\/www.identityblog.com\/?p=659","title":{"rendered":"Integrating OpenID and Infocard &#8211; Part 1"},"content":{"rendered":"<p>Let&#39;s&nbsp;start by taking a&nbsp;step-by-step look at&nbsp;the basic OpenID protocol to see how the phishing attack works.&nbsp; (Click on the diagrams to see them on a more readable scale.)<\/p>\n<p><a href=\"\/wp-content\/images\/2007\/01\/openid-1.jpg\"><img src=\"\/wp-content\/images\/2007\/01\/openid-1-thumb.jpg\" align=\"right\" \/><\/a><\/p>\n<p>The system consists of&nbsp;three parties &#8211; the relying party (or RP) which&nbsp;wants an ID&nbsp;in order to provide services to the user;&nbsp;&nbsp;the user &#8211; running a browser;&nbsp; and the Identity Provider (OpenID affectionados call it an OP &#8211; presumably because the phrase Open Identity Identity Provider smacks of the Department of Redundancy Department.&nbsp;&nbsp;&nbsp;None the less I&#39;ll stick with the term IP since I want to discuss this in&nbsp;a broader context).<\/p>\n<p>OpenID&nbsp;can employ a few&nbsp;possible messages and patterns, but I&#39;ll just deal with the one&nbsp;which is of concern to me.&nbsp; An interaction starts with the user telling the RP what her URL is (1).&nbsp; The RP consults the URL content to determine where the user&#39;s IP is located (not shown).&nbsp; Then it redirects the user to her IP to pick up an authentication token, as shown in (2) and (3).&nbsp; To do the authentication, the IP has to be sure that it&#39;s the user who is making the request.&nbsp; So it presents her with an authentication screen, typically asking for a username and password in (4).&nbsp; If they are entered correctly, the IP mints a token to send to the RP as shown in (5) and (6).&nbsp; If the IP and RP already know each other, this is the end of the authentication part of the protocol.&nbsp; If not, the back channel is used as well.<\/p>\n<p><a href=\"\/wp-content\/images\/2007\/01\/openid-3.jpg\"><img src=\"\/wp-content\/images\/2007\/01\/openid-2-thumb.jpg\" align=\"right\" \/><\/a><\/p>\n<p>The attack works as shown in the next diagram.&nbsp; The user unwittingly goes to an evil site (through conventional phishing or even by following a search engine).&nbsp; The user sends the evil RP&nbsp;her URL (1) and it consults&nbsp;the URL&#39;s&nbsp;content to determine the location of her IP (not shown).&nbsp; But instead of redirecting the user to the legitimate IP, it redirects her to the Evil Scooper site as shown in (2) an (3).&nbsp; The Evil Scooper contacts the legitimate IP and pulls down an exact replica of its login&nbsp;experience (it can even simply become a &#8220;man in the middle&#8221;) as shown in (4).&nbsp; Convinced she is talking to her IP, the user posts her credentials (username and password) which can now be used by the Evil Scooper to&nbsp;get tokens from the&nbsp;legitimate IP.&nbsp; These tokens&nbsp;can then be used to gain access to&nbsp;any legitimate RP (not shown &#8211; too gory).<\/p>\n<p>The problem here is that redirection to the home site is under the control of the evil party,&nbsp;and the user gives that party enough information to sink her.&nbsp; Further, the whole process can be fully automated.<\/p>\n<p><strong>We can eliminate this attack<\/strong> if the user employs Cardspace (or some other identity selector) to&nbsp;log in to the Identity Provider.&nbsp; One way to do this is through use of a self-issued card.&nbsp; Let&#39;s look at what this&nbsp;does to the attacker.<\/p>\n<p><a href=\"\/wp-content\/images\/2007\/01\/openid-3.jpg\"><img src=\"\/wp-content\/images\/2007\/01\/openid-3-thumb.jpg\" align=\"right\" \/><\/a><\/p>\n<p>Everything looks the same until step (4), where the user would normally enter her username and password.&nbsp; With self-issued&nbsp;cards, username and password aren&#39;t used and can&#39;t be revealed no matter how much the user is tricked.&nbsp; There&nbsp;is nothing to steal.&nbsp; The central &#8220;honeypot credentials&#8221; cannot be pried out&nbsp;of the user.&nbsp;The system&nbsp;employs public key cryptography and generates different keys for every site&nbsp;the user&nbsp;visits.&nbsp; So&nbsp;an Evil Scooper can scoop as much as it wants but nothing of value&nbsp;will be revealed to it.<\/p>\n<p>I&#39;ll point out that this is a lot stronger as a solution than just configuring a web browser to know the IP&#39;s address.&nbsp; I won&#39;t go into the many potential attacks on the web browser, although I wish people would start thinking about those, too.&nbsp; What I am saying is the solution I am proposing benefits from cryptogrphy, and that is a good thing, not a bad thing.&nbsp;<\/p>\n<p>There are other advantages as well.&nbsp; Not the least of these is that the user comes to see authentication as being a consistent experience whether going to an OpenID identity provider or to an identity provider using some other technology.&nbsp;<\/p>\n<p>So is this just like saying, &#8220;you can fix OpenID if you replace it with Cardspace&#8221;?&nbsp; Absolutely not.&nbsp; In this proposal, the relying parties&nbsp;continue to&nbsp;use OpenID in its current form, so we have a very nice lightweight solution.&nbsp;&nbsp;Meanwhile&nbsp;Cardspace is used at the identity provider to keep credentials from being stolen.&nbsp; So the best aspects of OpenID are retained.<\/p>\n<p><strong>How hard<\/strong> would it be for OpenID producers to go in this direction?&nbsp;<\/p>\n<p>Trivial.&nbsp; OpenID software providers would just have to hook support for self-issued cards&nbsp;into their &#8220;OP&#8221; authentication.&nbsp; More and more software is coming out that will make this easy, and if anyone has trouble just let me know.<\/p>\n<p>Clearly not everyone will use&nbsp;Infocards on day one.&nbsp; But&nbsp;if OpenID embraces the&nbsp;&nbsp;alternative I am proposing, people&nbsp;who want to use selectors will&nbsp;have the option to protect themselves.&nbsp; It will give those of us really concerned about phishing and security the opportunity to&nbsp;work with&nbsp;people&nbsp;so they can&nbsp;understand&nbsp;the&nbsp;benefits of Information Cards&nbsp;&#8211; especially&nbsp;when they want, as they inevitably will, to start&nbsp;protecting&nbsp;things&nbsp;of greater value.<\/p>\n<p>So my ask is simple.&nbsp; Build Infocard compatibility into OpenID identity providers.&nbsp; This&nbsp;would help promote&nbsp;Infocards on the one hand, and result in enhanced safety&nbsp;for OpenID on the other.&nbsp; How can that be anything other than a WIN\/WIN?&nbsp; I know there are already&nbsp;a number&nbsp;of&nbsp;people in the milieux who want to do this.<\/p>\n<p>I think&nbsp;it would really help and is eminently doable.<\/p>\n<p>This said, I have another proposal as well.&nbsp; I&#39;ll get to it over then next few days.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use of infocard at the OpenID identity provider overcomes the phishing problem while allowing the industry to benefit from the potential reach of OpenID at the relying party.<\/p>\n","protected":false},"author":68,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[16,2,14,22,9,23],"tags":[],"_links":{"self":[{"href":"https:\/\/www.identityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/659"}],"collection":[{"href":"https:\/\/www.identityblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.identityblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.identityblog.com\/index.php?rest_route=\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/www.identityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=659"}],"version-history":[{"count":0,"href":"https:\/\/www.identityblog.com\/index.php?rest_route=\/wp\/v2\/posts\/659\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.identityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.identityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=659"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.identityblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}