APP下载

基于USBKEY的OA系统身份认证方案

2014-07-16马潇潇

江苏高职教育 2014年2期
关键词:密钥客户端加密

骆 静,马潇潇

(南京工业职业技术学院 能源与电气工程学院,江苏 南京 210023)

随着办公自动化(Office Antomation,OA)系统使用量的增大,识别使用者的身份就被提升到更加重要的位置,它是确保OA系统安全的基础和关键。在实际应用中,许多网络信息系统都会要求使用者在使用系统之前,提供一些相关信息用以实现对使用者的身份认证。用户身份认证最常见的是静态口令,方便、简洁,但存在很多缺点,不能有效抵抗口令窃取、伪造主机攻击[1]、重放攻击[2]和字典攻击。

本文提出了在OA系统中使用一种基于USBKEY的身份认证技术[3],着重介绍这种技术的实现过程。

1 USBKEY简介

USBKey是一种USB接口的硬件设备,内置USB控制器、微处理器CPU、存储器和时钟[4]。

USB控制器负责识别PIN码(个人识别码),以及整个USBKey的驱动,其中PIN码用于保证用户的使用权,用户只有同时取得了USBKey和用户PIN码,才可以登录系统,因此,基于USBKey的身份认证实际构成了“PIN码+USBKey”的双因素认证。

存储器中存放着用户的认证信息,例如用户的私钥以及数字证书。USBKey硬件内部生成公私钥对,实现数字签名,私钥永不导出,利用USBKey内置的公钥算法实现对用户身份的认证。由于用户私钥保存在密码锁中,理论上使用任何方式都无法读取,因此保证了用户认证的安全性[5]。

时钟用于对连接状态进行监测。

微处理器CPU负责处理HASH函数等的计算和控制,可以实现加解密和签名的各种算法,加解密运算在USBKey内进行,保证了密钥不会出现在计算机内存中,从而杜绝了用户密钥被黑客截取的可能性。

在使用时,USBKey是通过USB接口和计算机连接,然后将认证信息发给认证方。

2 USBKEY的身份认证系统结构

本文设计的OA系统的身份认证使用USBKey,实现了统一身份认证管理。图1为身份认证方案的系统结构图,整个体系共分为三个层次。

第一层为服务层,通过存储在USBKey中的用户信息实现,为需要高安全等级的用户提供更为可靠的认证手段以及对存储本机的重要信息进行加密处理。用户将私钥的重要信息存储在USBKey中,使用该USBKey来表征其合法身份。

第二层为中间层,任意一个USBKey都是唯一的,它与用户的身份绑定,代表唯一的用户。用户使用USBKey中所包含的数字证书,通过认证网关与证书(CA)服务器进行通信。以实现用户身份的鉴别。这样,可以使非法用户无权访问网络,而合法用户只能查看相应权限的信息。

第三层为OA系统应用层,主要包括CA服务器和证书管理终端两个部分,这是整个系统实现的基础。CA服务器主要实现用户证书信息的生成、存储、备份等。证书管理终端实现用户信息的注册以及将用户证书信息写入USBKey中,提供给用户使用,并实现用户证书的更新、注销、恢复以及相关信息的维护等。

图1 身份认证系统结构图

3 USBKey的身份认证

USBKey运用协同的“非对称挑战响应”机制,于服务器端和客户端嵌入USBKey的接口规范功能,动态生成随机数及施行签名验证,再利用USBKey的软件和硬件配合操作,实现自动的“非对称挑战响应”的认证方案,从而形成安全认证机制,挫败一系列的攻击行为。

3.1 USBKey系统层次

USBKey在PC上工作时,其应用模式如表1所示可以分为五层,其中:

1.USBKey终端程序。

既是一个信息安防应用的操作程序,也是USBKey硬件的设备驱动程序和功能驱动程序。

2.编程接口(API)库。

以动态链接库的形式,为应用程序提供应用编程接口。同一种编码版本的库文件既适用于ANSI(多字节)编码,也适用于UNICODE(宽字符)编码。

3.功能测试程序。

对USBKey的API接口函数,直观地进行测试验证。

表1 USBKey在PC机上的应用模式

3.2 USBKEY基于冲击响应模式的身份认证方案

该身份认证方案的设计思想如下:

一方面,于目标应用系统的服务器端,嵌入USBKEY的接口规范功能。预先在USBKey和服务器中存储一个证明用户身份的密钥,当需要在网络上验证用户身份时,先由客户端向服务器发出一个验证请求。服务器接到此请求后生成一个随机数回传给客户端的USBKey,以供加密签名,此为“挑战”;USBKey使用该随机数与存储在USBKey中的密钥进行单向散列(HASH)运算得到一个字符串长256的运算结果作为认证证据传送给服务器,此为“响应”。另一方面,目标应用系统的服务器端,则调用所嵌入的USBKEY接口规范功能。服务器使用该随机数与存储在服务器数据库中的该客户密钥进行单向散列运算,由于单向散列运算具有不可逆性,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。具体的认证方案流程如图2所示。

图2 “非对称挑战响应”认证执行图

4.3 基于USBKey身份认证模块的函数实现

基于USBKey身份认证模块的函数实现分三部分。首先是初始化函数,如Initialize、CheckStatus、SetEnvironment、GetLastErrorDescription、Driver-Window、RegWindowMessage和 UnregWindowMessage等函数,分别完成对USBKey的设备初始化、状态查询和环境设置等操作;第二部分为密码和加密密钥的操作类函数,如 EncryptKey、SetPIN、CheckPIN和SetSysPassword等;第三部分是数据的输入输出操作函数,如 EncryptData、EncryptText、DecryptData、DecryptText、EncryptStreamFile 和 DecryptStreamFile等。

由于文章篇幅所限,此处对关键函数Check-PIN的调用进行函数的实现与分析,函数代码如下所示:

此函数功能对客户端发送给服务器端的个人识别号(PIN)进行检验,参数dwPIN为外部输入的PIN值,取值范围0到0xFFFFFFFF(4字节位全1),返回值1表示正确,小于0表示失败,-1表示USBKey未接入,-2表示USBKey无效,-3表示USBKey驱动程序未启动,-5表示存取出错,-6表示PIN错误。

在OA系统的检验界面,用户可以输入PIN值提交服务器系统检验,调用此函数接口以决定是否授予使用权。从函数注释中可以看出个人识别号的检验过程是调用驱动函数MK_CheckPIN传入的,有硬件进行直接检验,已完成关键的身份验证功能。

4 安全性分析

基于USBKey身份认证技术为办公自动化系统的安全登录提供了良好的解决方法。其优点是:

一方面,从研发角度,提供了一整套USBKey接口API,为OA系统以及其他应用系统提供了应用编程接口,并可以直观地进行功能测试验证;

另一方面,从安全角度,USBKey具有物理安全性,首先由于加密签名过程是在USBKEY硬件内部封闭进行,USBKEY硬件的固有私密钥足够长,又不可读取、不会泄露,而只输出加密签名后的结果数据,因此,木马程序既无从盗取私密钥,又无法从加密签名数据反向推演出私密钥;其次,没有该USBKey,则不能访问系统资源,从而使得OA系统在访问控制方面有了双重的安全保障。

5 结束语

OA系统的安全性问题是目前信息技术领域研究的一个热门问题,这个问题解决的成功与否,直接关系到各种应用服务能否顺利开展,关系到计算机网络系统能否安全、可靠的运行。本文在对目前OA系统进行身份认证常见技术进行了介绍和分析后,提出了一种基于USBKey的身份认证技术,并对该技术进行了较为详尽的描述。

[1] 王崇霞,朱艳琴.一种动态口令身份认证协议的设计与研究[J].计算机工程与应用,2010,46(18):71-73.

[2] 曹喆.基于USBKEY的身份认证机制的研究与实现[D].上海:东华大学计算机科学与技术学院,2010.

[3] 徐远航.USB Key身份认证产品的产生与发展[J].计算机安全,2004(8):44-45.

[4] 徐宁,赵彬.基于 USBKEY的 BIOS系统安全解决方案[J].计算机工程与应用,2006,36(8):28-31.

[5] MAX密码金凯用户使用手册[J].深圳金澜汉源科技有限公司,2006.

猜你喜欢

密钥客户端加密
密码系统中密钥的状态与保护*
一种基于熵的混沌加密小波变换水印算法
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
认证加密的研究进展
基于ECC加密的电子商务系统
基于格的公钥加密与证书基加密