一种认证系统和方法与流程

文档序号:15648817发布日期:2018-10-12 22:54阅读:152来源:国知局

本发明涉及保密认证技术领域,尤其涉及一种认证系统和方法。



背景技术:

随着互联网技术的不断发展,在网络通信中,因数字密码容易被用户记住,且对于网络服务提供商来说密码验证成本也最为低廉,因此到目前为止以用户名和密码进行身份认证仍然是主要认证方法之一。

用户通过客户端注册设置初始登陆密码存储在服务器中,后续再通过客户端输入账号密码登陆服务器,根据客户端输入的用户信息与服务器端存储的数据信息加以匹配,认证通过则为合法用户,否则为非法用户,限制其登陆客户端及连接服务器。当用户在客户端输入账号和密码信息后,客户端通过互联网的传输方式,将账号和密码信息传输至服务器端,对用户数据进行验证。然而,在账号密码传输至服务器端的过程中,由于网络通信的不确定性,黑客可通过网络窃听、木马软件、节点攻击、网络漏洞等方式对客户端和服务器端的通信进行攻击,窃取两者关键的交互数据。



技术实现要素:

为了解决上述问题,本发明提供一种认证系统和方法。

本发明采用的技术方案一方面为一种认证系统,包括客户端和服务端,所述客户端包括输入模块和第一加密模块;所述服务端包括认证模块和第二加密模块;其中,所述输入模块获取待认证信息,所述第一加密模块加密所述待认证信息,所述第二加密模块解密所述待认证信息,所述认证模块验证所述待认证信息是否正确。

优选地,所述客户端和服务端基于pki-ca体系实现基本验证。

优选地,所述第一加密模块与所述第二加密模块协商以获取加密密钥;所述加密密钥存在使用时限,当满足预设的期限,所述第一加密模块与所述第二加密模块重新协商以更新加密密钥。

优选地,还包括加盐模块,所述加盐模块连接所述输入模块并加盐所述待认证信息。

优选地,还包括数据存储模块。

本发明采用的技术方案一方面为一种认证方法,适用于上述系统,包括步骤:客户端获取待认证信息,向服务端提出密钥申请;服务端生成加密的公钥;客户端解析所述加密的公钥,将待认证信息进行哈希运算以获取信息哈希值,将若干加盐值插入所述信息哈希值以生成信息字符串,计算该信息字符串以获取字符串哈希值,使用公钥和加密密钥加密所述字符串哈希值;服务端比较预设的正确值和加密后字符串哈希值,一致则验证通过。

优选地,所述服务端基于rsa算法生成公钥、私钥,使用加密密钥并基于对称加密算法3des加密所述公钥以生成加密的公钥。

优选地,所述哈希运算为基于sha512的哈希运算。

本发明的有益效果为通过对待验证的信息进行加密,能够降低在数据传输过程中被窃取的几率,提高安全性。

附图说明

图1所示为基于本发明实施例的系统框架的示意图;

图2所示为基于本发明实施例的服务端进行安全密钥的预置流程的示意图;

图3所示为基于本发明实施例的双向安全认证的流程图;

图4所示为基于本发明实施例的用户通过客户端进行注册流程示意图;

图5所示为基于本发明实施例的认证流程示意图。

具体实施方式

以下结合实施例对本发明进行说明。

基于发明的实施例,一种认证系统,包括客户端和服务端,所述客户端包括输入模块和第一加密模块;所述服务端包括认证模块和第二加密模块;其中,所述输入模块获取待认证信息,所述第一加密模块加密所述待认证信息,所述第二加密模块解密所述待认证信息,所述认证模块验证所述待认证信息是否正确。

所述客户端和服务端基于pki-ca体系实现基本验证。

所述第一加密模块与所述第二加密模块协商以获取加密密钥;所述加密密钥存在使用时限,当满足预设的期限,所述第一加密模块与所述第二加密模块重新协商以更新加密密钥。

还包括加盐模块,所述加盐模块连接所述输入模块并加盐所述待认证信息。

还包括数据存储模块。

基于发明的实施例,一种认证方法,适用于上述系统,包括步骤:客户端获取待认证信息,向服务端提出密钥申请;服务端生成加密的公钥;客户端解析所述加密的公钥,将待认证信息进行哈希运算以获取信息哈希值,将若干加盐值插入所述信息哈希值以生成信息字符串,计算该信息字符串以获取字符串哈希值,使用公钥和加密密钥加密所述字符串哈希值;服务端比较预设的正确值和加密后字符串哈希值,一致则验证通过。

所述服务端基于rsa算法生成公钥、私钥,使用加密密钥并基于对称加密算法3des加密所述公钥以生成加密的公钥。

所述哈希运算为基于sha512的哈希运算。

图1所示为客户端与服务端的系统框图,本实例以客户端与服务端进行的用户账号和密码为例进行用户注册和登陆的认证流程,可应用各种c/s和b/s结构的服务,如网银、购票软件、即时通讯工具登陆等等,客户端与服务端的通信通过有线或无线网络的方式进行通信。如图,该系统主要由客户端和服务端两部分组成,客户端实现用户操作功能,输入模块是指用户进行注册与身份认证的用户账号和密码输入模块,该模块可以是不同的密码输入框或更为安全的密码键盘控件,是账号密码录入模块;加盐模块是对用户输入的密码进行哈希运算后的哈希值进行加盐,即对给密码加盐值;第一加解密模块(即所述第一加密模块)是指带有各种算法的密码模块,此模块可以是软加密也可是硬加密模块(如安全芯片),用以实现客户端对用户输入的账号密码等关键数据的加解密,密码模块支持非对称算法、对称算法、杂凑哈希等多种算法。服务端主要实现关键数据的保存和用户身份的认证。认证模块是对认证数据的组装及对用户账号密码的正确性验证判断,给出用户身份判断的对错结果;数据库模块用于存储用户密码加盐的哈希值及用户账号,数据库模块中的数据均要通过加密保存,以保障数据库中数据的机密性;第二加解密模块(即所述第二加密模块),在本系统中指硬件加解密模块(如密码机),在服务端加解密模块用于对密钥的安全保存,并支持多种非对称、对称及杂凑哈希算法,实现对关键数据的加解密,可生成非对称算法公私钥对及随机数。

图2为服务端进行安全密钥的预置过程,服务端调用第二加密模块生成两个16byte的随机数即第一随机数和第二随机数,分别将第一随机数和第二随机数保存至第二加密模块的安全存储区作为安全密钥r-key和c-key,r_key用于rsa转3des加密运算时的对称加密的安全密钥,c_key用于加密数据库中数据的安全密钥,服务端记录安全密钥r_key和c_key的生成时间,当在加解密模安全存储区保存达到三个月时(即所述期限),将由加解密模块(包括第一加密模块和第二加密模块)重新生成新随机数,作为新的安全密钥r_key和c_key,原数据库中已加密保存的数据,先用旧的安全密钥c_key解密后,再用新的安全密钥c_key加密,优选地,也可将缩短安全密钥生成时间周期如一个月,达到较优的安全时间。

图3是客户端与服务端进行双向安全认证的流程图,在进行双向认证过程之前根据pki安全体系,通过ca在客户端预置根证书,以及客户端公钥证书、服务端向ca申请的ca签名的服务端公钥证书,公钥证书为rsa或sm2非对称算法证,因证书预置过程为公开技术,这里不再赘述。在证书预置后,进行https协议的双向安全认证,其主要认证流程如下:

1)客户端在本地组包发送客户端ssl版本号、认证握手信息数据发送给服务端;

2)服务端接收到信息后,发送ssl版本号、服务端rsa公钥证书给客户端;

3)客户端校验服务端rsa公钥证书的合法性,若证书合法则继续,否则终止两端认证握手;

4)客户端校验服务端证书合法后,将客户端的rsa公钥证书发送给服务端;

5)服务端校验客户端rsa公钥证书的合法性,校验成功后获取客户端的rsa公钥;

6)客户端使用服务端rsa公钥加密对称密钥(3des算法密钥)组合方案生成密文,并将密文发送给服务端;

7)服务端用服务端rsa私钥解密客户端发送的对称密钥组合方案密文,并确认对称密钥的组合方案;

8)当服务端确认对称密钥组合方案后,使用客户端的rsa公钥加密确认信息并将加密后的数据密文返回至客户端;

9)客户端接收服务端返回的对称密钥组合方案确认信息密文,使用客户端的rsa私钥解密该信息密文;

10)客户端获取确认信息后,若对称密钥组合方案是以随机数为对称密钥,则客户端产生随机数作为会话密钥(即所述加密密钥),使用服务端公钥对会话密钥加密后,传送给服务端,对称密钥组合方式有多种,本实例以随机数作为密钥加以说明;

11)服务端接收会话密钥密文后,用服务端的rsa私钥解密后得到会话密钥;

12)双方认证握手成功,会话密钥协商完成。

图4是用户通过客户端进行注册的过程,用户在使用服务器端时需要先进行注册操作,其具体流程如下:

1、当用户通过客户端选择注册功能时,客户端将注册请求、注册请求时间、请求公钥指令通过调用第一加密模块双向认证时协商的会话密钥以3des算法加密注册请求、注册请求时间、请求公钥数据,并将密文组装成密文指令传送给服务端;

2、服务端调用第二加密模块使用会话密钥解密密文指令,解得客户端注册请求、注册时间及请求公钥指令,服务端调用第二加密模块生成一对rsa算法的安全公私钥(pub_key,pri_key),使用会话密钥用对称加密算法3des加密公钥pub_key(即所述加密的公钥),生成公钥密文指令,发送密文指令给客户端;

3、客户端接收服务端发送的公钥密文指令,调用会话密钥使用对称算法解密密文指令,获取公钥,并通过输入模块输入注册账号name和密码pwd(属于待认证信息的一部分),将用户密码进行sha512哈希运算得到密码哈希值sha(pwd)(即所述信息哈希值),加盐模块把注册请求时间、用户账号、客户端公钥(图3中的客户端公钥)分别插入哈希值中作为加盐值生成加盐后的字符串str(注册请求时间、用户账号、客户端公钥三种字符串分别插入哈希值字符串的前、中、后位置,也可采用其他变形,即所述信息字符串),并对字符串str进行sha512哈希运算生成哈希值sha(str)(即所述字符串哈希值);

4、客户端使用安全公钥pub_key加密哈希值sha(str)和用户账号name,得到密文m1=ecn(pub_key,sha(str)+name),再调用第一加密模块使用会话密钥加密m1生成m1密文,并发送至服务端;

5、服务端接收m1密文后分别通过会话密钥s_key和安全私钥pri_key采用对称算法3des和非对成算法rsa对密文解密,获得哈希值sha(str)和用户账号,服务端调用第二加密模块使用存储在安全存储器中密钥c_key以3des加密算法加密哈希值sha(str)和用户账号(rsa转3des),并将生成的密文存储至服务端数据库中,使用会话密钥加密注册成功信息指令密文返回给客户端;

6、客户端接收密文,解密获取注册成功指令,并提醒用户注册成功。

图5是用户通过客户端与服务端进行密码认证的过程,实现用户身份的认证,判断是否合法,以下是主要认证过程:

步骤1:用户通过客户端输入模块输入用户账号和密码(即待认证信息),发起认证登陆请求及获取安全公钥请求,使用会话密钥对以上指令数据进行3des对称加密,传输至服务端;

步骤2:服务端调用第二加密模块,使用会话密钥解密接收到的加密数据密文指令,解密后获取到客户端认证请求及请求公钥指令,加密模块生成一对rsa安全公私钥(pub1-key,pri1-key),将保护公钥会话密钥加密后发送给客户端;

步骤3:客户端接收到加密数据后使用会话密钥解密获取到安全公钥pub1-key,将用户密码pwd’进行sha512哈希运算得到密码哈希值sha(pwd)’,加盐模块把注册请求时间、用户账号、客户端公钥分别插入哈希值中作为加盐值生成加盐后的字符串str’,并对字符串进行sha512哈希运算生成哈希值sha(str’);

步骤4:使用安全公钥pub1_key加密哈希值sha(str’)和用户账号name’,得到密文m1’=ecn(pub1_key,sha(str’)+name’),再调用加密模块使用会话密钥加密m1'生成密文m2',并发送至服务端;

步骤5:服务端接收密文后分别通过会话密钥s_key和安全私钥pri1_key采用对称算法和非对成算法对密文解密,获得哈希值sha(str’)和用户账号name’,服务端调用加密模块使用密钥r_key以3des加密算法加密哈希值sha(str’)和用户账号name’分别得到密文cp=enc(r_key,sha(str’))和cn=(r_key,name’);

步骤6:服务端调用加密模块使用密钥c_key以3des加密算法解密数据库中的密哈希值sha(str)密文和用户账号name密文,并用密钥r_key加密解密后哈希值sha(str)和name,分别生成密文sp=enc(r_key,sha(str))和sn=(r_key,name);

步骤7:服务端的认证模块对比cp与sp,cn与sn是否一致,若不一致,则用户登录认证失败;若一致,则用户账号和密码正确,登录认证成功,使用会话密钥加密认证成功信息返回客户端;

步骤8:客户端接收登陆认证成功密文,解密获取认证成功信息,用户身份成功认证,客户端登录服务器。

本专利发明的目的在于解决用户通过客户端与服务端的密码认证安全风险,即确定用户身份的合法性,保护身份认证过程的安全,特别是用户密码和认证过程的安全。用户密码采用加动态盐的方式,且盐值由多种组成,在密码加盐哈希值传输过程分别采用非对称和对称加密运算,在避免密码直接传输的同时保证加盐哈希值传输的安全,服务端认证过程由rsa转3des加密密码加盐哈希值生成认证密文,通过对比认证密文进行密码认证,数据库通过服务端加解密模块按时间周期随机生成密钥加密,以上方案可有效的保证数据传输、密码认证和数据保存整个过程的安全性。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

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