I'll admit to not being very familiar with the openssl-tpm-engine software, so 
hopefully someone else can jump in with that expertise.

However, you're probably correct that a new key is being created, and that 
certificates can be a bit of a challenge with the TPM.  Here's why:

-  All TPM keys (at least in the current TPMs) are restricted in their use. 
They can only be used for one of signing or decryption, to prevent certain 
attacks. They're further subdivided by the kind of information that they can 
sign or decrypt, for some other use cases you probably don't need to worry 
about right now. It sounds like what you're really trying to do here is sign 
data. (It's the equivalent operation to encrypt with private key, decrypt with 
public.)

 -  The EK is a *very* limited-use key, because it is the TPM's unique lifetime 
identifier, and using it thus can create privacy concerns. The only command 
which lets you use the EK is something called ActivateIdentity, which is used 
for certifying identity keys; that decrypts data sent to the TPM in a very 
special format. It's really not what you want to use here at all.

- Two kinds of TPM keys are suitable for signing data: Signing Keys, as the 
name implies, which can sign arbitrary user-provided data, and Identity Keys, 
which sign data created by the TPM itself. You probably want a signing key for 
this. (They come in three flavors; hopefully your package hides the choice from 
you, but if you have to pick, you want either SHA or DER depending on what 
you're signing.)  Signing keys are also the *only* TPM keys which can create 
normal X.509 CSRs, because they're the only ones which can sign arbitrary data.

- When you're seeing the package "add a new RSA key and encrypt it with the 
TPM", it's doing one of two things; I don't know which. One possibility is that 
it's creating a TPM key, as described above (all user-created TPM keys are 
encrypted with other TPM keys, usually the automatically-created Storage Root 
Key); in this case, it will have constrained use, but will never exist 
unencrypted outside of the TPM, resulting in a much tighter machine-key 
binding. Of course, the TPM can be a little slow.  The other possibility is 
that it's creating an RSA key in software, and encrypting it with the TPM. In 
this case, you can use your RSA key for either signing or decryption, and 
you're working at software speeds; on the other hand, you only get the 
authentication that you're on the platform when you first decrypt the key, and 
it can then be removed from the platform by malware. Depending on your threat 
model, this might be a major problem, or a minor one.

That was a bit of a long and complicated explanation. Let me know if any of 
this doesn't make sense, and hopefully someone else will jump in with the 
openssl-specific information.

                Ariel


On Aug 6, 2013, at 4:27 PM, Pankaj 
<[email protected]<mailto:[email protected]>>
 wrote:

Hi,

I want to use TPM for SSL authentication.  I have also downloaded the 
openssl-tpm-engine.

I am still not sure what this package is trying to do.

Here is what I am thinking to use:

  *   Use the RSA EK in the TPM for authentication
  *   Get the Pubic EK and create a CSR to a CA (An internal manufacturing CA 
for the server with TPM)
  *   Provide a unique Id with CSR(Product-ID and Serial Number probably)
  *   The CA sends the signed Certificate and associated chain
  *   Install the Certificate Chain in the server's hard drive

 During SSL authentication, use TPM for encrypting the data to be sent to peer 
with TPM Private EK.  The peer can decrypt it with the Public EK which is part 
of the certificate.

The tpm engine gets loaded with the openssl, but somehow the whole thing in 
openssl_tpm_engine is still not clear to me. I think that this package is 
adding a new RSA key and encrypting it with TPM.  I also think that this will 
work only with self signed certificates.

Can anyone please explain !

Regards
Pankaj Shukla
------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead.
Download for free and get started troubleshooting in minutes.
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk_______________________________________________
TrouSerS-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-users

------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
TrouSerS-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-users

Reply via email to