我应该使用智能卡生成特定的密钥。
我检查了例如P11TlsMasterSecretGenerator类,但它需要智能卡生成主密钥的CKM_TLS_MASTER_KEY_DERIVE_DH机制。
但是我的智能卡不支持这种机制。
我的问题是,是否有可能为此目的使用其他机制,例如CKM_ECDH1_DERIVE。
实际上我关注的是CKM_TLS_MASTER_KEY_DERIVE_DH机制内部提供的内容多于CKM_ECDH1_DERIVE。
如果有人可以将文件或其他内容链接到我,我真的很感激。
感谢。
答案 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函数总是按预期输出一个字节数组。