In reviewing various TPM programs and libraries, I have noticed that when sealing data to the TPM, a new key is always created (wrapped by the SRK), and that new key is loaded and used in the seal operation. When unsealing, the sub-key must first be loaded (unwrapped) before the unseal operation can be performed.

Is it necessary to create a new key for each sealing operation, or can the SRK be used directly to seal data? If it is necessary, what are the security and/or practical reasons why it is necessary?

1 Answer 1


In theory, it is possible as a sealing operation needs a Storage Key, and a SRK is a Storage Key. In pratice, it is not implemented as usually the SRK is given the WKS(Well-known-Secret = 20 bytes of 0x0) or an empty password, so concerning the security dimension, it is not a good idea.

EDIT: I just checked in TrouSerS, tpm_sealdata creates a key withkeyCreateKey which calls Tspi_Key_CreateKey which needs a wrapping key. tpm_sealdata calls keyCreateKey with the SRK. So if you use TPM 1.2 and TrouSerS, you need a wrapper, and this wrapper is the SRK. I don’t know how it is done for the TPM 2.0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .