[libvirt PATCH v2 09/12] tools: support generating SEV secret injection tables
Cole Robinson
crobinso at redhat.com
Tue Oct 25 23:38:43 UTC 2022
On 10/19/22 6:17 AM, Daniel P. Berrangé wrote:
> It is possible to build OVMF for SEV with an embedded Grub that can
> fetch LUKS disk secrets. This adds support for injecting secrets in
> the required format.
>
> Signed-off-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
> diff --git a/tools/virt-qemu-sev-validate b/tools/virt-qemu-sev-validate
> index 5ce5763d5b..2d15edb933 100755
> --- a/tools/virt-qemu-sev-validate
> +++ b/tools/virt-qemu-sev-validate
> @@ -36,16 +36,19 @@
>
> import abc
> import argparse
> -from base64 import b64decode
> +from base64 import b64decode, b64encode
> from hashlib import sha256
> import hmac
> import logging
> +import os
> import re
> import socket
> from struct import pack
> import sys
> import traceback
> from uuid import UUID
> +from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
> +
>
> from lxml import etree
> import libvirt
> @@ -573,7 +576,26 @@ class KernelTable(GUIDTable):
> return entries
>
>
> -class ConfidentialVM(object):
> +class SecretsTable(GUIDTable):
> +
> + TABLE_GUID = UUID('{1e74f542-71dd-4d66-963e-ef4287ff173b}').bytes_le
> + DISK_PW_GUID = UUID('{736869e5-84f0-4973-92ec-06879ce3da0b}').bytes_le
> +
> + def __init__(self):
> + super().__init__(guid=self.TABLE_GUID,
> + lenlen=4)
> + self.disk_password = None
> +
> + def load_disk_password(self, path):
> + with open(path, 'rb') as fh:
> + self.disk_password = fh.read()
> +
> + def entries(self):
> + return self.build_entry(self.DISK_PW_GUID,
> + self.disk_password + bytes([0]), 4)
> +
This bytes([0]) NUL byte ends up in the efi_secret /sys path. Dropping
it doesn't seem to impact injecting the secret at all
FWIW once that's dropped, getting automatic luks unlock is really simple
with /etc/crypttab + kernel 5.19
sed -i -e "s| none |
/sys/kernel/security/secrets/coco/736869e5-84f0-4973-92ec-06879ce3da0b
|g" /etc/crypttab
dracut --force --add-drivers efi_secret
shutdown -r now
Thanks,
Cole
More information about the libvir-list
mailing list