LWN: Comments on "Wheeler: Fully Countering Trusting Trust through Diverse Double-Compiling" https://lwn.net/Articles/360040/ This is a special feed containing comments posted to the individual LWN article titled "Wheeler: Fully Countering Trusting Trust through Diverse Double-Compiling". en-us Mon, 10 Nov 2025 13:42:19 +0000 Mon, 10 Nov 2025 13:42:19 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net whoops... https://lwn.net/Articles/360911/ https://lwn.net/Articles/360911/ roelofs Doh! Just screwed up the page-width. Sorry 'bout that. Sat, 07 Nov 2009 02:16:38 +0000 Open Source Software connection https://lwn.net/Articles/360909/ https://lwn.net/Articles/360909/ roelofs Is the lack of access to your dissertation due to an intentional embargo period (e.g., until the public defense), or is it an ooper? <P> <PRE><FONT COLOR="#440088">Forbidden You don't have permission to access /trusting-trust/dissertation/wheeler-trusting-trust-ddc.pdf on this server. Apache/2.2.3 (CentOS) Server at www.dwheeler.com Port 80 </FONT></PRE> <P> It seems slightly contradictory to the (very generous) license terms, so I'm guessing the latter... <P> Greg <P> P.S. Congrats! Kind of a nice feeling to be done with the whole thing, eh? Sat, 07 Nov 2009 02:15:12 +0000 C++ templates and static functions https://lwn.net/Articles/360339/ https://lwn.net/Articles/360339/ jwakely <div class="FormattedComment"> See <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#561">http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.ht...</a> and <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19092">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19092</a><br> <p> Apparently the restriction on calling static functions from templates was put in place to allow template instantiation to be done at link-time, using only the information available to the linker (which might not include static functions.)<br> <p> At the Santa Cruz meeting of the C++ committee this issue was just closed, with a change allowing static functions to be found (noone does instantiation at link time.)<br> <p> I'll stop derailing this article with off-topic comments about C++ trivia now.<br> </div> Wed, 04 Nov 2009 17:21:33 +0000 Don't embed timestamps! https://lwn.net/Articles/360235/ https://lwn.net/Articles/360235/ nix <div class="FormattedComment"> Ah. That's what surprised me: I noticed that NEWS item going past and <br> assumed it meant random names were no longer used. Foolish me didn't <br> bother to actually check the source code though.<br> <p> </div> Tue, 03 Nov 2009 20:00:15 +0000 Don't embed timestamps! https://lwn.net/Articles/360226/ https://lwn.net/Articles/360226/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; Also (in my opinion) build processes should not embed: the name of the user doing the building, the name of the machine,...</font><br> <p> But these are useful information. I think the right trade-off is to embed them but only at the highest packaging level, where they can easily be separated from the actual binaries.<br> <p> </div> Tue, 03 Nov 2009 19:42:20 +0000 Don't embed timestamps! https://lwn.net/Articles/360179/ https://lwn.net/Articles/360179/ jwakely <div class="FormattedComment"> <font class="QuotedText">&gt; Ah, a random seed option or something?</font><br> <p> That option already exists, see -frandom-seed, but shouldn't be needed to bootstrap gcc. (It is useful for users who want to compare binaries though.)<br> <p> Instead, the anon namespace will still cause a random string to be part of the mangled name, but that name will no longer be used in the context that was causing bootstrap comparison failures.<br> <p> Also, N.B. since GCC 4.2 "Members of the anonymous namespace are now local to a particular translation unit, along with any other declarations which use them, though they are still treated as having external linkage for language semantics." (from <a href="http://gcc.gnu.org/gcc-4.2/changes.html">http://gcc.gnu.org/gcc-4.2/changes.html</a>)<br> That means you get most of the benefits of static linkage, without actually having static linkage as far as the language is concerned.<br> <p> <p> </div> Tue, 03 Nov 2009 16:58:17 +0000 Don't embed timestamps! https://lwn.net/Articles/360139/ https://lwn.net/Articles/360139/ nix <div class="FormattedComment"> But if they're in an anonymous namespace the name can't leak outside the translation unit anyway (at least not in a way which could be used at compile time to instantiate a template; only as a pointer at runtime), so this seems like a pointless requirement.<br> <p> </div> Tue, 03 Nov 2009 14:58:56 +0000 Don't embed timestamps! https://lwn.net/Articles/360126/ https://lwn.net/Articles/360126/ arafel <div class="FormattedComment"> I realise your comment probably wasn't directed at the paper, but for the benefit of others, the paper does actually discuss how to handle embedded timestamps. It's not an ignored problem. :-)<br> </div> Tue, 03 Nov 2009 13:50:02 +0000 Don't embed timestamps! https://lwn.net/Articles/360112/ https://lwn.net/Articles/360112/ quotemstr <div class="FormattedComment"> For starters, pointers used as non-type template arguments must point to things with external linkage.<br> </div> Tue, 03 Nov 2009 11:47:56 +0000 Don't embed timestamps! https://lwn.net/Articles/360111/ https://lwn.net/Articles/360111/ nix <div class="FormattedComment"> Ah, a random seed option or something?<br> <p> (I've been wondering what uses could possibly require external linkage for some time. It's not as if you can put things in anonymous namespaces in two different translation units and have them refer to each other, and references via function pointers don't care if you're using static linkage or not. So why is this done?)<br> <p> </div> Tue, 03 Nov 2009 11:17:14 +0000 Open Source Software connection https://lwn.net/Articles/360106/ https://lwn.net/Articles/360106/ sourcejedi <div class="FormattedComment"> Good point.<br> <p> I was skeptical about this at first, having been seduced by the the perfection of the original "Trusting trust" paper.<br> <p> "Trusting trust" says you can't trust a single compiler, even if you have the source code. This work shows you can test a pair of compilers for trustworthiness - *provided* they are independent. (They may both be malicious, but you can tell if they are malicious in different ways)...<br> <p> From where I'm standing, this doesn't automatically rule out that Ken Thompson has recursively back-doored every single compiler in modern use. It would require amazing foresight, but I don't like to rule it out. But what it does say is that if I can bootstrap a hack of a compiler by myself, however slow and sub-optimal it may be, I can then use it test for back-doors in the current whiz-bang generation of compilers.<br> </div> Tue, 03 Nov 2009 11:10:58 +0000 Don't embed timestamps! https://lwn.net/Articles/360104/ https://lwn.net/Articles/360104/ jwakely <div class="FormattedComment"> I think the problem is fixed, or soon will be.<br> <p> Some uses of C++ templates require names with external linkage, so anonymous namespaces can be used to get similar effects to static linkage, without actually having static linkage.<br> </div> Tue, 03 Nov 2009 10:52:38 +0000 Don't embed timestamps! https://lwn.net/Articles/360100/ https://lwn.net/Articles/360100/ nix <div class="FormattedComment"> GCC has a bit of a problem right now when bootstrapping itself using C++, because anonymous namespaces have random names rather than static linkage (I have no idea why the standard felt fit to require non-static linkage for such things), which leads to each bootstrap stage differing.<br> </div> Tue, 03 Nov 2009 09:46:17 +0000 Don't embed timestamps! https://lwn.net/Articles/360099/ https://lwn.net/Articles/360099/ mjthayer <div class="FormattedComment"> Add in the word "optionally" in the right places and I quite agree. Some of the things you mention are useful to have, and not necessarily things you want to ban outright, but they don't belong in a "release version" of any software.<br> </div> Tue, 03 Nov 2009 09:45:51 +0000 Don't embed timestamps! https://lwn.net/Articles/360093/ https://lwn.net/Articles/360093/ edmundo <div class="FormattedComment"> Comparing your two binaries, expecting them to be identical, only works if your build process does not embed timestamps. This is something I've complained about before, for example in the context of Debian's process for building packages, but apparently other people don't think it matters (maybe they're just less pedantic than me). Also (in my opinion) build processes should not embed: the name of the user doing the building, the name of the machine, the names of various temporary files, etc. Also, if you tar up a directory tree with the ordinary "tar" command then you get the files in "random" order, which is another source of nondeterminism that can be eliminated with some care. The advantage of doing all this is that several people can build the same package and get identical binaries, which you can compare to prevent trojans, and also to make sure, in the case of Debian, that the released system is capable of building the packages in the released system, something that the Debian process didn't guarantee, the last time I checked (because the release might contain packages that were built with a prerelease version of the system that might, in unusual cases, turn out to behave differently from the same package built with the released system).<br> <p> </div> Tue, 03 Nov 2009 09:10:45 +0000 Open Source Software connection https://lwn.net/Articles/360065/ https://lwn.net/Articles/360065/ dwheeler I should quickly make the connection to free/libre/open source software (FLOSS), for those who aren't familiar with this problem. After a successful "trusting trust" attack, the source code no longer corresponds with the executable, which renders moot the "many eyes" claim for FLOSS. Thankfully, there's a technique which can detect the attack, and thus, source code review can still work. Even more interestingly, the technique is primarily useful only for those who have access to the source code... which means that against the trusting trust attack, open source software has a decided advantage. Tue, 03 Nov 2009 04:55:44 +0000