[tpm2] Re: How to initialize a used TPM2 module and thoughts on clevis

Roberts, William C <william.c.roberts at intel.com> Tue, 12 Jul 2022 21:19:03 +0000
Newsgroups dev.linux.lists.tpm2
Message-ID <[email protected]>
On Mon, 2022-07-11 at 06:23 +0000, tpm2(a)bitzap.e4ward.com wrote:
> Hello -
> 
> New to TPM2 here. I'm adding a *used* TPM2 module to a mobo that has
> a header. What are best practices to initialize the TPM2 module? 
> Should I clear it first, possibly via the BIOS?

Yes

>  Should I set an owner password?

and YES. This is required to keep someone from wiping all the keys in
the owner hierarchy which would include your disk encryption keys.
You also want to set the lockoutauth as well.

> 
> So far I found `echo 5 > /sys/class/tpm/tpm0/ppi/request` which is
> probably a good idea to do as I don't know where the module comes
> from and whether anyone has messed with it before.
> 
> I'd appreciate any pointers in the right direction and the correct
> commands to start with a clean TPM2. Running Ubuntu 20.04 and I
> installed tpm2-tools.

I think I'd clear it using the BIOS and use
tpm2_changeauth -C o <newownerpass>
tpm2_changeauth -C l <newlockoutpass>

You'd probably also want to create the "Storage Root Key" or SRK which
is a key at certain fixed address without a password so you can put
subordinate keys under:

# Specify -G ecc for an ecc key over RSA, but it really doesn't matter.
tpm2_createprimary -c primary.ctx 
tpm2_evictcontrol -c primary.ctx 0x81000001

to initialize the TPM.

The address 0x81000001 comes from a guidance document on how to
provision the TPM:
  - 
https://trustedcomputinggroup.org/wp-content/uploads/TCG-TPM-v2.0-Provisioning-Guidance-Published-v1r1.pdf


> 
> Also, is `clevis encrypt tpm2` a good wrapper if I just want to a
> simple way to encrypt/decrypt a file on disk that holds other
> credentials?

Yeah clevis works great for those purposes. However, I don't know how
clevis manages it's keys so you may need to do something else, but
as far as I know its a simple way to use TPM2.


> 
> Thank you!
> _______________________________________________
> tpm2 mailing list -- tpm2(a)lists.01.org
> To unsubscribe send an email to tpm2-leave(a)lists.01.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s