On Sunday 01 August 2010 11:14:51 Ximin Luo wrote: > I agree with this view too. We just don't have enough developer time to worry > about this *and* progress with more productive features. Even Tor, which has > many times more resources than us, don't worry about swap/etc/whatever.
Tor is written in C. So is GPG. GPG locks pages in memory to ensure keys are not leaked to disk. As have C programs doing encryption since a very long time ago. THIS IS NOT POSSIBLE IN JAVA. This is a clear technical defficiency that should have a technical solution. The only way we can avoid such leaks is to recommend people either encrypt or turn off swap, or to offer to do it for them. Since on recent Windows versions we can do this, it would be a good idea to offer the possibility in the installer, or offer instructions on how to do it if/when the user chooses a higher security level in the first time wizard. Secondly, turning on swap encryption on recent windows is *very* easy. If it works. It's a single command. I propose that, *if* the user sets physical security above LOW, we have the system tray applet (which will connect via FCP to pick up notifications) pop up a dialog box offering to encrypt the swap file. It should check whether it is already encrypted first. > > The theoretical scope of freenet design is to have secure and anonymous > storage > and transfer. (Everything unknown to you) is encrypted so that you can have > plausible deniability if your machine gets seized and examined. There is no > difference between running a node, and never using it to actually obtain > stuff > for yourself - you're still providing "the freenet service" to others. We have a great many mechanisms that theoretically are out of scope but practically make a useful difference for users, especially for non-technical users, to avoid unnecessary risk and exposure. For example: - We tell browsers not to cache pages. (This should largely prevent sensitive freesites from ever hitting disk, ignoring swap issues) - We try to open an incognito mode browser if possible. (The user should clear his browser history or use a separate browser) - We filter HTML. (The user should set up a VM which only has access to Fproxy!) - We encrypt node.db4o, if the user wants a higher physical seclevel. (This is already implemented, the issue at the moment is that we need to upgrade the encryption before implementing auto-backups) > > However, once you access data in a readable form, you've decrypted it. This > is > just like accessing anything on any other service (looking at web pages, > reading email, etc). Your computer is going to cache it, leaving traces of > what > you've done. This is another well established technical problem with a set of well established technical solutions. Sensitive sites set no-cache headers, so does Freenet. Apart from the swap hole, this is largely a solved problem, at least in principle. > > In this scenario, it's up to the individual what level of security they want. > It can only be up to the individual - only they know what they've accessed, > and > can get in trouble for. Security that you don't need is just a waste of time > and resources. Which is why we ask them. Right now, and will continue to do so. > Also, if we spend this much time on an issue out of our scope > we're effectively DDoSing our own development time. It's hardly a DDoS. > > So yes we should just drop "physical security". To do it properly we'll have > to > fuck with parts of people's machines we really shouldn't be fucking with; and > if they are that paranoid (I am) they should just encrypt their entire disks, > which will cover non-freenet stuff too. I strongly disagree. We do not have to do any low-level anything. We can make Freenet relatively secure out of the box without a huge effort, and without unreasonable layer violations. This significantly improves the security:usability combination for new users (security and usability are inseparable). All the work on physical security - encryption of node.db4o in particular - resulted directly from my discussions with the Nedanet people. In such places as Iran, by far the most likely attack is seizing people's computers and looking at what they have been downloading. (Freenet isn't actually suitable for Iran in general due to poor broadband but that's a discussion for another day...). Obviously the most critical issue was the The Register attack i.e. caching stuff in the datastore that really shouldn't be cached in the datastore. I fixed this by not caching locally requested content in the datastore, but this resulted in more requests for such content going to the network, which could conceivably be a risk on the network level; so I created the client-cache. The client-cache only caches stuff requested locally, and there is no mechanism to ensure that stuff you no longer request is instantly removed from the client-cache. This is also true of the downloads database: Space is reused but as far as I know, even if there are no bugs causing left-over URL's etc (which there have been on many occasions), so in both cases there is a good chance that incriminating data could be recovered. Hence the physical security settings were introduced, along with master.keys and encryption of node.db4o and the client cache. > > Obviously, we should try to make it clear (like Tor[1]) what Freenet DOES and > DOES NOT do. "the freenet service" only tries to provide an > anonymous/DDoS-resistant insert/request service, it doesn't try to protect > you > after you actually *get* that data. > > X > > [1] http://www.torproject.org/download.html.en#Warning If Tor doesn't use locked pages I'd be very surprised. Even if it doesn't, GPG does. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 197 bytes Desc: This is a digitally signed message part. URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20100802/e95266a4/attachment.pgp>