-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Description
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.