diff --git a/Documentation/SECURITY.md b/Documentation/SECURITY.md index a49994a..47edd1d 100644 --- a/Documentation/SECURITY.md +++ b/Documentation/SECURITY.md @@ -1,47 +1 @@ -GoCryptFS Security -================== - -Master Key Storage ------------------- - -The master key is used to perform content and file name encryption. -It is stored in `gocryptfs.conf`, encrypted with AES-256-GCM using the -Key Encryption Key (KEK). - -The KEK is generated from the user password using `scrypt`. - -![](https://rawgit.com/rfjakob/gocryptfs/master/Documentation/master-key.svg) - -File Contents -------------- - -All file contents are encrypted using AES-256-GCM (Galois/Counter Mode). - -Files are segmented into 4KB blocks. Each block gets a fresh random -128 bit IV each time it is modified. A 128-bit authentication tag (GHASH) -protects each block from modifications. - -Each file has a header containing a random 128-bit file ID. The -file ID and the block number are mixed into the GHASH as -*additional authenticated data*. The prevents blocks from being copied -between or within files. - -![](https://rawgit.com/rfjakob/gocryptfs/master/Documentation/file-content-encryption.svg) - -To support sparse files, all-zero blocks are accepted and passed through -unchanged. - -File Names ----------- - -Every directory gets a 128-bit directory IV that is stored in each -directory as `gocryptfs.diriv`. - -File names are encrypted using AES-256-EME (ECB-Mix-ECB wide-block encryption, -see https://github.com/rfjakob/eme for details) with the directory IV -as initialization vector. EME fixes the prefix leak that occours with CBC -encryption. - -![](https://rawgit.com/rfjakob/gocryptfs/master/Documentation/file-name-encryption.svg) - -The Base64 encoding limits the usable filename length to 176 characters. +This page has been moved to https://nuetzlich.net/gocryptfs/security/ . diff --git a/Documentation/file-content-encryption.svg b/Documentation/file-content-encryption.svg deleted file mode 100644 index 38a6f6b..0000000 --- a/Documentation/file-content-encryption.svg +++ /dev/null @@ -1,516 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - myfile.txt - File ID - Block N - IV - authentication tag - Ciphertext + - - ... - ... - - Plaintext - - - AES-256-GCM - /dev/urandom - - - - - - - - - N - - - Master key - - - - IV - AAD - - diff --git a/Documentation/file-name-encryption.svg b/Documentation/file-name-encryption.svg deleted file mode 100644 index 45222e2..0000000 --- a/Documentation/file-name-encryption.svg +++ /dev/null @@ -1,400 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - Directory X - gocryptfs.diriv - - - AES-256-EME - - - - "letter.doc" - - - lrpyui0m-ypX4u0PNJ... - Master key - - - - IV - - Base64 - - - diff --git a/Documentation/master-key.svg b/Documentation/master-key.svg deleted file mode 100644 index bfc404a..0000000 --- a/Documentation/master-key.svg +++ /dev/null @@ -1,434 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - gocryptfs.conf - User password - Scrypt parameters - - - Scrypt - - AES-256-GCM - Master key - - - - IV - - Encrypted master key - IV - authentication tag - Ciphertext + - - - - KEK - - - - - diff --git a/README.md b/README.md index ae3d6e6..6ab640d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ ![gocryptfs](Documentation/logo.svg.png) [![Build Status](https://travis-ci.org/rfjakob/gocryptfs.svg?branch=master)](https://travis-ci.org/rfjakob/gocryptfs) ![Release Status](https://img.shields.io/badge/status-beta-yellow.svg?style=flat) ============== An encrypted overlay filesystem written in Go. +Official website: https://nuetzlich.net/gocryptfs gocryptfs is built on top the excellent [go-fuse](https://github.com/hanwen/go-fuse) FUSE library and its @@ -9,7 +10,7 @@ LoopbackFileSystem API. This project was inspired by EncFS and strives to fix its security issues while providing good performance. For details on the security of gocryptfs see the -[SECURITY.md](Documentation/SECURITY.md) design document. +[Security](https://nuetzlich.net/gocryptfs/security/) design document. Current Status --------------