Hi all, Sorry for being late to the party. Ard cc'ed me in a prior mail, but that got lost along the way
On Wed, Sep 21, 2022 at 05:41:14PM +0200, Ard Biesheuvel wrote: > On Wed, 21 Sept 2022 at 14:27, Gerd Hoffmann <kra...@redhat.com> wrote: > > > > On Wed, Sep 21, 2022 at 11:24:11AM +0000, Lu, Ken wrote: > > > > > > > > > But either in GenericQemuLoadImageLib, it can do measurement for > > > > command line and initrd, correct? > > > > > > > > Yes, it could. But why given that the linux kernel efi stub measures > > > > anyway? > > > > > If the final decision is the measurement should be done by efi stub in > > > Linux kernel. > > > > The reference should be the workflow when you boot linux from efi shell > > or using a BootNNNN entry. Which I think is: > > > > (1) linux kernel is loaded + measured via Loadimage(). > > (2) linux kernel is started via efi stub entry point. > > (3) linux kernel efi stub loads and measures the initrd. > > > > Not fully sure about the command line measurement, IIRC Ard described > > that in one of the replies. > > > > If the image was booted from a BootNNNN entry, the entire variable > will be measured into the TPM, including the load options aka command > line. > > If you use the shell or another loader that has no explicit awareness > of secure boot or measured boot, the load options are not measured at > all. > As others mentioned before me, I think the proposal here is reasonable. Yes the TCG spec tries to avoid measuring things twice, but the reality is that if we do so we'll probably end up with binaries or config options not being measured depending on how the OS booted. On top of that the efi-stub measures the contents of the initramfs and the LoadOptions in PCR9, which is meant to be used by the OS. That should give enough freedom to people when deciding which PCRs to use on sealing etc. > > > Do we also need remove today's measurement in Grub (I > > > have submitted some patch for TDX in grub...)? > > > > Those patches are perfectly fine, tpm measurement and tdx measurement > > should be consistent. In case the grub measurement workflow needs > > changes to avoid double measurements (not sure this is actually the > > case) those changes should apply to both tpm and tdx. > > > > Agreed. I think the decision what to measure and what not to measure > is orthogonal to the type of measured boot that is being used. I'd like to take the opportunity here and explain what happens on the efi-stub measurements. GRUB uses the EV_IPL type for the eventlog. This event was marked as deprecated in older versions of the spec. However on the latest versions that changed and it now says: - "May be used by Boot Manager Code to measure events. The contents of the event field are specified by the caller." Since it mentions "boot manager" and the efi-stub is an OS loader, we used EV_EVENT_TAG for the initrd contents and the LoadOptions. The description for that type is: - "Used for PCRs defined for OS and application usage. Defined for use by Host Platform Operating System or Software", which is a closer match. On top of that the opaque EV_EVENT_TAG event is a bit cleaner and allows us to mark events using its u32 tagged EventID and it easily extended for any future measurements we want to add. However when I re-read the event description there's a confusing sentence on it's description saying "The digests field MUST contain the tagged hash of the event data for each bank.". This contradicts the TCG_PCR_EVENT2 Structure description for the digests field, as it allows you to measure either the event data or external data. It also means that when measuring the initrd we'll end up with an > 80mb event data, which is silly. Anyone knows if that's a typo on the spec? Or as we abusing EV_EVENT_TAG? Thanks /Ilias > > > > According to Bottomley, the same measurement should not be done twice. > > > > Yes, this is the way it should be, although the current state of affairs > > is a bit messy and I think we are a bit away from that ideal. > > > > > Or only the one who use GenericQemuLoadImageLib, will give the Linux > > > kernel efi stub for measure? > > > > I think we don't have to do anything special in GenericQemuLoadImageLib > > because the lib uses Loadimage() which should handle measurement. > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#94209): https://edk2.groups.io/g/devel/message/94209 Mute This Topic: https://groups.io/mt/93737108/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-