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?


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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.