前文已经提到一种身份认证产品名叫“动态密码锁”,今天我们将介绍另外一种广泛应用的身份认证产品:USB Key。
和单钥的动态密码锁不同的是,USB Key采用双钥(公钥)加密的认证模式,USB Key是一种USB接口的硬件设备,外形如下图所示。它内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用USB Key内置的公钥算法实现对用户身份的认证。由于用户私钥保存在密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性。
USB Key产品最早是由加密锁厂商提出来的,原先的USB加密锁主要用于防止软件破解和复制,保护软件不被盗版,而USB Key的目的不同,USB Key主要用于网络认证,锁内主要保存数字证书和用户私钥。
USB Key的硬件和PIN码构成了可以使用证书的两个必要因素。如果用户PIN码被泄漏,只要USB Key本身不被盗用即安全。黑客如果想要通过破解加密狗的方法破解USB Key,那么需要先偷到用户USB Key的物理硬件,没有哪个用户会愚蠢到将自己的Key拱手奉献给黑客。
USB Key的一个最重要的优点就是成本低廉。一些单片机芯片USB Key的成本可以低于10元,很利于大规模普及应用,不过单片机芯片USB Key虽然成本低廉,但是芯片容易被黑客硬件复制。而智能卡芯片的USB Key就不容易被硬件复制,不过带来的是较高的成本,一般智能卡芯片的USB Key的价格都要高于30元。
USB Key目前在网上银行应用十分广泛,大家看到一些银行的U盾、优KEY等都是这种产品,不过奇怪的是,这些产品的收费似乎要高于其实际价格。
USB Key的使用方法是,当登录网银系统的时候,在电脑上插入USB Key,然后输入PIN码,如果验证通过,则可以进行相关交易。这种加密方式使用了双钥加密,私钥安全地保存在Key中,在网络应用的环境下,可以更安全,弥补了动态密码锁单钥加密的一些缺陷。
然而可惜的是,USB Key虽然在一些地方优于动态密码技术,但是实际使用中却有一些动态密码所没有的安全性问题,这个安全问题主要在于客户端而不是服务器,由于PIN码是在用户电脑上输入的,因此黑客依然可以通过程序截获用户PIN码,如果用户不及时取走USB Key,那么黑客可以通过截获的PIN码来取得虚假认证,仍然存在安全隐患。而动态密码锁使用随机的一次性密码,不存在这样的问题。
解决方法有几种,一种是改造现有的USB Key,增加输入键,使其PIN码可以在USB Key上输入,这样就不会被电脑上的木马拦截。
还有一种更理想的安全模式,是将这两种加密方式结合在一起,USB Key的PIN码使用动态密码生成,这样两种加密锁结合在一起,服务器端和客户端的安全性就都得到了保障。黑客截取的PIN码是一次性的,而网银管理员无法获得USB Key的用户密码进行身份验证。这样的网银,其安全性就比较高了。
然而目前实施这种方案的问题也是明显的:成本。每个加密锁都需要几十元的成本,两个锁的总共成本就可能超过一百元,大规模使用的话,这个成本由银行出肯定不可能,用户自己也未必愿意出这样的成本,因此这种方案真正实施起来,还是不太现实的。
总而言之,对于当前中国网上银行系统,加强网银用户的身份认证管理,防止用户资料的泄露,是消除网上银行安全隐患的有效措施。如果没有完善的双向身份认证机制,那么这个网上银行的安全性就是没有任何保障的。当前世界上绝大部分银行的网上银行系统都是基于公开密钥体系(PKI)和数字证书建立起来的。
目前我所提到的动态密码锁和USB Key都是不错的安全产品,但是如果要基于PKI体系的话,使用USB Key更容易搭建遵循PKI标准的密钥管理平台,这也是USB Key应用更为广泛的原因之一。