基于USBKey的身份认证方法和系统与流程

文档序号:17600378发布日期:2019-05-07 20:12阅读:399来源:国知局
基于USBKey的身份认证方法和系统与流程

本发明涉及信息安全领域,具体涉及一种基于usbkey的身份认证方法和系统。



背景技术:

以往pki/ca为用户签发证书时,一般用户在自己的浏览器中通过非对称算法在内存中运算产生密钥对。这一操作会将用户的私钥读取到pc机的内存中再进行签名运算,将私钥的安全依托于pc机操作系统的安全,这必然是一个很大的漏洞。但是,往往pc机的操作系统很容易受到网络病毒或木马的攻击,攻击者会利用系统漏洞盗取用户的私钥和数字证书,就可以假冒用户进行非法签名等。

要想防止这一漏洞,唯一解决的办法就是不能将私钥存储在pc机上,只能保存在其他外部设备中,而且为了防止网络病毒或木马的攻击也不能将私钥读取到pc机的内存中进行运算,还要保证利用私钥能够进行数字签名。在智能卡基础上发展起来的usbkey设备,配合pki体系就能很好的解决上述问题。既能生成密钥对,存储私钥也可以进行数字签名,整个过程只在usbkey完成,提高了系统的安全性。但是上述解决方案中存在加解密的安全风险,私钥主要用于制作电子签名数据或者是解密相关敏感数据等场景,如制作电子签名场景下,存储在公共操作系统之中的私钥易受到木马或病毒的盗取,从而在本人不知情的情况下制作电子签名,无法体现本人的签名意愿。解密场景下的安全风险亦是如此。此外,通过电子证书的方式实现双向认证是一个常规手段,但是ca服务器的部署和管理,电子证书的审核和发放也较为繁琐,过程较长,成本较高。并且在认证完成后,一般安全通道多建立在服务器和客户端之间,即加密数据所用的会话密码(对称算法密钥)保存在客户端中,极易造成传输数据的泄露。



技术实现要素:

发明目的:针对现有技术的问题,本发明提出一种基于usbkey的认证方法,主要是一套基于动态口令认证机制的安全双向身份认证和密钥安全分发协议,能够在满足安全性要求的同时提高易用性。

本发明的另一目的在于提供一种相应的基于usbkey的认证系统。

技术方案:根据本发明的第一方面,提供一种基于usbkey的认证方法,所述方法适用于usbkey端,包括以下步骤:

(1)验证用户的pin码,包括:

记录用户pin码,基于客户端请求生成一个随机数r,并发送至客户端;

根据客户端返回的基于pin码和随机数r的加密数据,解密得到pin码和随机数r,并与本地存储的pin码和随机数r进行比对,当一致时,pin码验证通过,发出开始进行认证的信号,否则返回出错信息;

(2)验证usbkey-id,包括:

根据认证服务器传来的随机数c,利用非对称密钥算法产生一对密钥,即公钥k1和私钥k2,并利用散列函数h计算该随机数c的散列值hu(c)和公钥k1的散列值hu(k1),生成一个时间戳t,发送m={hu(c),k1,t}到认证服务器;

根据认证服务器传来的对公钥k1的散列加密值hc(k1)、认证服务器根据非对称密钥算法产生的公钥p1以及时间戳t,验证认证服务器的有效性,当hu(k1)与hc(k1)相同且数据发送与接收的时间间隔满足期望时,认为认证服务器身份合法;

根据本地生成的私钥k2和认证服务器出来的公钥p1,利用非对称密钥算法对自身id的散列加密结果h(id)、接收到的时间戳t和随机生成的会话密钥ksession进行加密得到z=ep1(ek2(h(id)+t+ksession)),并将加密结果z发送给认证服务器。

根据本发明的第二方面,提供一种基于usbkey的认证方法,所述方法适用于客户端,包括以下步骤:

基于登录请求向usbkey发送请求随机数的消息,并接收usbkey返回的随机数r;

根据登录时输入的pin码和接收的随机数r,利用对称密钥算法进行加密,得到加密结果e;

将加密结果e传输至usbkey。

根据本发明的第三方面,提供一种基于usbkey的认证方法,所述方法适用于认证服务器端,包括以下步骤:

基于usbkey发出的开始进行认证的信号,产生一个随机数c传给usbkey,并用散列函数h对该随机数c进行加密得到hc(c);

根据从usbkey接收的由usbkey根据非对称密钥算法产生的公钥k1的散列值hu(k1)、usbkey根据随机数c计算的散列值hu(c)以及时间戳t,验证usbkey的合法性,当hu(c)与hc(c)相同且数据发送与接收的时间间隔满足期望时,认为usbkey身份合法;

用散列函数h对usbkey产生的公钥k1加密得到hc(k1),生成一个时间戳t,根据非对称密钥算法生成一对密钥,即公钥p1和私钥p2,形成数据m={p1,hc(k1),t}并发送给usbkey;

根据从usbkey接收到的用私钥k2和公钥p1通过非对称密钥算法对h(id)、时间戳t和会话密钥ksession进行加密得到的z=ep1(ek2(h(id)+t+ksession)),利用私钥p2和公钥k1进行解密,得到明文z'=dp2(dk1(z))=h(id)+t+ksession,比对t是否一致,如果一致就将h(id)与预先存储的字段进行匹配以确认身份,以便赋予其相关权限;否则断开连接。

根据本发明的第四方面,提供一种基于usbkey的身份认证系统,该系统包括:

客户端,运行认证代理程序,用于验证所输入的用户pin码是否正确,通过将输入的pin码与一随机数加密后传输给usbkey端进行判断来实现;

usbkey,用于校验用户输入的pin码,在校验成功后调用安全存储的私钥进行密码运算,并将运算结果返回给代理客户端和认证服务器,并用于验证认证服务器的合法性;

认证服务器,用于验证usbkey的真实身份,通过验证usbkey传来的usbkey-id与预存在数据库中的usbkey-id是否一致来实现usbkey的认证。

进一步地,根据上述身份认证系统进行认证的过程包括:客户端与usbkey之间的用户pin码验证,以及usbkey与认证服务器之间的usbkey-id验证。

用户pin码验证过程如下:

用户插入usbkey,登录到客户端代理程序界面,输入pin码,客户端代理向usbkey端申请发送随机数;

usbkey生成一个随机数r,标记一次会话,传输到客户端代理程序;客户端代理程序利用对称密钥算法对得到的随机数r和pin码进行加密得到e,传输给usbkey;

usbkey解密e得到r和pin码,分别与自身存储的r和pin码做比对,如果一致说明用户为合法用户,然后开启usbkey-id验证程序;否则说明用户为非法,将结果返回给客户端代理程序,显示出错信息。

usbkey-id验证包括认证服务器验证usbkey合法身份,usbkey验证认证服务器的合法身份,以及认证服务器验证usbkey的id。

认证服务器验证usbkey合法身份过程如下:

认证服务器基于接收到usbkey开始认证的信号,产生一个随机数c传给usbkey,并用散列函数h加密随机数c得到hc(c);

usbkey接收随机数c后,根据非对称密钥算法产生一对密钥,即公钥k1和私钥k2,利用散列函数h加密c得到hu(c),加密k1得到hu(k1),生成一个时间戳t,发送m={hu(c),k1,t}到认证服务器;

认证服务器接收m,进行hu(c)与hc(c)的对比并验证时间戳的有效性,当hu(c)与hc(c)相等且数据发送与接收的时间间隔满足期望要求时,接受usbkey的连接,否则拒绝连接;

usbkey验证认证服务器的合法身份过程如下:

认证服务器将usbkey产生的公钥k1用散列函数h加密得到hc(k1),生成一个时间戳t,根据非对称密钥算法生成一对密钥,即公钥p1和私钥p2,发送m={p1,hc(k1),t}给usbkey;

usbkey端接收到m后,进行hu(k1)与hc(k1)比较并验证时间戳的有效性,当hu(k1)与hc(k1)相等且数据发送与接收的时间间隔满足期望要求时,接受连接,否则断开连接;

认证服务器验证usbkey的id过程如下:

usbkey确认对方为合法认证服务器身份后,随机生成一个会话密钥ksession,然后利用p1和k2通过非对称密钥算法加密h(id)、t和会话密钥ksession,发送z=ep1(ek2(h(id)+t+ksession))给认证服务器;

认证服务器得到z后利用p2和k1进行解密,得到明文z'=dp2(dk1(z))=h(id)+t+ksession,比对t是否一致,如果一致就将h(id)与数据库中存储的字段进行匹配以确认身份,以便赋予其相关权限;否则断开连接。

进一步地,上述非对称密钥算法采用椭圆曲线密码(ellipticcurvecryptography,ecc)算法。

有益效果:

1、本发明通过密码算法和安全协议实现了智能安全终端设备(如usbkey)与服务器的双向认证、密钥分发及安全通道的建立,客户端代理程序(如部署在pc端的)无法触及业务数据,实现在非安全的pc环境的敏感数据的传输。

2、与传统的使用电子证书实现双向认证不同,本发明无需引入第三方证书机构进行电子证书的发放,凭借非对称和对称密钥及相关算法即可实现密钥的协商的安全通道的建立,减小了系统部署的难度。

3、本发明将椭圆曲线ecc算法应用于加解密运算,改进了加解密算法程序设计中的运算问题,降低运算时间复杂度,提高加解密算法整体运行效率。

附图说明

图1是根据本发明实施例的基于usbkey的认证系统结构框图;

图2是根据本发明实施例的基于usbkey的认证方法流程图;

图3是根据本发明实施例的客户端代理认证机制流程图;

图4是根据本发明实施例的认证服务器端认证机制流程图。

具体实施方式

现在参照附图对本发明的技术方案做出进一步描述。应当了解,以下提供的实施例仅是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的技术构思,本发明还可以用许多不同的形式来实施,并且不局限于此处描述的实施例。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。

参照图1和图2,系统总体构架包括usbkey,客户端,认证服务器。客户端通过网关连接至认证服务器,用户通过客户端上运行的认证代理程序与服务器和usbkey交互。

客户端用于验证用户输入pin码是否正确,输入的pin码会与一个随机数(系统自动生成)由3des加密程序加密传输给usbkey端,由usbkey端来解密,与存储在usbkey端的pin码和随机数比对,一致则通过认证,不一致则重新输入。

usbkey用于校验用户输入的pin码:在校验pin码的过程通过随机数r,保证校验指令的数据是一次一密,防止pin码在传输过程被窃听。校验成功后调用安全存储的私钥进行密码运算,并将运算结果返回给代理客户端和服务器。此外,在认证过程中,usbkey还对服务器的合法性进行验证。在会话密钥分发过程中,usbkey随机生成会话密钥,并使用该密钥对传输数据进行加密,实现ubskey与服务器之间安全通道的建立。代理客户端和传输链路无法获取传输数据的明文。

认证服务器的任务是验证usbkey的真实身份,通过验证usbkey传来的usbkey-id来实现,与预存在数据库中的usbkey-id对比,如果一致则身份认证通过,否则切断连接,返回错误消息。

整个认证机制的流程分为三个阶段:注册阶段,认证阶段和注销一更新阶段。

在这三个阶段中:

id为usbkey的id号;pin为身份认证码;r为随机数,由随机数产生器生成;t为用户登录时间;hc()为认证服务器中sha-1消息函数;hu()为usbkey中sha-1消息函数;k,kr,kl为3des密钥;h()为单项散列函数。

1、注册阶段

注册用户认证信息在身份认证服务器端完成,只有注册过的用户才可能参与后续的身份认证。

为注册用户认证信息,认证服务器为申请用户分配一个usbkey,并记录该key唯一的id序列号。认证服务器在本地数据库中为该用户创建一条包含如下字段的记录:

<id号,服务器端上次认证信息、服务器端本次认证信息>

其中,id号取为用户usbkey的id序列号,服务器上次认证信息和服务器本次认证信息都为空。usbkey进行pin码和id的注册,将两者写入到usbkey硬件的保护区域,并且usbkey存储该用户id所对应的sha-1,3des,ecc等加密算法的密文形式,作为一个比对校验因子。

2、认证阶段

(1)用户pin码验证

用户pin码验证主要通过usbkey与客户端之间的交互完成,客户端代理程序的流程如图2所示,实现过程如下:

用户插入usbkey,登录到客户端代理程序界面,输入pin码,默认规定为6位数字,点击登录后,系统这时触发一个发送随机数的事件,客户端代理向usbkey端申请发送随机数。

usbkey生成一个随机数r,标记一次会话,传输到客户端代理程序。客户端代理程序将得到的r和pin码进行3次des加密得到e,计算:密钥k=(kl||kr),加密e=des(kl)[des-1(kr)[des(kl[r+pin])]],传输给usbkey。

usbkey解密e得到r和pin码,分别与自身存储的r和pin码做比对,如果一致说明用户为合法用户,然后开启usbkey-id验证程序;否则说明用户为非法,将结果返回给客户端的认证代理程序,显示客户出错信息。

(2)usbkey-id验证

usbkey-id验证主要通过usbkey与认证服务器端的交互来完成,图3示出了其处理流程,实现过程如下:

认证服务器接到usbkey开始进行认证的信号后,产生一个随机数c传给usbkey,并用sha-1加密c得到hc(c)。

usbkey接受c后,根据ecc算法产生一对密钥(公钥k1和私钥k2),sha-1加密c得到hu(c),生成一个时间戳t,发送m={hu(c),k1,t}到认证服务器,最后sha-1加密k1,得到hu(k1)。

认证服务器接收m,提取hu(c),与hc(c)对比,如果不相等拒绝对方的连接。

认证服务器验证t'与t之间的有效性。如果(t’-t)≥δt,认证服务器将断开连接,否则接受。其中t'是认证服务器的当前时间戳,δt是期望的有效时间间隔。

认证服务器在确认对方身份后还要进一步确认对方的id,将k1用sha-1加密得到hc(k1),生成一个时间戳t,根据ecc算法生成一对密钥(公钥p1和私钥p2),发送m={p1,hc(k1),t}给usbkey。

usbkey端接收到m后,比较hu(k1)与hc(k1),如果不相等断开连接。

usbkey验证t'与t之间的有效性。如果(t’-t)≥δt,将断开与认证服务器的连接,否则接受。t'是usbkey的当前时间戳,δt是期望的有效时间间隔。

usbkey确认对方为合法认证服务器身份后,随机生成会话密钥ksession,然后用p1和k2通过ecc算法加密h(id)、t和会话密钥ksession,发送z=ep1(ek2(h(id)+t+ksession))给认证服务器。其中,h(id)是通过单向杂凑算法sha-1计算得到的id的密文,t是之前交互时保存的时间戳信息。

认证服务器得到z后利用p2和k1进行解密,得到明文z'=dp2(dk1(z))=h(id)+t+ksession,比对t是否一致,如果一致就将h(id)与数据库中存储的字段进行匹配以确认身份,以便赋予其相关权限;否则断开连接。身份确认的同时安全通道也建立成功,即可使用会话密钥ksession进行敏感数据的安全传输,同时客户端代理程序无法解密获取该数据。

3、注销一更新阶段

用户忘记pin码或丢失usbkey硬件设备,需立即联系生产厂商进行索取pin码或者注销,发放usbkey的硬件厂商将定期通过与企业建立的安全信道进行更新usbkey-id。

良好的认证机制是认证系统实现安全性和防止各种攻击的关键。本发明身份认证机制采用动态口令认证机制中的请求/响应方式,实现了客户端和认证服务器身份的双向认证,同时保证了客户端和服务器认证信息认证同步。所实现的安全通道建立在密码设备(usbkey)和认证服务器之间,客户端是透传的,提高了安全性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1