![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
github.com/rfjakob/gocryptfs
An encrypted overlay filesystem written in Go. Official website: https://nuetzlich.net/gocryptfs (markdown source).
gocryptfs is built on top the excellent go-fuse FUSE library. This project was inspired by EncFS and strives to fix its security issues while providing good performance (benchmarks). For details on the security of gocryptfs see the Security design document.
All tags from v0.4 onward are signed by the gocryptfs signing key. Please check Signed Releases for details.
gocryptfs has reached version 1.0 on July 17, 2016. It has gone through hours and hours of stress (fsstress, extractloop.bash) and correctness testing (xfstests). It is now considered ready for general consumption.
The old principle still applies: Important data should have a backup. Also, keep a copy of your master key (printed on mount) in a safe place. This allows you to access the data even if the gocryptfs.conf config file is damaged or you lose the password.
The security of gocryptfs has been audited in March 3, 2017. The audit is available here (defuse.ca).
Linux is gocryptfs' native platform.
Beta-quality Mac OS X support is available, which means most things work fine but you may hit an occasional problem. Check out ticket #15 for the history of Mac OS X support but please create a new ticket if you hit a problem.
For Windows, an independent C++ reimplementation can be found here: cppcryptfs
Precompiled binaries that work on all x86_64 Linux systems are available for download from the github releases page.
On Debian, gocryptfs is available as a deb package:
apt install gocryptfs
On Mac OS X, gocryptfs is available as a Homebrew formula:
brew install gocryptfs
On Fedora, gocryptfs is available as an rpm package:
sudo dnf install gocryptfs
If you use the standalone binary, make sure you install the fuse
package
from your distributions package repository before running gocryptfs
.
See the Quickstart page for more info.
gocryptfs comes with is own test suite that is constantly expanded as features are
added. Run it using ./test.bash
. It takes about 1 minute and requires FUSE
as it mounts several test filesystems.
The stress_tests
directory contains stress tests that run indefinitely.
In addition, I have ported xfstests
to FUSE, the result is the
fuse-xfstests project. gocryptfs
passes the "generic" tests with one exception, results: XFSTESTS.md
A lot of work has gone into this. The testing has found bugs in gocryptfs as well as in the go-fuse library.
With go 1.11 or higher:
$ go get -d github.com/rfjakob/gocryptfs
$ cd $(go env GOPATH)/src/github.com/rfjakob/gocryptfs
$ ./build.bash
build.bash needs the OpenSSL headers installed (Debian: apt install libssl-dev
,
Fedora: dnf install openssl-devel
). Alternatively, you can compile
without OpenSSL using
$ ./build-without-openssl.bash
$ mkdir cipher plain
$ ./gocryptfs -init cipher
$ ./gocryptfs cipher plain
See the Quickstart page for more info.
The MANPAGE.md describes all available command-line options.
$ mkdir cipher plain
$ ./gocryptfs -reverse -init plain
$ ./gocryptfs -reverse plain cipher
The SiriKali project supports gocryptfs and runs on Linux and OSX.
cppcryptfs on Windows provides its own GUI.
If you want to call gocryptfs from your app or script, see CLI_ABI.md for the official stable ABI. This ABI is regression-tested by the test suite.
file-format.md contains a more detailed description.
Since version 0.7.2, gocryptfs is as fast as EncFS in the default mode, and significantly faster than EncFS' "paranoia" mode that provides a security level comparable to gocryptfs.
On CPUs without AES-NI, gocryptfs uses OpenSSL through a thin wrapper called stupidgcm
.
This provides a 4x speedup compared to Go's builtin AES-GCM
implementation. See CPU-Benchmarks
for details, or run gocryptfs -speed
to see the encryption performance of your CPU.
Example for a CPU without AES-NI:
$ ./gocryptfs -speed
AES-GCM-256-OpenSSL 165.67 MB/s (selected in auto mode)
AES-GCM-256-Go 49.62 MB/s
AES-SIV-512-Go 39.98 MB/s
You can run ./benchmark.bash
to run gocryptfs' canonical set of
benchmarks that include streaming write, extracting a linux kernel
tarball, recursively listing and finally deleting it. The output will
look like this:
$ ./benchmark.bash
Testing gocryptfs at /tmp/benchmark.bash.DwL: gocryptfs v1.6; go-fuse v20170619-45-g95c6370; 2018-08-18 go1.10.3
WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 1.1033 s, 238 MB/s
READ: 262144000 bytes (262 MB, 250 MiB) copied, 0.945291 s, 277 MB/s
UNTAR: 17.768
MD5: 8.459
LS: 1.460
RM: 3.379
v1.8.0, 2020-05-09
.nfsXXX
temporary files
(#367)-nonempty
for fusermount3
(#440)--buildmode=pie
(#460)gocryptfs -speed
: add XChaCha20-Poly1305-Go
(#452)GOMAXPROCS
environment variable
(commit ff210a06fv1.7.1, 2019-10-06
--exclude-wildcard
(#367). Thanks @ekalin!gocryptfs.diriv
files with 0440 permissions to make it easier to
share an encrypted folder via a network drive
(#387).
Note: as a security precaution, the owner must still manually
chmod gocryptfs.conf 0440
to allow mounting.nofail
option in /etc/fstab
-passwd
can now change the -scryptn
parameter for existing filesystems
(#400)-idle
unmounting the filesystem despite recent activity
(#421)v1.7, 2019-03-17
-allow_other
and -plaintextnames
, you should upgrade.
Malicious users could trick gocryptfs into modifying files outside of CIPHERDIR
,
or reading files inside CIPHERDIR
that they should not have access to.-plaintextnames
(disabled per default), these attacks do
not work as symlinks are encrypted.Openat/Unlinkat/Symlinkat/...
).-aessiv
flag for correctly parsing AES-SIV format files
(#299)-extpass
now can be specified multiple times to support arguments containing spaces
(#289)Setreuid
to robustly set the owner with allow_other (@slackner,
(commit))v1.6.1, 2018-12-12
v1.6, 2018-08-18
-e
/ -exclude
option for reverse mode
(#235,
commit)./build.bash -tags enable_trezor
to compile with Trezor supportgocryptfs -init -trezor
to create a filesystem locked with a physical Trezor device.O_DIRECT
(commit)v1.5, 2018-06-12
-fsck
function
(#191)-masterkey=stdin
functionality
(#218)-dev
/-nodev
, suid
/nosuid
, -exec
/-noexec
,
-ro
/-rw
flags to make mounting via /etc/fstab
possible.
Thanks @mahkoh! (#233,
commit,
commit)logger
path issue on SuSE
#225v1.4.4, 2018-03-18
osxfuse: vnode changed generation
/ Error code -36
issue in go-fuse
(#213,
commit)v1.4.3, 2018-01-21
-allow_other
(issue #177)-plaintextnames
(issue #174)-devrandom
command-line option
(commit)-sharedstorage
command-line option
(commit,
issue #156)v1.4.2, 2017-11-01
Gopkg.toml
file for dep
vendoring and reproducible builds
(issue #142).DS_Store
files inside CIPHERDIR
(issue #140)$PATH
contains the mountpoint
(issue #146)v1.4.1, 2017-08-21
v1.4, 2017-06-20
-force_owner
option to allow files to be presented as owned by a
different user or group from the user running gocryptfs. Please see caveats
and guidance in the man page before using this functionality.-info
option to pretty-print infos about a filesystem.v1.3, 2017-04-29
HKDF
(enabled by default)==
characters)
-serialize_reads
command-line option
v1.2.1, 2017-02-26
gocryptfs -speed
-ctlsock
path sanitizationv1.2, 2016-12-04
-ctlsock
-noprealloc
command-line option
gocryptfs.1
in the release tarballv1.1.1, 2016-10-30
v1.1, 2016-10-19
AESSIV
.-reverse
, -aessiv
-o foo,bar,baz
-style options that are passed at the end of
the command-line, like mount(1) does. All other options must still
precede the passed paths.
-o
option had to be renamed. It is now
called -ko
. Arguments to -ko
are passed directly to the kernel.-passfile
command-line option. Provides an easier way to read
the password from a file. Internally, this is equivalent to
-extpass "/bin/cat FILE"
.v1.0, 2016-07-17
-gcmiv128
, -emenames
, -diriv
. These
are now always enabled.-o
v0.12, 2016-06-19
-ro
v0.11, 2016-06-10
v0.10, 2016-05-30
spacemonkeygo/openssl
with stupidgcm
stupidgcm
.spacemonkeygo/openssl
. It also gets us
a 20% performance boost for streaming writes.-openssl=auto
is the new default-openssl=true/false
overrides the autodetection.v0.9, 2016-04-10
-longnames
: Enable long file name support (default true)-nosyslog
: Print messages to stdout and stderr instead of syslog (default false)-wpanic
: Make warning messages fatal (used for testing)-d
: Alias for -debug
-q
: Alias for -quiet
v0.8, 2016-01-23
-memprofile
: Write a memory allocation debugging profile the specified
filev0.7.2, 2016-01-19
v0.7.1, 2016-01-09
build.bash
script compatible with Go 1.3v0.7, 2015-12-20
-gcmiv128
: Use 128-bit GCM IVs (default true)v0.6, 2015-12-08
-emenames
: Enable EME filename encryption (default true)v0.5.1, 2015-12-06
v0.5, 2015-12-04
gocryptfs.diriv
-diriv
: Use the new per-directory IV file name encryption (default true)-scryptn
: allows to set the scrypt cost parameter N. This option
can be used for faster mounting at the cost of lower brute-force
resistance. It was mainly added to speed up the automated tests.v0.4, 2015-11-15
-plaintextnames
: disables filename encryption, added on user request-extpass
: calls an external program for prompting for the password-config
: allows to specify a custom gocryptfs.conf pathFeatureFlags
gocryptfs.conf parameter
-plaintextnames
.v0.3, 2015-11-01
v0.2, 2015-10-11
v0.1, 2015-10-07
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.