diff options
author | Jakob Unterwurzacher | 2015-11-01 01:32:33 +0100 |
---|---|---|
committer | Jakob Unterwurzacher | 2015-11-01 01:38:27 +0100 |
commit | 76311b60f2e208dbd93e1e7b6e9794770c14fede (patch) | |
tree | fa71d48744fd1ad6de26aaadd03f2440e4d4103d /SECURITY.md | |
parent | 73fa8efdb27172210b9751eb86689287db0b1170 (diff) |
Add file header (on-disk-format change)
Format: [ "Version" uint16 big endian ] [ "Id" 16 random bytes ]
Quoting SECURITY.md:
* Every file has a header that contains a 16-byte random *file id*
* Each block uses the file id and its block number as GCM *authentication data*
* This means the position of the blocks is protected as well. The blocks
can not be reordered or copied between different files without
causing an decryption error.
Diffstat (limited to 'SECURITY.md')
-rw-r--r-- | SECURITY.md | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/SECURITY.md b/SECURITY.md index dcd16c5..2e6f3f4 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -52,12 +52,11 @@ unless you have the key. The opposite of integrity is *malleability*. * This means that any modification inside a block will be detected when reading the block and decryption will be aborted. The failure is logged and an I/O error is returned to the user. -* Each block uses its block number as GCM *authentication data* +* Every file has a header that contains a 16-byte random *file id* +* Each block uses the file id and its block number as GCM *authentication data* * This means the position of the blocks is protected as well. The blocks - can not be reordered without causing an decryption error. -* However, proper affiliation of a block to the file is can not be verified. - * This means that blocks can be copied between different files provided - that they stay at the same position. + can not be reordered or copied between different files without + causing an decryption error. * For technical reasons (sparse files), the special "all-zero" block is always seen as a valid block that decrypts to all-zero plaintext. * This means that whole blocks can be zeroed out |