News for hackers. Stuff that matters.
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by indiv0 on Tuesday September 01, 2015 @02:31AM (#10151004)
I was recently looking into options for offsite, encrypted (at-rest & in-transit), deduplicated, snapshotted, backups to S3. S3QL was one of the options I investigated, but unfortunately their crypto is MAC-then-encrypt [0], which is no good.

A small sample of the other options considered:

    * EncFS + rsnapshot/rdiff-backup
        * Weak cryptography in EncFS [1]
    * Duplicity
        * Uses forward snapshots, so recovery takes longer with each successive snapshot, unless you upload a "fresh" copy of the data
    * ext4 on LVM on LUKS on a loopback device provided by s3backer [2]
        * OK I'll admit this one is pretty far out there, but it actually works decently well (ignoring the massive FUSE overhead)
        * Downside: a slight hiccup in network connectivity guarantees data corruption
    * Attic
        * Known data corruption issues with large datasets [3]
Does anyone know of anything that can provide the above requirements? At this point it's really more of a thought experiment, as I've decided to go with Tarsnap [4] for my use-case.

[0]: http://www.rath.org/s3ql-docs/impl_details.html

[1]: https://defuse.ca/audits/encfs.htm

[2]: https://github.com/archiecobbs/s3backer

[3]: http://librelist.com/browser/attic/2015/3/31/comparison-of-a...

[4]: https://www.tarsnap.com/

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pslam on Tuesday September 01, 2015 @03:04AM (#10151079)
I run a slightly crazy setup for about 200GB of data:

* raid1 on all data. This isn't a backup - it's for end-to-end detection of bit flips in (some of) the storage path (and at rest). This needs a better solution (zfs?)

* zbackup of all selected files to external hard disk, overnight. This handles the de-duplication.

* duplicity of the zbackup dataset to S3, immediately following. This is usually a small upload - zbackup diffs are tiny and it doesn't touch files it doesn't need to.

* Rate limited so full backup is about a week, incrementals usually only a few MB.

It seems to work well so far, and I'm prepared to do a fresh full backup every year, swapping disks periodically. This general idea is to keep data in 3 physical places: local, external and remote. Local can be recovered from external. External can be thrown away and recreated. Remote recreated.

Wish there was an all-in-one solution with all the checkboxes checked. It feels silly to have to get there with a bunch of scripts.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by FlyingAvatar on Tuesday September 01, 2015 @11:42AM (#10153143)
RAID1 will not get you any protection from bit flips unless you have some specialized software doing that.

RAID1 will speed up reading by spreading reads across both disks, but data returned by the array comes from one disk or the other, not both. This means there is no opportunity to detect if a bit flip occurred.

Adding a checksumming filesystem that is handling the RAID1 in software would solve this problem. (i.e. If it were hardware RAID as opposed to ZFS's RAID-Z, ZFS could detect a bit-flip on the hardware RAID1, but it can't do anything about it since it is not aware of the two physical disks as a redundant source of data.)

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pslam on Tuesday September 01, 2015 @03:11PM (#10154937)
Yeah the RAID1 part is weak sauce. However, my specific setup mitigates these flaws:

* The intention is to detect at-rest bit flips before they progressively pollute everywhere. I don't mind if it's not instantaneously detected on-access. I perform a nightly full scan - so there's up to 24 hours where an at-rest bit-flip may lie undetected, but it won't progress past that.

* I use ECC at all cache hierarchy levels possible, and ECC DDR, with active background scrub. So bit flips here won't occur (with vanishingly small probability).

* I use software-RAID1 only. The path between DDR, thru CPU, and to storage controller is unlikely to have a bit flip. From there onwards, the data is essentially written twice, so there is vanishingly low probability of both having a bit-flip, except for systematic failure for that bit pattern in two attempts to two different disks and two different controllers.

So there's still some places in the stack where errors can be introduced, but the most common areas of fault are either duplicated or covered by detection mechanisms.

My goal is to detect, but not correct, transport and at-rest bit flips. I'll discard everything when an error is detected, and use backups.

For my next setup I'll probably switch to a filesystem with a better end-to-end error detection story, such as ZFS, and ditch RAID altogether.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by cmurf on Tuesday September 01, 2015 @03:52PM (#10155232)
How do you detect bit flips with software RAID? A scrub can detect differences, but without checksums it's ambiguous which copy is wrong. And in the case of mdadm, which has no concept of a file system, it won't report the affected file. I'm not even sure you get an LBA, but if you do, then you have to go look that up, accounting for offsets, with the chosen file system to get a file.

Conversely, Btrfs scrubs will report a corrupt file path if there's a bit flip in a single copy. If there's another copy available then there's just a kernel note that there was a data csum error and the problem was fixed, no file name path.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pslam on Wednesday September 02, 2015 @12:40PM (#10160443)
The entire point of my system is that I don't need to care which copy is good. If it scrubs and detects any error, I'll mount disks independently as two filesystems, and diff the contents. I'll then restore corrupted data from backup.

Yes, a checksumming filesystem would be better, but at the time of creation (and even now?) none of the filesystem choices were mature, or proven to be sufficiently reliable. Ext4 and software RAID1 are both mature and proven reliable.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pja on Tuesday September 01, 2015 @04:31AM (#10151307)
raid1 on all data. This isn't a backup - it's for end-to-end detection of bit flips in (some of) the storage path (and at rest). This needs a better solution (zfs?)

Yeah, btrfs or zfs are the better choice for this than RAID1 in the modern world I think.

ZFS anywhere it runs natively, btrfs on Linux.

(My experience with btrfs is that it’s fine on a server, but on laptops I’ve ended up with unmountable, unfixable filesystems a number of times. To be fair to btrfs I’ve always been able to recover the data though.)

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by riquito on Tuesday September 01, 2015 @04:51AM (#10151347)
Anecdotal, but I use btrfs on my laptop since august 2014, had a good number of hard power off not related to btrfs and the filesystem never failed me once.

I had some problem with space though using intensively docker: in some situations btrfs thought that the free space was finished and I had to manually rebuild the metadata.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by vidarh on Tuesday September 01, 2015 @05:22AM (#10151431)
The Docker-on-Btrfs problems are/were severe enough that CoreOS now defaults to overlayfs on Ext4. I have a bunch of EC2 servers on CoreOS, and we ended up wiping Docker partitions regularly until that switch...
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pja on Tuesday September 01, 2015 @09:43AM (#10152229)
IIRC docker (or any other virtual machine filesystem) in a single image file and hashing filesystems mix really, really badly.

Docker could use BTRFS / ZFS snapshots instead of using whole filesystem image files though, so this ought to get better.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by rsync on Tuesday September 01, 2015 @02:05PM (#10154456)
Of the four methods you list, and their "warts", I would say that duplicity seems the easiest to overcome:

"Uses forward snapshots, so recovery takes longer with each successive snapshot, unless you upload a "fresh" copy of the data"

(unless you have a relatively slow network connection)

duplicity will interoperate with plain old SFTP, so we[1] have supported it since it was released. We have also contributed funds to the development of duplicity. In these 10 or so years that it has been around, we've never seen any complaints from customers or evidence of things breaking - it is quite solid.

That being said, we do really want to support attic since so many people ask for it. It requires a server-side component to be run, and we try to keep our environment squeaky clean and dead simple[2] - but I think we can cxFreeze it and run it as a binary executable on our end...

[1] rsync.net, with HN-readers discount. Just email.

[2] There are no interpreters in the jail that each account is locked in, so we can't run a python component on our end.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by drdaeman on Tuesday September 01, 2015 @08:19AM (#10151841)
Although git-annex is not a backup system, it works for me as one to backup photos, disk images, some documents etc (although I use it with hubiC and self-hosted SFTP storages, not S3). Maybe it could meet your requirements, too.

Files (or chunks, if it's enabled) are gpg-encrypted (to a key or using a symmetric passphrase) and could be stored in nearly anything that could store named blobs. Supports various modes (archival, backup, RAID-like). Performance is fair for me.

Downside is that it's not a "real" filesystem, but a git repo that tracks metadata, plus blob storage. Assistant daemon saves a lot of keystrokes, though. There is also some FUSE-based implementation, but I haven't tried it. Getting started is easy, so I suggest taking a look and toying around for half an hour. Another downside is that it - being a git repo - may have problems with storing another repositories inside. Haven't tried this, though.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by rsync on Tuesday September 01, 2015 @02:08PM (#10154481)
Many hundreds of folks are pointing very similar git-annex based backup schemes to us and we're always happy to have an ultra-clueful customer such as that.

Joey and I put together a special discount rate for git-annex folks that want to point at rsync.net:

http://www.rsync.net/products/git-annex-pricing.html

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by lfam on Tuesday September 01, 2015 @02:58AM (#10151056)
> offsite, encrypted (at-rest & in-transit), deduplicated, snapshotted, backups to S3

I think restic[1] is going for that. I don't think it's "ready" yet, though.

[1] https://github.com/restic/restic

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by Freaky on Tuesday September 01, 2015 @05:36PM (#10155931)
Gave it a quick go - plugged it into an existing Attic backup script so it scanned/excluded the same dirs. Result:

7.9MB Attic etc backup -> 22MB Restic backup.

43GB Attic homes backup -> 71GB Restic backup.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by lfam on Tuesday September 01, 2015 @08:42PM (#10156786)
That's dramatic. I'm not sure if restic has compression yet. If not, that could explain it.
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by Freaky on Saturday September 12, 2015 @08:07AM (#10207879)
Looks like you're right: https://github.com/restic/restic/issues/21

And of course you can't do it after the fact because you can't turn off the crypto.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by diggs on Tuesday September 01, 2015 @06:51AM (#10151633)
If you're open to using something proprietary and commercially supported then depending on your scale you should check out http://storreduce.com. We're a growing startup in this space.

We do real-time compression, encryption (on the wire and at rest) and deduplication for object storage. We currently support an s3-compatible (including a full policy engine) api out the front end, and on the backend we can store to anything that exposes an s3 api (S3, Glacier etc.). Because of the s3-compatible interface we work with any existing client tools that work with s3.

We pride ourselves on our speed and scale. We can do 600mb/s sustained throughput and easily scale to multi-petabyte datasets. We typically see 95%-97% dedupe ratios on backup data. We support high availability clustering and replication (for example, replicate between regions for DR).

We don't currently support snapshotting but it's something we can implement relatively easily if people need it.

Our deployment model is based on a virtual appliance and can be deployed in the cloud or on premise. We can also do things like an on-premise writer (that only uploads unique, deduped data over the network), and a reader in the cloud to support cloud workloads or DR.

We have a real focus on backup to cloud in addition to supporting real time big-data use cases in the cloud.

Disclaimer: I work here - if you would like to contact me please feel free [email protected].

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by k3d3 on Tuesday September 01, 2015 @08:33AM (#10151894)
Sorry to say, but if the source is not available for a crypto tool, it's probably not worth looking at.

Best of luck though.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by Tepix on Tuesday September 01, 2015 @10:16AM (#10152444)
Perhaps they can move the encryption into an extra open source module in the future.
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by edwintorok on Tuesday September 01, 2015 @12:00PM (#10153303)
Encryption should happen client-side [1], an S3-to-S3 gateway wouldn't help unless you deploy one on all client nodes. s3cmd and duplicity has support via GPG, but not all S3 clients will know what to do with those files.

[1] http://www.skylable.com/blog/2014/09/transparency-reports-se...

Disclaimer: I'm co-founder of Skylable

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by diggs on Tuesday September 01, 2015 @05:20PM (#10155835)
Our server software is typically deployed as close to the source data as possible. This lets us move only deduplicated data over the WAN. It also supports our encryption model where we encrypt using a pluggable key management service e.g. Amazon KMS or a on-premise HSM before any data leaves the customer site. This is essentially the same model as traditional tape and disk backup software within the datacentre.

Additionally we use HTTPS between clients and our server, and our server and the storage provider (e.g. S3), as well as being able to enable server-side encryption for S3.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by witten on Tuesday September 01, 2015 @11:53AM (#10153240)
Try Borg, a fork of Attic with more active development: https://borgbackup.github.io/borgweb/

Also check out Atticmatic, a wrapper script for both Attic and Borg that makes them much nicer to configure and use: https://torsion.org/atticmatic/

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by zimbatm on Tuesday September 01, 2015 @03:53AM (#10151208)
Camlistore can use S3 as a backend and does deduplication. Not sure about the encryption though.

[0]: https://camlistore.org/

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by darkr on Tuesday September 01, 2015 @07:30AM (#10151708)
It's supported encryption since last year or thereabouts. I really like the look of camlistore and have done a bit of playing around with it. Was considering deploying it a while back but the docs are [still] lacking and far as I can tell doesn't seem to have gotten to a production ready state yet.

Here's a gist showing how to configure an encrypted store on s3: https://gist.github.com/cknave/3ddae29cc466663cb40e

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by mappu on Tuesday September 01, 2015 @05:28AM (#10151446)
The attic corruption in question is apparently caused by a bug in the version of msgpack the reporter was using, can be mitigated by updating dependencies - see https://github.com/jborg/attic/issues/264
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by aidos on Tuesday September 01, 2015 @04:26AM (#10151295)
I'm glad this post has made it to the top of HN. I've also been looking around at these sorts of solutions over the last couple of weeks. I hadn't rolled anything out yet but s3ql was the leader for me at the moment. I don't know so much about the encryption side but to be honest it's lower down my list of priorities.

Another solution I've seen people using is attic[0] as a centralised backup for multiple machines and then running s3ql to push that over to s3.

[0] https://attic-backup.org

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by nabla9 on Tuesday September 01, 2015 @03:50AM (#10151204)
>MAC-then-encrypt [0], which is no good.

He must have red Practical Cryptography from Ferguson and Schneier. In any case, it's not big issue. Encrypt-then-MAC is easier to get wrong.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by dlitz on Tuesday September 01, 2015 @01:45PM (#10154311)
No, MAC-then-encrypt is very, very hard to get right, because you have to avoid creating side-channels (including timing side-channels) between the decryption operation, the padding check (if you're using a block cipher mode that requires padding), and the MAC check.

More to the point, if you're fielding a new MAC-then-encrypt design, then I don't trust your crypto, because your crypto knowledge is over a decade old. Krawczyk's paper was published in 2001: https://eprint.iacr.org/2001/045

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by technion on Tuesday September 01, 2015 @05:24AM (#10151440)
There are other cryptographers that tend to agree that encrypt-then-mac is optimal.[0]

[0]http://www.thoughtcrime.org/blog/the-cryptographic-doom-prin...

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by tptacek on Tuesday September 01, 2015 @10:11AM (#10152403)
I don't know about the constructions and attack scenarios pertaining to this app, but MAC-then-encrypt is generally insecure; it's not "easier to get wrong", but is itself a flaw (typically: of exposing the cipher to malicious ciphertext, rather than screening it out with a MAC, which is designed to distinguish between valid and invalid ciphertext).
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by zx2c4 on Tuesday September 01, 2015 @11:19AM (#10152933)
Rogaway's bringing it back with a vengeance though:

http://web.cs.ucdavis.edu/~rogaway/aez/aez.pdf

With AEZ, the "MAC" is actually just a block of zeros.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pbsd on Tuesday September 01, 2015 @08:32PM (#10156748)
Rogaway brought it back with a vengeance back in 2006, with SIV: http://web.cs.ucdavis.edu/~rogaway/papers/keywrap.pdf

Essentially all 'misuse resistant' modes are some form of MtE, since in those modes one necessarily needs to process the entire message before beginning encryption. AEZ is MtE in the loosest sense, basically another way to say it's a two-pass/offline mode.

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by tptacek on Wednesday September 02, 2015 @03:00PM (#10161268)
Is there a distinction to be drawn here between "generic composition" and "whatever the term is for the opposite of generic composition"?
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by pbsd on Thursday September 03, 2015 @01:58AM (#10163534)
Not sure I understand precisely what you're asking. 'Generic composition' is a tricky term, because it tends to hide the assumptions underlying what we're actually composing together. Bellare and Namprempre's paper, which is the most usually cited in this sort of discussion, takes a probabilistic encryption scheme (read: something that takes a random IV) and a MAC, and results in a probabilistic AE scheme. This is obviously not the only way to model encryption and authentication schemes (SIV above transforms those same primitives into a nonce-based AE scheme instead, or DAE with a fixed nonce), but this tends to be overlooked from GC discussions. In some models, MtE and friends is OK. But the truth is that EtM is safe in the widest range of assumptions, while the other ones are more brittle.
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by JoachimSchipper on Tuesday September 01, 2015 @12:54PM (#10153831)
That's not MAC-then-encrypt, that's "ECB mode is pretty okay if your message and a nonce fits in your block" plus "let's make an arbitrary-length block cipher". In any case, the result is AEAD, not MAC-then-encrypt.

(That said, AEZ is really interesting.)

Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by Nikratio on Friday September 11, 2015 @11:36PM (#10207127)
If MAC-then-encrypt is no good, why don't you report it as a bug against S3QL (with trustworthy references of course)? It may even get fixed.
Re:S3QL: an S3 FS with encryption, de-dup, immutable trees a... by hobarrera on Wednesday September 02, 2015 @12:32PM (#10160369)
Tarsnap was exactly what I was going to suggest. Exactly what don't you like about it//why do you want to replace it?