<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: No More Secrets</title>
	<atom:link href="http://ianloic.com/2009/01/05/no-more-secrets/feed/" rel="self" type="application/rss+xml" />
	<link>http://ianloic.com/2009/01/05/no-more-secrets/</link>
	<description>from Ian McKellar</description>
	<lastBuildDate>Fri, 20 Nov 2009 18:09:37 -0800</lastBuildDate>
	
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Martin Kleppmann</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1395</link>
		<dc:creator>Martin Kleppmann</dc:creator>
		<pubDate>Mon, 26 Jan 2009 20:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1395</guid>
		<description>I independently found the secret key in Uploadr today (saw your post only after I had found it). Although Cal is right about a user token needing explicit authentication, my guess is that if you know a secret key, it would be fairly easy to trick a user into authenticating a token generated by an attacker. I&#039;ve written up my thoughts about web API authentication mechanisms here: http://bit.ly/NmU5</description>
		<content:encoded><![CDATA[<p>I independently found the secret key in Uploadr today (saw your post only after I had found it). Although Cal is right about a user token needing explicit authentication, my guess is that if you know a secret key, it would be fairly easy to trick a user into authenticating a token generated by an attacker. I&#8217;ve written up my thoughts about web API authentication mechanisms here: <a href="http://bit.ly/NmU5" rel="nofollow">http://bit.ly/NmU5</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: links for 2009-01-06 &#171; Breyten&#8217;s Dev Blog</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1372</link>
		<dc:creator>links for 2009-01-06 &#171; Breyten&#8217;s Dev Blog</dc:creator>
		<pubDate>Tue, 06 Jan 2009 11:07:43 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1372</guid>
		<description>[...] No More Secrets (tags: wow coding word! oauth http web hacking funny flickr) [...]</description>
		<content:encoded><![CDATA[<p>[...] No More Secrets (tags: wow coding word! oauth http web hacking funny flickr) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blaine Cook</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1370</link>
		<dc:creator>Blaine Cook</dc:creator>
		<pubDate>Tue, 06 Jan 2009 09:09:35 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1370</guid>
		<description>Trust can absolutely creep into applications in ways it shouldn&#039;t. This is true, and has nothing to do with OAuth / delegated auth.

It feels like your frustration is less with delegated auth (which is more secure than basic auth, period), and more with web people who don&#039;t understand security. These people will always exist. Overworked teams who allow logins to the admin site via the normal site login with no VPN or otherwise will also always exist.

In South America, they have phishing attacks too; the difference is that the phishing is done with a gun, your car, and your bank card. So we&#039;re never going to solve all of these problems. It just won&#039;t happen. But we can strive to do better, and we should. Arguing about whether Better is Enough seems counter productive.

That said, it&#039;s important that people understand where the possible attack vectors are with OAuth, and how to guard against them (in this case, don&#039;t trust consumer keys in publicly distributed software as much as you do privately held consumer keys with owners who you can sue). The more writing on this, the better, as long as it&#039;s done in a way that doesn&#039;t throw the baby out with the bath water.</description>
		<content:encoded><![CDATA[<p>Trust can absolutely creep into applications in ways it shouldn&#8217;t. This is true, and has nothing to do with OAuth / delegated auth.</p>
<p>It feels like your frustration is less with delegated auth (which is more secure than basic auth, period), and more with web people who don&#8217;t understand security. These people will always exist. Overworked teams who allow logins to the admin site via the normal site login with no VPN or otherwise will also always exist.</p>
<p>In South America, they have phishing attacks too; the difference is that the phishing is done with a gun, your car, and your bank card. So we&#8217;re never going to solve all of these problems. It just won&#8217;t happen. But we can strive to do better, and we should. Arguing about whether Better is Enough seems counter productive.</p>
<p>That said, it&#8217;s important that people understand where the possible attack vectors are with OAuth, and how to guard against them (in this case, don&#8217;t trust consumer keys in publicly distributed software as much as you do privately held consumer keys with owners who you can sue). The more writing on this, the better, as long as it&#8217;s done in a way that doesn&#8217;t throw the baby out with the bath water.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ian McKellar</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1369</link>
		<dc:creator>Ian McKellar</dc:creator>
		<pubDate>Tue, 06 Jan 2009 08:24:25 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1369</guid>
		<description>@cal, @mike: well, until this evening Flickr would happily hand out tokens based on a secret key of a trusted application and cross-site request forgery. Trust of secret keys can sneak into otherwise secure web applications when people forget how not-secret the keys can be. You can take a look at the (no longer working) exploit &lt;a href=&quot;http://scratch.ianloic.com/flickr2/sploitr.html&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.

@Richard, as long as you&#039;re sending bits to somebody&#039;s computer it&#039;s fair to assume that they&#039;ll be able to identify whatever information is encoded in there - especially if it&#039;s encoded in an x86 executable :) Secondly a distributed application binary can never be trusted - at least not without significant OS and hardware support that&#039;s definitely lacking on all the platforms I care to run and are probably lacking in practice on the ones that claim to implemented it. The only solution is to trust users, not software - take a look at my next post.</description>
		<content:encoded><![CDATA[<p>@cal, @mike: well, until this evening Flickr would happily hand out tokens based on a secret key of a trusted application and cross-site request forgery. Trust of secret keys can sneak into otherwise secure web applications when people forget how not-secret the keys can be. You can take a look at the (no longer working) exploit <a href="http://scratch.ianloic.com/flickr2/sploitr.html" rel="nofollow">here</a>.</p>
<p>@Richard, as long as you&#8217;re sending bits to somebody&#8217;s computer it&#8217;s fair to assume that they&#8217;ll be able to identify whatever information is encoded in there &#8211; especially if it&#8217;s encoded in an x86 executable <img src='http://ianloic.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Secondly a distributed application binary can never be trusted &#8211; at least not without significant OS and hardware support that&#8217;s definitely lacking on all the platforms I care to run and are probably lacking in practice on the ones that claim to implemented it. The only solution is to trust users, not software &#8211; take a look at my next post.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: A Different Model For Web Services Authorization &#124; Software and Opinions</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1367</link>
		<dc:creator>A Different Model For Web Services Authorization &#124; Software and Opinions</dc:creator>
		<pubDate>Tue, 06 Jan 2009 07:59:52 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1367</guid>
		<description>[...] Software and Opinions from Ian McKellar   Skip to content About       &#171; No More Secrets [...]</description>
		<content:encoded><![CDATA[<p>[...] Software and Opinions from Ian McKellar   Skip to content About       &laquo; No More Secrets [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike Malone</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1365</link>
		<dc:creator>Mike Malone</dc:creator>
		<pubDate>Tue, 06 Jan 2009 02:49:56 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1365</guid>
		<description>So you have the consumer key/secret. That doesn&#039;t give you much. In order to make a request on behalf of a user you&#039;re going to need what OAuth calls an &quot;access token&quot; (Flickr calls it a frob, or something) -- another key/secret pair. Sure you can auth users with this key/secret, but you could have used your own key for that... what have you gained? It would definitely be bad practice to serve non-public information without an access token.</description>
		<content:encoded><![CDATA[<p>So you have the consumer key/secret. That doesn&#8217;t give you much. In order to make a request on behalf of a user you&#8217;re going to need what OAuth calls an &#8220;access token&#8221; (Flickr calls it a frob, or something) &#8212; another key/secret pair. Sure you can auth users with this key/secret, but you could have used your own key for that&#8230; what have you gained? It would definitely be bad practice to serve non-public information without an access token.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Crowley</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1364</link>
		<dc:creator>Richard Crowley</dc:creator>
		<pubDate>Tue, 06 Jan 2009 02:13:01 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1364</guid>
		<description>You can&#039;t stay away from XULRunner, either, I see.

The API Key and, for that matter, the user&#039;s Token (in Flickr API terms) are not meant to be secret.  They are on the wire in plain text along with the signature, which is salted using the Secret, the one part that doesn&#039;t cross the wire.  OAuth does one better by having per-token secrets that must (whether it says &quot;should&quot; or &quot;must&quot; it means &quot;must&quot;) be sent over HTTPS and are thereafter used just like the API Key&#039;s Secret.  Still not very good, as it has to be stored somewhere and money says it&#039;ll be stored less &quot;securely&quot; than even the Secret in Flickr Uploadr.

The Uploadr&#039;s Secret was coded in the way it was because this way it doesn&#039;t show up when you run `strings` against key.dylib.  You do get the API Key from `strings`, for reasons mentioned above.

Just forcing everything to use SSL only solves the message-integrity problem but leaves the is-this-really-Flickr-Uploadr problem open.  Diffie-Hellman doesn&#039;t help you there.  (Each and ever user of Flickr Uploadr would need a cert from a trusted CA for SSL to actually verify identity and even then, if an attacker has access to the filesystem, you&#039;re toast.)</description>
		<content:encoded><![CDATA[<p>You can&#8217;t stay away from XULRunner, either, I see.</p>
<p>The API Key and, for that matter, the user&#8217;s Token (in Flickr API terms) are not meant to be secret.  They are on the wire in plain text along with the signature, which is salted using the Secret, the one part that doesn&#8217;t cross the wire.  OAuth does one better by having per-token secrets that must (whether it says &#8220;should&#8221; or &#8220;must&#8221; it means &#8220;must&#8221;) be sent over HTTPS and are thereafter used just like the API Key&#8217;s Secret.  Still not very good, as it has to be stored somewhere and money says it&#8217;ll be stored less &#8220;securely&#8221; than even the Secret in Flickr Uploadr.</p>
<p>The Uploadr&#8217;s Secret was coded in the way it was because this way it doesn&#8217;t show up when you run `strings` against key.dylib.  You do get the API Key from `strings`, for reasons mentioned above.</p>
<p>Just forcing everything to use SSL only solves the message-integrity problem but leaves the is-this-really-Flickr-Uploadr problem open.  Diffie-Hellman doesn&#8217;t help you there.  (Each and ever user of Flickr Uploadr would need a cert from a trusted CA for SSL to actually verify identity and even then, if an attacker has access to the filesystem, you&#8217;re toast.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: cal</title>
		<link>http://ianloic.com/2009/01/05/no-more-secrets/comment-page-1/#comment-1363</link>
		<dc:creator>cal</dc:creator>
		<pubDate>Tue, 06 Jan 2009 02:06:29 +0000</pubDate>
		<guid isPermaLink="false">http://ianloic.com/?p=93#comment-1363</guid>
		<description>...but you do need a user-token to perform any actions on a user account. and those are tied to a key, and explicitly granted by the user via the website. same as oauth.

identifying the application is mostly used for rate limiting</description>
		<content:encoded><![CDATA[<p>&#8230;but you do need a user-token to perform any actions on a user account. and those are tied to a key, and explicitly granted by the user via the website. same as oauth.</p>
<p>identifying the application is mostly used for rate limiting</p>
]]></content:encoded>
	</item>
</channel>
</rss>
