USBkey身份认证

2024-07-19

USBkey身份认证(通用4篇)

USBkey身份认证 篇1

0引言

目前,身份认证技术是信息安全技术领域中一个热门的研究问题,如何解决传统身份认证技术中的难题, 直接关系到用户能否在各种应用的服务上得到安全性、 可靠性和可用性的保障。USB Key身份认证技术是近年来快速发展的一门身份认证、识别技术[1],它采用软硬件结合的方式,在各个领域中都得到了广泛的应用。在移动设备端,现有的身份认证方式已经包含了用户名密码、动态口令、USB Key和生物识别等多种身份认证技术。表1是USB Key身份认证技术与各种认证技术基于移动设备端在易用性、安全性、经济性和可接受性上的比较。生物识别首次应用在了苹果的i Phone手机上, 采用了指纹识别的身份认证技术,这种方式安全性和易用性高,但是经济成本较高,必须配备一定的硬件予以辅助,推广程度不是很广泛。用户名密码是每个移动设备端都基本具有的功能,其安全性比较低。动态口令在移动设备端虽然安全性很高,但是易用性较低,给用户带来的不便也较明显。所以基于经济性、安全性和可靠性的基础上,选择了在移动设备端使用USB Key进行身份认证。

基于移动设备的USB Key的身份认证技术可以很好地保证移动设备端以及其应用服务的安全性,主要从两个方面进行论述:用户在使用移动端应用服务时,移动设备端是如何识别USB Key,并且如何获取USB Key中的数字证书进行身份认证;移动设备端的用户在使用应用服务时是如何对用户身份进行认证,从而保证应用服务在移动设备环境下的安全性。

1相关技术

1.1移动设备

这里使用的移动设备以安卓系统为实验环境,安卓系统是一种基于Linux的自由及开放源码的操作系统, 作为一种开放式的操作系统,以Linux系统为核心,使用Java作为其主要的编程语言。安卓系统最初主要用于支持智能手机,后逐步扩展到平板电脑及其他领域上, 如智能电视、数码相机以及游戏设备等。

安卓系统在结构上采用分层的架构,分为四个层次,从高到低分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层[2]。安卓具有开源的特性,使得软件成本问题得到解决,也可以在安卓系统上实现USB Key身份认证技术。

1.2 USB Key身份认证

身份认证是指系统对登录用户身份进行验证的过程,验证用户的身份是否合法,是否具有访问及使用某种资源的权限,保护登陆用户的物理身份与数字身份相对应[3]。USB Key是数字证书和用户密钥的安全载体, USB Key身份认证技术与传统的用户名加口令的认证方式相比较,其安全性和保密性更强;与生物特征识别技术相比较,USB Key身份认证技术操作简单,技术成熟,推广应用成本低。简单易用、便于携带、安全可靠是USB Key最显著的特点[4,5]。

每一个USB Key都具有硬件、PIN码保护,PIN码和硬件构成了用户使用USB Key的两个必要因素,即所谓 “双因子认证”[6]。用户只有同时取得了USB Key和用户PIN码,才可以登录系统。即使用户的PIN码被泄漏,只要用户持有的USB Key不被盗取,合法用户的身份就不会被仿冒;如果用户的USB Key遗失,拾到者由于不知道用户的PIN码,也无法仿冒合法用户的身份。从而最大限度的保护了合法用户的权利[7]。USB Key具有一定的安全数据存储空间,可以存储用户密钥、数字证书等秘密数据,对该存储空间的访问操作必须通过特定的程序来实现,且其中存储的用户私钥是不能导出的,这就杜绝了非法用户盗取用户密码和仿冒身份的可能。通过与智能卡技术相结合,嵌入了智能卡芯片的USB Key不但可以存储数据,还可以在USB Key内进行加/解密运算和生成随机密钥,从而密钥不必出现在客户端内存中,降低了密钥在客户端泄漏的可能性[8]。USB Key身份认证系统主要有两种应用模式,一种模式为冲击-响应的认证模式;另一种模式为公钥基础设施,即PKI体系认证模式[9,10]。

2 USB Key身份认证

2.1基于移动设备的USB Key身份认证方案

为了提高移动设备端身份认证的安全性,设计了一种适用于移动设备端的USB Key身份认证方案。用户在访问移动设备应用前首先需要进行身份认证,认证通过后,认证服务器通过匹配信息,决定用户是否有权利调用该移动设备应用服务。基于USB Key的移动设备身份认证模型,如图1所示,保证了用户在使用移动设备应用时能够具有惟一的身份标识,并通过这一身份标识保证用户身份的合法性得到验证,从而保证了移动设备应用服务的安全性。

移动设备应用服务的身份认证具体过程如下:

(1)USB Key通过转换接口与安卓设备相连接,移动设备首先对USB Key进行识别,识别通过后,移动设备提取存储在USB Key中的应用程序PID并验证。

(2)请求用户输入PIN码,验证通过后提取USB Key中存储的数字证书、私钥信息PK和对称密钥K,同时USB Key产生一个非重复随机数R标记此次会话,通过3DES加密算法加密应用服务信息和非重复随机数R,3DES的对称密钥K存储于USB Key中,通过私钥PK签名加密对称密钥K。

(3)根据PKCS#7标准将原始信息(即非重复随机数R和密文)、签名后的密文、加密后的密文信息以及数字证书打包发送给认证服务器。

(4)认证服务器验证证书有效性并使用证书中的公钥对密文进行解密,得到3DES对称密钥K,并使用3DES解密密文。

(5)将解密后的信息与原始信息进行匹配,相同则进行该移动设备应用服务的调用。

从上述过程中可得出,认证过程主要分两部分进行:移动设备端的加密以及数字签名过程和认证服务器端的身份验证过程。

2.2移动设备端

移动设备端在向认证服务器端发送应用认证请求时,首先需要检测USB Key是否插入,当USB Key成功与移动设备相连接,移动设备会对USB Key进行识别, 识别通过后,需要移动设备确认需要进行身份认证的应用程序,提取USB Key中存储的应用程序PID,并进行识别验证。验证后将应用程序信息通过USB Key中加密算法进行加密,提取USB Key中的数字证书,并打包密文和证书发送至认证服务器端,请求调用应用程序。 认证服务器端在接收到认证请求后进行认证,认证通过后使合法用户调用移动设备应用程序。移动设备端请求应用认证的流程图如图2所示。

移动设备端主要包括加密模块、证书获取模块和进程监控模块3部分。

证书获取模块:主要负责提取存储在USB Key中数字证书的相关信息。移动设备端需要请求数字证书对用户身份进行标识,并实现私钥对信息的加密签名,传送给认证服务器端。在进程监控模块读取到相应应用服务的PID后,移动设备端调用证书获取模块提取USB Key中的数字证书信息,保证数字证书信息与应用服务用户身份信息的对应。

进程监控模块:主要负责监控移动设备的应用程序服务,这是移动设备端的核心部分,需要负责加密模块和证书获取模块之间信息交流,协调其完成信息处理。 在设备检查到USB Key的连接状态后,读取USB Key的PID识别应用程序服务,识别成功后调用证书获取模块和加密模块进行信息处理。

加密模块:主要负责加密应用服务中的原始认证信息,包括了对认证信息的加密和数字证书信息的加密。 对于认证信息和数字证书信息,采用已经发展成熟的对称加密算法3DES。其中3DES的对称加密密钥K使用数字证书中的私钥SK进行签名封装发送至认证服务器端。如果只是单方面采用非对称性加密算法,有两种方式:第一种是签名,使用私钥加密、公钥解密,用于让所有公钥所有者验证私钥所有者的身份并且用来防止私钥所有者发布的内容被篡改,但是不用来保证内容不被他人获得;第二种是加密,用公钥加密、私钥解密,用于向公钥所有者发布信息,这个信息可能被他人篡改,但是无法被他人获得。这里对于对称密钥K使用第一种加密方式[11]。

2.3认证服务器端

认证服务器中的证书认证模块在接收到经过PKCS#7处理的报文后,证书验证模块对移动设备端提供的数字证书的有效期、证书链进行验证,并检查证书是否存在于CA证书库,失败则直接放弃。在通过数字证书验证后,认证服务器使用数字证书的公钥对传送的密文进行解密处理。将解密后的信息与原始信息进行匹配,如果信息匹配成功,则获取应用程序服务。认证服务器端验证流程如图3所示。认证服务器端主要包括解密模块和证书验证模块2个部分。

证书验证模块:主要负责验证数字证书的有效期、 证书链等信息。数字证书代表了移动设备端的惟一身份标识,证书验证模块通过验证证书的有效其、证书链、 是否位列黑名单以确保证书的可靠性和安全性。

解密模块:主要负责解密应用的用户信息和数字证书信息。首先在证书验证成功后,获取到证书中的公钥PK解密3DES加密算法的对称密钥K,然后对称密钥K解密收到的密文序列,解密应用服务信息和非重复随机数R。将由对称密钥K解密得到的信息与原始信息进行比较,最后认证服务器返回相应信息。

3安全性分析

随着移动设备的不断发展,移动设备简单易携、功能强大的特性,使得越来越多的用户对其青睐有加,移动设备端用户身份认证的安全性问题也越来越受到关注。对于移动设备而言,普遍的认证方式还仅限于用户名密码,给用户的身份安全性问题带来极大的风险。移动设备的安全问题主要在于用户账户和应用服务攻击, 而USB Key在经济许可以内很好地解决了这个问题。

(1)选择密文攻击和密钥猜测攻击。移动客户端与认证服务器端在每次交互式时,USB Key和认证服务器都会产生不同的密钥(即一对公钥和私钥)。这样就可以避免在密文泄露后,攻击者根据密文猜测密钥,或者直接猜测密钥。所以本方案可以应对选择密文攻击和密钥猜测攻击。

(2)重放攻击。移动设备端与认证服务器端进行交互时,USB Key会产生一个非重复的随机数和时间戳签名信息。时间戳可以解决时间同步带来的问题,同时可以保证消息的实时性。当攻击者实施重放攻击时,认证服务器端收到消息的时间戳与消息实际的时间戳相差较大,可以判断消息的不可信。所以本方案可以应对重发攻击。

(3)拒绝服务攻击。认证服务器端的证书验证模块可以判断请求的身份,如果对方不能通过数字证书的校验,则不给予公钥。所以本方案可以应对拒绝服务攻击。

(4)中间人攻击。移动客户端与认证服务器端进行的是双向证书验证,攻击者无法冒充其中之一对认证消息进行查看、修改和转发等操作。

4仿真实验

实验软硬件平台如下:

Phone:SAMSUNG SHV-E120S;OS:Android 4.1.2;USB Key: UKey2000;Server:LENOVO M820E;OS:Windows Sever 2008 R2,Oracle。USB Key身份认证安卓平台实现效果图见图4。

5结语

本文提出了一种基于移动设备的USB Key身份认证方案,解决了在移动设备端传统身份认证方式缺失的安全问题,提高了用户使用移动设备应用服务时的安全性和可靠性。移动设备应用服务的不断发展,用户身份认证所带来的安全问题也逐渐得到重视,仅靠用户名密码的传统方式已经出现很大的安全漏洞。对于用户而言,USB Key在移动设备的应用可以对用户身份信息得到很好地验证,经济性也可以接受,但并不简单易携。 因此,对于移动设备端的身份认证方式还有很多待于探索的领域,何种认证方式既能在带来安全性的同时,经济性、易用性、可接受性也能满足用户的需求,是移动设备身份认证领域研究的重点。

摘要:提出一种基于移动设备的USB Key身份认证方案,主要用于解决在移动设备端传统身份认证技术中存在的安全问题。在移动设备端使用USB Key身份认证技术可以很好地提高移动设备对用户身份认证的安全性。主要从两方面进行论述:移动设备端是如何获取USB Key中的数字证书并进行身份认证,从而保证移动设备环境下的安全;移动设备端的用户是如何进行身份认证,从而保证应用服务的安全性。通过安全性分析和实验可得出,这种身份认证技术可有效地抵御移动设备端账户和服务攻击。

关键词:USB Key,身份认证,信息安全,数字证书

USBkey身份认证 篇2

1.1 什么是USB

USB即通用串行总线 (Universal Serial Bus) , 是一种支持即插即用的新型串行接口。USB要比标准串行口快得多, 其数据传输率可达每秒4Mb~12Mb (而老式的串行口最多是每秒115Kb) 。除了具有较高的传输率外, 它还能给外围设备提供支持。

这不是一种新的总线标准, 而是电脑系统连接外围设备 (如键盘、鼠标、打印机等) 的输入/输出接口标准。到现在为止, 电脑系统连接外围设备的接口还无统一的标准, 如键盘的插口是圆的、连接打印机要用9针或25针的并行接口、鼠标则要用9针或25针的串行接口。USB能把这些不同的接口统一起来, 仅用一个4针插头作为标准插头。通过这个标准插头, 就可以把所有的外设连接起来, 并且不会损失带宽。USB正在取代当前PC上的串口和并口。

1.2 USB基本结构

整个USB总线可以分为3个部分进行描述, USB连接、USB设备、USB主机 (如图1) 。

1.3 USB通信框架结构

USB设备被分为3个层次:功能层、USB逻辑设备和USB总线接口。它们分别和主机系统中的客户软件、USB系统软件以及USB主控制器进行了逻辑或物理的对应。其中, 功能层和客户软件之间的逻辑对应提供了用户操作USB设备的能力。USB逻辑设备与USB系统软件的逻辑对应提供了通用的USB操作, 主要包括USB系统软件对USB设备的配置和管理工作。而USB总线接口与USB主控制器通过USB电缆实现物理连接。主机与设备之间横向的联系辅以主机和设备各层次间纵向的通信, 就构成了整个USB从逻辑到物理的分层的通信模型。

1.4 主机的通信

主机的通信就是应用软件与设备驱动程序之间以及驱动程序栈中各驱动程序之间的通信过程。它主要由3大部分构成:

1.4.1 USB客户驱动程序

根据具体应用, 用户可以选定一种Windows提供的USB类驱动程序或写一个自定义驱动去构成USB客户驱动程序。注意, USB客户驱动程序为标准设备类或自定义硬件提供了一个用户接口, 使得客户应用软件可以方便地操作USB设备, 但它并不知道USB的串行传输机制。

1.4.2 USB总线驱动程序 (USBD)

USB总线驱动程序知道USB目标设备的特性, 它管理总线电源、列举、USB事务以及根集线器驱动和主控制器驱动之间的通信。USB特性由USB总线驱动程序检测, 这是在设备配置过程中通过分析设备描述符得到的。例如, 某些设备要求在每一帧 (Frame) 中都有一个确定的信息吞吐量, 而另一些设备可能只需要每隔一定的时间才进行一次周期性的读写工作。

1.4.3 USB主控制器驱动程序

主控制器驱动程序 (HcD) 知道如何与连接总线的主控制器硬件通信。Win98支持两类主机控制器, 每一种都有它自己的驱动。主控制器驱动程序安排事务列表中的事务在USB上广播。事务列表描述了那些需要在总线上运行, 当前仍未完成的总线事务集。应用程序通过使用API函数对设备I/O进行Win32调用, 这个调用由I/O系统服务接收。I/O管理器从这个请求构造一个合适的I/O请求包 (II) , 并通过IRP将请求发送给驱动程序。现在一个IRP由一个分层的设备驱动程序栈处理是很常见的。每个驱动程序把该请求划分成更简单的请求。用户的工作集中在客户驱动层的实现上。

1.5 主机与设备的通信

主机与设备的通信也是建立在上述通信框架结构上的。要理解基于USB的主机与设备的通信需要从两个方面加以考虑:一方面是从宏观和逻辑的角度看, 需要理解设备端点 (Endpoint) 和管道 (Pipe) 的概念;另一方面是从微观和物理的角度看, 需要理解包 (Packet) 和帧 (Frame) 的概念。以下分别加以讨论。

1.5.1 设备端点与管道

端点是一个USB设备中的唯一可寻址部分, 是主机与设备之间通信流的起点或终点。端点是一个储存多个字节的缓冲区 (buffer) 。通常它是一块数据储存区域或控制器的一个寄存器。储存在端点的数据可以是接收到的数据或等待发送的数据。每个端点都有自己所支持的传输类型, 设备上的每个端点都有一个唯一的端点号。除了控制传输端点 (端点0) , 其余每个端点只能是单向的。一个由相互独立的端点构成的端点集组成了前文提到的USB逻辑设备。在设备接入时, 每一个逻辑设备都有一个由系统分配的唯一的地址。这一工作是由图3中与USB逻辑设备逻辑对应的USB系统软件完成的。根据设备地址、端点号和传输方向便可以寻址每一个端点。端点在未被配置之前处于一种不确定的状态。所以只有在对其进行了配置工作之后, 主机才能访问某个端点。一个USB管道不是一个物理对象, 它只是设备上的端点和主机软件之间的联系。从逻辑上说, 每次传输都是通过这种虚拟的通信管道在端点和主机缓冲区之间进行 (图2) 。

从图2可以看出, 构成一个USB逻辑设备的端点集合又被进一步划分为不同的端点集去组成一个接口。一个功能设备有一个或多个接口。系统软件使用缺省管道 (和端点0对应) 来管理USB设备, 而客户软件使用管道束 (与一个端点集对应) 去访问功能设备的接口。这种管道联系进一步反映了功能层和客户软件以及USB逻辑设备和系统软件之间的逻辑对应。

1.5.2 包与帧

USB是基于这样一种方式通信的, 它们以1ms (全速) 或125ps (高速) 的时间片为单位来进行数据传输。这样的时间片被称为帧 (全速) 或微帧 (高速) 。每个USB设备在这些长度为1ms或1 251as的时间片内要求得到一部分USB带宽。带宽的分配依赖于设备请求的吞吐量和还没有被其它USB设备使用的带宽。

包是USB事务的基本构成单位。每一个传输包括一个或多个事务, 每个事务一般分为3个阶段 (图3) :第1阶段发送令牌包 (Token Packet) , 每个事务都从一个令牌阶段开始, 它定义了事务的类型以及设备和端点的地址;第2阶段发送数据包 (Data Packet) , 该阶段负责运送和传输相关数据;第3阶段发送握手包 (Handshake Packet) , 握手阶段对数据发送方提供了一个反馈信号, 通知发送方数据是否已经被正确地收到了。

2 身份认证概述

2.1 什么是身份认证

身份认证是系统审查用户身份的过程, 实质上是查明用户是否具有他所出示的对某种资源的使用和访问权力。身份认证通过标识和鉴别用户的身份, 提供了判明和确认通信双方真实身份的机制。身份认证采用各种先进技术, 确认系统访问者的身份和权限, 使计算机系统的访问控制策略能够可靠地执行, 防止攻击者假冒合法用户获取访问权限, 从而保证系统和数据的安全以及授权访问者的合法利益。

2.2 身份认证的方式

2.2.1 基于口令的认证方式

传统的认证技术主要采用基于口令的认证方法。这种认证方法很简单, 系统事先保存每个用户的二元组信息 (IDx, PWx) 。进入系统时用户x输入IDx和PWx, 系统根据保存的用户信息和用户输入的信息相比较, 从而判断用户身份的合法性。

这种认证方法的优点在于:一般的系统 (如UNIX, WindowsNT等) 都提供了对口令认证的支持, 对于封闭的小型系统束}兑不失为一种简单可行的方法。基于口令的认证方式是最常用的一种技术, 但它存在严重的安全问题:

(1) 它是一种单因子的认证, 安全性仅依赖于口令。

(2) 用户往往选择简单、容易被猜测的口令, 用户每次访问系统时都要以明文方式输入口令, 这时很容易泄密。同时不能抵御口令猜测攻击。

(3) 系统中所有用户的口令以文件形式存储在认证方, 攻击者可以利用系统中存在的漏洞获取系统的口令文件。即使口令经过加密后存放在口令文件中, 如果口令文件被窃取, 那么就可以进行离线的字典式攻击。这也是黑客最常用的手段之一。一旦攻击者能够访问口令表, 整个系统的安全性就受到了威胁。

(4) 用户在访问多个不同安全级别的系统时, 都要求用户提供口令, 用户为了记忆的方便, 往往采用相同的口令。而低安全级别系统的口令更容易被攻击者获得, 从而用来对高安全级别系统进行攻击。

(5) 只能进行单向认证, 即系统可以认证用户, 而用户无法对系统进行认证。攻击者可能伪装成系统骗取用户的口令。

(6) 口令方案对重放攻击也是毫无抵抗能力。

2.2.2 基于硬件令牌的认证方式

采用硬件令牌进行身份认证的技术是指通过用户随身携带身份认证令牌来进行身份认证的技术。主要的硬件设备有智能卡和目前流行的USB Key等。智能卡内部包含有CPU和存储器, 能够进行特定运算并且存储数据。智能卡是一种接触型的认证设备, 需要与读卡设备进行对话, 而不是由读卡设备直接将存储的数据读出。智能卡自身安全一般受PIN码保护, PIN码是由数字组成的口令, 只有读卡机将PIN码输入智能卡后才能读出卡中保存的数据。智能卡对微电子技术的要求相当高, 所以成本较高。

USB Key是由带有EPROM的CPU实现的芯片级操作系统, 所有读写和加密运算都在芯片内部完成, 具有很高的安全度。它自身所具备的存储器可以用来存储一些个人信息或证书, 用来标识用户身份, 内部密码算法可以为数据传输提供安全的传输信道。基于USB—Key的硬件令牌身份认证系统将是未来趋势。

基于硬件令牌的认证方式是一种双因子的认证方式 (PIN+物理证件) , 即使PIN或硬件设备被窃取, 用户仍不会被冒充。双因子认证比基于口令的认证方法增加了一个认证要素, 攻击者仅仅获取了用户口令或者仅仅拿到了用户的硬件令牌, 都无法通过系统的认证。因此, 这种方法比基于口令的认证方法具有更好的安全性。

2.2.3 基于密码技术的认证方式

基于密码技术的认证是指通过采用密码技术设计安全的身份认证协议实现身份认证的技术。各种密码算法, 如单钥密码算法、公钥密码算法和哈希函数算法都可以用来构造身份认证协议, 各自具有不同的特点。基于密码技术的身份认证协议分为共享密钥认证、公钥认证等几类。

采用密码技术进行身份认证, 主要有两种应用模式:一是基于冲击/响应的认证模式;二是基于PKI体系的认证模式。

基于冲击/响应的认证模式通过在通信双方事先存储一个证明用户身份的密钥, 当需要在网络上验证用户身份时先由客户端向服务器发出一个验证请求, 服务器接到此请求后生成一个随机数并通过网络传输给客户端 (此为冲击) , 客户端将收到的随机数与存储在其中的密钥进行带密钥的单向散列运算 (HMAC.MD5) 并得到一个结果作为认证证据传给服务器 (此为响应) 。与此同时, 服务器也使用该随机数与存储在服务器数据库中的该客户密钥进行HMAC.MD5运算, 如果服务器的运算结果与客户端传回的响应结果相同, 则认为客户端是一个合法用户。如图4所示:

图中“R”代表服务器提供的随机数, “Key”代表密钥, “x”代表随机数和密钥经过HMAC.MD5运算后的结果。通过网络传输的只有随机数“R”和运算结果“X”, 用户密钥“Key”既不在网络上传输也不在客户端电脑内存中出现, 网络上的黑客和客户端电脑中的木马程序都无法得到用户的密钥。由于每次认证过程使用的随机数“R”和运算结果“X”都不一样, 即使在网络传输的过程中认证数据被黑客截获, 也无法逆推获得密钥。这就从根本上保证了用户身份无法被仿冒。

冲击响应模式可以保证用户身份不被仿冒, 却无法保护用户数据在网络传输过程中的安全传输, 而基于PKI (Public Key Infrastructure, 公钥基础设施) 构架的数字证书认证方式由于可以有效保证用户的身份真实性, 同时可以保证信息传输安全和交易的不可抵赖, 因而具有更好的安全性。数字证书是由可信任的第三方认证机构颁发的一组包含用户身份信息 (密钥) 的数据结构, 数字证书的发放和身份认证过程通过采用高强度的加密算法构建了一套完善的流程, 保证数字证书持有人的身份安全。同时可以用于有效解决网络中的各类用户或设备、软件的身份认证, 目前逐步得到广泛应用。

摘要:首先介绍了USB接口技术相关的内容, 包括USB的概念、USB的基本结构、USB的通信模型, 为USBKey身份认证的实现提供了理论基础和技术支持。而后着重分析了身份认证的相关内容, 包括身份认证的概念、已有的身份认证方法和身份认证协议。

关键词:USBkey,身份认证,USBkey身份认证

参考文献

[1]王志海, 童新海, 沈寒辉.OpenSSL与网络信息安全—基础、结构和指令[M].北京:清华大学出版社, 2009.

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

[3]何丽, 蔡小刚, 周利华.基于USBKey的X_509身份认证[J].计算机与现代化, 2003 (4) .

[4]张焕国, 刘玉珍.密码学引论[M].武汉:武汉大学出版社, 2003.

[5]卢加元, 吴国兵.基于ATM应用的身份认证系统[J].计算机工程与设计, 2007 (3) .

USBkey身份认证 篇3

1 相关技术介绍

1.1 数字证书

数字证书又称为数字标识 (Digital ID) , 是标志网络用户身份信息的一系列数据。它提供了一种在Internet上身份验证的方式, 是用来标志和证明网络通信双方身份的数字信息文件。通俗地讲, 数字证书就是个人或单位在Internet上的身份证明。

数字证书是由CA中心签发的, 它本身就是用户的身份和与之所持有的公钥的结合。在结合之前, 由一个可信任的认证机构 (CA) 来证实用户的身份, 然后由可信任的认证机构 (CA) 对该用户身份及对应的公钥相结合的证书进行数字签名, 用来证明证书的有效性。

一个数字证书的内容主要包括以下几部分: (1) 所有者的公钥; (2) 所有者的名字; (3) 公钥的失效期; (4) 发放机构的名称 (发放数字证书的CA) ; (5) 数字证书的序列号; (6) 发放机构的数字签名。

数字证书采用公钥密码体制中的RSA体制, 每个数字证书都拥有一对互相匹配的密钥, 即私有密钥 (私钥) 和公共密钥 (公钥) 。其中, 私钥仅为用户本人所掌握, 主要用于解密和数字签名;而公钥可以对外公开, 主要用于加密和验证签名。数字证书的加密过程是一个不可逆的过程, 即利用公钥加密后的数据只能通过相应的私钥才能进行解密。因此, 在发送数据时, 只要发送方利用接收方的公钥对要发送的数据进行加密, 就可以确保数据的保密性, 因为即使加密数据被第三方截获, 由于没有相应的私钥, 第三方也无法进行解密。而第三方要破解出私钥也是不现实的, 即使在已知公钥、明文、密文的条件下, 要推导出目前使用的1024位RSA密钥, 也需要上千年的时间[1,2]。

1.2 USBKey

USBKey是一种USB接口的硬件设备。它内置单片机或智能卡芯片, 有一定的存储空间, 可以存储用户的私钥以及数字证书。由于用户私钥保存在USBKey的密码锁中, 理论上使用任何方式都无法读取, 因此保证了身份认证中用户私钥的安全性。

每一个USBKey都具有硬件PIN码保护, PIN码和硬件构成了用户使用USBKey的两个必要因素, 即所谓“双因子认证”。用户只有同时取得了USBKey和用户PIN码, 才可以登录系统。即使用户的PIN码被泄漏, 只要用户持有的USBKey不被盗取, 合法用户的身份就不会被仿冒;而如果用户的USBKey遗失, 拾到者由于不知道用户PIN码, 也无法仿冒合法用户的身份[3]。

USBKey具有安全数据存储空间, 可以存储数字证书、密钥等秘密数据, 对该存储空间的读写操作必须通过程序实现, 用户无法直接读取, 其中用户密钥是不可导出的, 杜绝了复制用户数字证书或身份信息的可能性。

USBKey内置CPU, 可以实现加解密和签名的各种算法, 加解密运算在USBKey内进行, 保证了密钥不会出现在计算机内存中, 从而杜绝了用户密钥被黑客截取的可能性[4]。

2 方案设计

2.1 设计思想

该身份认证方案的设计思想如下:在双方进行数据通信前, 通信双方相互认证对方的身份。首先, 客户端使用自己的证书私钥对随机数进行签名发送给服务器端, 服务器端验证签名来实现对客户端的身份认证。之后, 服务器端使用自己的证书私钥对自己产生的随机数、客户端发送过来的随机数进行签名后发送给客户端, 客户端通过验证签名来实现对服务器端的身份认证。最后, 客户端将接收到的服务器端随机数进行签名后发送回服务器端, 服务器端通过比较该随机数是否是自己发送的随机数来实现身份认证过程中的抗重放攻击[5]。

2.2 身份认证过程

过程1:实现服务器端对客户端的身份认证;

(1) 客户端调用自己的USBKey产生非重复的随机数r1;

(2) 客户端使用存储在USBKey中的证书私钥 (Ka私) 对{随机数r1+服务器端身份}进行签名获得签名信息Ma;

(3) 客户端将获得的签名信息Ma发送到服务器端;

(4) 服务器端提取存储的客户端的证书公钥 (Ka公) , 使用该公钥对签名信息Ma进行验证签名同时检验服务器身份, 验证通过则证明该信息是由客户端A发送的, 该信息是完整的, 未经篡改的;否则, 拒绝该用户;

过程2:实现客户端对服务器端的身份认证;

(5) 服务器端产生非重复的随机数r2;

(6) 服务器端使用自己的证书私钥 (Kb私) 对{随机数r1+随机数r2+客户端身份}进行签名获得签名信息Mb;

(7) 服务器将签名信息Mb发送到客户端;

(8) 客户端使用服务器端的证书公钥 (Kb公) 验证签名信息Mb并验证客户端身份;验证通过则证明了服务器端的身份, 该信息是服务器端发送的, 该信息是完整的, 未经篡改的;

(9) 客户端比较自己产生的随机数r1与接收的随机数r1 以证明该次会话是自己请求的应答;

过程3:实现身份认证过程中的抗重放攻击。

(10) 客户端使用自己的证书私钥 (Ka私) 对{随机数r2}进行签名获得签名信息Mc;

(11) 客户端将签名信息发送到服务器端;

(12) 服务器端比较接收的r2与发送的r2;

该次认证的目的是通过服务器端检查发送的随机数与接收的随机数是否相同来证明是否有重放攻击, 在通信双方无法建立时钟同步的情况下, 该方法可以很好地解决重放攻击的发生。

身份认证过程流程图如图1所示。

3 方案的有效性和可行性分析

3.1 在身份认证过程的开始, 需要验证客户端用户的PIN码, 该步骤保证了登录用户必须是USBKey的合法持有者, 否则即使持有USBKey, 由于不知道用户PIN码, 也无法进行下一步操作;

3.2 基于该方案的身份认证过程, 是利用公钥密码技术实现的, 它的安全性从根本上取决于所使用私钥的安全性。服务器端私钥可以在服务器端由专业的人员通过相关的安全策略和手段来管理, 而客户端私钥由于由用户掌握, 安全性成为薄弱环节。在该身份认证方案中, 客户端用户私钥是通过USBKey产生的, 产生后即存放在USBKey中, 用户无法进行读取。同时, 客户端用户私钥的使用, 包括对传输信息的签名和验证签名都是在USBKey中进行的, 保证了用户私钥不会出现在计算机内存中, 从而杜绝了用户密钥被黑客截取的可能性, 保证了认证的安全性;

3.3 为了使用USBKey实现证书私钥的数据签名、验证签名以及其他各种加解密操作, 可以使用Crypto API的开发模式。Crypto API是微软提供的一套Win32环境下加解密和签名认证的编程接口, 以供应用程序开发人员调用。通过调用这套函数接口, 应用程序可以方便地操作USBKey来完成对数据的加解密和签名验证的功能;

3.4 在该方案中可以在身份认证的过程中, 添加会话密钥的传输, 以实现通信中的密钥分配功能。

参考文献

[1]杨波.现代密码学 (第3版) [M].北京:清华大学出版社, 2015.

[2]王育民, 刘建伟.通信网的安全理论与技术[M].西安:西安电子科技大学出版社, 2002.

[3]关振胜.公钥基础设施PKI及其应用[M].北京:电子工业出版社, 2008.

[4]李涛.网络安全概论[M].北京:电子工业出版社, 2004.

USBkey身份认证 篇4

随着信息技术的发展,政府机构正在不断推广电子政务。目前电子政务环境中应用广泛的协同办公系统(OA),多采取用户名+密码的身份认证方式,但此方式已不能满足需要。电子政务环境下的身份认证,不仅要解决用户身份信息证明、分配相应操作权限,还要考虑用户的非专业性,做到使用简便。在易用性和安全性的前提下,本文提出了一种基于X.509协议的改进的政务环境身份认证方案。

1 原理概述

1.1 X.509身份认证协议

X.509身份认证协议是一种基于PKI的非对称密码协议,X.509证书是由可信的第三方权威机构CA颁发的符合X.509规范的公钥证书。证书包含用户身份信息、公钥信息、颁发证书的CA的身份信息和CA对证书的签名信息。通过X.509证书绑定了用户身份和密钥对,并通过CA签名确保了证书的可信性。

1.2 USB Key介绍

电子钥匙USB Key是由智能卡技术发展而来的,结合了现代密码学技术、智能卡技术和USB技术。USB Key的芯片和芯片操作可以提供私钥生成、安全存储和公钥密码算法等功能。由于其具有独立的数据处理能力和良好的安全性,USB Key成为数字证书和签名私钥的安全载体。进行数字签名时,用来签名的私钥能在USB Key中产生并保存,任何情况不能读出,签名的过程也在USB Key中完成,比传统方式下在主机端实现更安全可靠。

2 身份认证方案设计

2.1 方案总体设计

本文提出一种以USB Key为物理载体,基于X.509身份认证协议的政务环境身份认证方案。此方案是在利用X.509数字证书的基础上,结合USB Key硬件特点所构成的双因子身份认证,能够为OA系统提供用户身份认证服务,并对通过验证的合法用户分配相应操作权限。系统总体结构如图1。

系统主要包括客户机、身份认证服务器、日志服务器、网关、身份信息数据库,并与OA服务器相连。用户通过身份验证后,由OA服务器向合法用户分配操作权限。其中身份认证服务器根据需要,整合了PKI体系中的CA、RA、以及X.509服务器。

2.2 认证具体流程

此方案的认证流程包括四个部分,如图2所示。具体步骤如下:

2.2.1 证书的制作颁发

(1)用户申请,管理员后台对用户提交的申请进行审核,对通过审核的用户颁发证书。CA认证中心生成数字证书,数字证书包含用户身份信息以及证书持有者的公钥等相关信息;

(2)用户向服务器提交ID和口令PW,服务器记录用户USB Key的硬件PIN码(即序列号);服务器生成随机数r,取得当前系统时间T,计算R=H(ID⊕X)⊕H(H(PW⊕r)⊕H(PW⊕T)),计算N=HK(H(T⊕r)⊕H(PW)),其中K=H(ID⊕X),用R,N,HK(),r,T初始化USB Key;服务器将数字证书和用户私钥存储在USB Key中颁发给用户,生成最终用户持有的USB Key;

2.2.2 登陆系统验证身份

(1)用户登陆系统后插入USB Key设备,系统自动检测所插入设备的硬件PIN码是否合法,若不合法,提示错误信息,退出系统。若PIN码通过验证,则进入下一步。

(2)系统取得用户输入的ID和PW、存放在USB Key中的r和T,计算V=H(H(PW⊕r)⊕H(PW⊕T)),然后通过V⊕R得到K=H(ID⊕X),用带密钥K的哈希函数计算HK(H(T⊕R)⊕H(PW)),与N进行比较,若不相等,则拒绝本次登陆,系统报警并记录到日志服务器,同时退出系统;若相等,服务器同意USB Key向其发送认证请求,则进行下一步;

2.2.3 身份认证服务器验证身份过程

(1)USB Key生成一个随机数R2,并用其内部存储的用户私钥P对认证请求消息(R2,Tc,d)签名,生成签名消息:M=P{R2,Tc,d}其中Tc是当前时间标记,d为身份数据信息。USB Key将认证请求消息M发送给身份认证服务器;

(2)身份认证服务器接受到认证请求后,检查服务器是否是消息接收者;若是,则获取用户的证书,并验证证书的有效性;获取当前时间标记Ts,计算△T=Ts-Tc,若Ts=Tc或者△T′>△T,则拒绝此次登陆请求,△T是表示时间延迟的有效时间间隔;

(3)从用户的证书中提取公钥O,去验证用户的数字签名,即解密身份认证请求M,d=O(P{R2,Tc,d}),这样便可获得USB Key使用者的身份信息。若在此过程中出现错误或USB Key被拔出,身份认证系统立即报警,在日志服务器上做记录并退出验证系统。

2.2.4 身份认证服务器分配权限

身份认证服务器完成用户身份认证请求后,从身份信息数据库中查询该用户的权限和信息。并将用户的权限和信息发送到OA服务器,从而正确分配用户使用该系统的权限。并将用户所有操作记录在日志服务器中,以备查询分析。

2.3 认证系统的安全架构

认证系统安全体系架构基于三个层次的安全措施,如图3所示。

物理层:由USB Key硬件提供的PIN码保护,用户必须拥有硬件实体才能登陆系统,而USB Key的内部硬件则确保了USB Key的不可复制和使用安全。

网络层:系统基于Web的B/S结构,使用HTTPS传输加密协议确保网络层信息的安全可靠,不易被第三方截取。

应用层:系统身份认证基于成熟的X.509认证协议,结合数字证书和USB Key内置的加密算法对用户输入的ID和口令PW进行加密,从而构成双重安全认证体系,从应用层上加强了系统的安全性。

3 系统软件实现

3.1 软件总体设计

系统软件采用B/S(浏览器和服务器)架构,基于Microsoft.net framework平台。用户通过浏览器登陆特定页面输入用户ID和口令PW,进行验证。登陆页面内置ActiveX组件,在登录系统的时候,服务器提取用户USB Key上的硬件信息,并利用这些信息进行认证操作。

系统软件具体功能实现:待识别用户插入USB Key后,客户端浏览器通过ActiveX插件程序调用操作系统winAPI函数访问USB Key硬件,首先验证用户USB Key里的硬件序列号即PIN码,通过后再验证ID和PW,接着由USB Key进行数字签名,提交给认证服务器进行认证,服务器通过身份识别后,解析返回的信息判断用户是否合法。若认证成功,服务器从身份信息数据库读取人员信息和权限,并通信OA服务器与用户建立应用系统的信任通道、分配权限。整个系统的操作请求及用户在OA系统的操作均记录在日志服务器上。在认证过程中引入心跳机制,用于实时监测用户是否在线,一旦失去心跳连接,立即中断服务。它包括两种类型,一是认证服务器与客户机之间的连接,二是计算机与USB Key之间的连接。系统软件的设计流程如图4所示。

3.2 USB Key与服务器通信的插件开发

Microsoft.net平台环境下,系统软件中服务器与USB Key通信的Active X插件使用到以下几个类:

System.Runtime.InteropServices(提供各种各样支持COM及WMI平台调用服务的成员)

System.Management.Management Scope(提供系统管理操作的范围)

System.Management.Management Object Searcher(基于指定的查询检索管理对象的集合。此类是用于检索管理信息。可以用于枚举系统中的所有磁盘驱动器、网络适配器、进程及更多管理对象,或者用于查询所有处于活动状态的网络连接以及暂停的服务等)

WMI是Windows 2K/XP管理系统的核心,WMI以CIMOM(即公共信息模型对象管理器)为基础,是一个描述操作系统构成单元的对象数据库。它允许通过一个公共接口访问多种操作系统构成单元,不必分别对待各种底层接口。利用它可以高效地管理远程和本地的计算机。

4 结束语

本文所提出的基于X.509身份认证协议的USB Key身份认证方案可确保用户私钥的安全,从而保证协议的安全性。此方案实现了对用户身份的三重认证:用户USB Key的硬件PIN码、用户的ID和个人口令加密以及数字证书,大大增强了OA系统的身份认证功能,具有安全性高、可移植扩展、易用性等优势。

参考文献

[1]关振胜.公钥基础设施PKI与认证机构CA[M].北京:电子工业出版社,2002.

[2]周化祥.一种基于PKI体系的USB Key认证客户端的设计研究[J].电脑知识与技术,2008,3(5):930-931.

[3]何丽,蔡小刚,周利华.基于USB Key的X.509身份认证[J].计算机与现代化,2003(4):59-60.

[4]杨帆.USB Key体系研究与技术实现[D].武汉:武汉大学计算机系,2004.

[5]贾可,周启海.基于技术的电子政务安全模式[J].绵阳师范学院学报,2006,25(2):95-97.

[6]汪国安,杨立身.USB Key身份认证系统的设计与实现[J].河南理工大学学报,2005,24(4):311-313.

上一篇:诗境下一篇:职业发展问题