<?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"
	>
<channel>
	<title>Comments on: Hardened stateless session cookies</title>
	<atom:link href="http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/</link>
	<description>Security Research, Computer Laboratory, University of Cambridge</description>
	<pubDate>Tue, 07 Oct 2008 02:40:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>By: Erik</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29769</link>
		<dc:creator>Erik</dc:creator>
		<pubDate>Fri, 29 Aug 2008 02:00:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29769</guid>
		<description>Great read! I'm working on exactly this problem right now and really enjoyed your paper.

The MAC key seems like the weakest link in the system. Given the MAC key, any intercepted cookie can extended to work forever, and the only way to revoke it is to change the MAC key (which revokes all cookies), or for the user to change their password.

What if, instead of a global MAC key, there was a user specific MAC key (stored in the DB) that was rotated every time the user did a manual logout. That would invalidate all old cookies, and would allow for user at a time key rotation.

I think it would be sort of like the "token" part of this system: http://jaspan.com/improved_persistent_login_cookie_best_practice

(I know that's about auto-login cookies, not stateless session cookies, but it's similar)</description>
		<content:encoded><![CDATA[<p>Great read! I&#8217;m working on exactly this problem right now and really enjoyed your paper.</p>
<p>The MAC key seems like the weakest link in the system. Given the MAC key, any intercepted cookie can extended to work forever, and the only way to revoke it is to change the MAC key (which revokes all cookies), or for the user to change their password.</p>
<p>What if, instead of a global MAC key, there was a user specific MAC key (stored in the DB) that was rotated every time the user did a manual logout. That would invalidate all old cookies, and would allow for user at a time key rotation.</p>
<p>I think it would be sort of like the &#8220;token&#8221; part of this system: <a href="http://jaspan.com/improved_persistent_login_cookie_best_practice" rel="nofollow">http://jaspan.com/improved_persistent_login_cookie_best_practice</a></p>
<p>(I know that&#8217;s about auto-login cookies, not stateless session cookies, but it&#8217;s similar)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vlad SATtva Miller</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29349</link>
		<dc:creator>Vlad SATtva Miller</dc:creator>
		<pubDate>Sat, 21 Jun 2008 13:41:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29349</guid>
		<description>Steven, thank you for your answer. My bad, I've just skimmed the paper before posting my question; more thorough reading showed that attacker obtaining accounts database for offline brute-force attacks is included in your threat model.</description>
		<content:encoded><![CDATA[<p>Steven, thank you for your answer. My bad, I&#8217;ve just skimmed the paper before posting my question; more thorough reading showed that attacker obtaining accounts database for offline brute-force attacks is included in your threat model.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29330</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Wed, 18 Jun 2008 20:49:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29330</guid>
		<description>@Vlad

The iterated hashing is to increase the cost of a brute-force password discovery attack by someone who has obtained a copy of the password database. It is a standard component of password hashing schemes, for example &lt;a href="http://www.usenix.org/events/usenix99/provos/provos_html/node4.html#SECTION00040000000000000000" rel="nofollow"&gt;Bcrypt&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>@Vlad</p>
<p>The iterated hashing is to increase the cost of a brute-force password discovery attack by someone who has obtained a copy of the password database. It is a standard component of password hashing schemes, for example <a href="http://www.usenix.org/events/usenix99/provos/provos_html/node4.html#SECTION00040000000000000000" rel="nofollow">Bcrypt</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vlad SATtva Miller</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29328</link>
		<dc:creator>Vlad SATtva Miller</dc:creator>
		<pubDate>Wed, 18 Jun 2008 18:18:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29328</guid>
		<description>Steven, could you please explain the purpose of iterated hashing of passwords in the proposed scheme? Maybe I'm missing something, but I see it only as a mean for DoS-attacking a server. If you're worried of a possibility of brute-force attacks, they could be easily mitigated with programmed delays between login attempts (similar to unix login).</description>
		<content:encoded><![CDATA[<p>Steven, could you please explain the purpose of iterated hashing of passwords in the proposed scheme? Maybe I&#8217;m missing something, but I see it only as a mean for DoS-attacking a server. If you&#8217;re worried of a possibility of brute-force attacks, they could be easily mitigated with programmed delays between login attempts (similar to unix login).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29223</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Tue, 27 May 2008 07:30:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29223</guid>
		<description>@Jérémie

HTTP Digest Auth requires that the server either store the cleartext password or H(A1) = MD5(username . ':' . realm . ':' . password). Including the username and realm in the hash is better than nothing, but it's not as secure as including a salt.

For example, it's apparent when a user has changed their password back to an old value. Things may also go wrong if fields contain the ":" character.

Also, MD5 is applied only one time. This makes it easier to brute-force the password when compared to standard password hashing schemes built around an iterated hash.

It also suffers from the same problem as the Fu et al. paper, which my proposal tries to fix. Namely, if you get access to the authentication database, containing H(A1), you can spoof a HTTP Digest authentication response. 

It at least used to be the case that Microsoft products (IIS and Internet Explorer) implemented a different and incompatible version of the HTTP Digest standard to Apache and Firefox. I don't know if this has been fixed, but if not that effectively eliminates the usefulness.

From a usability perspective, there's also the problem that the dialog box offered by browsers for Digest and Basic authentication is not customizable. This also reduces the attractiveness of these options when compared to HTML form password boxes.</description>
		<content:encoded><![CDATA[<p>@Jérémie</p>
<p>HTTP Digest Auth requires that the server either store the cleartext password or H(A1) = MD5(username . &#8216;:&#8217; . realm . &#8216;:&#8217; . password). Including the username and realm in the hash is better than nothing, but it&#8217;s not as secure as including a salt.</p>
<p>For example, it&#8217;s apparent when a user has changed their password back to an old value. Things may also go wrong if fields contain the &#8220;:&#8221; character.</p>
<p>Also, MD5 is applied only one time. This makes it easier to brute-force the password when compared to standard password hashing schemes built around an iterated hash.</p>
<p>It also suffers from the same problem as the Fu et al. paper, which my proposal tries to fix. Namely, if you get access to the authentication database, containing H(A1), you can spoof a HTTP Digest authentication response. </p>
<p>It at least used to be the case that Microsoft products (IIS and Internet Explorer) implemented a different and incompatible version of the HTTP Digest standard to Apache and Firefox. I don&#8217;t know if this has been fixed, but if not that effectively eliminates the usefulness.</p>
<p>From a usability perspective, there&#8217;s also the problem that the dialog box offered by browsers for Digest and Basic authentication is not customizable. This also reduces the attractiveness of these options when compared to HTML form password boxes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jérémie P.</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29222</link>
		<dc:creator>Jérémie P.</dc:creator>
		<pubDate>Tue, 27 May 2008 02:24:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29222</guid>
		<description>How does your solution compares with HTTP digest auth?

Both retransmit full auth info with each requests (instead of just an ID in the case of session cookies). But with digest auth, passwords are never sent in clear text...

As far as I know, digest auth is implemented in all major browsers (baring some microsoftism in IE). Why not use that instead of cookies?</description>
		<content:encoded><![CDATA[<p>How does your solution compares with HTTP digest auth?</p>
<p>Both retransmit full auth info with each requests (instead of just an ID in the case of session cookies). But with digest auth, passwords are never sent in clear text&#8230;</p>
<p>As far as I know, digest auth is implemented in all major browsers (baring some microsoftism in IE). Why not use that instead of cookies?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RichardA</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29220</link>
		<dc:creator>RichardA</dc:creator>
		<pubDate>Sun, 25 May 2008 21:38:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29220</guid>
		<description>Thanks for the interesting proposal! Taking your advice seriously, one should not implement this oneself... so is an implementation with a liberal licence (e.g. BSD) available which is known to be free of bugs? :-)</description>
		<content:encoded><![CDATA[<p>Thanks for the interesting proposal! Taking your advice seriously, one should not implement this oneself&#8230; so is an implementation with a liberal licence (e.g. BSD) available which is known to be free of bugs? <img src='http://www.lightbluetouchpaper.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29199</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Tue, 20 May 2008 16:53:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29199</guid>
		<description>@asdf

I don't store the full password hash in the cookie. Depending on the protocol variant, it's either an encrypted version or the hash with salt removed. This means it's not feasible to brute-force the password from the cookie.

The reason I store this in the cookie is that it's something a server can verify but cannot create. You can only generate it with the password, which is not stored in the database and is discarded immediately after the password is checked and cookie generated.

I've described why session IDs are not desirable in Section 1.2 of the &lt;a href="http://www.cl.cam.ac.uk/~sjm217/papers/protocols08cookies.pdf" rel="nofollow"&gt;paper&lt;/a&gt;. The key problem is that the session table grows with the number of open sessions, not the number of users. This increases storage, makes load-balancing more difficult and creates additional vulnerabilities to DoS.</description>
		<content:encoded><![CDATA[<p>@asdf</p>
<p>I don&#8217;t store the full password hash in the cookie. Depending on the protocol variant, it&#8217;s either an encrypted version or the hash with salt removed. This means it&#8217;s not feasible to brute-force the password from the cookie.</p>
<p>The reason I store this in the cookie is that it&#8217;s something a server can verify but cannot create. You can only generate it with the password, which is not stored in the database and is discarded immediately after the password is checked and cookie generated.</p>
<p>I&#8217;ve described why session IDs are not desirable in Section 1.2 of the <a href="http://www.cl.cam.ac.uk/~sjm217/papers/protocols08cookies.pdf" rel="nofollow">paper</a>. The key problem is that the session table grows with the number of open sessions, not the number of users. This increases storage, makes load-balancing more difficult and creates additional vulnerabilities to DoS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29197</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Tue, 20 May 2008 16:34:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29197</guid>
		<description>@Andrew

There are a few differences between my approach and that of Wordpress.

Firstly, I've described my scheme and the rationale in a paper at a peer-reviewed conference. This gives researchers an opportunity to find flaws and suggest improvements.

Secondly, I only started to develop my scheme after looking for existing proposals which gave the same security guarantees. In contrast, the Wordpress system has far poorer security than the standard solutions.

Thirdly, I based my proposal on an existing scheme and was careful to avoid introducing new vulnerabilities. This significantly increases the chance that it is secure.

Someone has to design protocols, but only when necessary. Wordpress invented their own because they either did not look at, or ignored, the existing literature. They also took the wrong approach in the design process. It's therefore not surprising that their system was insecure.</description>
		<content:encoded><![CDATA[<p>@Andrew</p>
<p>There are a few differences between my approach and that of Wordpress.</p>
<p>Firstly, I&#8217;ve described my scheme and the rationale in a paper at a peer-reviewed conference. This gives researchers an opportunity to find flaws and suggest improvements.</p>
<p>Secondly, I only started to develop my scheme after looking for existing proposals which gave the same security guarantees. In contrast, the Wordpress system has far poorer security than the standard solutions.</p>
<p>Thirdly, I based my proposal on an existing scheme and was careful to avoid introducing new vulnerabilities. This significantly increases the chance that it is secure.</p>
<p>Someone has to design protocols, but only when necessary. Wordpress invented their own because they either did not look at, or ignored, the existing literature. They also took the wrong approach in the design process. It&#8217;s therefore not surprising that their system was insecure.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2008/05/16/hardened-stateless-session-cookies/#comment-29196</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Tue, 20 May 2008 16:25:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/?p=323#comment-29196</guid>
		<description>@John "Z-Bo" Zabroski

Good point; I've clarified that sentence.</description>
		<content:encoded><![CDATA[<p>@John &#8220;Z-Bo&#8221; Zabroski</p>
<p>Good point; I&#8217;ve clarified that sentence.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
