PKCS#11的应用--USBKEY

ssl是一个安全协议,为互联网应用提供了安全,数字证书被证明能够带来比单纯的密码或者指纹,瞳孔认证之类的方式更安全的保护,可是如此安全的机制需要一个安全的基层平台,事实证明计算机并不是一个足够安全的平台,计算机好比公共汽车,而操作系统以及C库的调用规范或者安全级别的设计被视为道德,众做周知道德不是强制的,它只在遵守它的实体中间起作用,比如堆栈的使用提供了强有力的安全机制和性能因素,可是还可以用于溢出,即使有弥补的方法也不能彻底根治,实为道高一筹魔高一丈,本质上说计算机是一个不安全的模型,公用内存就是黑客和白客以及开发人员应用人士的公用空间。
    既然计算机软件不能提供完全的安全,硬件能吗?按照硬件和软件的等价性,硬件也不能,那么怎样才能提供足够的安全性呢?答案就是人的参与,以保护私钥为例,计算机的公用物理内存或者磁盘可能泄露私钥,可是如果人不喝醉并且没有说梦话梦游的习惯,记到人心中的私钥更安全,可是即便如此还是有泄露的可能,最安全的办法类似古代或者当代美国的兵符,皇帝和将军各拿一半,对在一起方可调兵,缺一不可(相比之下,虽说纳粹和XX是党直接指挥军队,看似更合理,实际上更不安全,存在单点危机),信息安全也应该制定类似的机制,于是方法便是计算机以及硬件线路提供算法,而人提供数据,这个数据只作为计算机的输入进行计算,人在签发数据后是不能再看懂的(人是不可靠的),现在关键就是如何实现了,数据的载体是什么,这个载体必须保证数据不能被更改。写到纸上是一个办法,但是如何输入到计算机,如何保证不被修改?因此用硬件来实现是一种必然的解决方案,直接用硬件线路实现,用计算机接口协议实现和硬件的连接。载体有了,保证了数据的不可读,数据的不可更改,算法也有了,就是标准的算法,剩下的就是算法和数据的接口了,数据只能让算法看懂,并且按照特定规范通信...
     这就是PKCS#11接口,这就是PKCS#11接口...我们网上支付的时候使用的usbkey使用的就是这个接口,私钥在usb的硬件线路中,外部无法导出,只能导出公钥和证书,生成私钥和颁发证书的时候,硬件就被编程了,一旦再次被编程,硬件自动短路作废。在加密解密,签名验证的时候,外部只能操作一个句柄,而不能操作真正的数据,数据的操作过程完全在key硬件中完成,只是将结果导出到外部...

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页