Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

Beginner's Guide to the TPM
What you always wanted to know but were too afraid to ask

James Bottomley
About Me

 

Container evangelist

Open Source Advocate

  • Converting Business to Open Source

Kernel Developer

  • SCSI Subsystem Maintainer
  • PA-RISC architecture Maintainer
TPM Basics

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.

Demo
Conclusions
TPM Software Stack is horrible
But it can be used to do basic key shielding (no more USB dongles)
Once we get measurement sorted out, there's a lot of fancy stuff we can do
So don't be afraid to play with it.
The more people that use the TPM, the more useful programs we'll get
Presented using impress.js by Bartek Szopka


Web Developer!
Thank You!
Questions?