On Wed, Jan 18, 2012 at 11:30:36PM -0800, Frank Cusack wrote:
> On Wed, Jan 18, 2012 at 11:04 PM, Christian Hohnstaedt <
> [email protected]> wrote:
>
> > On Wed, Jan 18, 2012 at 04:20:05PM -0800, Frank Cusack wrote:
> > > In a CSR, how is it proven that the key resides on a smart card (and is
> > not
> > > exportable)? In my understanding, the CSR is signed by the private key
> > of
> > > the (to be) cert itself. Thus that signature only proves that the
> > > requester actually possesses the private half, not that the private key
> > > resides on a smart card.
> > >
> > > Looking at the cryptoflex command set, I don't see anything there that
> > > would add something to the CSR asserting that the key was generated
> > > on-card. Same for ISO 7816-8, but I could easily be missing something.
> >
> > You're probably missing the fact that noone stops the owner of a
> > software key to add the same information to the CSR.
> >
>
> Not if there's an APDU that adds that information as part of the operation,
> and the key used in that operation cannot be used except for CSR generation.
>
> For example, if I had some key/cert on the card (and I know it can only
> exist on the card -- this might happen before it is shipped to me or in
> bulk secure provisioning on site)
The problem is, that nobody can distinguish the public key of a smart
card from a software key.
That means, there must be a secret on the card that is known by the CA.
Therefore the CA operator needs prior access to the cards.
If the CA operator has prior access to the cards,
a simple solution could be to
extract the public key and probably store it in a hashed way in some
sort of database.
For every incoming CSR the CA searches for the public key hash in its
database. No additional APDU or secret required.
> that is not able to be used for anything
> externally. ie, you cannot encrypt,decrypt,sign or verify any external
> data with this key/cert. But when you ask for a CSR, there's actually a
> CSR APDU -- not a software generation of CSR then asking the card to sign
> the CSR. You pass the relevant attributes to be included in the CSR, and
> the card itself adds some signed data as a CSR attribute which the CA can
The question is: What shall the the signed data be ?
> verify. There is no way for the user to add that signed data to a software
> CSR because the key used to sign that data is not available to the user.
That is what i doubt.
Anything that can be signed by the card can be signed by a software key,
too.
Cheers
Christian
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel