Encrypted, deduplicated remote backups
stavros.io
stavros.io
Added in edit: I see that people are saying it's expensive, and I appreciate that. When I bundle it into my considerations of how much I spend on other things, what I get, and my level of confidence in the service, it seems a good deal to me. In the interests of full disclosure, I don't actually use anything like this, as I have a storage solution provided for me. But when I did the sums a while ago, I decided that tarsnap would be my choice if I needed to make one. For people to say it's expensive is a useful additional data point for me. Thank you.
It would probably be better for Tarsnap's financial health, but it wouldn't make it a better product for people like the OP who just want to save pictures of their dog.
There's even a front end of it called Deja Dup [2] being distributed by the GNOME team and used in Ubuntu.
I used to use Arq and it worked great but then the backups became too big.
EDIT: forgot you wanted opensource... oh well... anyway this works for me.
[1] http://www.haystacksoftware.com/arq/index.php
It's pretty excellent in every other respect.
A comment in the code about why it's OK in your case to use the same key for MAC and encrypt would be useful. I think you're fine. See here: http://security.stackexchange.com/questions/37880/why-cant-i...
I needed to implement deduplication in my system. Since I controlled the server, I developed a slightly more elaborate system which doesn't have the limitation of a predictable IV (predictable from the encryption key).
So in my system, I derive two keys from the same passphrase (PBKDF2 with different salts). I encrypt as usual with unpredictable IVs. When uploading, the HMAC of the plaintext and SHA-256 of the ciphertext are both loaded.
To check for duplication, the client asks if a certain HMAC is already present. And it's an error (at the server) to upload multiple ciphertexts with the same HMAC.
It's very telling that I'm even considering this, but if there existed a backup service where I could mail them a hard drive to load my data initially, and then upload only incremental changes, I would be all over that. Of course, uploading videos and such would still be out of the question.
Crashplan provide this option. I've never used that specific part of their service personally, but I've been a satisfied customer of their unlimited family plan for several years.
Works pretty well, and we're able to de-duplicate because we keep local copies and make use of hardlinking. A bit of logic around s3cmd to look for hardlinked files before uploading takes care of the remote de-duplication (which isn't realistic after the files are encrypted).
Not quite as easy to adapt to non-linux machines or as practical for smaller files, but it's still quite useful.
Not sure if it meets all your requirements, but duplicity [1] has support for asymmetric encryption via gpg pub/priv key pairs.
[1] http://duplicity.nongnu.org/
EDIT: just noticed the article mentioned duplicity as insufficient.
I wanted to also add GPG encryption, but I'd be unable to store the key locally, so I couldnt find a way to get it for subsequent backups. I'll have to see how duplicity does it.
Not clear to me from a quick overview of their site if they do de-duplication.
Does anyone know what this refers to? It sounds like a winning combination to me.
What does everyone think?
On the link you provided I found the following:
"Parts of the programm relevant for security and networking actions will be open source."
"Parts of the program" might not do it for everyone (me included). Will anyone be able to audit the full source code of the client and compile it themselves, like e.g. tarsnap? Otherwise I fear the usual trust issues arise.
If I missed some information at your linked site which says the entire client will be open source, then please correct me.
Updated the FAQ: https://boldshare.com/?lang=en#faq
I read the updated FAQ and saw the note about blocking network I/O for the closed source process. If the closed source process in your client were locked down in such a way that it was only ever invoked from the open source process and had no way of doing any I/O whatsoever (network or otherwise) except with the open source process (where what goes in and comes out can be audited), then I'd agree this sounds quite interesting.
I'll be waiting as well, and sincerely hope you deliver something nice!
Key won't be accessible on disk anyway, only in RAM during crypto and will be destroyed immediately afterwards.
Although, I agree, if you only allow the open source network access, AND can ensure that the key won't somehow be smuggled in the data the closed source process sends, you're probably fine.