首 页 本刊概况 出 版 人 发行统计 在线订阅 欢迎投稿 市场分析 1 组织交流 1 关于我们
 
1
   通信短波
1
   新品之窗
1
   优秀论文
1
   通信趋势
1
   特别企划
1
   运营商动态
1
   技术前沿
1
   市场聚焦
1
   通信视点
1
   信息化论坛
1
当前位置:首页 > 优秀论文
基于USBKey的网络身份认证与管理技术研究
作者:刘海燕 蔡红柳 金龙 装甲兵工程学院信息工程系 北京
来源:不详
更新时间:2009/9/19 19:29:00
正文:

Study on Identity Authentication and Management
Technique Based On USB Key
Liu Hai-yan, Cai Hong-liu, Jin Long
(Department of Information Engineering, Armored Force Engineering Institute, Beijing, 100072)
Abstract: Digital Certificate is an effective authentication method in network applications, and USB Key is a device to store secret data, so if they are combined together, they will provide a more secure authentication method. This paper first analyzes the theory of digital certificate and the technical features of USB Key, then designs an identity register and management system, Which can make certificates for users and store the certificate into an USB key. This system can used as an subsystem of an network application system.
Keywords:Digital Certificate, Identity authentication, USB Key

身份认证是指证实被认证对象是否属实和是否有效的一个过程。身份认证在网络应用中的地位极其重要,是其他许多安全措施的基础。一旦身份认证系统被攻破,那么系统的所有安全措施将形同虚设。
在网络系统中,目前应用较多的是基于公开密钥密码算法的符合X.509规范的数字证书身份认证协议。X.509证书是由可信的第三方权威机构——CA颁发的符合X.509规范的公钥证书。证书中包含了用户的身份信息、公钥信息、颁发证书的CA的信息以及CA对证书的签名信息。CA的签名确保了证书的可信性,而私钥则确定了用户的身份。
USBKey是一种基于USB接口的安全设备,他将口令或者证书等秘密数据保存在内部的存储器上,并提供一定的加密手段。本文分析了USBKey的技术特点,在Openssl函数库的基础上研究设计了一个基于USBKey的网络身份注册与管理系统,通过USBKey的使用,提供软硬件一体化的网络身份注册管理与认证系统。
1 X.509数字证书
X.509标准是国际标准化组织和CCITT/ITU-T制定的X.500系列标准中的一部分,它定义了一个通用的证书格式。基于X.509证书的认证技术适用于开放式网络环境下的身份认证,其核心是公开密钥密码体制。每个用户拥有一个公钥和私钥对,私钥不在网上传输,CA中心为用户的公钥等公开信息用自己的私钥进行签名,保证这些公开信息的可信性。用户可以凭借证书访问那些信任该CA的服务器。
Openssl[1]是一个开放源代码的密码算法库和SSL协议的实现库。它提供命令行处理程序,可以完成密钥对的生成、证书的创建、各种加解密算法。此外,它还以函数库的形式,提供了丰富的数据加解密、数字签名和验证、X509证书的创建和验证等函数,可以在此函数库的基础上开发各种加解密软件以及SSL/TLS的通信程序。
2 USBKey技术和功能
USBKEY 是结合了密码学技术、智能卡技术和USB 技术的身份认证产品,是一种秘密数据存储设备[2]。尽管数字证书可以用来确认用户的身份和保护用户数据的有效性,但是,数字证书本质上表现为带有用户信息和密钥的一个数据文件,如何保护数字证书本身又成为开放式网络环境中的最薄弱的环节。一旦证书被非法复制,整个系统的安全性就降低到仅仅靠密码保护证书的级别。所以,专门用于存储秘密信息的USBKey成为数字证书的最佳载体。
每一个USBKey 都具有硬件PIN 码,PIN 码和硬件构成了用户使用USBKey 的两个必要因素,即所谓的“双因素认证”。用户只有同时取得了USBKey 和PIN 码,才可以使用USBKey中的秘密信息。而且USBKey内部的信息不能直接导出,硬件不可复制,因此更安全可靠。
目前,USBKey厂家将USBKey与PKI技术相结合[3],开发出了符合PKI标准的安全中间件,利用USBKey来保存数字证书和用户私钥,并提供符合PKI标准的编程接口,以便于开发基于PKI的应用程序。使用这类USBKey,只要存储了符合标准的证书,就可以在通用的网络系统中使用USBKey中的数字证书。所以,USBKey的应用领域已经不限于确认用户身份,已经推广到了使用数字证书的所有领域,包括需要文件加解密、邮件加解密、SSL协议、VPN以及数字签名等等。
3网络身份注册管理系统的设计
现有的许多信息系统都是网络应用系统,其中客户端和服务器端通过网络相互通信。为了采取必要的安全措施,双方必须首先对对方的身份进行确认。所以,可以将网络应用看作是由身份注册管理子系统和网络应用子系统组成,他们之间通过数字证书关联,如图1所示。其中,身份注册管理子系统负责验证用户的真实身份,并为其颁发数字证书。在网络应用子系统中,用户用数字证书作为身份标识,通过浏览器访问网站,或者通过专用客户端软件访问专用服务器。身份注册管理子系统和网络应用子系统可以共享同一个数据库服务器。如果使用USBKey作为数字证书的载体,则可以提供更高的安全性。
我们基于openssl函数库[4]设计实现了一个通用的身份注册管理系统。该系统为那些不便使用通用证书颁发机构的网络应用系统提供身份注册、证书颁发和管理功能。系统可以颁发符合X.509标准的数字证书并保存到USBKey中。此外,系统还提供了读取证书、获取密钥的函数接口,便于用户开发相应的网络应用程序。
身份注册管理系统采用了客户/服务器模式,注册管理客户端与注册管理服务器之间使用SSL协议进行认证和通信。认证通过之后,进入管理主界面,执行用户管理、管理员管理、服务器日志管理和服务器系统管理四项管理功能,身份注册管理系统的组成如图2所示。
管理员认证登录模块:管理员输入管理服务器的IP地址、服务器名以及自己的PIN码,建立与服务器之间的SSL连接。连接建立之后双方还将进一步检查证书的相关信息,确定是否准许登录。认证成功则进入管理主界面,失败则显示失败信息,退出系统。
用户管理:对用户的身份信息进行管理,它能列出所有已注册的用户、为新用户颁发证书、修改用户信息、查询用户信息等。
管理员管理:对身份注册管理系统本身的管理员进行管理,它能列出所有的管理员、为管理员颁发证书、修改管理员信息和删除管理员等;
服务器日志管理模块:对系统的日志进行管理,包括日志的列表、查询日志、清空日志、新建日志等;
服务器管理:对注册管理系统的服务器进行管理,如更新服务器证书、数据库参数设置、管理参数设置、恢复初始设置、系统重启等。
在上述各模块中,用户管理和管理员管理模块是系统的核心,它收集管理员和用户的各种信息,为他们生成密钥对,使用服务器的根证书签发证书,将证书保存到USBKey中,同时将用户的各种信息存入数据库。
4 身份注册管理系统的实现
我们使用openssl-0.9.8e函数库,使用飞天诚信的epass1000ND USBKey。客户端在Windows平台上使用VC6开发,提供图形用户界面的登录和管理界面。服务器端在Linux平台上,使用标准C开发。
客户端和服务端的程序流程以及二者的交互过程如图3所示。客户端与服务器端完成SSL握手,认证通过之后,客户端员进入管理主界面,而服务器端则进入循环接收并处理命令的状态。客户端根据管理员的选择和输入信息,将管理信息发送到服务器端;服务器接受命令后,根据命令号进行相应的处理,并将处理的结果以及要返回的信息发送给客户端。管理过程持续到客户端发出退出命令为止。
1.1客户端程序的主要代码
1.1.1初始化
首先初始化openssl函数库,这样才能使用openssl提供的各种函数。为了进行SSL握手,需要读取ca根证书、管理员的公钥证书以及管理员的私钥证书:
ctx = SSL_CTX_new(SSLv23_client_method());
SSL_CTX_load_verify_locations(ctx, "cacert.pem", NULL)) ;
SSL_CTX_use_certificate_file(ctx, "clientpem", SSL_FILETYPE_PEM) ;
SSL_CTX_use_PrivateKey_file(ctx, "clientkey", SSL_FILETYPE_PEM) ;
1.1.2执行SSL握手
bio = BIO_new_ssl_connect(ctx);
BIO_get_ssl(bio, &ssl);
BIO_set_conn_hostname(bio, hostname, port);
1.1.3进一步验证对方身份
首先获取对方的数字证书:
peerCertificate = SSL_get_peer_certificate(ssl);
然后对证书中某些域的信息进行验证,如subjectname域等。
1.1.4接收对方发送数据
SSL_read(ssl, buf, BUFSIZE); buf是接收缓冲区,BUFSIZE是缓冲区大小。
1.1.5向对方发送数据:
SSL_write(ssl,buf,size); buf中是要发送的数据,size是要发送的数据的大小。
1.2服务器端程序的主要代码
1.2.1初始化
ctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_load_verify_locations(ctx, "cacert.pem", NULL)
SSL_CTX_use_certificate_file(ctx, "certificate.pem", SSL_FILETYPE_PEM)
SSL_CTX_use_PrivateKey_file(ctx, "private.key", SSL_FILETYPE_PEM)
服务器端的初始化与客户端的类似,但加载的是服务器的公钥证书和私钥证书
1.2.2指定端口等待SSL连接
abio = BIO_new_accept("1234"); //服务器监听端口1234
BIO_do_accept(abio) //两次调用BIO_do_accept进入监听状态
BIO_do_accept(abio)
1.2.3 SSL握手
out = BIO_pop(abio);
ssl=SSL_new(ctx)
SSL_set_accept_state(ssl);
SSL_set_bio(ssl,out,out);
1.2.4与客户端通信,接收和发送数据
服务器端发送和接收数据使用与客户端相同的函数SSL_write和SSL_read
1.2.5处理客户端命令
使用switch语句,根据客户端的命令号,进行不同的处理。
5 结论
该身份注册管理系统已经作为子系统用于数字媒体管理系统和车辆管理系统中,这两个网络应用系统都采用的是B/S与C/S共存的系统,身份注册管理子系统能够与应用子系统通过USBKey和接口函数无缝结合。
本文在分析相关技术的基础上,设计实现了一个身份注册管理管理系统,能够为用户颁发符合X509标准的数字证书,并使用USBKey存储证书。系统将数字证书技术与USBKey技术有机结合,从而可以为网络应用提供更高的安全性保障。


参考文献
[1] 王志海 童新海 沈寒辉,OpenSSL与网络信息安全—基础、结构和指令,清华大学出版社/北京交通大学出版社,2007.5
[2] 徐远航 USB Key身份认证产品的产生与发展,计算机安全,2004年08期 44-45。
[3] 何丽,蔡小刚,周利华,基于USBKey的X_509身份认证,计算机与现代化,2003年第4期,58-60
[4]中国OpenSSL专业网站, http://www.openssl.cn

作者简介:
刘海燕,(1970-)女,博士,教授,从事计算机网络、信息安全、网络攻防等课程的教学和相关方向的科研工作多年,主要研究方向为信息安全、网络应用。

 
 
   
《通信市场》 中国·北京·复兴路49号通信市场(100036) 点击查看具体位置
电话:86-10-6820 7724, 6820 7726
京ICP备05037146号-8
建议使用 Microsoft IE4.0 以上版本 800*600浏览 如果您有什么建议和意见请与管理员联系