U盾的原理

来源:互联网 发布:javascript生成随机数 编辑:程序博客网 时间:2024/04/30 12:52
你的数字证书有一对,一份在U盾里的私钥,一份在银行的公钥(其实两份银行都有)

U盾的原理很类似于双向认证的TLS(SSL)或者其它用到RSA的双向证书验证手段,以下步骤可能和U盾实际执行的有所区别,但本质相同:
--银行先给你一个"冲击",它包含了随机数,以及该随机数HASH,它们都由公钥加密,这样就可以保证只有你能解密这个"冲击"

--你计算该随机数的HASH,并和用私钥解出的HASH,两者相同后,便可确认银行的身份
--接下来,以一个只有你和银行知道的算法,利这个随机数和一些其它信息,生成"响应"和相应的HASH,再用私钥加密后发回银行。(此时银行也以相同的算法计算该"响应")
--银行用公钥解密,并验证HASH正确,接下来银行比较两个"相应"是否相同,相同的话客户的身份也确认了

至于私钥的保密性由U盾来完成。U盾的控制芯片被设计为只能写入证书,不能读取证书,并且所有利用证书进行的运算都在U盾中进行。所以,只能从U盾读出运算结果。

在IE中确实可以把U盾储存的公钥导入windows证书库
接下来在certmgr.msc里,可以找到这个证书,并导出
,但是不可以勾上"导出私钥"的选项,提示找不到私钥
也就是说:U盾中的公钥可以导出,私钥不可以导出

0 0