That TPMs cannot sign CSRs is true but TPMs can do something similar
and IMHO much more interesting which attesting that a public key
(and thus indirectly the associated private key) was created inside of the TPM.

The problem here is that few APIs and even fewer protocols deals with
this kind of functionality.

Anders

Martin Schneider wrote:
Hello Peter and others,

I should start by saying that a TPM's functionality is not equivalent to
that of other hardware tokens, such as smart cards.  A TPM only provides a
subset of the functionality of a regular PKCS#11 token.  A TPM, however,
also providers things that PKCS#11 tokens don't deal with - measuring
software components and remote attestation.  Keys stored into the TPM may be
bound to "trusted" software configurations of the local host.  For example,
a user running a compromised OS may not be able to access a key inside the
TPM because the TPM considers the host's software untrusted.  Many people
have cried out that this can be used to lock data to particular software
applications, but this is a different topic and we should not go into it.

Trousers's PKCS#11 module uses a software-based PKCS#11 data store protected
with a key hierarchy described inhttp://trousers.sourceforge.net/pkcs11.html.  
The root of this hierarchy a
wrapped using a key generated and stored inside the TPM.  Therefore, the
PKCS#11 module mainly interacts with this software-based data store.  For
example, I believe that tpmtoken_import() imports key/cert pairs into the
software-based data store, not into the TPM.  The TPM simply doesn't have
the capability to store certificates, sign CSR's etc.  Neither can it export
PKCS#12 items.  It provides some PKCS#11-friendly functions, such as
wrapping symmetric keys and a more secure random number generator, that
Trousers' may directly use in its PKCS#11 module, but a lot of PKCS#11
functionality is not provided by the TPM and has to be implemented in
software.

Thank you for this explanation. What you write confirms the impression
of the inner working of opencryptoki I got from reading various
things. And I perfectly agree on what you write about the TPM and its
non-ability to import certificates. I think they keystore on
opencryptoki follows exactly the principle how storing other things
"in" the TPM works: building an encrypted key hierarchy that is stored
on harddisk with an encryption key rooted in the Storage Root Key in
the TPM.

Best regards
Martin

-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to