林林总总的密码安全设备(一)

根据“私钥永远不出KEY”的定律,在实际密码应用中基本上都是使用硬件设备作为私钥证书的载体。今天介绍一下主流的几种安全设备和应用结合模式。

USB Key
USB Key的中文大名是智能密码钥匙,它是一种USB接口的硬件设备,内置芯片,有一定的存储空间,可以存储证书和私钥。凡是使用私钥进行的运算,都是在USB Key中完成。USB Key可随身携带,在需要使用时才接入电脑,进一步降低了私钥外泄的风险。再加上通用性强,价格亲民(硬件价格一般在几十元左右),因此是使用最为广泛的密码安全工具之一。USB Key最常见的应用场景就是网银了,前几年几大银行采购的USB Key数量是以亿计的,有设备厂商就是因此而上市。

虽然从外观上看,USB Key和U盘没有什么区别。但其实两者有本质的不同。从技术上讲,你可以把USB Key看成一种小型的专用的计算机,它有自己的CPU、存储和操作系统。USB Key的CPU一般相当于计算机上的8位CPU,存储在64K-256K左右,操作系统就是COS(Chip Operating System芯片操作系统),硬件内置算法。USB Key的存储主要用来存放证书和私钥,也可以存放一些重要的用户数据。有些USB Key产品还采用FLASH存储芯片(既然经常被人当作U盘,那我就向U盘看齐),存储空间可以做到几个G。不过出于安全考虑,证书和私钥一般不会放在FLASH存储空间,另外,FLASH存储的发热会影响CPU芯片的运算。所以这种产品没有成为市场上的主流。

用到USB Key的地方主要是数字签名和私钥解密。在需要数字签名时,业务系统将明文送到USB Key内部,由USB Key中的私钥对明文的摘要值进行加密;在需要解密时,业务系统将密文送到USB Key内部,由USB Key中的私钥对密文进行解密。由于USB Key的私钥还有口令保护,所以在界面上会弹出对话框,要求用户输入口令。用户输入正确口令后,USB Key的硬件使用私钥完成运算,并将结果返回给业务系统。流程如下图。
在这里插入图片描述
在这里插入图片描述
上述流程看起来没什么问题,事实上USB Key也一直这样用着。但就像前面说的,密码需要正确使用以及完善的体系才能发挥的安全作用。而在上面的流程里,USB Key内部没有问题,但业务系统和USB Key的交互过程是有漏洞存在的。以数字签名为例,攻击者首先可以篡改业务系统向USB Key传递的明文,造成被USB Key实际签名的数据和用户认为被签名的数据不一致。比如在网银系统里,用户在页面上选择转账1000元,而攻击者将金额篡改成10000元再发给USB Key签名。网银系统得到签名结果并验证通过后,会按照10000元进行转账。其次,由于签名时用户是在计算机上的业务系统中输入口令,因此存在口令被截获的风险,过程请见下图。在这里插入图片描述
针对第一个漏洞,可以在USB Key设备上增加一块显示屏,显示被签名的明文,用户在签名前再确认。比如在网银系统里,用户就可以确认USB Key收到的转账金额和页面上选择的转账金额是否一致。针对输入口令的被截获的漏洞,可以在USB Key上安装物理按键,实现口令在设备上的直接输入,而不再经过计算机。改造后流程如下。在这里插入图片描述
事实上,上述USB Key的漏洞最早就是在网银应用中被发现的。后来各大银行纷纷推出的二代、三代网银设备,就是对原来的USB Key的改造升级。大家有兴趣可以对比一下自己使用的网银USB Key,看看有什么变化。而在非网银领域,出于成本考虑,基本还是使用普通的USB Key设备。

从开发的角度讲,如果USB Key存储的是RSA证书,那应用系统可基于CryptoAPI/CSP体系实现设备完全透明,也就是说应用系统不需要调用USB Key的任何接口,甚至不需要知道有没有USB Key,只需通过标准的CryptoAPI接口,就可以使用Key中的私钥和证书,这一点在前面已经介绍过。如果应用系统使用的是装有国密算法证书的USB Key,则无法使用CryptoAPI/CSP体系,而需要调用标准的国密库接口。不过现在支持国密算法的USB Key都支持标准的国密库接口,也就是说应用系统只要开发一次,也可以使用多种国密算法USB Key。当然,由于Windows的CSP体系不支持国密算法,应用系统还必须指明要使用的是哪一种或几种USB Key,做不到完全透明。

另外,如果想使用USB Key存取重要的业务数据,情况就反过来了:对于支持国密算法证书的USB Key,国密库接口里包括读写数据的标准接口,对接一次即可;但如果是使用RSA算法证书的USB Key,由于CryptoAPI/CSP体系不包括数据读写,应用系统只能调用设备的原生接口,而且由于接口不同,每种设备都要对接开发一次。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45303938

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值