Skip to content

TPM authentication/verification aka key attestation #22637

@grigorig

Description

@grigorig

Currently there is no way to authenticate a TPM, that is, verify that it is an authentic TPM, or even a specific trusted TPM. This opens the door to man in the middle attacks, such as outlined in the TPM Genie whitepaper.

There are various solutions to the problem:

  • Create an endorsement key and download the associated endorsement certificate from the TPM. A valid certificate proves that the TPM was actually manufactured by the specified manufacturer. The certificate needs to be validated with standard PKI methods. This is rather complex, and may require network access. It's also not guaranteed that a TPM will actually ship with an endorsement certificate. Nonetheless, it would be suitable for sd-creds, for instance, but probably not for sd-cryptsetup.

  • Create a fingerprint of the public part of a well-known key (e.g. a primary key) and store the fingerprint in a trusted location. This binds to a specific TPM with a "trust on first use" (TOFU) trust model. In the sd-cryptsetup case with secure boot, the storage location could be crypttab or kernel commandline arguments. When the key is regenerated, validate the fingerprint.

  • Maybe something else?

One way or another, we should implement some kind of TPM authentication.

Metadata

Metadata

Assignees

No one assigned

    Labels

    RFE 🎁Request for Enhancement, i.e. a feature requesttpm2

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions