[PATCH v14 4/8] bootm: Support boot measurement

Ilias Apalodimas ilias.apalodimas at linaro.org
Wed Oct 25 15:21:51 CEST 2023


On Wed, 25 Oct 2023 at 16:08, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 24.10.23 17:43, Eddie James wrote:
> > Add a configuration option to measure the boot through the bootm
> > function. Add the measurement state to the booti and bootz paths
> > as well.
> >
> > Signed-off-by: Eddie James <eajames at linux.ibm.com>
> > Reviewed-by: Simon Glass <sjg at chromium.org>
> > ---
> > Changes since v8:
> >   - Added a configuration option to select to ignore any existing
> >     event log. This would only be selected for systems that know
> >     that U-Boot is the first stage bootloader. This is necessary
> >     because the reserved memory region may persist through resets
> >     and so U-Boot attempts to append to the previous boot's log.
> >
> > Changes since v6:
> >   - Added comment for bootm_measure
> >   - Fixed line length in bootm_measure
> >
> >   boot/Kconfig    | 32 +++++++++++++++++++++
> >   boot/bootm.c    | 74 +++++++++++++++++++++++++++++++++++++++++++++++++
> >   cmd/booti.c     |  1 +
> >   cmd/bootm.c     |  2 ++
> >   cmd/bootz.c     |  1 +
> >   include/bootm.h | 11 ++++++++
> >   include/image.h |  1 +
> >   7 files changed, 122 insertions(+)
> >
> > diff --git a/boot/Kconfig b/boot/Kconfig
> > index a01e6cb8aa..abbc72f4cf 100644
> > --- a/boot/Kconfig
> > +++ b/boot/Kconfig
> > @@ -685,6 +685,38 @@ config LEGACY_IMAGE_FORMAT
> >         loaded. If a board needs the legacy image format support in this
> >         case, enable it here.
> >
> > +config MEASURED_BOOT
> > +     bool "Measure boot images and configuration to TPM and event log"
> > +     depends on HASH && TPM_V2
> > +     help
> > +       This option enables measurement of the boot process. Measurement
> > +       involves creating cryptographic hashes of the binary images that
> > +       are booting and storing them in the TPM. In addition, a log of
> > +       these hashes is stored in memory for the OS to verify the booted
> > +       images and configuration. Enable this if the OS has configured
> > +       some memory area for the event log and you intend to use some
> > +       attestation tools on your system.
> > +
> > +if MEASURED_BOOT
> > +     config MEASURE_DEVICETREE
> > +     bool "Measure the devicetree image"
> > +     default y if MEASURED_BOOT
> > +     help
> > +       On some platforms, the devicetree is not static as it may contain
> > +       random MAC addresses or other such data that changes each boot.
> > +       Therefore, it should not be measured into the TPM. In that case,
> > +       disable the measurement here.
>
> I guess the device-tree should be measured before fix-ups.
>
> A main source of randomness is the KASLR seed.
>
> @Ilias: How are we handling this in the EFI case?

We unconditionally strip the KASLR node if EFI_RNG is installed.
efi_try_purge_kaslr_seed() has a useful comment on how the kernel's
EFI-stub behaves.
In any case, we measure selected parts of the DTB, not all of it,
efi_tcg2_measure_dtb() has the details and we keep the DTB measurement
under a Kconfig node.

Regards
/Ilias
>
> Best regards
>
> Heinrich


More information about the U-Boot mailing list