Jakob Unterwurzacher
6c6947126d
cryptocore: zero derived keys
...
Zero the HKDF-derived keys when we don't need them
anymore, and let the variable run of of scope.
https://github.com/rfjakob/gocryptfs/issues/211
2018-02-18 16:07:09 +01:00
Jakob Unterwurzacher
344d7e0a6f
siv_aead: create private key copy and implement wiping
...
Having a private copy relieves the caller from worrying about
whether he can zero his copy. The copy can be cleared by
calling Wipe().
2018-02-18 16:01:46 +01:00
Jakob Unterwurzacher
adf7d75d31
main: changePassword: zero masterkey
...
Overwrite the masterkey with zeros once we
have encrypted it, and let it run out of scope.
Also get rid of the password duplicate in
readpassword.Twice.
2018-02-18 15:36:14 +01:00
Jakob Unterwurzacher
2cf050d69e
main: zero password once we are done with it
...
Overwrite the password we have got from the user
with zeros once we don't need it anymore, and make
sure the variable runs out of scope.
2018-02-18 15:22:22 +01:00
Jakob Unterwurzacher
3b8f5cbb17
readpassword: convert from string to []byte
...
This will allows us to overwrite the password
with zeros once we are done with it.
https://github.com/rfjakob/gocryptfs/issues/211
2018-02-18 14:26:54 +01:00
Jakob Unterwurzacher
14c063428d
main: doMount: use a deferred function for wipeKeys
...
Also drop the unused int return.
2018-02-18 12:55:20 +01:00
Jakob Unterwurzacher
5b5c7a0a5d
main: overwrite keys and let them run out of scope
...
As soon as we don't need them anymore, overwrite
keys with zeros. Make sure they run out of scope
so we don't create a risk of inadvertedly using
all-zero keys for encryption.
https://github.com/rfjakob/gocryptfs/issues/211
2018-02-18 12:42:22 +01:00
Jakob Unterwurzacher
bd78b44389
cryptocore, main: add two comments
...
While reading the code, I had to think about what it
does, so add a comment that explains it.
2018-02-18 12:41:11 +01:00
Jakob Unterwurzacher
0efd220d1e
configfile: overwrite and let keys run out of scope
...
As soon as we don't need them anymore, overwrite
keys with zeros and make sure they run out of scope
so we don't create a risk of inadvertedly using all-zero
keys for encryption.
https://github.com/rfjakob/gocryptfs/issues/211
2018-02-18 12:39:44 +01:00
Jakob Unterwurzacher
72ddbae1e6
stupidgcm: create private copy of the key
...
Relieves the caller from worrying about whether they
can overwrite the key.
2018-02-18 12:35:51 +01:00
Jakob Unterwurzacher
18f6c6106c
main: try to wipe cryptocore's secret keys on unmount
...
Raise the bar for recovering keys from memory.
https://github.com/rfjakob/gocryptfs/issues/211
2018-02-18 11:39:10 +01:00
Jakob Unterwurzacher
719693ec5d
fusefrontend[_reverse]: move crypto init up to caller
...
Both fusefrontend and fusefrontend_reverse were doing
essentially the same thing, move it into main's
initFuseFrontend.
A side-effect is that we have a reference to cryptocore
in main, which will help with wiping the keys on exit
(https://github.com/rfjakob/gocryptfs/issues/211 ).
2018-02-18 11:21:58 +01:00
Jakob Unterwurzacher
eeed4b4bef
stupidgcm: implement key wipe
...
Not bulletproof due to possible GC copies, but
still raises to bar for extracting the key.
https://github.com/rfjakob/gocryptfs/issues/211
2018-02-17 15:14:55 +01:00
Jakob Unterwurzacher
7e0fefe970
stupidgcm: switch to pointer receivers
...
What the key slice does not get copied around
will make it possible to check if the key has been wiped.
2018-02-17 15:02:01 +01:00
Jakob Unterwurzacher
a3694e0c07
benchmark.bash: print tested version
2018-02-06 23:03:07 +01:00
Jakob Unterwurzacher
a624aab8a1
README: Mention min required Go version
2018-02-05 22:24:51 +01:00
Jakob Unterwurzacher
8151222ada
gccgo: skip emulateGetdents on linux
...
The test is known to fail on gccgo
(https://github.com/rfjakob/gocryptfs/issues/201 ), but
getdents emulation is not used on linux, so let's skip
the test and ignore the failure.
2018-02-04 21:14:12 +01:00
Felix Lechner
bf2f9640c4
Fix spelling ( #205 )
2018-02-04 20:38:22 +01:00
Felix Lechner
5b986288cf
Fix assignment error in Unix2syscall by converting Timespec into Nsec ( #203 )
...
$ go.gcc build
# github.com/rfjakob/gocryptfs/internal/syscallcompat
internal/syscallcompat/unix2syscall_linux.go:32:13: error: incompatible types in assignment (cannot use type int64 as type syscall.Timespec_sec_t)
s.Atim.Sec = u.Atim.Sec
^
2018-02-03 13:42:49 +01:00
Jakob Unterwurzacher
866e850842
MANPAGE: improve markdown rendering
...
The man page is rendered on github at
https://github.com/rfjakob/gocryptfs/blob/master/Documentation/MANPAGE.md .
Improve formatting a little.
2018-02-03 13:39:07 +01:00
Jakob Unterwurzacher
9f8d0d8e57
gccgo: replace syscall.NAME_MAX with unix.NAME_MAX
...
For some reason the syscall.NAME_MAX constant does not exist
on gccgo, and it does not hurt us to use unix.NAME_MAX instead.
https://github.com/rfjakob/gocryptfs/issues/201
2018-02-01 23:50:11 +01:00
Jakob Unterwurzacher
26ba8103bf
syscallcompat: switch from syscall.Getdents to unix.Getdents
...
On mips64le, syscall.Getdents() and struct syscall.Dirent do
not fit together, causing our Getdents implementation to
return garbage ( https://github.com/rfjakob/gocryptfs/issues/200
and https://github.com/golang/go/issues/23624 ).
Switch to unix.Getdents which does not have this problem -
the next Go release with the syscall package fixes is too
far away, and will take time to trickle into distros.
2018-01-31 18:59:10 +01:00
Jakob Unterwurzacher
b611e01035
Update deps
2018-01-31 18:57:41 +01:00
Kenneth Newwood
8afcb43b83
added usage of reverse mode to README
2018-01-28 15:40:20 +01:00
Jakob Unterwurzacher
f3838c09d8
syscallcompat: hardcode maxReclen = 280 for all architectures
...
Due to padding between entries, it is 280 even on 32-bit architectures.
See https://github.com/rfjakob/gocryptfs/issues/197 for details.
2018-01-25 22:22:13 +01:00
Jakob Unterwurzacher
b318572312
syscallcompat: fix reversed warning output
...
We used to print somewhat strange messages:
Getdents: corrupt entry #1 : Reclen=276 > 280. Returning EBADR
Reported at https://github.com/rfjakob/gocryptfs/issues/197
2018-01-25 21:42:15 +01:00
rfjakob
163964b090
Update README.md
...
README: add missing word
2018-01-25 21:35:57 +01:00
Jakob Unterwurzacher
ea51837361
fusefrontend: drop unused haveGetdents warning
...
We don't actually print that warning anymore.
2018-01-25 09:06:06 +01:00
Jakob Unterwurzacher
de878a3346
syscallcompat: explain why we don't use syscall.ParseDirent()
...
syscall.ParseDirent only returns the NAMES, we want
everything.
2018-01-25 08:43:30 +01:00
Jakob Unterwurzacher
7015a6ebfb
Documentation: update xfstests output
...
Also update the v1.4.3 release date to today.
The release was delayed one day.
2018-01-21 20:49:17 +01:00
Jakob Unterwurzacher
991708af01
Documentation: add extractloop example output
2018-01-21 20:04:37 +01:00
Jakob Unterwurzacher
f63ce35b3d
Update changelog for 1.4.3
2018-01-20 14:27:03 +01:00
Jakob Unterwurzacher
735b92c48b
Travis CI: also build with vendored dependencies
2018-01-20 13:49:20 +01:00
Jakob Unterwurzacher
6d46c4f31c
dep: update dependencies
...
We needed a newer version of x/sys/unix to compile,
and we want the fixes in go-fuse.
2018-01-20 13:49:20 +01:00
Jakob Unterwurzacher
bac7ef4834
MacOS: rely on OSXFuse to create the mountpoint
...
As reported in https://github.com/rfjakob/gocryptfs/issues/194 ,
OSXFuse creates the mountpoint if it does not exist.
2018-01-20 13:42:29 +01:00
Jakob Unterwurzacher
277ad087ff
MANPAGE: improve description of -o and -ko
...
Was unclear for new users - see https://github.com/rfjakob/gocryptfs/issues/194
2018-01-20 13:35:26 +01:00
Jakob Unterwurzacher
a2677bce2a
fusefrontend_reverse: use OpenNofollow in virtualFile.GetAttr
...
Makes it robust against symlink races.
Final piece, closes https://github.com/rfjakob/gocryptfs/issues/165
2018-01-17 21:36:38 +01:00
Jakob Unterwurzacher
959e1fc1e2
fusefrontend_reverse: use OpenNofollow in findLongnameParent
...
Protects findLongnameParent against symlink races.
Also add comments to several functions along the way.
Reported at https://github.com/rfjakob/gocryptfs/issues/165
2018-01-17 20:54:05 +01:00
Jakob Unterwurzacher
8951eb2472
fusefronted: add PlaintextNames special-cases for Create & Rename
...
gocryptfs.longname.XXX files were considered magic in PlaintextNames
mode, which was wrong.
Fix that and add tests.
Fixes https://github.com/rfjakob/gocryptfs/issues/174
2018-01-17 00:25:36 +01:00
Jakob Unterwurzacher
36ffd813cd
Run go fmt
2018-01-16 23:18:53 +01:00
Jakob Unterwurzacher
7d477d692b
MacOS: rely on OSXFuse to create mountpoint below /Volumes
...
OSXFuse automatically creates the mountpoint if it is
below /Volumes because this would require root permissions
which the user might not have.
Reported at https://github.com/rfjakob/gocryptfs/issues/194
2018-01-16 23:18:53 +01:00
Felix Lechner
a4dff6aea0
Provide basic man page for xray tool ( #193 )
...
Provide basic man page for xray tool
2018-01-10 20:27:03 +01:00
Felix Lechner
63c3878b7c
Fix spelling
2018-01-10 09:26:48 +01:00
Jakob Unterwurzacher
025f33e366
package-source.bash: archive HEAD instead of master
...
To be able to check out an older version and create
a tarball from it, let `git archive` operate on HEAD.
This used to be broken in a bad way: we use `git describe`
which operates on HEAD to name the tarball, but always archived
HEAD.
2018-01-07 22:29:02 +01:00
Jakob Unterwurzacher
1ae218b417
package-source.bash: also create source-only tarball
...
We used to only create a source + dependecies tarball,
but having a source-only tarball makes packaging deb/rpm
easier.
2018-01-07 19:01:59 +01:00
Sebastian Lackner
a85dbcab38
fusefrontend: Use Linkat syscall to implement Link
2017-12-25 15:07:37 +01:00
Sebastian Lackner
a24342f656
fusefrontend: Handle PlaintextNames mode in Link
...
In PlaintextNames mode the "gocryptfs.longname." prefix does not have any
special meaning.
https://github.com/rfjakob/gocryptfs/issues/174
2017-12-25 15:07:37 +01:00
Rohan Talip
ca594b2349
Pinned the link to line 38 of performance.txt to version 1.4.1 since f0e29d9b90 (diff-86b7f3262ae352959ee0e04cccaac1b0)
added an extra line.
2017-12-25 15:06:19 +01:00
Sebastian Lackner
631974f9e0
fusefrontend_reverse: Use O_DIRECTORY in OpenDir implementation
...
Also get rid of the defer - it is not really necessary here.
2017-12-11 21:18:20 +01:00
Sebastian Lackner
96dc2ca709
fusefrontend_reverse: Reject access to device nodes in newFile function
...
Steps to reproduce:
* Create a regular reverse mount point
* Create a file "test" in the original directory
* Access the corresponding encrypted directory in the mount point (ls <encrypted dir>)
* Quickly delete the file in the original data - instead create a device node
* Access the file again, it will access the device node and attempt to read from it
Fixes https://github.com/rfjakob/gocryptfs/issues/187
2017-12-11 09:55:16 +01:00