Re-design of the original gocryptfs code to work as a library.
cryptfs | ||
gocryptfs_main | ||
openssl_benchmark | ||
pathfs_frontend | ||
.gitignore | ||
benchmark.bash | ||
build.bash | ||
gocryptfs | ||
package.bash | ||
README.md | ||
SECURITY.md | ||
test.bash |
GoCryptFS
An encrypted overlay filesystem focused on security and correctness.
gocryptfs is built on top the excellent go-fuse FUSE library and its LoopbackFileSystem API.
This project was inspired by EncFS and strives to fix its security issues (see EncFS tickets 9, 13, 14, 16). For details on the security of GoCryptFS see the SECURITY.md document.
Current Status
- First public release
- Feature-complete
- Passes the xfstests "generic" tests
Install
go get github.com/rfjakob/gocryptfs
Performance
- 28 bytes of storage overhead per block (16 bytes auth tag, 12 byte nonce)
- uses openssl through spacemonkeygo/openssl
for a 3x speedup compared to
crypto/cipher
(see go-vs-openssl.md) for details
Run ./benchmark.bash
to run the test suite and the streaming read/write
benchmark. The benchmark is run twice, first with native Go crypto and
second using openssl.
The output should look like this:
$ ./benchmark.bash
[...]
BenchmarkStreamWrite 100 11816665 ns/op 88.74 MB/s
BenchmarkStreamRead 200 7848155 ns/op 133.61 MB/s
ok github.com/rfjakob/gocryptfs 9.407s