Skip to content

SeaBIOS TPM configuration menu

Since SeaBIOS rel-1.12.0.1 TPM 2.0 module from PC Engines is supported on apu2 and apu1 platforms (and apu5 where the chip may be soldered down depending on BOM option) in the payload as a configuration menu.

When entering the boot menu on serial console via F10 key, one may notice an additional option when TPM module is connected to LPC header:

SeaBIOS (version rel-1.12.0.1-15-g8993894)

Press F10 key now for boot menu

Select boot device:

1. USB MSC Drive Kingston DataTraveler 3.0 PMAP
2. SD card SB16G 15193MiB
3. AHCI/0: SanDisk SSD i110 16GB ATA-9 Hard-Disk (14566 MiBytes)
4. Payload [setup]
5. Payload [memtest]

t. TPM Configuration

TPM Configuration option appears when TPM is connected and initialized and can be entered via t key.

TPM Configuration menu

TPM Configuration menu consists of two options beginning from rel-1.12.1.1 SeaBIOS release:

1. Clear TPM
2. Change active PCR banks

If no change is desired or if this menu was reached by mistake, press ESC to
reboot the machine.

Clear TPM option

Clearing TPM is a reset operation for TPM which does the following:

  • resets TPM to the default state
  • clears TPM ownership
  • clears the TPM stored keys, passwords and certificates

Taking ownership of TPM will be possible in OS after clearing. This option may be useful when the state of firmware changes and TPM cannot release its secrets due to different Platform Configuration Registers (PCR) or the OS is unbootable if the disk is encrypted and configured to auto-decrypt with TPM.

Choosing the clear option with 1 key will cause to print the TPM configuration menu again without any confirmation of success. The option is available since SeaBIOS rel-1.12.0.1.

Change active PCR banks

This option is available since SeaBIOS rel-1.12.1.1. What this option does is to enable certain PCR banks according to user choice. TPM2.0 chips, comparing to TPM1.2, have two different PCR banks able to store digests of different algorithms: SHA1 and SHA256. TPM1.2 modules have only SHA1 banks for PCRs.

To enable or disable the banks choose option 2 in the TPM configuration menu by typing 2 key:

Toggle active PCR banks by pressing number key

  1: SHA1 (enabled)
  2: SHA256 (enabled)

ESC: return to previous menu without changes
A  : activate selection

Both banks should be enabled by default. To change the state of one type of bank types the number referring to the desired bank to toggle the state. For example to disable SHA1 banks, type 1:

Toggle active PCR banks by pressing number key

  1: SHA1
  2: SHA256 (enabled)

ESC: return to previous menu without changes
A  : activate selection

The (enabled) string should disappear, but the state has not yet been applied to the TPM. Now, one has two choices:

  • abort the changes by pressing ESC key, the SeaBIOS will return to the first TPM menu
  • or apply the changes by pressing A key, the SeaBIOS will have to reboot the platform to make changes to TPM.

uppercase or lowercase does not matter

When pressed ESC key and then entered the PCR bank configuration again, one should see that nothing has changed:

Toggle active PCR banks by pressing number key

  1: SHA1 (enabled)
  2: SHA256 (enabled)

ESC: return to previous menu without changes
A  : activate selection

But when A key was pressed, the platform reboots. After reboot one may verify if the changes were applied correctly by entering the TPM configuration and then PCR banks configuration:

t. TPM Configuration

1. Clear TPM
2. Change active PCR banks

If no change is desired or if this menu was reached by mistake, press ESC to
reboot the machine.

Toggle active PCR banks by pressing number key

  1: SHA1
  2: SHA256 (enabled)

ESC: return to previous menu without changes
A  : activate selection

Note that at least one type of banks has to be enabled when toggling both bank types to be disabled, the A : activate selection option disappears and does not allow to apply invalid changes:

Toggle active PCR banks by pressing number key

  1: SHA1
  2: SHA256

ESC: return to previous menu without changes

In such case, one can only return to the previous menu by pressing ESC key.

To reenable the PCR banks follow the same procedure as with disabling, but apply changes when (enabled) string is printed alongside desired type of banks to be enabled.

Verification

In order to verify whether the PCR banks were actually disabled, one may run tpm2_pcrlist command from tpm2-tools. The dependencies involved in building tpm2-tools are rather complex so it is advised to use a dockerized environment for tpm2-tools which 3mdeb has developed for convenient use of the tool. The source is available on 3mdeb GitHub.

Example execution of tpm2-tools tpm_pcrlist command with disabled SHA1 banks:

sha1:
sha256:
  0 : 0xD27CC12614B5F4FF85ED109495E320FB1E5495EB28D507E952D51091E7AE2A72
  1 : 0x9CEF4FA7928AD1428CE025EA36BE8C26B4350C6CB50F5D8AAE97AE89E4156EE9
  2 : 0xB38B591AF21E993E34333858293D2AC82FDF6E2D169B1415BF981A4BE0FFD283
  3 : 0xD27CC12614B5F4FF85ED109495E320FB1E5495EB28D507E952D51091E7AE2A72
  4 : 0xEEA509AA8A7554B7B4040C44A580660923246633B3593D0547D4FD52841971E0
  5 : 0xD27CC12614B5F4FF85ED109495E320FB1E5495EB28D507E952D51091E7AE2A72
  6 : 0xD27CC12614B5F4FF85ED109495E320FB1E5495EB28D507E952D51091E7AE2A72
  7 : 0xD27CC12614B5F4FF85ED109495E320FB1E5495EB28D507E952D51091E7AE2A72
  8 : 0x0000000000000000000000000000000000000000000000000000000000000000
  9 : 0x0000000000000000000000000000000000000000000000000000000000000000
  10: 0x0000000000000000000000000000000000000000000000000000000000000000
  11: 0x0000000000000000000000000000000000000000000000000000000000000000
  12: 0x0000000000000000000000000000000000000000000000000000000000000000
  13: 0x0000000000000000000000000000000000000000000000000000000000000000
  14: 0x0000000000000000000000000000000000000000000000000000000000000000
  15: 0x0000000000000000000000000000000000000000000000000000000000000000
  16: 0x0000000000000000000000000000000000000000000000000000000000000000
  17: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  18: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  19: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  20: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  21: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  22: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
  23: 0x0000000000000000000000000000000000000000000000000000000000000000

Notice that SHA1 PCRs were not printed due to their unavailability.

Currently SeaBIOS fills following PCRs: 1, 2 and 4. The rest of the banks is filled with default values. The same applies to SHA1 PCRs. This will change in the future with the introduction of the measured boot.

The TPM configuration menu is planned to be extended in the future. For other TPM features and utilisation, one may use tpm2-tools.