[f2fs-dev] [RFC PATCH v2 06/20] fscrypt: refactor v1 policy key setup into keysetup_legacy.c

2019-02-11 Thread Eric Biggers
From: Eric Biggers In preparation for introducing v2 encryption policies which will find and derive encryption keys differently from the current v1 encryption policies, refactor the v1 policy-specific key setup code from keyinfo.c into keysetup_legacy.c. Then rename keyinfo.c to keysetup.c.

[f2fs-dev] [RFC PATCH v2 20/20] fscrypt: document the new ioctls and policy version

2019-02-11 Thread Eric Biggers
From: Eric Biggers Update the fscrypt documentation file to catch up to all the latest changes, including the new ioctls to manage master encryption keys in the filesystem-level keyring and the support for v2 encryption policies. Signed-off-by: Eric Biggers ---

[f2fs-dev] [RFC PATCH v2 19/20] ubifs: wire up new fscrypt ioctls

2019-02-11 Thread Eric Biggers
From: Eric Biggers Wire up the new ioctls for adding and removing fscrypt keys to/from the filesystem, and the new ioctl for retrieving v2 encryption policies. For more details see Documentation/filesystems/fscrypt.rst, as well as the fscrypt patches that added the implementation of these

[f2fs-dev] [RFC PATCH v2 12/20] fscrypt: add FS_IOC_GET_ENCRYPTION_KEY_STATUS ioctl

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add a new fscrypt ioctl, FS_IOC_GET_ENCRYPTION_KEY_STATUS. Given a key specified by 'struct fscrypt_key_specifier' (the same way a key is specified for the other fscrypt key management ioctls), it returns status information in a 'struct fscrypt_get_key_status_arg'. The main

[f2fs-dev] [RFC PATCH v2 09/20] fs/inode.c: rename and export dispose_list()

2019-02-11 Thread Eric Biggers
From: Eric Biggers When a filesystem encryption key is removed, we need all files which had been "unlocked" (had ->i_crypt_info set up) with it to appear "locked" again. This is most easily done by evicting the inodes. This can currently be done using 'echo 2 > /proc/sys/vm/drop_caches';

[f2fs-dev] [RFC PATCH v2 05/20] fscrypt: add ->ci_inode to fscrypt_info

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add an inode back-pointer to 'struct fscrypt_info', such that inode->i_crypt_info->ci_inode == inode. This will be useful for: 1. Evicting the inodes when a fscrypt key is removed, since we'll track the inodes using a given key by linking their fscrypt_infos together,

[f2fs-dev] [RFC PATCH v2 18/20] f2fs: wire up new fscrypt ioctls

2019-02-11 Thread Eric Biggers
From: Eric Biggers Wire up the new ioctls for adding and removing fscrypt keys to/from the filesystem, and the new ioctl for retrieving v2 encryption policies. For more details see Documentation/filesystems/fscrypt.rst, as well as the fscrypt patches that added the implementation of these

[f2fs-dev] [RFC PATCH v2 07/20] fscrypt: add FS_IOC_ADD_ENCRYPTION_KEY ioctl

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add a new fscrypt ioctl, FS_IOC_ADD_ENCRYPTION_KEY. This ioctl adds an encryption key to the filesystem's fscrypt keyring ->s_master_keys, making any files encrypted with that key appear "unlocked". Why we need this The main problem is that the

[f2fs-dev] [RFC PATCH v2 16/20] fscrypt: require that key be added when setting a v2 encryption policy

2019-02-11 Thread Eric Biggers
From: Eric Biggers By looking up the master keys in a filesystem-level keyring rather than in the calling processes' key hierarchy, it becomes possible for a user to set an encryption policy which refers to some key they don't actually know, then encrypt their files using that key.

[f2fs-dev] [RFC PATCH v2 13/20] fscrypt: add an HKDF-SHA512 implementation

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add an implementation of HKDF (RFC 5869) to fscrypt, for the purpose of deriving additional key material from the fscrypt master keys for v2 encryption policies. HKDF is a key derivation function built on top of HMAC. We choose SHA-512 for the underlying unkeyed hash, and

[f2fs-dev] [PATCH] f2fs: don't allow negative ->write_io_size_bits

2019-02-11 Thread Dan Carpenter
We put an upper bound on ->write_io_size_bits but we don't have a lower bound. Signed-off-by: Dan Carpenter --- fs/f2fs/super.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 3ec11d392a5e..2db2d38e2aca 100644 --- a/fs/f2fs/super.c +++

[f2fs-dev] [RFC PATCH v2 14/20] fscrypt: v2 encryption policy support

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add a new fscrypt policy version, "v2". It has the following changes from the original policy version, which we call "v1" (*): - The encryption key is identified by a 16-byte master_key_identifier, which is derived from the key itself using HKDF-SHA512. This prevents

[f2fs-dev] [RFC PATCH v2 08/20] fs/inode.c: export inode_lru_list_del()

2019-02-11 Thread Eric Biggers
From: Eric Biggers When a filesystem encryption key is removed, we need all files which had been "unlocked" (had ->i_crypt_info set up) with it to appear "locked" again. This is most easily done by evicting the inodes. This can currently be done using 'echo 2 > /proc/sys/vm/drop_caches';

[f2fs-dev] [RFC PATCH v2 11/20] fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY ioctl

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add a new fscrypt ioctl, FS_IOC_REMOVE_ENCRYPTION_KEY. This ioctl removes an encryption key that was added by FS_IOC_ADD_ENCRYPTION_KEY. It wipes the secret key itself, then "locks" the encrypted files and directories that had been unlocked using that key -- implemented by

[f2fs-dev] [RFC PATCH v2 01/20] fs, fscrypt: move uapi definitions to new header

2019-02-11 Thread Eric Biggers
From: Eric Biggers More fscrypt definitions are being added, and we shouldn't use a disproportionate amount of space in for fscrypt stuff. So move the fscrypt definitions to a new header . For source compatibility with existing userspace programs, still includes the new header.

[f2fs-dev] [RFC PATCH v2 04/20] fs: add ->s_master_keys to struct super_block

2019-02-11 Thread Eric Biggers
From: Eric Biggers Add an ->s_master_keys keyring to 'struct super_block'. New fscrypt ioctls will allow adding and removing encryption keys from this keyring. This will enable solving multiple interrelated problems with how fscrypt keys are provided and managed currently, including: - Making

[f2fs-dev] [RFC PATCH v2 03/20] fscrypt: use FSCRYPT_* definitions, not FS_*

2019-02-11 Thread Eric Biggers
From: Eric Biggers Update fs/crypto/ to use the new names for the UAPI constants rather than the old names, then make the old definitions conditional on !__KERNEL__. Signed-off-by: Eric Biggers --- fs/crypto/crypto.c | 2 +- fs/crypto/fname.c| 2 +-

[f2fs-dev] [RFC PATCH v2 10/20] fs/dcache.c: add shrink_dcache_inode()

2019-02-11 Thread Eric Biggers
From: Eric Biggers When a filesystem encryption key is removed, we need all files which had been "unlocked" (had ->i_crypt_info set up) with it to appear "locked" again. This is most easily done by evicting the inodes. This can currently be done using 'echo 2 > /proc/sys/vm/drop_caches';

[f2fs-dev] [RFC PATCH v2 17/20] ext4: wire up new fscrypt ioctls

2019-02-11 Thread Eric Biggers
From: Eric Biggers Wire up the new ioctls for adding and removing fscrypt keys to/from the filesystem, and the new ioctl for retrieving v2 encryption policies. For more details see Documentation/filesystems/fscrypt.rst, as well as the fscrypt patches that added the implementation of these

[f2fs-dev] [RFC PATCH v2 15/20] fscrypt: allow unprivileged users to add/remove keys for v2 policies

2019-02-11 Thread Eric Biggers
From: Eric Biggers Allow the FS_IOC_ADD_ENCRYPTION_KEY and FS_IOC_REMOVE_ENCRYPTION_KEY ioctls to be used by non-root users to add and remove encryption keys from the filesystem-level crypto keyrings, subject to limitations. Motivation: while privileged fscrypt key management is sufficient for

[f2fs-dev] [RFC PATCH v2 00/20] fscrypt: key management improvements

2019-02-11 Thread Eric Biggers
Hello, This patchset makes major improvements to how keys are added, removed, and derived in fscrypt, aka ext4/f2fs/ubifs encryption. It does this by adding new ioctls that add and remove encryption keys directly to/from the filesystem, and by adding a new encryption policy version ("v2") where

Re: [f2fs-dev] [RFC PATCH v2 11/20] fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY ioctl

2019-02-11 Thread Dave Chinner
On Mon, Feb 11, 2019 at 09:27:29AM -0800, Eric Biggers wrote: > From: Eric Biggers > > Add a new fscrypt ioctl, FS_IOC_REMOVE_ENCRYPTION_KEY. This ioctl > removes an encryption key that was added by FS_IOC_ADD_ENCRYPTION_KEY. > It wipes the secret key itself, then "locks" the encrypted files

Re: [f2fs-dev] [RFC PATCH v2 11/20] fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY ioctl

2019-02-11 Thread Eric Biggers
Hi Dave, On Tue, Feb 12, 2019 at 09:12:49AM +1100, Dave Chinner wrote: > On Mon, Feb 11, 2019 at 09:27:29AM -0800, Eric Biggers wrote: > > From: Eric Biggers > > > > Add a new fscrypt ioctl, FS_IOC_REMOVE_ENCRYPTION_KEY. This ioctl > > removes an encryption key that was added by

Re: [f2fs-dev] [RFC PATCH v2 11/20] fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY ioctl

2019-02-11 Thread Dave Chinner
On Mon, Feb 11, 2019 at 03:31:29PM -0800, Eric Biggers wrote: > Hi Dave, > > On Tue, Feb 12, 2019 at 09:12:49AM +1100, Dave Chinner wrote: > > On Mon, Feb 11, 2019 at 09:27:29AM -0800, Eric Biggers wrote: > > > > Indeed, this is exactly what ->drop_inode() is for. > > > > Take this function: >

Re: [f2fs-dev] Proposal: Yet another possible fs-verity interface

2019-02-11 Thread Theodore Y. Ts'o
On Sat, Feb 09, 2019 at 12:38:05PM -0800, Linus Torvalds wrote: > > In particular, may I suggest that the interface be made idempotent, > so that you can do the merkle tree operation several times with the > same offset/length arguments, and if the merkle tree has already been > calculated, you