- 1 -
基于 ActiveX的 USBKEY网络身份认证
摘 要: USBKEY是以 USB插卡的形式安装在用户计算机外 USB口上,提供数据加/解密、
数据完整性、数字签名、访问控制等功能。本文使用 ActiveX Control 技术,读取和校验
USBKEY加密数据区数据,进行网络身份认证和网络设备数据的加/解密。
关键词:USBKEY,ActiveX,CAB
1. 引言
随着互联网和电子商务的发展,USBKEY作为网络用户身份识别和数据保护的“电子钥
匙”,正在被越来越多的用户所认识和使用。USBKEY是一种智能存储设备,它是基于 USB
接口的身份认证产品,内有 CPU 芯片,可用于存放加密数据,与钥匙相似,也被称为智能
钥匙。内含安全文件系统,可以用来存储密钥和其他机密信息,能够用有效的、简化的配置,
提供给商业、电子供应商和最终用户以进行安全的、便携的用户鉴定。它支持热拔插,轻巧
便于携带,具有内置 PIN 码保护,多次误操作锁定,带有软件控制状态指示灯,方便监控
等功能。正是基于 USB的热拔插等智能卡和读卡器的特点,同时提供众多的 API接口,为
二次开发提供了便利,逐渐地被各个行业所采用。
2. 关于 USBKEY
USBKEY是结合了现代密码学技术,智能卡技术和 USB技术的新一代身份认证产品,
是一种加密数据存储设备。对于受保护的软件,通过 USBKEY,可以保护该软件不被非法
复制和非授权访问或使用。当使用 USBKEY加密保护软件后,启动锁加密保护的程序,此
时若 USBKEY不在或对某个应用模块的访问已超出预先设定的次数,程序会发出错误信息,
从而达到加密保护软件的目的。
USBKEY 还可以应用在各种安全系统身份认证领域,包括网站系统,OA 办公系统,
信息查询系统等。通过 USBKEY的使用替换传统的用户名和密码,保证系统的登录安全。
USBKEY硬件特性
(1) 双因子认证
每一个USBKEY都具有硬件PIN码保护,PIN码和硬件构成了USBKEY的两个必要因素,
即所谓“双因子认证”。用户只有同时取得USBKEY和用户PIN码,才可以登录系统。即使用
户的PIN码被泄漏,只要用户持有USBKEY不被盗窃,合法用户的身份就不会被仿冒;如果
用户的USBKEY遗失,由于无法知道用户PIN码,也无法仿冒合法用户的身份。USBKEY的
PIN码为图2所示。
(2) 带有安全存储空间
内部划分成数据存储区(1000字节)和密钥存储区(8个32字节密钥),将软件的一些
重要信息 (如序列号等)保存在多功能锁中的数据存储区中,或者将进行HMAC-MD5密钥写
在多功能锁中的密钥存储区中,如图1所示。
- 2 -
(3) 加密算法
内置CPU或智能卡芯片,可以实现PKI体系中使用的数据摘要,数据加解密和签名的各
种算法,加解密算法在USBKEY内进行,保证用户密钥不会出现在计算机内存中,从而杜绝
了用户密钥被黑客截取的可能性。支持RSA,DES,SSF33和3DES算法。
(4) 便于携带,安全可靠
如拇指般大的USBKEY非常方便随身携带,并且密钥和证书不可导出,KEY的硬件不可
复制,更显安全可靠。
密钥区 存储区
USBKEY公钥密码体制
查 找 U S B K E Y
打 开 U S B K E Y
验 证 U S E R P I N
验 证 S O P I N
写 入 K e y
检 验 写 入 的 K e y是 否
正 确
Y e s
N O
有 错
失 败
失 败
失 败
失 败
开 始
结 束清 空 数 据 区
图 1 USBKEY内部结构
图 2 USBKEY的 PIN码保护体系
图 3 密钥烧制入 ROM
- 3 -
PKI ( public Key Infrastructure ) 公共密钥体系,即利用一对相互匹配的密钥进行加密解
密。公钥密码体制和数字证书从密码学的角度上保证了 USBKEY的安全性,在 USBKEY初
始化的时候,先将密码算法程序烧制在 ROM中,如图 3所示。然后通过产生公私密钥对的
程序生成一对公私密钥,公钥密钥产生后,公钥可以导出到 USBKEY外,而私钥则存储于
密钥区,不允许外部访问。进行数字签名以及非对称解密运算时,有私钥参与的密码运算只
在芯片内部内完成,全过程中私钥可以不出 USBKEY 介质,以此来保证 USBKEY 为存储介
质的数字证书在安全上无懈可击。
ID KEY
1 4A4F****
2 A3Fe****
3 E1Y1****
4 CcO1****
5 HRrl****
USBKEY身份认证系统
基于冲击-响应的双因子认证方式
在网络上验证用户身份时,先由客户端向服务器发出一个验证请求。服务器接到此请求
后生成随机数并通过网络传输给客户端(此为冲击)。客户端将收到的随机数提供给
USBKEY,由 USBKEY使用该随机数与存储在 USBKEY中的密钥进行MD5-HMAC运算并
得到一个结果作为认证证据传给服务器(此为响应)。与此同时,服务器也使用该随机数与
存储在服务器数据库中的该客户密钥进行MD5-HMAC运算,如果服务器的运算结果与客户
端传回的响应结果相同,则认为客户端是一个合法用户。
密钥运算分别在 USBKEY硬件和服务器中运行,不出现在客户端内存中,也不在网络
上传输,由于MD5-HMAC算法是一个不可逆的算法,就是说知道密钥和运算用随机数就可
以得到运算结果,而知道随机数和运算结果却无法计算出密钥。从而保护了密钥的安全,也
就保护了用户身份的安全。
基于数字证书的认证方式
随着 PKI 技术日趋成熟,许多应用中开始使用数字证书进行身份认证与数字加密。数
字证书是由权威公正的第三方机构即 CA中心签发的,以数字证书为核心的加密技术,可以
对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、
完整性,以及交易实体身份的真实性,签名信息的不可否认性,从而保障网络应用的安全性。
3. 基于 ActiveX技术的冲击-响应双因子身份认证
ActiveX技术
ActiveX是Microsoft提出的一组使用 COM(Component Object Model,组件对象模型)
使得软件组件在网络环境中进行交互的技术。在 Internet环境中,典型的应用模式为,客户
端的浏览器接收Web服务器提供的数据,然后按标准的 HTML语言对数据进行解释并在浏
图 4 私钥,ID的定义模式
- 4 -
览器窗口中表现出来,HTML 语言的表述能力限制了浏览器窗口与用户交互的能力。而
ActiveX控件是一个自包含代码的组件,它有自己的永久状态,并且 ActiveX控件与包容器
之间通过 COM接口进行通信,所以 ActiveX控件具有普遍的适应性,更适合于浏览器与用
户的交互。
ActiveX控件是多种技术的集成,包含 COM和 OLE的许多技术,图 5 是 ActiveX控件
的内部结构:
ActiveX控件的包容器是一个表单或者对话框,也可以是复合文档的视窗口或文档对象。
图 6 所示包容器的内部构造。由于 ActiveX 控件从复合文档的嵌入对象发展而来,因此
ActiveX控件的包容器也从复合文档的包容器发展出来,但 ActiveX控件包容器在 OLE复合
文档的基础上有所简化。
ActiveX控件与 INTERNET
当打开登录页面时,在 HTML代码中,我们通过 CLSID来指定 ActiveX控件的类型,
图 5 ActiveX控件的内部结构[2]
图 6 包容器的内部结构[2]
- 5 -
同时希望浏览器自动找到 ActiveX控件并注册到客户机上。如图 7所示。
如上图,当浏览器解析上面的 HTML代码时,它会自动的把<CODEBASE>指定的程序
从远端的服务器下载到本地客户端。
因为 ActiveX 控件的程序代码要通过 INTERNET 传输,为了适应网络的传输要求,所
以压缩技术传输显得尤其重要。同时从另一个方面来说,当 ActiveX控件下载到本地时,需
要调用一些 DLL 程序模块,用来在 Window 系统的注册表中注册该 ActiveX 控件。为此,
我们通过 CAB 压缩方法把 ActiveX 控件和相关 DLL 模块包装到一个 CAB 文件中在
INTERNET上传输。
ActiveX控件与客户端
CAB文件包含了 ActiveX控制注册和运行所需要的必要信息。通常一个 CAB文件包含
一个 INF文件,用它来描述 CAB文件的所有细节信息。一个 USBKEY所特定的 DLL文件,
用它提供的 API来调用 USBKEY的所有功能。
图 9 CAB文件结构
图 7 HTML描述 ActiveX控件的方法
图 8 IE对 CAB文件的处理流程
- 6 -
当浏览器把 CAB 文件从服务器端下载到本地时,进行 CAB 文件的解压并保存在
WINDOWS\Downloaded Program File 文件夹下。然后,根据 INF文件提供的注册相关信息,
调用MFC的 DLL库函数 DllRegisterServer 和 DllUnregisterServer API进行注册表的注册。
如下图 10
ActiveX控件与身份认证
客户端: 登录页面内嵌 JavaScript 语言通过查找上述注册表的信息来调用 ActiveX 控
件所提供的 expert函数,间接的操作 USBKEY内的数据区。页面随机生成 KEY的 ID(随
机选择),然后对 USBKEY 的内部数据(USBKEY 设备序列号+数据区数据)进行
HMAC-MD5运算,接着将(KEY-ID+设备硬件序列号+数据区数据+HMAC-MD5的运算结
果)通过 HTTPS传到服务器上进行验证。
服务器端: 根据收到的设备硬件序列号,KEY-ID,运算结果,读取系统保存的相应
KEY-ID的 KEY数据,对{设备的硬件序列号+数据区数据}进行 HMAC-MD5运算,如果得
出的值和收到运算结果相同,则可认为该 USBKEY所存储的信息合法,允许该用户登录。
查找多功能锁
FindToken
打开多功能锁
OpenToken
验证USER PIN
Verify
验证SO PIN
Verify
失败
失败
失败
失败
开始
获得硬件序列号
获得数据区内的数据
验证失败
硬件序列号+数据 通过
硬件计算HMAC-MD5
的digest
从数据区最后5位得出登
录次数+1,然后再写入
数据区最后5位
再从数据区内把登录次
数读出来
失败
失败
失败
失败
KeyID+硬件序号+数据
+digest+登录次数
取得客户端传来的数据
KeyID 硬件序号+数据 digest 登录次数
拆 分
根据KeyID,进行
MD5计算得到摘要
检验摘要的正确性
提供服务页面
拒绝提供服务页面
YES
NO
客户端 服务器端
图 10 ActiveX控件(ocx文件) 注册表结构
图 11 USBKEY身份认证与登录流程
- 7 -
4. 结论
本文以 ActiveX技术来实现 USBKEY身份认证登录。使用 USBKEY使其存储的用户
信息和相关信息不易泄漏和遗忘。在网络通信时验证通信双方的身份,使用 HMAC-MD5,
密钥技术和数字签名相结合,从而在传输身份认证信息和识别信息时,避免信息外泄和抵
抗第三方的攻击。
参考文献
[1] Dale Rogerson .《COM技术内幕》[M]. 杨秀章,江英 ,北京:清华大学出版社,
[2] 潘爱民 .《COM原理与应用》[M]. 北京:清华大学出版社,
[3] 张利 , 马馥婷 , 张立勇 , 等. 基于 ActiveX的Web组态软件及其浏览器的研究[J] . 仪器仪表学报,
(10),TP393
Network authentication for ActiveX-based USBKEY
Zhang Yi
College of Information Engineering,Beijing University of Posts and Telecommunications,Beijing
(100876)
Abstract
USBKEY is in the form of USB card installed in the user’s computer authentication, provided the
functions of data/decryption, and data integrity, digital signatures, access control . In this paper, using
ActiveX Control technology, read and check data which are stored in USBKEY encryption-data zone,
implement network authentication and encrypt/decrypt network-equipment data.
Keywords:USBKEY,ActiveX,CAB