]> git.dujemihanovic.xyz Git - u-boot.git/commit
tpm: allow the user to select the compiled algorithms
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Sun, 23 Jun 2024 11:48:18 +0000 (14:48 +0300)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Sun, 30 Jun 2024 11:58:31 +0000 (13:58 +0200)
commite7505b3b8bcd1bca2d30291367713f442b453c41
treed9263a8c0375e4e8db0c896a286506e8d725a7ea
parentcba3fa90240df783cb040f25833dd420f7f39f16
tpm: allow the user to select the compiled algorithms

Simon reports that after enabling all algorithms on the TPM some boards
fail since they don't have enough storage to accommodate the ~5KB growth.

The choice of hash algorithms is determined by the platform and the TPM
configuration. Failing to cap a PCR in a bank which the platform left
active is a security vulnerability. It might allow  unsealing of secrets
if an attacker can replay a good set of measurements into an unused bank.

If MEASURED_BOOT or EFI_TCG2_PROTOCOL is enabled our Kconfig will enable
all supported hashing algorithms. We still want to allow users to add a
TPM and not enable measured boot via EFI or bootm though and at the same
time, control the compiled algorithms for size reasons.

So let's add a function tpm2_allow_extend() which checks the TPM active
PCRs banks against the one U-Boot was compiled with. We only allow
extending PCRs if the algorithms selected during build match the TPM
configuration.

It's worth noting that this is only added for TPM2.0, since TPM1.2 is
lacking a lot of code at the moment to read the available PCR banks.
We unconditionally enable SHA1 when a TPM is selected, which is the only
hashing algorithm v1.2 supports.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Simon Glass <sjg@chromium.org> # chromebook-link
boot/Kconfig
include/tpm-v2.h
lib/Kconfig
lib/tpm-v2.c