<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Timing attack in Google Keyczar library</title>
	<atom:link href="http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/feed/" rel="self" type="application/rss+xml" />
	<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/</link>
	<description>Embedded security, crypto, software protection</description>
	<lastBuildDate>Mon, 08 Mar 2010 21:19:29 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Nate Lawson</title>
		<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/#comment-5504</link>
		<dc:creator>Nate Lawson</dc:creator>
		<pubDate>Wed, 27 Jan 2010 05:41:55 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/?p=355#comment-5504</guid>
		<description>I assume you&#039;re referring to the x86 string instructions such as &quot;rep cmpsd&quot;? They still terminate early so there is a timing difference. It will be very small, but you have to consider the attacker&#039;s vantage point. It still may be exploitable and is highly dependent on the security model.</description>
		<content:encoded><![CDATA[<p>I assume you&#8217;re referring to the x86 string instructions such as &#8220;rep cmpsd&#8221;? They still terminate early so there is a timing difference. It will be very small, but you have to consider the attacker&#8217;s vantage point. It still may be exploitable and is highly dependent on the security model.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yuhong Bao</title>
		<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/#comment-5503</link>
		<dc:creator>Yuhong Bao</dc:creator>
		<pubDate>Mon, 25 Jan 2010 07:40:09 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/?p=355#comment-5503</guid>
		<description>What about fast string ops?</description>
		<content:encoded><![CDATA[<p>What about fast string ops?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Lawson</title>
		<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/#comment-5485</link>
		<dc:creator>Nate Lawson</dc:creator>
		<pubDate>Wed, 06 Jan 2010 19:34:02 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/?p=355#comment-5485</guid>
		<description>Steve, adding noise does not make the attack impractical. Since the very nature of random noise is that it is equally distributed, it averages out if you take more measurements.

The only solution is to use operations that do not have data-dependent variable timing.</description>
		<content:encoded><![CDATA[<p>Steve, adding noise does not make the attack impractical. Since the very nature of random noise is that it is equally distributed, it averages out if you take more measurements.</p>
<p>The only solution is to use operations that do not have data-dependent variable timing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steve Hurcombe</title>
		<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/#comment-5481</link>
		<dc:creator>Steve Hurcombe</dc:creator>
		<pubDate>Tue, 05 Jan 2010 14:28:02 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/?p=355#comment-5481</guid>
		<description>Hi Nate,
This is very interesting. Now there may be a simpler way to avoid these attacks.

If you added in a random delay you would surely add enough artificial noise to make the measurement impractical. This would then mask the inner workings of most algorithms regardless of how many separate paths there were. 

Best regards
Steve</description>
		<content:encoded><![CDATA[<p>Hi Nate,<br />
This is very interesting. Now there may be a simpler way to avoid these attacks.</p>
<p>If you added in a random delay you would surely add enough artificial noise to make the measurement impractical. This would then mask the inner workings of most algorithms regardless of how many separate paths there were. </p>
<p>Best regards<br />
Steve</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nate Lawson</title>
		<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/#comment-5117</link>
		<dc:creator>Nate Lawson</dc:creator>
		<pubDate>Wed, 17 Jun 2009 18:16:42 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/?p=355#comment-5117</guid>
		<description>Dave, you&#039;re right that 32-bit compares are harder to attack. On average, you have to do 2^31 guesses before you hit the right one. And then, if your timing channel is at all noisy, you have to repeat them all again. As you note, it&#039;s hard to be sure what you&#039;ve got until you really look at things from a low level.

However, some situations like local attacks or slow embedded processors might still be vulnerable. Side channels really require careful threat modeling and low-level awareness.

P.S. Care to include your email address?</description>
		<content:encoded><![CDATA[<p>Dave, you&#8217;re right that 32-bit compares are harder to attack. On average, you have to do 2^31 guesses before you hit the right one. And then, if your timing channel is at all noisy, you have to repeat them all again. As you note, it&#8217;s hard to be sure what you&#8217;ve got until you really look at things from a low level.</p>
<p>However, some situations like local attacks or slow embedded processors might still be vulnerable. Side channels really require careful threat modeling and low-level awareness.</p>
<p>P.S. Care to include your email address?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://rdist.root.org/2009/05/28/timing-attack-in-google-keyczar-library/#comment-5116</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Wed, 17 Jun 2009 10:28:36 +0000</pubDate>
		<guid isPermaLink="false">http://rdist.root.org/?p=355#comment-5116</guid>
		<description>Some further comments after playing with Visual C++ and gcc&#039;s memcmp() a bit...

gcc (for x86), despite claims on mailing lists to the contrary, appears to implement its memcmp() with a repe cmpsb even with optimisation enabled (seen via gcc -S -O2), so this should be vulnerable provided you can get precise timings.

VC++, going all the way back to 6.0 from 1998, uses an optimised compare in which it compares 32-bit quantities as much as possible using repe cmps and then fixes up the leftovers at the end of the loop manually (with all sorts of special-case handling for alignment and odd-length quantities and the like, the code is quite convoluted and since all I have is a disassembly I&#039;m having to guess at the reasons for some of this, which looks like a lot of hand-tuned P5 pipelining optimisation).  For multiple-of-32-bit data values like an HMAC compare you&#039;re getting 32-bit compares in a tight loop, so any non-prehistoric Windows code at least would appear to be immune to the guess-a-byte timing channel because the granularity level is 32 bits and not 8.

Thanks for the PDF links.</description>
		<content:encoded><![CDATA[<p>Some further comments after playing with Visual C++ and gcc&#8217;s memcmp() a bit&#8230;</p>
<p>gcc (for x86), despite claims on mailing lists to the contrary, appears to implement its memcmp() with a repe cmpsb even with optimisation enabled (seen via gcc -S -O2), so this should be vulnerable provided you can get precise timings.</p>
<p>VC++, going all the way back to 6.0 from 1998, uses an optimised compare in which it compares 32-bit quantities as much as possible using repe cmps and then fixes up the leftovers at the end of the loop manually (with all sorts of special-case handling for alignment and odd-length quantities and the like, the code is quite convoluted and since all I have is a disassembly I&#8217;m having to guess at the reasons for some of this, which looks like a lot of hand-tuned P5 pipelining optimisation).  For multiple-of-32-bit data values like an HMAC compare you&#8217;re getting 32-bit compares in a tight loop, so any non-prehistoric Windows code at least would appear to be immune to the guess-a-byte timing channel because the granularity level is 32 bits and not 8.</p>
<p>Thanks for the PDF links.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
