Re: [PATCH 0/4][RFC v2] Introduce the in-kernel hibernation encryption

Oliver Neukum
2018-07-23T11:50:18Z

On Fr, 2018-07-20 at 12:25 +0200, Pavel Machek wrote:
> Hi!

Hello,

> > Let me paste the log here:
> >
> > 1. (This is not to compare with uswsusp but other
> > tools) One advantage is: Users do not have to
> > encrypt the whole swap partition as other tools.
>
> Well.. encrypting the partition seems like good idea anyway.

Yes, but it is a policy decision the kernel should not force.
STD needs to work anyway.

> > 2. Ideally kernel memory should be encrypted by the
> > kernel itself. We have uswsusp to support user
> > space hibernation, however doing the encryption
> > in kernel space has more advantages:
> > 2.1 Not having to transfer plain text kernel memory to
> > user space. Per Lee, Chun-Yi, uswsusp is disabled
> > when the kernel is locked down:
> > https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/
> > linux-fs.git/commit/?h=lockdown-20180410&
> > id=8732c1663d7c0305ae01ba5a1ee4d2299b7b4612
> > due to:
> > "There have some functions be locked-down because
> > there have no appropriate mechanisms to check the
> > integrity of writing data."
> > https://patchwork.kernel.org/patch/10476751/
>
> So your goal is to make hibernation compatible with kernel
> lockdown? Do your patches provide sufficient security that hibernation
> can be enabled with kernel lockdown?

OK, maybe I am dense, but if the key comes from user space, will that
be enough?

> > 2.2 Not having to copy each page to user space
> > one by one not in parallel, which might introduce
> > significant amount of copy_to_user() and it might
> > not be efficient on servers having large amount of DRAM.
>
> So how big speedup can be attributed by not doing copy_to_user?

That would be an argument for compression in kernel space.
Not encrpting would always be faster.

> > 2.3 Distribution has requirement to do snapshot
> > signature for verification, which can be built
> > by leveraging this patch set.
>
> Signatures can be done by uswsusp, too, right?

Not if you want to keep the chain of trust intact. User space
is not signed.

> > 2.4 The encryption is in the kernel, so it doesn't
> > have to worry too much about bugs in user space
> > utilities and similar, for example.
>
> Answer to bugs in userspace is _not_ to move code from userspace to kernel.

Indeed.

> > Joey Lee and I had a discussion on his previous work at
> > https://patchwork.kernel.org/patch/10476751
> > We collaborate on this task and his snapshot signature
> > feature can be based on this patch set.
>
> Well, his work can also work without your patchset, right?

Yes. But you are objecting to encryption in kernel space at all,
aren't you?

Regards
Oliver