一种安全授信方法及系统与流程

文档序号:11180379阅读:475来源:国知局
一种安全授信方法及系统与流程

本发明属于通信技术领域,涉及一种安全授信方法及系统。



背景技术:

现在貌似大多数网站用户认证主要包括两种方式:

一.基于session的用户认证

用户通过服务器的身份验证后,在服务器端生成用户相关的session数据,而将发给客户端session_id存放到cookie中。当客户端需要向服务器请求服务时,在发送至服务器的用户请求中带上session_id。服务器就可以根据session_id验证服务器端是否存在对应的session数据,以此完成用户认证。

二.基于token的用户认证

基于token的用户认证是一种服务器端无状态的认证方式,服务器端不用存放token数据。用户通过服务器的身份验证后,由服务器生成一个token(hash或encrypt,即哈希或加密)发给客户端。客户端可以放到cookie或localstorage中,客户端在发送给服务器的每个用户请求中附上token作为授信凭证,服务端在收到token以后进行授信凭证验证,通过验证后即可确认用户的身份。

上述两种认证方式,主要靠唯一的授信凭证发给客户端,客户端的每次用户请求都附带上session或token来保持、识别授信凭证。虽然每一个客户端上的session或token是唯一的,但是session或token在一定时间内也是固定不变的。在开放网络上,session或token很可能被恶意第三方截取盗用,并且附在自己的恶意请求上,使得恶意第三方可以冒充真正的用户向服务器发送恶意请求,服务器难以识别,威胁网络完全。

于是现有技术中,服务器每次先给客户端分配一个随机数,由客户端根据这个随机数加密或变换session或token信息,来使得客户端每次用户请求的授信凭证不一样。但是,这种技术方案的实现方式中,首先需要服务器产生并保持这个随机数并且将该随机数传送给客户端。因此,如果用于传送这个随机数的传送通道不安全,那么这个随机数仍然有可能被恶意的第三方截取盗用。



技术实现要素:

本发明为了解决上述技术问题,提出一种安全授信方法,其特征在于,包括:

步骤s1,客户端发送用户请求至服务器,所述用户请求包括请求内容和授信凭证,所述授信凭证包括根据所述请求内容加密生成的密文;

步骤s2,所述服务器接收所述用户请求,解密所述密文获得第一信息摘要,根据所述请求内容生成第二信息摘要;

步骤s3,如果所述第一信息摘要与所述第二信息摘要匹配,则所述服务器响应所述用户请求;如果所述第一信息摘要与所述第二信息摘要不匹配,则所述服务器拒绝所述用户请求。

作为优选,所述授信凭证包括用户名;所述步骤s1中,采用所述用户名对应的用户密码进行加密;所述步骤s2采用所述用户名对应的用户密码进行解密。

作为优选,所述步骤s1包括:

步骤s1-1,将所述请求内容进行摘要运算生成所述第一信息摘要;

步骤s1-2,将所述第一信息摘要用所述用户名对应的用户密码进行加密,得到所述密文;

步骤s1-3,将所述密文和所述用户名一起作为所述授信凭证;

步骤s1-4,发送包括所述请求内容和所述授信凭证的所述用户请求至所述服务器。

作为优选,所述步骤s2包括:

步骤s2-1,在所述服务器查找所述用户名对应的用户密码;

步骤s2-2,用所述用户密码解密所述密文获得所述第一信息摘要;将所述请求内容进行所述摘要运算生成所述第二信息摘要;

所述步骤s3中,所述第一信息摘要与所述第二信息摘要匹配是指所述第一信息摘要的请求内容与所述第二信息摘要的请求内容相同;所述第一信息摘要与所述第二信息摘要不匹配是指所述第一信息摘要的请求内容与所述第二信息摘要的请求内容不同。

作为优选,所述步骤s1包括:

步骤s1-1,将所述请求内容进行摘要运算生成所述第一信息摘要;

步骤s1-2,将所述第一信息摘要与请求时间合并为第一合并信息;

步骤s1-3,对所述第一合并信息用所述用户名对应的用户密码进行加密,得到所述密文;

步骤s1-4,将所述密文和所述用户名一起作为所述授信凭证;

步骤s1-5,发送包括所述请求内容和所述授信凭证的所述用户请求至所述服务器。

作为优选,所述步骤s2包括:

步骤s2-1,在所述服务器查找所述用户名对应的用户密码;

步骤s2-2,用所述用户密码解密所述密文获得所述第一合并信息并且提取所述第一合并信息中的所述第一信息摘要;将所述请求内容进行所述摘要运算生成所述第二信息摘要;

所述步骤s3中,所述第一信息摘要与所述第二信息摘要匹配是指所述第一信息摘要的请求内容与所述第二信息摘要的请求内容相同,并且所述接收时间与所述请求时间之间的时间差没有超出所述授信凭证的时效期;否则,所述第一信息摘要与所述第二信息摘要不匹配。

本发明还提供了一种安全授信系统,包括客户端和服务器,包括客户端和服务器,所述客户端发送附有授信凭证的用户请求至所述服务器以请求所述服务器提供服务;所述服务器对通过授信凭证验证的所述客户端提供服务;其特征在于:所述用户请求包括请求内容和授信凭证;

所述客户端包括客户端存储模块和授信凭证生成模块;所述客户端存储模块存储用户名及其所述用户名对应的用户密码,所述授信凭证生成模块生成包括根据所述请求内容加密的密文的授信凭证;所述授信凭证生成模块包括第一信息摘要生成单元、加密单元,所述第一信息摘要生成单元根据所述请求内容生成第一信息摘要,所述加密单元对所述第一信息摘要加密生成所述密文;

所述服务器包括用于存储用户名和用户密码对应关系的服务器存储模块、用于验证所述用户请求的授信凭证的授信凭证验证模块;所述授信凭证验证模块包括解密单元、第二信息摘要生成单元、匹配单元,所述解密单元解密所述密文并提取所述第一信息摘要;所述第二信息摘要生成单元根据所述请求内容生成第二信息摘要;所述匹配单元比较所述第一信息摘要和所述第二信息摘要是否匹配。

作为优选,所述授信凭证生成模块生成包括根据所述请求内容加密的密文和所述用户名的授信凭证;

所述加密单元采用所述用户名对应的用户密码对所述第一信息摘要加密生成所述密文;

所述解密单元采用所述用户名对应的用户密码对所述密文解密并提取所述第一信息摘要。

作为优选,所述加密单元对所述第一信息摘要和请求时间加密生成所述密文;

所述解密单元解密所述密文提取所述第一信息摘要和所述请求时间;

授信凭证验证模块包括时效性验证单元,所述时效性验证单元判断所述授信凭证的接收时间和所述请求时间之间的时间差是否超出所述授信凭证的时效期。

作为优选,所述授信凭证生成模块生成包括根据所述请求内容加密的密文和所述用户名的授信凭证;

所述加密单元采用所述用户名对应的用户密码对所述第一信息摘要和请求时间加密生成所述密文;

所述解密单元采用所述用户名对应的用户密码解密所述密文提取所述第一信息摘要和所述请求时间。

附图说明

图1是本发明实施例一的授信过程示意图。

图2是本发明实施例二的授信过程示意图。

具体实施方式

以下具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。

实施例一

如图1所示,一种安全授信系统,包括客户端和服务器。

客户端发送附有授信凭证的用户请求至服务器以请求服务器提供服务;服务器对通过授信凭证验证的客户端提供服务。

客户端的形式有多种,例如浏览器或者app应用,用户通过客户端浏览器或者客户端app应用进行用户登录,发送用户名和用户密码至服务器。客户端同时将用户输入的用户名和密码保存起来,客户端并不需要向服务器请求身份认证。服务器端存储有注册成功的用户的信息,该用户信息包括用户名和用户密码的对应关系。

具体的,客户端包括客户端存储模块和授信凭证生成模块。客户端存储模块中存储有用户信息,具体包括:用户名以及用户名对应的用户密码。授信凭证生成模块基于用户的请求内容生成包括根据用户的请求内容加密的密文的授信凭证。

授信凭证生成模块包括第一信息摘要生成单元、加密单元,第一信息摘要生成单元将用户的请求内容进行摘要运算以获得第一信息摘要。作为优选,本实施例中的摘要运算采用消息摘要算法(例如,messagedigestalgorithmmd5,消息摘要算法第五版)以获得固定长度的第一信息摘要,同时还具有容易计算、抗修改性和强抗碰撞的优点。加密单元将用户的用户密码作为key对由第一信息摘要生成单元得到的第一信息摘要进行加密得到密文。授信凭证生成模块将由加密单元生成的密文连同用户的用户名一起作为授信凭证。客户端将由授信凭证生成模块得到的授信凭证连同用户的本次请求的请求内容一起作为用户请求发送给服务器。

服务器包括服务器存储模块和授信凭证验证模块。服务器存储模块中存储有注册成功的用户信息,该用户信息包括:用户名、以及该用户名对应的用户密码。授信凭证验证模块用于验证用户请求的授信凭证,包括解密单元、第二信息摘要生成单元、以及匹配单元。解密单元根据用户的用户名在服务器存储模块中查找出用户的用户密码,利用该用户密码对负载授信凭证中的密文进行解密得到第一信息摘要。第二信息摘要生成单元将服务器接收到的来自客户端的用户请求中的请求内容进行摘要运算,此处的摘要运算算法应该与客户端的第一信息摘要生成单元所采用的算法保持一致。例如本实施例中的第二信息摘要生成单元应采用与第一信息摘要生成单元一致的消息摘要算法第五版。匹配单元则比较第二信息摘要生成单元获得的第二信息摘要和由解密单元对附在用户请求的授信凭证中的密文进行解密得到的第一信息摘要是否相同,如果第一信息摘要和第二信息摘要相同则表示它们是匹配的,服务器应响应客户端的用户请求;如果第一信息摘要和第二信息摘要不同则表示它们是不匹配的,服务器不应响应客户端的用户请求。

本实施例中,基于上述授信系统的授信方法如下,包括:

步骤s1,客户端发送用户请求至服务器,用户请求包括请求内容和授信凭证,授信凭证包括根据请求内容进行加密的密文。具体包括:

步骤s1-1,由客户端的第一信息摘要生成单元对用户的请求内容进行进行摘要运算(本实施例中为md5运算,即消息摘要算法第五版)生成第一信息摘要;

步骤s1-2,客户端的授信凭证生成模块的加密单元将用户的用户密码作为key对步骤s1-1中得到的第一信息摘要进行加密得到与第一信息摘要对应的密文;

步骤s1-3,客户端的授信凭证生成模块将加密单元在步骤s1-2中得到的密文和用户的用户名一起作为授信凭证。

步骤s1-4,客户端发送用户请求至服务器,该用户请求包括了用户本次请求的请求内容和由步骤s1-3得到的授信凭证。

步骤s2,服务器接收来自客户端的用户请求,解密用户请求的授信凭证中的密文获得第一信息摘要,并且根据该用户请求中的请求内容生成第二信息摘要。具体包括:

步骤s2-1,服务器通过授信凭证验证模块的解密单元根据用户的用户名在服务器的服务器存储模块中查找与该用户名对应的用户密码。

步骤s2-2,服务器的授信凭证验证模块通过解密单元利用步骤s2-1中得到的用户密码对用户请求的授信凭证中的密文进行解密得到第一信息摘要;服务器的授信凭证验证模块通过第二信息摘要生成单元根据用户请求中的请求内容进行摘要运算(本实施例中为md5运算,即消息摘要算法第五版)得到第二信息摘要。

步骤s3,服务器授信凭证验证模块的匹配单元比较步骤s2中得到的第一信息摘要和第二信息摘要是否相同。如果两者相同则表示第一信息摘要与第二信息摘要匹配,服务器应响应客户端的用户请求;如果两者不相同则表示第一信息摘要与第二信息摘要不匹配,服务器应拒绝客户端的用户请求。

本实施例客户端的每次用户请求的授信凭证都不同并且与每次请求的内容有密切关联。即使恶意第三方在开放网络上得到用户的授信凭证,也无法用来伪装自己的请求,安全可靠。

实施例二

如图2所示,一种安全授信系统,包括客户端和服务器。

客户端发送附有授信凭证的用户请求至服务器以请求服务器提供服务;服务器对通过授信凭证验证的客户端提供服务。

客户端的形式有多种,例如浏览器或者app应用,用户通过客户端浏览器或者客户端app应用进行用户登录,发送用户名和用户密码至服务器。客户端同时将用户输入的用户名和密码保存起来,客户端并不需要向服务器请求身份认证。服务器端存储有注册成功的用户的信息,该用户信息包括用户名和用户密码的对应关系。

具体的,客户端包括客户端存储模块和授信凭证生成模块。客户端存储模块中存储有用户信息,具体包括:用户名以及用户名对应的用户密码。授信凭证生成模块基于用户的请求内容生成包括根据用户的请求内容和请求时间加密的密文的授信凭证。

授信凭证生成模块包括第一信息摘要生成单元、加密单元,第一信息摘要生成单元将用户的请求内容进行摘要运算以获得第一信息摘要。作为优选,本实施例中的摘要运算采用消息摘要算法(例如,messagedigestalgorithmmd5,消息摘要算法第五版)以获得固定长度的第一信息摘要,同时还具有容易计算、抗修改性和强抗碰撞的优点。加密单元将用户的用户密码作为key对由第一信息摘要生成单元得到的第一信息摘要和用户的请求时间进行加密得到密文。授信凭证生成模块将由加密单元生成的密文连同用户的用户名一起作为授信凭证。客户端将由授信凭证生成模块得到的授信凭证连同用户的本次请求的请求内容一起作为用户请求发送给服务器。

服务器包括服务器存储模块和授信凭证验证模块。服务器存储模块中存储有注册成功的用户信息,该用户信息包括:用户名、以及该用户名对应的用户密码。授信凭证验证模块用于验证用户请求的授信凭证,包括解密单元、第二信息摘要生成单元、匹配单元、以及时效性验证单元。解密单元根据用户的用户名在服务器存储模块中查找出用户的用户密码,利用该用户密码对负载授信凭证中的密文进行解密得到第一信息摘要。第二信息摘要生成单元将服务器接收到的来自客户端的用户请求中的请求内容进行摘要运算,此处的摘要运算算法应该与客户端的第一信息摘要生成单元所采用的算法保持一致。例如本实施例中的第二信息摘要生成单元应采用与第一信息摘要生成单元一致的消息摘要算法第五版。匹配单元则比较第二信息摘要生成单元获得的第二信息摘要和由解密单元对附在用户请求的授信凭证中的密文进行解密得到的第一信息摘要是否相同,如果第一信息摘要和第二信息摘要相同则表示它们是匹配的;如果第一信息摘要和第二信息摘要不同则表示它们是不匹配的,服务器不应响应客户端的用户请求。时效性验证单元将比较由解密单元解密得到的请求时间与服务器接受到该用户请求的接收时间之间的时间差是否大于授信凭证的时效期30分钟:如果是,则表示该授信凭证已失效,服务器不应响应客户端的用户请求;如果不是,则表示该授信凭证仍有效,服务器应响应客户端的用户请求。

本实施例中,基于上述授信系统的授信方法如下,包括:

步骤s1,客户端发送用户请求至服务器,用户请求包括请求内容和授信凭证,授信凭证包括根据请求内容和用户的请求时间进行加密的密文。具体包括:

步骤s1-1,由客户端的第一信息摘要生成单元对用户的请求内容进行进行摘要运算(本实施例中为md5运算,即消息摘要算法第五版)生成第一信息摘要;

步骤s1-2,客户端的授信凭证生成模块的加密单元将用户的用户密码作为key对步骤s1-1中得到的第一信息摘要和用户的请求时间进行加密得到与第一信息摘要对应的密文;

步骤s1-3,客户端的授信凭证生成模块将加密单元在步骤s1-2中得到的密文和用户的用户名一起作为授信凭证。

步骤s1-4,客户端发送用户请求至服务器,该用户请求包括了用户本次请求的请求内容和由步骤s1-3得到的授信凭证。

步骤s2,服务器接收来自客户端的用户请求,解密用户请求的授信凭证中的密文获得第一信息摘要,并且根据该用户请求中的请求内容生成第二信息摘要。具体包括:

步骤s2-1,服务器通过授信凭证验证模块的解密单元根据用户的用户名在服务器的服务器存储模块中查找与该用户名对应的用户密码。

步骤s2-2,服务器的授信凭证验证模块通过解密单元利用步骤s2-1中得到的用户密码对用户请求的授信凭证中的密文进行解密得到第一信息摘要;服务器的授信凭证验证模块通过第二信息摘要生成单元根据用户请求中的请求内容进行摘要运算(本实施例中为md5运算,即消息摘要算法第五版)得到第二信息摘要。

步骤s3,服务器授信凭证验证模块的匹配单元比较步骤s2中得到的第一信息摘要和第二信息摘要是否相同。如果两者相同则表示第一信息摘要与第二信息摘要匹配,服务器应响应客户端的用户请求进入步骤s4;如果两者不相同则表示第一信息摘要与第二信息摘要不匹配,服务器应拒绝客户端的用户请求。

步骤s4,时效性验证单元将比较由解密单元解密得到的请求时间与服务器接受到该用户请求的接收时间之间的时间差是否大于授信凭证的时效期30分钟:如果是,则表示该授信凭证已失效,服务器不应响应客户端的用户请求;如果不是,则表示该授信凭证仍有效,服务器应响应客户端的用户请求。

本实施例除了提供与一次性的与请求内容相关的授信凭证以后,还在实施例一的基础上为授信凭证设置有时效,服务器需要进一步对授信凭证的时效性进行验证,更加安全可靠。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

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