使用PKCS11使用智能卡生成TLS主密钥

时间:2012-05-31 08:15:30

标签: ssl smartcard pkcs#11

我应该使用智能卡生成特定的密钥。

我检查了例如P11TlsMasterSecretGenerator类,但它需要智能卡生成主密钥的CKM_TLS_MASTER_KEY_DERIVE_DH机制。

但是我的智能卡不支持这种机制。

我的问题是,是否有可能为此目的使用其他机制,例如CKM_ECDH1_DERIVE。

实际上我关注的是CKM_TLS_MASTER_KEY_DERIVE_DH机制内部提供的内容多于CKM_ECDH1_DERIVE。

如果有人可以将文件或其他内容链接到我,我真的很感激。

感谢。

1 个答案:

答案 0 :(得分:0)

RFC5246定义了这样的masterkey生成:

master_secret = PRF(pre_master_secret," master secret",ClientHello.random + ServerHello.random)[0..47];

其中:

PRF(秘密,标签,种子)= P_hash(秘密,标签+种子);

P_hash(秘密,种子)= HMAC_hash(秘密,A(1)+种子)+ HMAC_hash(秘密,A(2)+种子)+ HMAC_hash(秘密,A(3)+种子)+ ... < / p>

A(0)=种子 A(i)= HMAC_hash(秘密,A(i-1));

因此可以通过在智能卡上使用HMAC来实现此算法。但它并没有解决我的问题,我希望master_secret在卡中生成而不能从smardcard中提取出来。 HMAC函数总是按预期输出一个字节数组。