介绍
USB Key的中文大名是智能密码钥匙,它是一种USB接口的硬件设备,内置芯片,有一定的存储空间,可以存储证书和私钥。凡是使用私钥进行的运算,都是在USB Key中完成。USB Key可随身携带,在需要使用时才接入电脑,进一步降低了私钥外泄的风险。再加上通用性强,价格亲民(硬件价格一般在几十元左右),因此是使用最为广泛的密码安全工具之一。USB Key最常见的应用场景就是网银了,前几年几大银行采购的USB Key数量是以亿计的,有设备厂商就是因此而上市。
用到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,做不到完全透明。
参考资料
包括:林林总总的密码安全设备、国密SKF库调用开发指南、
针对支持国密算法USB KEY设备的应用,国家颁布一个行业标准《智能密码钥匙应用接口规范》(GM/T0016-2012),市面上销售的国密算法的USB KEY设备也都(其实也是必须)支持这个接口规范。因此,只要根据这个规范开发的应用程序,就可以兼容使用不同厂家及品牌的USB KEY产品。由于此规范中函数名称都以SKF开头,所以我们一般把按照此规范提供的设备开发接口库叫做SKF库或SKF接口。
在调用任何接口之前,都需要先加载所使用USBKEY设备的SKF库文件,这个文件是由KEY厂商提供,
包括概要、飞天Ukey介绍、证书导入、证书生产、证书格式转换【Java版】