2011/4/16 Martin Paljak <mar...@martinpaljak.net>

> Hello,
> On Apr 14, 2011, at 17:43 , Felipe Blauth wrote:
> > 2011/4/14 Martin Paljak <mar...@martinpaljak.net>
> > Hello,
> > On Apr 14, 2011, at 02:21 , Felipe Blauth wrote:
> > >  I just wanted to make a simple protocol to import a private key to a
> card in a secure way (the aplication runs in a secure container):
> > > I was thinking about 2 ways:
> > >
> > > 1) The card generates a key pair
> > > 2) The card exports the public key generated in 1 to the aplication( I
> think this can be done with C_GetAttributeValue and openssl)
> > > 3) The aplication generates another key pair and wraps it's private
> with the public  it got from the card (this part I don't know if it is
> possible).
> > > 4) The card unwraps, with private key generated in 1,  and obtain the
> private key generated by the aplication.
> >
> > What exactly would be the point of this? If your application would be
> written with OpenSSL, you'd be generating a plaintext key in a normal host
> application (I assume). If you had a HSM or equivalent for central key
> generation it would be a different story.
> >
> > You guessed the environment. I have an HSM as a central key generation
> and it uses OpenSC cards to authentic its users. The HSM is currently beeing
> developed, it is a project of the University I study. The HSM does not
> implement PKCS#11 interface, it is all OpenSSL, and that's because I've
> asked that. Since the key has to be generated in the HSM, I was just trying
> to make it goes from the HSM to the card in a secure way, because the
> physical protection of the HSM does not cover the Smart Card reader wire
> (which is just a Gemplus GemPC Twin ccid reader).
>
> You'll need card support either way. Maybe secure messaging is more
> available than other options.
>


>
> How will your interfere with your HSM if it does not provide an API?
>

It is an apliance HSM and it has  an OpenSSL engine. It runs a freeBSD
inside and the comunication is done via tcp and https.

Next is a question out of OpenSC scope, but if someone could help I would be
very thankful...

Here it goes: I managed to negociate a DES key between the aplication and
the card using vendor module (libaetpkss.so, wich i can download for free
here <http://icp.caixa.gov.br/_downloads/safesign_linux.zip>) and wrapping.
Now I want to unwrap
the key that I "wraped" using OpenSSL.  What I did to "wrap" was first
encode the private key in PKCS#8 format and then encrypt it with the DES key
I've already negotiated
(that is what is said in PKCS#11 standard to wrap private keys).

But, whenever I try to call C_unwrap, I allways get CKR_TEMPLATE_INCOMPLETE.
Just don't know if my template is really wrong or if my card does not
support that. Piece of the code follows. I can send all my code if someone
is interested too.

    CK_BYTE iv[] = {0xD2, 0xD3, 0x9A, 0xDB, 0x49, 0x90, 0xE9, 0x61};
    CK_MECHANISM mechanism_unwrapping = {CKM_DES_CBC_PAD, iv, sizeof(iv)};

    CK_OBJECT_HANDLE newPrivateKey;
    CK_BYTE subject_private[] = "wraped_private_key";
    CK_BYTE wraped_id[] = {0xa2};

    CK_OBJECT_CLASS wraped_key_class = CKO_PRIVATE_KEY;
    CK_KEY_TYPE wraped_key_type = CKK_RSA;


    CK_ATTRIBUTE privateKeyTemplate[] = {
            {CKA_CLASS, &wraped_key_class, sizeof(wraped_key_class)},
            {CKA_KEY_TYPE, &wraped_key_type, sizeof(wraped_key_type)},
            {CKA_SIGN, &true, sizeof(true)},
            {CKA_UNWRAP, &true, sizeof(true)},
            {CKA_ID, wraped_id, sizeof(wraped_id)},
            {CKA_LABEL, subject_private, strlen((char *)subject_private)},
            {CKA_TOKEN, &true, sizeof(true)},
            {CKA_DECRYPT, &true, sizeof(true)},
            {CKA_VERIFY, &true, sizeof(true)},
            {CKA_SIGN, &true, sizeof(true)}

    };

C_UnwrapKey(session_handler, &mechanism_unwrapping, h_des_key,
ptr_wraped_key,  size_wraped_key, privateKeyTemplate, 10, &newPrivateKey);
.
.


The iv (initialization vector) I used there is the same i used to encrypt
outside.

Thank you


>
> Martin
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to