[PATCH] enhanced smartcard support

Carolin Latze carolin.latze
Fri May 23 12:14:36 PDT 2008

Hi Jouni,

I will send them the next week. I also found a way to use private keys 
that never leave the TPM. There are two ways to do so. One of the is to 
use new certificate, that are not X.509 compliant, which is desired in 
my setup, but perhaps not for everybody. The other way is to use SKAE 
aware certificates, which are X.509 certificates, but require a SKAE 
aware CA, which does not exist atm (at least from what I know). I will 
try to explain that more detailed:

The TPM may generate keys that do never leave it (at least the private 
part ;-)) and may be used for certification purposes. Those keys are 
called identity keys. In order to certify those keys, a request is sent 
to a special CA, called Privacy CA. At the moment, there is one Privacy 
CA up and running: www.privacyca.com In order to sign an identity key, 
the Privacy CA needs some certificates from the TPM, that should be 
shipped with it. But at the moment only Infineon ships one of the 
certificates needed. The guy who implemented www.privacyca.com is aware 
of that problem and allows to create the identity certificate without 
those additional certificates. The identity certificate is then a valid 
X.509 certificate. But for some reasons, those keys cannot be used in 
TLS authentication (the TPM standard forbids that, don't ask me why). 
Therefore, you have to create new keys, that do also never leave the 
TPM. Those new keys will be signed by that X.509 identity certificate. 
And now it becomes complicated: A signed key is somehow a certificate, 
BUT the identity certificate has the CA:false constraint, which means, 
that the signed key will never be valid X.509! Additionally, the items 
that are signed are different from the items that are signed in X.509.

Up to now, there are two solutions for that problem:

1) My solution :-)
As the signed key is somehow a certificate I defined a new type of 
certificate called TPM-Certificate. This certificate looks very similar 
to X.509, but carries the TPM relevant items. I am working on an OpenSSL 
extension in order to handle this type of certificates. I think, that is 
a very nice, easy and obvious solution :) I will inform you when I 
finished my work. I have already a first prototype running, but that is 
more a hack. I am working on a better version now.

2) SKAE:
This solution has been defined by the trusted computing group in order 
to be able to work with X.509 certificates. SKAE is an X.509 extension 
that carries the signed items. The idea is to generate a new certificate 
request for the signed key including the SKAE extension. This request is 
then sent to a SKAE aware CA (which does not exist at the moment as far 
as I know) which signs everything like always done in X.509 and issues a 
valid X.509.

Well I must admit, this TPM authentication is terribly complicated, but 
don't hesitate to ask in order to understand whats going on!


Jouni Malinen wrote:
> On Fri, May 23, 2008 at 10:52:55AM +0200, Carolin Latze wrote:
>> I am still subscribed to this list, but did not really follow it. I just 
>> read something about how to create the TPM into wpa_supplicant and I 
>> have to say that I got it working. I cannot provide a patch till now, 
>> but will prepare one if you are interested in it. I am able to store 
>> X.509 certificates in the TPM and access the TPM during EAP-TLS 
>> authentication. I used the OpenSSL TPM engine in order to implement that 
>> feature.
> If your changes do something else than the patches from David, I would
> be interested in seeing them. I applied David's patches and they allow
> PKCS#11 engine to be used with opencryptoki module to access the
> certificates and private key from TPM.

More information about the Hostap mailing list