On Mon, Jun 27, 2022 at 12:00:59PM +0200, Gerd Hoffmann wrote:
On Thu, Jun 23, 2022 at 06:14:12PM +0200, Andrea Bolognani wrote:
> The main motivation behind this series was making it as simple as
> possible ("one click") to enable Secure Boot for a VM.
Heads up, and sort-of follow-up to the recent secure boot and smm (x86)
and tz (arm) discussion.
We'll most likely get a new secure boot variant soon. This will not
require smm, but it will also not support persistent variables. The
underlying idea is to simply re-initialize the variable store from
known-good ROM on each boot to compensate for the varstore not being
protected against the guest OS tampering with it.
Which of course implies some drawbacks: The guest can't add keys (via
mokutil) for example, and turning off secure boot in firmware setup
wouldn't work either. There are enough use cases (like just booting
cloud images in secure boot mode) where this doesn't matter, so I
consider this useful nevertheless, but maybe a separate feature flag
like 'stateless-secure-boot' makes sense for that.
Since the use case will be virt related, there's always the possibility
of using host side tools to inject a custom key into the default varstore
before the guest OS runs. That doesn't cover all possible mokutil
scenarios, but at least addresses the big one of providing a firmware
that trusts the user's keys, instead of the OS vendor keys.
I don't think we need a 'stateles-secure-boot' flag, as thats
implicit from mapping.mode=statusless and features.secure-boot
Not sure yet how to package that up, best is probably as stateless
image
because that'll reduce the chances of getting it wrong, i.e. something
like this:
{
"description": "OVMF with secure boot, no persistent vars",
"interface-types": [
"uefi"
],
"mapping": {
"device": "flash",
"mode": "stateless",
"executable": {
"filename": "/usr/share/edk2/ovmf/OVMF.secboot.fd",
"format": "raw"
}
},
"targets": [
{
"architecture": "x86_64",
"machines": [
"pc-i440fx-*"
"pc-q35-*"
]
}
],
"features": [
"secure-boot",
"enrolled-keys",
]
}
This looks reasonable.
The idea idea should work for aarch64 too and remove the trustzone support
requirement.
With regards,
Daniel
--
|:
https://berrange.com -o-
https://www.flickr.com/photos/dberrange :|
|:
https://libvirt.org -o-
https://fstop138.berrange.com :|
|:
https://entangle-photo.org -o-
https://www.instagram.com/dberrange :|