LWN: Comments on "Herman: Shipping Rust in Firefox" https://lwn.net/Articles/694274/ This is a special feed containing comments posted to the individual LWN article titled "Herman: Shipping Rust in Firefox". en-us Mon, 13 Oct 2025 10:11:19 +0000 Mon, 13 Oct 2025 10:11:19 +0000 https://www.rssboard.org/rss-specification lwn@lwn.net Herman: Shipping Rust in Firefox https://lwn.net/Articles/695133/ https://lwn.net/Articles/695133/ ras <div class="FormattedComment"> I've come here to thank tialaramex for his post. It's right up there with the best of the articles on LWN.<br> </div> Fri, 22 Jul 2016 04:02:02 +0000 Rust for safety https://lwn.net/Articles/695114/ https://lwn.net/Articles/695114/ pizza <div class="FormattedComment"> Most of my experience with MSVC was with C, not C++, and it wasn't until VS2015 that it finally supported C99 *syntax* sufficiently well to be able to use C99 at all on a cross-platform codebase.<br> <p> Anyway. Back to Rust.<br> <p> </div> Thu, 21 Jul 2016 18:11:25 +0000 Rust for safety https://lwn.net/Articles/695113/ https://lwn.net/Articles/695113/ Cyberax <div class="FormattedComment"> Back in 2003, MSVC was _better_ than C++ standard. For me the major advantage was that it didn't require template code to be littered with "typename" statements.<br> </div> Thu, 21 Jul 2016 17:54:44 +0000 Rust for safety https://lwn.net/Articles/695057/ https://lwn.net/Articles/695057/ pizza <div class="FormattedComment"> FWIW, that interview was from 2008 -- And when he says "It's getting very good actually both in terms of standard conformance and in code quality," the implication is that it had a reputation for not being either.<br> <p> MS's C++ compiler _was_ by far the worst when it came to standards compliance and bugs -- not necessarily in the compiler itself, but also the standard [template] libraries that everyone's supposed to be able to rely on. It's quite a lot better now.<br> <p> Meanwhile.<br> <p> "...and deep in GNU C++ you find quite a few non-standard features. Whenever I can, I prefer to deal with ISO standard C++ and to access system-specific features through libraries with system-independent interfaces."<br> <p> One of the nice things about the GNU toolchain is that you can disable all of those non-standard extensions by using compiler flags to force strict compliance (--std=c++03 --pedantic-errors) and still have a useful compiler. (And GCC doesn't provide any access to "system-specific features", beyond the mandated contents of the standard C/C++ libraries...)<br> </div> Thu, 21 Jul 2016 11:45:46 +0000 Rust for safety https://lwn.net/Articles/695045/ https://lwn.net/Articles/695045/ HelloWorld <div class="FormattedComment"> <font class="QuotedText">&gt; Secondly, he is employed at Microsoft, a company that has a shockingly bad C++ "compiler" (MSVC), notorious for being full of bugs and severely lacking in standards compliance.</font><br> It's one of the better implementations according to Bjarne Stroustrup.<br> <a rel="nofollow" href="https://www.simple-talk.com/opinion/geek-of-the-week/bjarne-stroustrup-geek-of-the-week/">https://www.simple-talk.com/opinion/geek-of-the-week/bjar...</a><br> </div> Thu, 21 Jul 2016 10:10:50 +0000 Rust for safety https://lwn.net/Articles/695044/ https://lwn.net/Articles/695044/ HelloWorld <div class="FormattedComment"> <font class="QuotedText">&gt; For example, we already know it rules out practically all use of global variables</font><br> Banning shared mutable state seems entirely reasonable to me.<br> </div> Thu, 21 Jul 2016 09:43:21 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694918/ https://lwn.net/Articles/694918/ farnz <p>It's not even guaranteed to be called in Java; it's called if the GC determines that this object has no references and is thus eligible for collection. <p>In practice, this means that if your process exits before the GC decides that your object is ready for collection, the finalizer is not called at all - e.g. because there happens to have been no memory pressure between the object being allocated, and the process exiting cleanly for a restart. Wed, 20 Jul 2016 09:12:54 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694914/ https://lwn.net/Articles/694914/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; In Java, you could clean up in the finalize() function. </font><br> No, you can not. Finalize method is only guaranteed to run some time in future - like next hour or next day.<br> <p> The way to manage resources in Java now is try-with-resources statement.<br> </div> Wed, 20 Jul 2016 07:01:36 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694913/ https://lwn.net/Articles/694913/ oever <blockquote>If I have a temporary directory, I might like it to be cleaned up no matter how the function exits (except things like poweroff, abort() or SIGKILL; not much anyone can do there). </blockquote> In C++, you can clean up in the destructor of an object. This is simple RAII. In Java, you could clean up in the finalize() function. The C++ destructor is called immediately when the scope ends. finalize() is called by the garbage collector which runs a few times per second. In Java and C# most variables are pointers to objects and Java does not have a way to automatically call a function directly when the last pointer to an object leaves scope and neither does C#. <p> A refreshing aspect of Rust is that the syntax for dealing with objects is nice and safe. It has the best of both worlds: no need for manual memory deallocation but the ability to run any type of cleanup when the last reference to an object leaves scope. Defining a destructor is optional and done via the Drop trait. Wed, 20 Jul 2016 06:55:41 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694893/ https://lwn.net/Articles/694893/ mathstuf <div class="FormattedComment"> I'm more thinking where there's a directory I created that should not persist outside of the function which created it; claiming ownership of files which already exist would probably not use such an RAII object the same way. `TempDir foo = TempDir::new()` versus `TempDir bar = TempDir::take(path)`.<br> </div> Tue, 19 Jul 2016 20:37:36 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694887/ https://lwn.net/Articles/694887/ Wol <div class="FormattedComment"> <font class="QuotedText">&gt; If I have a temporary directory, I might like it to be cleaned up no matter how the function exits (except things like poweroff, abort() or SIGKILL; not much anyone can do there). Currently, I have to explicitly try/catch or try/else for this to happen since the language doesn't let me use its memory management facilities for any other resource.</font><br> <p> Which language is that? I remember (in the early 80s) using Fortran77 and getting exactly the functionality you're after (except it was buggy :-) The Ops staff swore at me because I accidentally deleted several important files before I realised what was happening and they had to restore them from backup ... :-) (You could declare a file as temporary, and it was deleted on close. The problem was, if you re-used that file descriptor, it ignored any attempt to declare the new file permanent, and deleted that on close, too :-)<br> <p> The problem with programs is they like to open files anywhere. If they followed the standards and opened temporary files in /tmp, or c:\temp, or wherever they were supposed to, then the operating system would clean up behind them (any real OS that is, I don't think WinDos does it properly).<br> <p> Cheers,<br> Wol<br> </div> Tue, 19 Jul 2016 19:37:15 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694879/ https://lwn.net/Articles/694879/ excors <p>At the bottom level of language (/language runtime) implementation, dynamically-allocated memory is just a limited resource provided by the OS from sbrk/mmap syscalls. Similarly, file descriptors are a limited resource provided by the OS from open syscalls. Same for threads, GPU memory, network sockets, etc. Why should dynamically-allocated memory get so much more special treatment than any of those other resources that look so similar? (And that's before looking at resources provided by other processes rather than the OS.)</p> <p>Garbage collection is <a href="https://blogs.msdn.microsoft.com/oldnewthing/20100809-00/?p=13203">simulating a computer with an infinite amount of memory</a>. There are some languages that simulate a computer with a near-infinite capacity for threads, using green threads etc, but many don't. In theory a language could probably simulate support for an infinite number of file descriptors, but in practice they never seem to bother - if you try to open ~1024 files they'll happily return a "too many open files" error and let you solve the problem yourself. (Sometimes they'll go part way by GCing file objects to close ones they know can never be accessed in the future, but that only really works in languages with a refcounting GC or with RAII, and if you might access those files again then you're left to manually implement some pooling scheme yourself, so the language still isn't helping as much as it could.)</p> <p>Nowadays virtual address space pretty much <em>is</em> infinite, and the cost of physical memory seems to still be <a href="http://www.jcmit.com/mem2015.htm">decreasing exponentially</a>, but many of the other limited resources have remained constant for ages. So I think an exclusive focus on managing memory is not good enough for a modern language - they really ought to assist with managing those other resources just as well.</p> Tue, 19 Jul 2016 16:57:01 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694874/ https://lwn.net/Articles/694874/ mathstuf <div class="FormattedComment"> If I have a temporary directory, I might like it to be cleaned up no matter how the function exits (except things like poweroff, abort() or SIGKILL; not much anyone can do there). Currently, I have to explicitly try/catch or try/else for this to happen since the language doesn't let me use its memory management facilities for any other resource. Why can't I just have an object which cleans stuff up whenever it goes out of scope, not just when I remember to try/catch around its usage?<br> <p> <font class="QuotedText">&gt; Even from a pure security standpoint?</font><br> <p> Yes. Memory problems indicate other errors in the program which can be fixed. An ideal program (which I admit is an extremely rare find) wouldn't care if it were on a GC or some RAII setup with respect to memory. However, the RAII setup allows me to ensure that my program cleans up after itself on the filesystem, over the network, or whatever other resource might be needing managed without issue; a GC setup leaves me back in the world of C's memory management assistance instead for such things. I know D's GC doesn't guarantee destructors are called (genius that, but probably something about undecidablility of the proper call order at program shutdown), but C# and Java don't even *have* destructors for such things.<br> </div> Tue, 19 Jul 2016 15:57:25 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694865/ https://lwn.net/Articles/694865/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; on a pedestal</font><br> <p> More like: in the foundation.<br> <p> Memory is the lowest level, most basic resource. The lower level is a programming language, the closer it is to a memory management system. C is little more than a (manual and tedious) memory manager.<br> <p> Also, isn't memory the only local resource that the language has exclusive control over? Except for memory mapped I/O which is rarely seen in user space.<br> <p> <font class="QuotedText">&gt; sometimes the resources you're managing aren't less important than memory,</font><br> <p> Even from a pure security standpoint?<br> <p> </div> Tue, 19 Jul 2016 15:05:47 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694826/ https://lwn.net/Articles/694826/ mathstuf <div class="FormattedComment"> So one thing I don't really understand is why memory is put on a pedestal in these languages. It's not the only resource that needs to be managed, so why doesn't the language help me with those resources at all?<br> <p> Not that your point is invalid, but sometimes the resources you're managing aren't less important than memory, so proper RAII is more useful than a garbage collector.<br> </div> Tue, 19 Jul 2016 12:46:26 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694823/ https://lwn.net/Articles/694823/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; I can only imagine that in C++ it's even worse :)</font><br> <p> Despite[*] being much older, C and C++ got a proper [shared] memory model defined in their respective standards 7 years *after* Java did.<br> <p> [*] or... because of it?!<br> </div> Tue, 19 Jul 2016 08:49:41 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694822/ https://lwn.net/Articles/694822/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; I know of no other mainstream safe language. Java and C# avoid memory corruption but still allow plenty of ways to make simple errors</font><br> <p> Sure, what difference can one or two orders of magnitude more bugs make as far as security is concerned? A system is just secure or it's not, right? Nothing in between...<br> </div> Tue, 19 Jul 2016 08:37:13 +0000 Rust for safety https://lwn.net/Articles/694811/ https://lwn.net/Articles/694811/ mathstuf <div class="FormattedComment"> On the contrary. I've coded up hacks in Haskell by prototyping in Haskell's type system. If it compiles, I'm much more confident it will work than some open-coded hack. It can enforce that error codes are handled (or explicitly ignored). If my type signatures are correct, I know I am passing the right information without unnecessary leakage. A project which starts with this small boost is much easier to maintaining in the future should it persist past the hack stage (which many projects do).<br> </div> Tue, 19 Jul 2016 02:33:27 +0000 Rust for safety https://lwn.net/Articles/694810/ https://lwn.net/Articles/694810/ mathstuf <div class="FormattedComment"> The compiler will assume you've enforced the rules of Rust though. No different than playing around in Python's C API.<br> </div> Tue, 19 Jul 2016 02:29:28 +0000 Rust for safety https://lwn.net/Articles/694794/ https://lwn.net/Articles/694794/ rahulsundaram <div class="FormattedComment"> <font class="QuotedText">&gt; That's to say, Rust's borrow-checking discipline fails to support random hacks. </font><br> <p> Not sure what you mean? Random hacks can be unsafe <br> <p> <a href="https://doc.rust-lang.org/book/unsafe.html">https://doc.rust-lang.org/book/unsafe.html</a><br> </div> Mon, 18 Jul 2016 18:42:34 +0000 Rust for safety https://lwn.net/Articles/694756/ https://lwn.net/Articles/694756/ ksandstr <div class="FormattedComment"> <font class="QuotedText">&gt;What makes Rust an easy choice is that, like C++, it imposes no overhead, and no runtime dependencies to complicate integration.</font><br> <p> On the contrary, Rust imposes the worst kind of overhead possible: that on implementation. For programs written in C++ that're already down with the big-design-up-front philosophy this is insignificant, but unsurprisingly most software isn't written in Big Design C++.<br> <p> That's to say, Rust's borrow-checking discipline fails to support random hacks. This is a major failure since most software arises from said hacks in one way or another.<br> </div> Mon, 18 Jul 2016 15:12:16 +0000 abuse of DNSSEC signing keys https://lwn.net/Articles/694720/ https://lwn.net/Articles/694720/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; afaict, this is not actually the case. I believe it's possible for a zone signing key to sign any RRSET within the zone at any level</font><br> Nope. DNSSEC keys are just that - keys. They don't use X.509 crap or anything complicated - the DNS standard directly defines the key encoding.<br> <p> Signature validation is also straightforward - you get the parent's public key through NSKEY query and check your response. Then repeat it until you reach a locally available root of trust - it's completely hierarchical.<br> <p> <font class="QuotedText">&gt; If this were true, we would have already seen people doing this publicly. However, public efforts in this direction (usually called "DNSSEC transparency") are only in their infancy.</font><br> That's because nobody really cares, since DNSSEC is used only in a small number of domains. Even important domains like google.com are not signed.<br> </div> Sun, 17 Jul 2016 22:16:48 +0000 abuse of DNSSEC signing keys https://lwn.net/Articles/694718/ https://lwn.net/Articles/694718/ dkg Cyberax said: <blockquote>To intercept the connection, NSA/FBI/whatever would have to create a fake certificate and key for the first-level domain that you're using (for example, .io), sign it with the real root key, and then use this fake keypair to MITM the requests.</blockquote> afaict, this is not actually the case. I believe it's possible for a zone signing key to sign any RRSET within the zone at any level, so there is no need to create a "fake" secondary key for the next-hop down the tree the root zone signing keys can just go ahead and sign the records for <tt>www.example.com</tt> directly. (i'm not saying that an attacker in control of the root signing keys would necessarily want to do this, just that i think it should technically be valid from the perspective of a DNSSEC validator.) <p> Cyberax also said: <blockquote>This would be VERY visible, normally you would have only a handful of keys for each TLD. They can be easily pinned and checked.</blockquote> If this were true, we would have already seen people doing this publicly. However, public efforts in this direction (usually called "DNSSEC transparency") are only in their infancy. I welcome that sort of auditing work, though! The potential rate of turnover in these zones is very high -- RRSIGs often have a short lifespan -- so verifiably logging all RRs signed by a given DNSKEY over time is actually a potentially resource-intensive task. It only gets more expensive if you want to log the signatures from DNSKEYs in the subzones, too. Sun, 17 Jul 2016 22:03:30 +0000 Rust for safety https://lwn.net/Articles/694698/ https://lwn.net/Articles/694698/ mathstuf <div class="FormattedComment"> I think it's that the compiler phases don't pass all of the required information between them and fixing it is too invasive a change for the cases it fixes. If it were FOSS, there might be an enterprising contributor to tackle it, but I suspect there is higher ROI for things like getting the clang stuff released.<br> </div> Sun, 17 Jul 2016 12:09:53 +0000 Rust for safety https://lwn.net/Articles/694696/ https://lwn.net/Articles/694696/ micka <div class="FormattedComment"> <font class="QuotedText">&gt; not fixable due to it being a 35 year old codebase</font><br> <p> So it's roughly the same age as gcc. It's a shame those two old compilers can't be fixed!<br> </div> Sun, 17 Jul 2016 10:17:06 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694683/ https://lwn.net/Articles/694683/ JanC_ <div class="FormattedComment"> They should have used small caps instead… :)<br> </div> Sat, 16 Jul 2016 20:00:17 +0000 Rust for safety https://lwn.net/Articles/694679/ https://lwn.net/Articles/694679/ pizza <div class="FormattedComment"> <font class="QuotedText">&gt; They also don't claim to be compliant.</font><br> <p> Be that as it may, MSVC's "quirks" have historically made it quite challenging to maintain a cross-platform codebase.<br> <p> </div> Sat, 16 Jul 2016 16:37:51 +0000 Rust for safety https://lwn.net/Articles/694668/ https://lwn.net/Articles/694668/ mathstuf <div class="FormattedComment"> <font class="QuotedText">&gt; a shockingly bad C++ "compiler" (MSVC)</font><br> <p> While it has its quirks, it does catch warnings that are not caught by GCC or Clang. Most of its standards shortfalls are documented as such and are, generally, not fixable due to it being a 35 year old codebase (e.g., there are some edge cases where the parser just says "no" to valid constructs that will never be fixed due to the structure of the codebase; two-phase lookup (enable_if-area stuff) is also not implemented). There is now a Clang backend which has a cl-compatible command line interface which ships with the most recent versions of Visual Studio.<br> <p> <font class="QuotedText">&gt; severely lacking in standards compliance</font><br> <p> They also don't claim to be compliant. For contrast, see Apple's Clang release where they *ripped out* TLS support (supposedly it is also a runtime failure; it compiles just fine). And they still claim to be compliant.<br> <p> <font class="QuotedText">&gt; A company with this track record should be nowhere near a ISO C++ standards process</font><br> <p> Have you been to a ISO C++ meeting? No one company runs the show. Not by any stretch.<br> </div> Sat, 16 Jul 2016 13:33:03 +0000 Rust for safety https://lwn.net/Articles/694657/ https://lwn.net/Articles/694657/ marcH <div class="FormattedComment"> <font class="QuotedText">&gt; By following some easy rules, C++ coding can be about equally memory-safe, although it's hard to impose those rules on others' code. The place where C++ might never compete with Rust...</font><br> <p> You meant: the other place whether C++ might never compete with Rust either...<br> </div> Sat, 16 Jul 2016 06:42:15 +0000 Holy bubbles batman. https://lwn.net/Articles/694649/ https://lwn.net/Articles/694649/ mathstuf <div class="FormattedComment"> AFAIK, RequestPolicy is no longer maintained and the advanced setup for uBlock Origin is the preferred way. I also use Self-Destructing Cookies, but NoScript is replaced by uBlock Origin and uMatrix. Sure, noscript tags are broken, but it is one less extension to juggle too.<br> </div> Fri, 15 Jul 2016 22:37:16 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694643/ https://lwn.net/Articles/694643/ tialaramex <div class="FormattedComment"> Ah, very interesting. I was going on the Bugzilla ticket contents rather than the code, thanks for linking.<br> </div> Fri, 15 Jul 2016 20:43:56 +0000 Holy bubbles batman. https://lwn.net/Articles/694624/ https://lwn.net/Articles/694624/ drag <div class="FormattedComment"> There is a limit to what Mozilla can do. <br> <p> If you want to have a 'open web' then it's going to require new technologies (IPFS, etc) and the demand from web users to make it happen. <br> </div> Fri, 15 Jul 2016 15:04:03 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694594/ https://lwn.net/Articles/694594/ drag <div class="FormattedComment"> <font class="QuotedText">&gt; In that case most people wouldn't notice if NSA/FBI/whatever did a MITM between them and their upstream (caching) DNS-server as long as the NSA/FBI/whatever also generated fake TLD-signnatures.</font><br> <p> That is what the certificate pinning are TLD are for, as mentioned above. <br> <p> When your localhost DNS connects to the network's DNS resolver it will obtain information for the TLD certificate. It will take note and remember the hash for that cert. If the cert changes later on for a MITM attack then the localhost DNS resolver will pick up on this and freak out.<br> <p> Alternatively it wouldn't be too much of a burden for the distros to collect and ship TLD certificate information along with the localhost DNS resolver. <br> <p> Cert pinning does work and it has caught MITM attacks against HTTPS when implemented in browsers. <br> <p> The problem with this is that TLD certifications compromises would be a NIGTHMARE. Pinning can backfire because it can make it more difficult to deal with legit changes to certs. <br> </div> Fri, 15 Jul 2016 14:50:18 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694578/ https://lwn.net/Articles/694578/ mjthayer <div class="FormattedComment"> <font class="QuotedText">&gt; There are some pretty awful problems with Convergence in practice and it is largely moribund.</font><br> <p> For simplicity I will limit this to using certificates to establish web site identity. It seems to me that the first problem to be solved here is establishing that the site one is communicating with securely is really the one one expected (modulo typing mistakes in URLs, such as "www.mybank.com.badsite.net), and specifically not identifying the site's owners, nor the site's moral integrity. I would expect that this could be achieved using an off-line but regularly updated database mapping URLs to certificates which could be built up by automated crawling, probably using some ranking algorithm to keep the size down. This would be the white list.<br> <p> The second would be a similar database of certificates known to be in use for bad purposes, the black list. Building this seems to me to be a similar problem to building a virus signature database, and presumably a similar level of quality would be to be expected. The black list would obviously take priority over the white list.<br> <p> Would you expect the price tag of achieving this to be higher than that of similar databases which have been created?<br> </div> Fri, 15 Jul 2016 07:24:18 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694553/ https://lwn.net/Articles/694553/ Wol <div class="FormattedComment"> <font class="QuotedText">&gt; True, but that implies that I'm paranoid enough to do that and keep updating the local copies when the TLD keys change (with appropriate verification). </font><br> <p> But isn't that fairly easy? You pull down a set of "known good" TLD keys, and the system triggers an alert when they change, telling you to re-get the keys. Bit of a pain when they change unexpectedly, but the point is, not that it's secure or not, but that YOU ARE NOTIFIED when something changes.<br> <p> Cheers,<br> Wol<br> </div> Thu, 14 Jul 2016 21:59:14 +0000 Rust for safety https://lwn.net/Articles/694548/ https://lwn.net/Articles/694548/ epa <div class="FormattedComment"> On the contrary, someone who has spent the last twenty years collecting the various traps and gotchas in C++ is ideally placed to suggest ways they could be eliminated. This is also a reason why Rust, to an interested observer, looks like such a good thing: it is written by programmers who have experience using C++ in a large, mature codebase, and have been well exposed to its strengths and weaknesses. (The same is true of Mono, which was also originally a "there must be something better than C++" project following the experience of writing Gnumeric.)<br> <p> I don't think the failings of Microsoft's C++ compiler are particularly relevant to Stroustrup and Sutter's safe-subset proposal.<br> </div> Thu, 14 Jul 2016 20:23:31 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694547/ https://lwn.net/Articles/694547/ Cyberax <div class="FormattedComment"> <font class="QuotedText">&gt; True, but that implies that I'm paranoid enough to do that and keep updating the local copies when the TLD keys change (with appropriate verification). </font><br> It's not too terribly complicated to package such keys in Fedora/Debian/... or provide a public service accessible over the Internet/TOR/...<br> </div> Thu, 14 Jul 2016 20:01:58 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694546/ https://lwn.net/Articles/694546/ farnz <p>But, if your operation is to remain stealthy, you need to sign every response I see for the duration of the appropriate TTLs; thus, instead of being only needing to MITM one Internet access session plus compromise one trusted CA (which is all you need in the current CA/B Forum PKI setup), you need to MITM every DNS query I send or receive for a week (that being the TTL of DS records in the root). If you don't, you run the risk that I'll see the "real" key, and discover that there's perfidy afoot. Thu, 14 Jul 2016 19:52:11 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694545/ https://lwn.net/Articles/694545/ farnz <p>True, but that implies that I'm paranoid enough to do that and keep updating the local copies when the TLD keys change (with appropriate verification). <p>The thing about automatic caching is that it's transparent to me, and it's a useful performance optimization (so I'd expect OSes to do a degree of it behind my back). If the NSA doesn't take it into account, they risk being unmasked by their own bad opsec. Thu, 14 Jul 2016 19:43:25 +0000 Herman: Shipping Rust in Firefox https://lwn.net/Articles/694544/ https://lwn.net/Articles/694544/ raven667 <div class="FormattedComment"> <font class="QuotedText">&gt; These certificates won't be included in the operating system or browser's default trust stores unless the CA routinely issues proper certificates for the associated TLD</font><br> <p> But of course they all do and would continue to do so, which is why the overall risk is unchanged.<br> </div> Thu, 14 Jul 2016 19:34:18 +0000