<?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: Protecting software distribution with a cryptographic build process</title>
	<atom:link href="http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/</link>
	<description>Security Research, Computer Laboratory, University of Cambridge</description>
	<pubDate>Sun, 06 Jul 2008 12:20:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: anon2020</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-979</link>
		<dc:creator>anon2020</dc:creator>
		<pubDate>Thu, 10 Aug 2006 20:10:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-979</guid>
		<description>Why all this hash checking?

It sounds like its all very muddy water and fraught with dangers. and still you wont be sure.

Why not just test the WHOLE executable code itself? Thats definitive for ALL Tors and especially the ones who download the exe nd dont build their own (thats 95% - I've tried following Tor build instructions for many days and failed - its obviously a black art - "build your own version" is a Torland devs euphemism for - "go to hell"). 

If each Tor also had a, rarely changing - no 
more than every 2 years - &#38; simple - so they could all compile it, binary comparator service running on port 9002 (say). Then this service could contact each other and request a segment (size to be determined - a reasonable chunk) of a fellow Tors exe, to check against their exe code.

If this check was done by every Tor on the network with one other Tor every 10 minutes, then gradually descrepencies could be found and offending servers isolated and informed.

A kind of voting system could be used.

Of course, Tors could only check like with like, if they ran the same version (&#38; same os version).

But that wouldnt stop the Tor devs from putting all versions up for checking from the systems servers themselves, and by removing such support for old versions they could push those Tors into upgrade.

2 birds with one stone as it were! 

The only problem, perhaps, with this system is those persons who have "custom built" their executables.

But they know who they are anyway, dont they, so no problem there then.

And its only fair that other TOR servers should also know who has "custom built" executables, so they may take action to protect themselves, if they feel the need!</description>
		<content:encoded><![CDATA[<p>Why all this hash checking?</p>
<p>It sounds like its all very muddy water and fraught with dangers. and still you wont be sure.</p>
<p>Why not just test the WHOLE executable code itself? Thats definitive for ALL Tors and especially the ones who download the exe nd dont build their own (thats 95% - I&#8217;ve tried following Tor build instructions for many days and failed - its obviously a black art - &#8220;build your own version&#8221; is a Torland devs euphemism for - &#8220;go to hell&#8221;). </p>
<p>If each Tor also had a, rarely changing - no<br />
more than every 2 years - &amp; simple - so they could all compile it, binary comparator service running on port 9002 (say). Then this service could contact each other and request a segment (size to be determined - a reasonable chunk) of a fellow Tors exe, to check against their exe code.</p>
<p>If this check was done by every Tor on the network with one other Tor every 10 minutes, then gradually descrepencies could be found and offending servers isolated and informed.</p>
<p>A kind of voting system could be used.</p>
<p>Of course, Tors could only check like with like, if they ran the same version (&amp; same os version).</p>
<p>But that wouldnt stop the Tor devs from putting all versions up for checking from the systems servers themselves, and by removing such support for old versions they could push those Tors into upgrade.</p>
<p>2 birds with one stone as it were! </p>
<p>The only problem, perhaps, with this system is those persons who have &#8220;custom built&#8221; their executables.</p>
<p>But they know who they are anyway, dont they, so no problem there then.</p>
<p>And its only fair that other TOR servers should also know who has &#8220;custom built&#8221; executables, so they may take action to protect themselves, if they feel the need!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Srijith</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-738</link>
		<dc:creator>Srijith</dc:creator>
		<pubDate>Mon, 17 Jul 2006 13:06:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-738</guid>
		<description>It might be worth a short paper...</description>
		<content:encoded><![CDATA[<p>It might be worth a short paper&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-737</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Mon, 17 Jul 2006 12:43:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-737</guid>
		<description>@Srijith

&lt;blockquote&gt;Have you started work on a paper already?&lt;/blockquote&gt;

No, not yet. I am considering it, but am still unsure whether it is worthwhile. The idea is quite obvious and the threat fairly obscure so I don't think it would make a fantastic paper. There might still be some value in writing it up properly though. I felt the blog post was on the long side, but I did have to miss out many details. A short paper would still give a lot more space for expanding on these points.</description>
		<content:encoded><![CDATA[<p>@Srijith</p>
<blockquote><p>Have you started work on a paper already?</p></blockquote>
<p>No, not yet. I am considering it, but am still unsure whether it is worthwhile. The idea is quite obvious and the threat fairly obscure so I don&#8217;t think it would make a fantastic paper. There might still be some value in writing it up properly though. I felt the blog post was on the long side, but I did have to miss out many details. A short paper would still give a lot more space for expanding on these points.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Srijith</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-736</link>
		<dc:creator>Srijith</dc:creator>
		<pubDate>Mon, 17 Jul 2006 11:24:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-736</guid>
		<description>You seem to have covered all the bases I can think of :)

As far as I can see, the only possible weak link is the process by which the user is informed where to check for the correct hash. If there is a centralised repo. for all open source software (like sourceforge etc.) this is a clearcut process. However if every software developer uses his/her own server to publish the hash, there is no secure way for the user to be directed to the uncompromised directory server.

Have you started work on a paper already? :)</description>
		<content:encoded><![CDATA[<p>You seem to have covered all the bases I can think of <img src='http://www.lightbluetouchpaper.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>As far as I can see, the only possible weak link is the process by which the user is informed where to check for the correct hash. If there is a centralised repo. for all open source software (like sourceforge etc.) this is a clearcut process. However if every software developer uses his/her own server to publish the hash, there is no secure way for the user to be directed to the uncompromised directory server.</p>
<p>Have you started work on a paper already? <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/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-734</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Mon, 17 Jul 2006 10:58:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-734</guid>
		<description>@Srijith

&lt;blockquote&gt;my position is that if you want the OS to do the verification automatically, the process has to be real-time and online.&lt;/blockquote&gt;

I don't think the verification process can be automatic, at least until operating system vendors integrate a tool which will perform it. When the user downloads the source code,  the build tools in the package are untrusted, so cannot be used. All the user has is what came with the operating system, of which I am using a hashing tool. 

He can then manually compare the hash of the source package with the online list. It is tedious, but I cannot think of a work-around. However, it only needs to be performed by those who worry about being a target of the attack I describe.

&lt;blockquote&gt;Using a predefined list of servers does have the problem of a DoS on the process.&lt;/blockquote&gt;

Yes, but a fairly minor one in my opinion. It only affects users who have just downloaded the source code. On discovering that the servers are down, potentially due to attack, they then have a choice of whether to just hope everything is OK, or to wait. The &lt;a href="http://www.itconsult.co.uk/stamper.htm" rel="nofollow" rel="nofollow" rel="nofollow"&gt;timestamping service&lt;/a&gt; I mentioned distributes hashes through Usenet, which provides some DoS resistance.</description>
		<content:encoded><![CDATA[<p>@Srijith</p>
<blockquote><p>my position is that if you want the OS to do the verification automatically, the process has to be real-time and online.</p></blockquote>
<p>I don&#8217;t think the verification process can be automatic, at least until operating system vendors integrate a tool which will perform it. When the user downloads the source code,  the build tools in the package are untrusted, so cannot be used. All the user has is what came with the operating system, of which I am using a hashing tool. </p>
<p>He can then manually compare the hash of the source package with the online list. It is tedious, but I cannot think of a work-around. However, it only needs to be performed by those who worry about being a target of the attack I describe.</p>
<blockquote><p>Using a predefined list of servers does have the problem of a DoS on the process.</p></blockquote>
<p>Yes, but a fairly minor one in my opinion. It only affects users who have just downloaded the source code. On discovering that the servers are down, potentially due to attack, they then have a choice of whether to just hope everything is OK, or to wait. The <a href="http://www.itconsult.co.uk/stamper.htm" rel="nofollow" rel="nofollow" rel="nofollow">timestamping service</a> I mentioned distributes hashes through Usenet, which provides some DoS resistance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Srijith</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-733</link>
		<dc:creator>Srijith</dc:creator>
		<pubDate>Mon, 17 Jul 2006 08:37:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-733</guid>
		<description>&lt;blockquote&gt;Also, I think that getting an authentic list of hashes is easier than anonymously getting a source code package.&lt;/blockquote&gt;I do need to go through the literature you pointed out but my position is that if you want the OS to do the verification automatically, the process has to be real-time and online. Using a predefined list of servers does have the problem of a DoS on the process. The crash of the one of the core Tor servers (moria?) that left all Tor server nodes hanging for couple of hours comes to mind.</description>
		<content:encoded><![CDATA[<blockquote><p>Also, I think that getting an authentic list of hashes is easier than anonymously getting a source code package.</p></blockquote>
<p>I do need to go through the literature you pointed out but my position is that if you want the OS to do the verification automatically, the process has to be real-time and online. Using a predefined list of servers does have the problem of a DoS on the process. The crash of the one of the core Tor servers (moria?) that left all Tor server nodes hanging for couple of hours comes to mind.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-728</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Sat, 15 Jul 2006 20:24:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-728</guid>
		<description>@Srijith

&lt;blockquote&gt;How do you think this is going to play out?&lt;/blockquote&gt;

Probably compromise of the distribution server, along with the signing key. If the attacker controls the downloading client then there is the additional problem of how to get hashes securely, but I discuss this more below.

&lt;blockquote&gt;This is important as in the latter case, the scheme you propose can be exploited to perform an effective DoS if all software installations report different hashes&lt;/blockquote&gt;

Correct, but I am treating a DoS is better than compromise. In this case I would hope someone would raise an alarm that the developer key is compromised. Because OpenPGP signatures have non-reputability, anyone could publish two source packages, with the same version number and valid signatures, but with different hashes. Unless the developer has a very good excuse then the compromise would be revealed.

&lt;blockquote&gt;Does your threat model assume that except for the downloaded software, all the other system parts (compiler, OS etc.) of the user are trusted?&lt;/blockquote&gt;

Yes, because if the OS is compromised then the attacker has much easier options. Perhaps curtained-memory could restrict the trusted computing base and allow some components of the OS to be compromised while still allowing my proposal to be implemented securely. I don't expect this to be the case in the short term.

&lt;blockquote&gt;You are also implicitly assuming a collision-free hash function.&lt;/blockquote&gt;

Yes, I do require strong collision resistance (incidentally, even though it used often, I don't like the term collision-free since message digest functions have collisions, they just should resist discovery). I eagerly await a hash function which is considered to meet this requirement, but the current ones are either not analysed enough or too similar to known broken hash functions to make me confident. 

Actually running the attack could be tricky, as the widely published version of the source code would need to have a magic BLOB somewhere, which might be hard to justify. Still, I would not rely on this for security as there have been demonstrations of plausible collisions in &lt;a href="http://www.win.tue.nl/~bdeweger/CollidingCertificates/" rel="nofollow" rel="nofollow"&gt;certificates&lt;/a&gt; and &lt;a href="http://www.cits.rub.de/MD5Collisions/" rel="nofollow" rel="nofollow"&gt;PostScript documents&lt;/a&gt;.

If I were deploying this scheme today, I think I would use two different hash functions, in the hope that making two packages which collide in both would be infeasible. Perhaps SHA-256 and RIPEMD-160 combined would be adequate.

&lt;blockquote&gt;So the threat model by extension would assume that these servers are not compromised.&lt;/blockquote&gt;

Also true. My hope is that it is easier to have multiple directory servers than software distribution points. Also, I think that getting an authentic list of hashes is easier than anonymously getting a source code package. In principle, the hash of a daily table of version hashes could be published on paper and verified by potential users and server operators. The timestamping literature has a number of other schemes involving hash chains and trees, for example the &lt;a href="http://www.itconsult.co.uk/stamper.htm" rel="nofollow" rel="nofollow"&gt;PGP Digital Timestamping Service&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>@Srijith</p>
<blockquote><p>How do you think this is going to play out?</p></blockquote>
<p>Probably compromise of the distribution server, along with the signing key. If the attacker controls the downloading client then there is the additional problem of how to get hashes securely, but I discuss this more below.</p>
<blockquote><p>This is important as in the latter case, the scheme you propose can be exploited to perform an effective DoS if all software installations report different hashes</p></blockquote>
<p>Correct, but I am treating a DoS is better than compromise. In this case I would hope someone would raise an alarm that the developer key is compromised. Because OpenPGP signatures have non-reputability, anyone could publish two source packages, with the same version number and valid signatures, but with different hashes. Unless the developer has a very good excuse then the compromise would be revealed.</p>
<blockquote><p>Does your threat model assume that except for the downloaded software, all the other system parts (compiler, OS etc.) of the user are trusted?</p></blockquote>
<p>Yes, because if the OS is compromised then the attacker has much easier options. Perhaps curtained-memory could restrict the trusted computing base and allow some components of the OS to be compromised while still allowing my proposal to be implemented securely. I don&#8217;t expect this to be the case in the short term.</p>
<blockquote><p>You are also implicitly assuming a collision-free hash function.</p></blockquote>
<p>Yes, I do require strong collision resistance (incidentally, even though it used often, I don&#8217;t like the term collision-free since message digest functions have collisions, they just should resist discovery). I eagerly await a hash function which is considered to meet this requirement, but the current ones are either not analysed enough or too similar to known broken hash functions to make me confident. </p>
<p>Actually running the attack could be tricky, as the widely published version of the source code would need to have a magic BLOB somewhere, which might be hard to justify. Still, I would not rely on this for security as there have been demonstrations of plausible collisions in <a href="http://www.win.tue.nl/~bdeweger/CollidingCertificates/" rel="nofollow" rel="nofollow">certificates</a> and <a href="http://www.cits.rub.de/MD5Collisions/" rel="nofollow" rel="nofollow">PostScript documents</a>.</p>
<p>If I were deploying this scheme today, I think I would use two different hash functions, in the hope that making two packages which collide in both would be infeasible. Perhaps SHA-256 and RIPEMD-160 combined would be adequate.</p>
<blockquote><p>So the threat model by extension would assume that these servers are not compromised.</p></blockquote>
<p>Also true. My hope is that it is easier to have multiple directory servers than software distribution points. Also, I think that getting an authentic list of hashes is easier than anonymously getting a source code package. In principle, the hash of a daily table of version hashes could be published on paper and verified by potential users and server operators. The timestamping literature has a number of other schemes involving hash chains and trees, for example the <a href="http://www.itconsult.co.uk/stamper.htm" rel="nofollow" rel="nofollow">PGP Digital Timestamping Service</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-727</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Sat, 15 Jul 2006 19:34:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-727</guid>
		<description>@Gavin Jamie

&lt;blockquote&gt;As I see it the source is hashed by the developed (and probably signed, although it assumed that this signature may be compromised)&lt;/blockquote&gt;

The source code is signed, but the signature key might be compromised in my threat model. I assume that a significant number of server operators will compile from source, and the build process hashes the source for them. I also assume that some operators will check for backdoors and verify that the application publishes the true hash. These assumptions may be erroneous, but there doesn't have to be a 100% guarantee of foul-play being detected. If the attacker has to pay a high cost for being caught, then only a small probability is needed for an effective defence.

&lt;blockquote&gt;Most software - even open source - is distributed as binaries.&lt;/blockquote&gt;

Yes, this is one of the problems with the scheme. It only works when some server operators compile from source. The protection my proposal gives is through safety in numbers, but those who run pre-compiled binaries do not help, because they have no opportunity to check the source code for vulnerabilities. So I think that pre-compiled binaries should not publish their hash, and users of such packages should be concerned if they do.

&lt;blockquote&gt;In short the concept of publically available hashes appears to work for source code managment but I see problems in applying this to binaries.&lt;/blockquote&gt;

I agree. If everyone uses pre-compiled binaries, then backdoors will not be detected through source-code inspection and my proposal does not improve the situation. Hashing the binary is undesirable because it will vary depending on compiler, it leaks more information than needed (see my reply to Adam S) and if it was not compiled by the user, does not offer protection.</description>
		<content:encoded><![CDATA[<p>@Gavin Jamie</p>
<blockquote><p>As I see it the source is hashed by the developed (and probably signed, although it assumed that this signature may be compromised)</p></blockquote>
<p>The source code is signed, but the signature key might be compromised in my threat model. I assume that a significant number of server operators will compile from source, and the build process hashes the source for them. I also assume that some operators will check for backdoors and verify that the application publishes the true hash. These assumptions may be erroneous, but there doesn&#8217;t have to be a 100% guarantee of foul-play being detected. If the attacker has to pay a high cost for being caught, then only a small probability is needed for an effective defence.</p>
<blockquote><p>Most software - even open source - is distributed as binaries.</p></blockquote>
<p>Yes, this is one of the problems with the scheme. It only works when some server operators compile from source. The protection my proposal gives is through safety in numbers, but those who run pre-compiled binaries do not help, because they have no opportunity to check the source code for vulnerabilities. So I think that pre-compiled binaries should not publish their hash, and users of such packages should be concerned if they do.</p>
<blockquote><p>In short the concept of publically available hashes appears to work for source code managment but I see problems in applying this to binaries.</p></blockquote>
<p>I agree. If everyone uses pre-compiled binaries, then backdoors will not be detected through source-code inspection and my proposal does not improve the situation. Hashing the binary is undesirable because it will vary depending on compiler, it leaks more information than needed (see my reply to Adam S) and if it was not compiled by the user, does not offer protection.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Adam</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-726</link>
		<dc:creator>Adam</dc:creator>
		<pubDate>Sat, 15 Jul 2006 19:32:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-726</guid>
		<description>I agree with points 1 and 2, but not 3.  ("Worms can run multiple attacks.")

Sometimes, that's true.  Other times, attack variants will crash the target, making it more important to get the right attack the first time.  If there's an attack ordering that gets around the DoS problem. then the worm still needs to fire off n times as many attack packets, which slows down propagation by a factor of N.  From the perspective of a worm that wants to be fast spreading, that's bad.  From the defender's perspective, its great.</description>
		<content:encoded><![CDATA[<p>I agree with points 1 and 2, but not 3.  (&#8221;Worms can run multiple attacks.&#8221;)</p>
<p>Sometimes, that&#8217;s true.  Other times, attack variants will crash the target, making it more important to get the right attack the first time.  If there&#8217;s an attack ordering that gets around the DoS problem. then the worm still needs to fire off n times as many attack packets, which slows down propagation by a factor of N.  From the perspective of a worm that wants to be fast spreading, that&#8217;s bad.  From the defender&#8217;s perspective, its great.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Steven J. Murdoch</title>
		<link>http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-725</link>
		<dc:creator>Steven J. Murdoch</dc:creator>
		<pubDate>Sat, 15 Jul 2006 18:57:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.lightbluetouchpaper.org/2006/07/13/protecting-software-distribution-with-a-cryptographic-build-process/#comment-725</guid>
		<description>@Adam S

You are quite correct that this scheme could be useful to attackers, so there is a trade-off to be made here. I am not particularly worried about this side-effect at the moment for a few reasons.

-- Tor already publishes the version number, so this scheme is no worse than the current situation. Server admins concerned with the information leak could just as easily fake the hash and version. However if the scheme is forced, using a TPM, then there would be a problem.

-- Fingerprinting networked applications is generally pretty easy. With access to the CVS repository, I think a good distinguisher for security relevant changes in Tor could be found.

-- For worms there is generally little need to fingerprint, if it knows about multiple attacks, it just runs them all. Where it does make a difference is if attacks are time-consuming or risk crashing the application. This might be the case when protection mechanisms prevent a NOP "landing-pad" being created and force accurate address guessing (e.g. return to libc).

Attacks against an individual are more of a problem because here the attacker can fingerprint the application, then search for the right exploits. Also, it should be noted that the hash is over the source-code, not the binary or memory image, so compiler and OS added security features (e.g. stack canaries and address space randomisation) are not revealed. TPM based solutions might be more of a problem in this respect.</description>
		<content:encoded><![CDATA[<p>@Adam S</p>
<p>You are quite correct that this scheme could be useful to attackers, so there is a trade-off to be made here. I am not particularly worried about this side-effect at the moment for a few reasons.</p>
<p>&#8211; Tor already publishes the version number, so this scheme is no worse than the current situation. Server admins concerned with the information leak could just as easily fake the hash and version. However if the scheme is forced, using a TPM, then there would be a problem.</p>
<p>&#8211; Fingerprinting networked applications is generally pretty easy. With access to the CVS repository, I think a good distinguisher for security relevant changes in Tor could be found.</p>
<p>&#8211; For worms there is generally little need to fingerprint, if it knows about multiple attacks, it just runs them all. Where it does make a difference is if attacks are time-consuming or risk crashing the application. This might be the case when protection mechanisms prevent a NOP &#8220;landing-pad&#8221; being created and force accurate address guessing (e.g. return to libc).</p>
<p>Attacks against an individual are more of a problem because here the attacker can fingerprint the application, then search for the right exploits. Also, it should be noted that the hash is over the source-code, not the binary or memory image, so compiler and OS added security features (e.g. stack canaries and address space randomisation) are not revealed. TPM based solutions might be more of a problem in this respect.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
