基于ActiveX的USBKEY网络身份认证
章奕
北京邮电大学信息工程学院,北京(100876)
E-mail:zhangyibupt@gmail
摘要: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的使用替换传统的用户名和密码,保证系统的登录安全。
2.1USBKEY硬件特性
(1)双因子认证
每一个USBKEY都具有硬件PIN码保护,PIN码和硬件构成了USBKEY的两个必要因素,即所谓“双因子认证”。用户只有同时取得USBKEY和用户PIN码,才可以登录系统。即使用户的PIN码被泄漏,只
要用户持有USBKEY不被盗窃,合法用户的身份就不会被仿冒;如果用户的USBKEY遗失,由于无法知道用户PIN码,也无法仿冒合法用户的身份。USBKEY的PIN码为图2所示。
(2)带有安全存储空间
内部划分成数据存储区(1000字节)和密钥存储区(8个32字节密钥),将软件的一些重要信息(如序列号等)保存在多功能锁中的数据存储区中,或者将进行HMAC-MD5密钥写在多功能锁中的密钥存储区中,如图1所示。
(3)    加密算法
内置CPU 或智能卡芯片,可以实现PKI 体系中使用的数据摘要,数据加解密和签名的各种算法,加解密算法在USBKEY 内进行,保证用户密钥不会出现在计算机内存中,从而杜绝了用户密钥被黑客截取的可能性。支持RSA ,DES ,SSF33和3DES 算法。
(4)  便于携带,安全可靠
如拇指般大的USBKEY 非常方便随身携带,并且密钥和证书不可导出,KEY 的硬件不可复制,更显安全可靠。
密钥区 存储区
2.2 USBKEY 公钥密码体制
图1  USBKEY 内部结构      图2  USBKEY 的PIN 码保护体系  图3  密钥烧制入ROM
PKI ( public Key Infrastructure ) 公共密钥体系,即利用一对相互匹配的密钥进行加密解密。公钥密码体制和数字证书从密码学的角度上保证了USBKEY的安全性,在USBKEY初始化的时候,先将密码算法程序烧制在ROM中,如图3所示。然后通过产生公私密钥对的程序生成一对公私密钥,公钥密钥产生后,公钥可以导出到USBKEY外,而私钥则存储于密钥区,不允许外部访问。进行数字签名以及非
对称解密运算时,有私钥参与的密码运算只在芯片内部内完成,全过程中私钥可以不出USBKEY介质,以此来保证USBKEY为存储介质的数字证书在安全上无懈可击。
ID KEY
1    4A4F****
2    A3Fe****
3    E1Y1****
4    CcO1****
5 HRrl****
图4 私钥,ID的定义模式
2.3USBKEY身份认证系统
2.3.1基于冲击-响应的双因子认证方式
在网络上验证用户身份时,先由客户端向服务器发出一个验证请求。服务器接到此请求后生成随机数并通过网络传输给客户端(此为冲击)。客户端将收到的随机数提供给USBKEY,由USBKEY使用该随机数与存储在USBKEY中的密钥进行MD5-HMAC运算并得到一个结果作为认证证据传给服务器(此为响应)。与此同时,服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行MD5-HMAC运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。
密钥运算分别在USBKEY硬件和服务器中运行,不出现在客户端内存中,也不在网络上传输,由于MD5-HMAC算法是一个不可逆的算法,就是说知道密钥和运算用随机数就可以得到运算结果,而知道随机数和运算结果却无法计算出密钥。从而保护了密钥的安全,也就保护了用户身份的安全。
2.3.2基于数字证书的认证方式
随着PKI技术日趋成熟,许多应用中开始使用数字证书进行身份认证与数字加密。数字证书是由权威公正的第三方机构即CA中心签发的,以数字证书为核心的加密技术,可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性,从而保障网络应用的安全性。
3.基于ActiveX技术的冲击-响应双因子身份认证
3.1ActiveX技术
ActiveX是Microsoft提出的一组使用COM(Component Object Model,组件对象模型)使得软件组件在网络环境中进行交互的技术。在Internet环境中,典型的应用模式为,客户端的浏览器接收Web服务器提供的数据,然后按标准的HTML语言对数据进行解释并在浏
览器窗口中表现出来,HTML语言的表述能力限制了浏览器窗口与用户交互的能力。而ActiveX控件是一个自包含代码的组件,它有自己的永久状态,并且ActiveX控件与包容器之间通过COM接口进行通信,所以ActiveX控件具有普遍的适应性,更适合于浏览器与用户的交互。
ActiveX控件是多种技术的集成,包含COM和OLE的许多技术,图5 是ActiveX控件的内部结构:
ActiveX控件的包容器是一个表单或者对话框,也可以是复合文档的视窗口或文档对象。图6所示包容器的内部构造。由于ActiveX控件从复合文档的嵌入对象发展而来,因此ActiveX控件的包容器也从复合文档的包容器发展出来,但ActiveX控件包容器在OLE复合文档的基础上有所简化。
3.2ActiveX控件与INTERNET
当打开登录页面时,在HTML代码中,我们通过CLSID来指定ActiveX控件的类型,
图5  ActiveX控件的内部结构[2]
图6 包容器的内部结构[2]
同时希望浏览器自动到ActiveX控件并注册到客户机上。如图7所示。
图7 HTML描述ActiveX控件的方法
如上图,当浏览器解析上面的HTML代码时,它会自动的把<CODEBASE>指定的程序从远端的服务器下载到本地客户端。
因为ActiveX控件的程序代码要通过INTERNET传输,为了适应网络的传输要求,所以压缩技术传输显得尤其重要。同时从另一个方面来说,当ActiveX控件下载到本地时,需要调用一些DLL程序模块,用来在Window系统的注册表中注册该ActiveX控件。为此,我们通过CAB压缩方法把ActiveX控件和相关DLL模块包装到一个CAB文件中在INTERNET上传输。
8  IE文件的处理流程
3.3ActiveX控件与客户端
CAB文件包含了ActiveX控制注册和运行所需要的必要信息。通常一个CAB文件包含一个INF文件,用它来描述CAB文件的所有细节信息。一个USBKEY所特定的DLL文件,用它提供的API来调用USBKEY的所有功能。
图9  CAB文件结构
当浏览器把CAB 文件从服务器端下载到本地时,进行CAB 文件的解压并保存在WINDOWS\Downloaded Program File 文件夹下。然后,根据INF 文件提供的注册相关信息,调用MFC 的DLL 库函数DllRegisterServer 和DllUnregisterServer  API 进行注册表的注册。 如下图10
3.4 ActiveX 控件与身份认证
客户端: 登录页面内嵌
activex 控件JavaScript 语言通过查上述注册表的信息来调用ActiveX 控件所提供的expert 函数,间接的操作USBKEY 内的数据区。页面随机生成KEY 的ID (随机选择),然后对USBKEY 的内部数据(USBKE
Y 设备序列号+数据区数据)进行HMAC-MD5运算,接着将(KEY-ID+设备硬件序列号+数据区数据+HMAC-MD5的运算结果)通过HTTPS 传到服务器上进行验证。
服务器端:  根据收到的设备硬件序列号,KEY-ID ,运算结果,读取系统保存的相应KEY-ID 的KEY 数据,对{设备的硬件序列号+数据区数据}进行HMAC-MD5运算,如果得出的值和收到运算结果相同,则可认为该USBKEY 所存储的信息合法,允许该用户登录。
图10  ActiveX 控件(ocx 文件) 注册表结构