Re: [PATCH v1] efi/libstub: Add Confidential Computing (CC) measurement support

From: Ard Biesheuvel
Date: Sun Feb 04 2024 - 17:03:39 EST


On Sun, 4 Feb 2024 at 21:28, Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> wrote:
>
> +Jiewen & Ken (RTMR firmware owner)
>
> On 2/3/24 10:46 PM, James Bottomley wrote:
> > On Sat, 2024-02-03 at 07:57 +0000, Kuppuswamy Sathyanarayanan wrote:
> >> If the virtual firmware implements TPM support, TCG2 protocol will be
> >> used for kernel measurements and event logging support. But in CC
> >> environment, not all platforms support or enable the TPM feature.
> >> UEFI specification [1] exposes protocol and interfaces used for
> >> kernel measurements in CC platforms without TPM support.
> >>
> >> Currently, the efi-stub only supports the kernel related measurements
> >> for the platform that supports TCG2 protocol. So, extend it add
> >> CC measurement protocol (EFI_CC_MEASUREMENT_PROTOCOL) and event
> >> logging support. Event logging format in the CC environment is the
> >> same as TCG2.
> > Why do we have to do this anymore? Given that you're already pushing
> > patches that map RTMRs to TPM PCRs:
> >
> > https://lore.kernel.org/lkml/20240128212532.2754325-4-sameo@xxxxxxxxxxxx/
>
> IMHO, I am not sure whether we need this mapping support . I have already
> mentioned the same comment in [1]. If we support extension and logging
> via configFS ABI, why again support PCR mapping?
>
> https://lore.kernel.org/lkml/2bd7c80b-9cd8-4450-a410-c3739d224167@xxxxxxxxxxxxxxx/ [1]
>
> >
> > Can't you just add a stub TCG2 driver to EFI that exposes only the
> > ability to log and measure using this mapping? That way all our
> > existing code will "just work" without the need to understand anything
> > about confidential computing or add new code to do the measurement?
>
> I am not familiar with the EFI implementation, but I think a new protocol
> is added to handle future CC extensions (which could deviate from
> TCG2) and to support platforms that does not support or enable TPM
> feature. So modifying the TCG2 driver in EFI may not work for the
> above-mentioned cases. I think the EFI driver part of this support
> is already merged.
>
> Jiewen/Ken may have more comments about this proposal.
>

I don't think it is sufficient to wire up the CC protocol here. There
is more code in drivers/firmware/efi/libstub/tpm.c that deals with the
event log.

Given that the EFI CC protocol was specifically designed to act as a
substitute for the TCG2 protocol, I would expect all occurrences of
TCG2 protocol invocations to be handled accordingly.

So I think the approach here should be to provide a local wrapper
around get_event_log() and hash_log_extend_event() that is backed by
either the TCG2 protocol of the EFI cc protocol, and all current
callers invoke this wrapper rather than the TCG2 protocol directly.