Container evangelist
Open Source Advocate
Kernel Developer
A TPM is a separate processing module with shielded memory
They have been ubiquitous for a while now
But they have a horrifically bad programming experience
The mandated model is called the TCG (Trusted Computing Group) Secure Stack (TSS)
Linux Implementation is Trousers
Actual TPM Functions:
1. Shielded Key Handling
2. Measurement
3. Data Sealing
4. Attestation
TPM has two primary keys
Endorsement Key (EK) used for attestation. Permanent.
Storage Root Key (SRK) used to load to shielded memory. Changes if TPM is reinitialised.
All TPM keys (1.2) are RSA 2048
Key Types: Storage, Binding, Signing, Legacy
Migrateable keys (can be taken out of the TPM)
Use and Migration authority
Required PCR value(s)
Aside about Measurement
24 PCRs (Platform Configuration Registers) in TPM 1.2
extend using a non-reversible hash: PCR ← SHA1(PCR value)
Used to track configuration and state values
To be useful needs a stable value that says this configuration is secure
Bind to PCR meaning base bluetooth configuration plus hash of private phone key
Parent (ultimate root is the SRK)
Clearing the TPM erases the SRK => all keys are lost.
Keys can be generated by the TPM itself
Or imported from outside. Must be wrapped to the parent.
Wrapping means encrypt with the parent public key
Inserting a wrapped key into the TPM requires the parent authorization.