Re-design of the original gocryptfs code to work as a library.
Go to file
Jakob Unterwurzacher c4a66bc30d Add package.bash
2015-10-07 22:14:00 +02:00
cryptfs Add test.bash 2015-10-07 22:09:34 +02:00
gocryptfs_main Better usage text 2015-10-07 21:59:54 +02:00
openssl_benchmark Adapt openssl benchmark for 256 bit long keys 2015-10-07 22:05:32 +02:00
pathfs_frontend Use block number as authentication data 2015-10-06 22:27:37 +02:00
.gitignore Add package.bash 2015-10-07 22:14:00 +02:00
benchmark.bash Move main binary to gocryptfs_main 2015-10-05 20:32:10 +02:00
build.bash Add test.bash 2015-10-07 22:09:34 +02:00
gocryptfs Move gocryptfs wrapper into the same folder as the binary 2015-10-07 21:49:38 +02:00
package.bash Add package.bash 2015-10-07 22:14:00 +02:00
README.md Reword help text 2015-10-06 23:28:20 +02:00
SECURITY.md Split off SECURITY.md 2015-10-06 23:20:21 +02:00
test.bash Add test.bash 2015-10-07 22:09:34 +02:00

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