diff options
author | Jakob Unterwurzacher | 2017-09-16 16:08:12 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2017-09-16 16:08:12 +0200 |
commit | 3bdfac5b4d4a6f3b1348b007f2bd98449b2cd86d (patch) | |
tree | dcc65ed2c46a70a2282343c2bbf0d64c8630505b /docs/forward_mode_crypto.md | |
parent | 684d3ddde0d2e0cab88f3e6e77d5a3265988a832 (diff) |
Update forward mode crypto description for derived keys
Diffstat (limited to 'docs/forward_mode_crypto.md')
-rw-r--r-- | docs/forward_mode_crypto.md | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/docs/forward_mode_crypto.md b/docs/forward_mode_crypto.md index 894f894..e9b4f47 100644 --- a/docs/forward_mode_crypto.md +++ b/docs/forward_mode_crypto.md @@ -1,9 +1,14 @@ -gocryptfs Security -================== +gocryptfs Cryptography +====================== gocryptfs builts upon well-known cryptographic primitives: scrypt for key derivation, AES-GCM for file content encryption and, as a world's -first for encrypted filesystems, EME for file name encryption. +first for encrypted filesystems, +EME wide-block encryption for file name encryption. + +This page describes **forward mode**, the default mode of operation, where +the files are stored encrypted on disk and the mounted filesystem provides +a plaintext view. Master Key Storage ------------------ @@ -18,6 +23,16 @@ the master key is decrypted:  +Derived Keys +------------ + +Since gocryptfs v1.3, separate keys are derived from the master key for +file content and file name encryption. HKDF-SHA256 is used for the +derivation (source code: [ref1](https://github.com/rfjakob/gocryptfs/blob/f0e29d9b90b63d5fbe4164161ecb0e1035bb4af4/internal/cryptocore/hkdf.go) +[ref2](https://github.com/rfjakob/gocryptfs/blob/f0e29d9b90b63d5fbe4164161ecb0e1035bb4af4/internal/cryptocore/cryptocore.go#L66)). + + + File Contents ------------- @@ -67,6 +82,15 @@ file, `gocryptfs.longname.[hash].name`.  +Example directory listing containing an 1 MiB encrypted file with a long name: + +``` + Size Name + 16 gocryptfs.diriv + 1056786 gocryptfs.longname.nONaEDDZOrwtQdXPH1SxSFkPtOc8srIyB82ZuduqG10 + 299 gocryptfs.longname.nONaEDDZOrwtQdXPH1SxSFkPtOc8srIyB82ZuduqG10.name +``` + This method for storing long file names has zero performance impact for filenames that are <= 176 characters, incurs no extra disk accesses for opening a file with a long name, and just one extra file read for each |