Ask HN: What's your favorite online-backup tool?: http://news.ycombinator.com/item?id=1946416
See this thread from a week ago: http://news.ycombinator.com/item?id=4224518
In short:
If you are a hacker or care about security and have money: SpiderOak or Tarsnap
Source code: Git
If you are poor and care about security: Dropbox with TrueCrypt (be careful that you don't mount simultaneously)
None of the above and lazy: Dropbox vanilla (better terms, non-evil non-giant company)
It's not for everyone, though:
At the present time, Tarsnap does not support Windows
(except via Cygwin) and does not have a graphical user
interface.What scenario do you refer to? Why would it be bad to run a non-paused Dropbox client and mount a TrueCrypt volume inside it at the same time?
First, I created a small 64 MB TrueCrypt partition. I then mounted the partition in TC. I noticed immediately that the tc file has an exclusive lock, so any changes in your TC partition will never be synced until the partition is unmounted! If your use case is to mount your partition immediately upon login, work for the day, and then shutdown, Dropbox will never have an opportunity to sync your partition.
My next test was to mount the TC partition simultaneously (Desktop and Laptop). Then I run into conflicts, as another posted mentioned. Because of the exclusive file lock, if you mount simultaneously on two machines, you will start getting duplicate -conflict files when unmounting either of the partitions, since the other is still locked. It's not immediately clear from examination which TC partition is actually the most recent one. And may Gods have mercy on you if at any time you edit both partitions before they sync.
Even if you're willing to live with these annoyances, there is now the trade-off of which partition size to create. Too large of a partition and syncing can take a long time, even if you make minimal file changes (because of chaining, there is not a 1 bit -> 1 bit change in TC partitions). Too small of a partition, and you'll have to keep resizing it or creating new ones. What a hassle.
The only use case which seems to work well for me, is for minimally modified files, like for annual tax returns. Here, a TrueCrypt container makes sense and works quite well because the partition is basically read-only and unlikely to be simultaneously or even regularly mounted.
So for those people who keep suggesting TrueCrypt, I'm curious, do you actually use it, and if so, how? The suggestions for file-level encryption (encfs) appear to be much more sane.
Indeed, it seems like one of those problems where solutions seem obvious (use TrueCrypt!) until you experiment or think about it more deeply.
If someone were to make this into an actual product, it sould be relatively simple to make the encryption happen as soon as a file changes and avoid the latency.
http://www.boxprotect.com/?lang=en
The advantage of EncFS is that it's not a huge binary blob, instead you transparently store files with garbled names and garbled contents, but an otherwise untouched directory structure. I'm not sure if TrueCrypt can do that too.
* brackup: uses encryption, host yourself. http://code.google.com/p/brackup
* Camlistore is worth keeping an eye on. Looks like a next-generation all-purpose low level CMS. By the same author of brackup, Brad Fitzpatrick. http://camlistore.org/
Update: Looks like they are using some kind of embedded flash. Does that mean a flash or actionscript cryptography implementation?
To answer your questions:
1. all encryption/decryption is done in JS. BouncyCastle java source code is used (slightly tweaked for performance) - it is compiled into JS using Google's GWT compiler.
2. flash is only used for triggering file save dialog, similarly to downloadify, in browsers that do not support HTML5 alternatives. In Chrome, which supports <a download>, flash is not used (100% JS/HTML5)
3. problems mentioned in the post you referenced can be generalized into two groups: (a) hijacking the server to serve "trojaned code", and (b) inherent JS limitations such as the absence of proper PRNG.
Concern (a) is valid. However, most client systems have auto-updating software products installed, with auto-updating enabled (browsers auto-update themselves; anti-viruses and OSes do the same, etc. - the Flame worm was using Windows Update to sneak in, I think). It is a universal issue in the modern "connected" world, and most users have to live with this threat if they want to use the Internet in any meaningful way; I can't imagine a person eyeballing the source of every patch they compile/apply on their system.
Concern (b) is not really valid now, IMHO. As mentioned above, it is possible to use a solid open-source crypto library either directly (e.g. Stanford Crypto JS library) or compile one into JS, to use proper PRNG, etc. With proper testing (standard/published test vectors; cross-platform tests - encrypt in JS and decrypt in java, etc.) it is possible to make good crypto in JS. And things like side-vector attacks do not look relevant here, as the attacking code needs to run on the client, which means the client has been compromised already.
How about doing a ShowHN so we can get some more eyes on your new product? There are quite a few security folks here who can more adroitly chime in regarding the use of clientside JS. You may have seen this post as well, http://www.matasano.com/articles/javascript-cryptography/ , which was written by Thomas (user tptacek) who is quite active in participation here.
Re: OpenPGP vs PKCS1: historical reasons (have a well-tested code for PKCS1). If at some point it becomes clear that OpenPGP is much better, adding it won't be a big issue.