一种web应用的登录认证方法及系统转让专利

申请号 : CN201210258820.1

文献号 : CN103581121A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李勇

申请人 : 深圳中兴网信科技有限公司

摘要 :

本发明公开一种web应用的登录认证方法,包括:收到用户的登录请求后,浏览器利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;web服务器根据保存的用户信息和收到的认证信息,进行登录认证;本发明还提供一种web应用的登录认证系统。根据本发明的技术方案,能够防止数据篡改、窃听攻击、小数攻击、字典攻击、重放攻击和拒绝服务攻击。

权利要求 :

1.一种web应用的登录认证系统,其特征在于,该系统包括:浏览器、web服务器;其中,浏览器,用于收到用户的登录请求后,利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;

web服务器,用于根据保存的用户信息和收到的认证信息,进行登录认证。

2.根据权利要求1所述的系统,其特征在于,该系统还包括:用户身份数据库;其中,所述浏览器,还用于利用web服务器提供的两个随机数得到认证信息之前,接收用户注册web应用的请求,将注册时的用户数据发送给web服务器;

所述web服务器,还用于利用随机数对收到的用户数据进行初始化;

所述用户身份数据库,用于保存初始化后得到的用户信息。

3.根据权利要求1所述的系统,其特征在于,

所述web服务器,还用于更新用户身份数据库中原先保存的用户信息。

4.一种web应用的登录认证方法,其特征在于,该方法包括:

收到用户的登录请求后,浏览器利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;

web服务器根据保存的用户信息和收到的认证信息,进行登录认证。

5.根据权利要求4所述的方法,其特征在于,所述浏览器利用web服务器提供的两个随机数得到认证信息之前,该方法还包括:浏览器接收用户注册web应用的请求,将注册时的用户数据发送给web服务器;

web服务器利用随机数对收到的用户数据进行初始化,并保存初始化后得到的用户信息。

6.根据权利要求5所述的方法,其特征在于,所述用户数据至少包括用户身份标识UID和初始密码P。

7.根据权利要求6所述的方法,其特征在于,所述web服务器利用随机数对收到的用户数据进行初始化,并保存初始化后得到的用户信息为:利用公式H_UID=SHA1(UID+key),计算虚拟账号H_UID;其中,SHA1表示利用哈希算法计算虚拟账号H_UID;key为web服务器存储的总密钥;

利用公式H_PWD=SHA1(SHA1(UID+R1+P))计算虚拟密码H_PWD;其中,R1为web服务器随机产生的随机数;

将初始化处理后得到的用户信息发送给用户身份数据库进行保存;所述用户信息包括用户身份标识UID、虚拟账号H_UID、随机数R1、虚拟密码H_PWD。

8.根据权利要求4所述的方法,其特征在于,所述浏览器利用web服务器提供的两个随机数得到认证信息为:浏览器向web服务器请求web URL登录页面,web服务器将生成的随机数R、总密钥key与web URL登录页面发送给浏览器;

浏览器根据用户输入的用户身份标识UID和收到的总密钥key,利用公式H_UID=SHA1(UID+key)计算虚拟账号H_UID,并将计算出的虚拟账号H_UID发送给web服务器;web服务器根据收到的虚拟账号H_UID,从用户身份数据库获取与所述虚拟账号H_UID对应的随机数R1,将所述随机数R1返回给浏览器;

浏览器根据用户输入的初始密码、随机数R、随机数R1以及用户身份标识UID,利用公式h1=SHA1(UID+R1+P)、h2=SHA1(SHA1(UID+R+P))、h3=SHA1(h1+R+h2),计算认证信息;所述认证信息包括虚拟密码h1、虚拟密码h2和校验码h3。

9.根据权利要求4所述的方法,其特征在于,所述web服务器根据保存的用户信息和收到的认证信息,进行登录认证为:web服务器根据收到的认证信息中的虚拟密码h1、虚拟密码h2以及先前产生的随机数R,利用公式h3=SHA1(h1+R+h2)计算校验码h3,将计算出的h3与认证信息中的校验码h3进行比对,计算出的校验码h3与收到的认证信息中的校验码h3相同时,完整性的认证成功;

完整性的认证成功后,从用户身份数据库中获取用户信息,再根据虚拟密码h1,利用公式H_PWD=SHA1(h1)计算虚拟密码H_PWD,计算出的虚拟密码H_PWD与获取的用户信息中的虚拟密码H_PWD相同时,登录认证成功,向浏览器返回登录认证成功的响应。

10.根据权利要求4所述的方法,其特征在于,该方法还包括:web服务器更新原先保存的用户信息。

11.根据权利要求10所述的方法,其特征在于,所述web服务器更新原先保存的用户信息为:登录认证成功后,web服务器刷新用户身份数据库中原先保存的用户信息,用随机数R和虚拟密码h2分别替换用户身份数据库中原先保存的用户信息中的随机数R1和虚拟密码H_PWD。

说明书 :

一种web应用的登录认证方法及系统

技术领域

[0001] 本发明涉及互联网技术,尤其涉及一种web应用的登录认证方法及系统。

背景技术

[0002] 随着互联网技术的飞速发展,web应用不断普及,实现基于web应用的登录认证时,用户信息的安全性变得越来越重要。传统的web应用的登录认证,是将用户输入的身份信息和密码传到web服务器,通过与web服务器存储的数据进行比对,来确认用户身份的合法性。
[0003] 目前这种web应用的登录认证方法存在致命的缺陷,身份信息和密码容易被窃取,从而招致攻击者的重放攻击。针对这种缺陷,现有技术中,存在以下几种解决方案:
[0004] 第一种,采用基于证书的数字签名认证技术保护用户信息,虽然安全性较高,但必须以完善的公用证书系统为基础,因此技术实现较复杂,成本较高,仅适用于大型的网络应用系统。
[0005] 第二种,是采用传统的动态口令(OTP,One-Time Password)机制在登录认证过程中加入不确定因素,使用户每次登录时传送的密码都不同,从而提高用户信息的安全性。但是现有的一次性密码机制越来越多地暴露出易被猜测、被篡改和被分析等脆弱性。例如,挑战/响应机制中,密码以某种形式静态存储在服务器,容易被分析;用户登录认证时需要利用安全套接层(SSL,Secure Sockets Layer)等额外保护措施,而SSL需要花费较高的费用去购买,给用户带来经济负担,同时影响系统认证处理性能。
[0006] 第三种,是采用口令序列机制,这种方法容易受到小数攻击。由于这种机制中,机制种子值和迭代值都是以明文传输,攻击者利用假冒服务器可以窃听这2个值,将窃到的迭代值修改为较小的值发送给用户,用户使用攻击者发来的种子值和较小迭代值计算出动态口令传送给服务器。此时,攻击者截获这个动态口令,并使用已知哈希算法依次计算较大迭代值的动态口令,从而获得用户后继的一系列口令。另外,这种机制浏览器侧需要多次计算hash值,计算量较大。

发明内容

[0007] 有鉴于此,本发明的主要目的在于提供一种web应用的登录认证方法及系统,能够防止数据篡改、窃听攻击、小数攻击、字典攻击、重放攻击和拒绝服务攻击。
[0008] 为达到上述目的,本发明的技术方案是这样实现的:
[0009] 本发明提供一种web应用的登录认证系统,包括:浏览器、web服务器;其中,[0010] 浏览器,用于收到用户的登录请求后,利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;
[0011] web服务器,用于根据保存的用户信息和收到的认证信息,进行登录认证。
[0012] 上述系统中,该系统还包括:用户身份数据库;其中,
[0013] 所述浏览器,还用于利用web服务器提供的两个随机数得到认证信息之前,接收用户注册web应用的请求,将注册时的用户数据发送给web服务器;
[0014] 所述web服务器,还用于利用随机数对收到的用户数据进行初始化;
[0015] 所述用户身份数据库,用于保存初始化后得到的用户信息。
[0016] 上述系统中,
[0017] 所述web服务器,还用于更新用户身份数据库中原先保存的用户信息。
[0018] 本发明还提供一种web应用的登录认证方法,包括:
[0019] 收到用户的登录请求后,浏览器利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;
[0020] web服务器根据保存的用户信息和收到的认证信息,进行登录认证。
[0021] 上述方法中,所述浏览器利用web服务器提供的两个随机数得到认证信息之前,该方法还包括:
[0022] 浏览器接收用户注册web应用的请求,将注册时的用户数据发送给web服务器;
[0023] web服务器利用随机数对收到的用户数据进行初始化,并保存初始化后得到的用户信息。
[0024] 上述方法中,所述用户数据至少包括用户身份标识UID和初始密码P。
[0025] 上述方法中,所述web服务器利用随机数对收到的用户数据进行初始化,并保存初始化后得到的用户信息为:
[0026] 利用公式H_UID=SHA1(UID+key),计算虚拟账号H_UID;其中,SHA1表示利用哈希算法计算虚拟账号H_UID;key为web服务器存储的总密钥;
[0027] 利用公式H_PWD=SHA1(SHA1(UID+R1+P))计算虚拟密码H_PWD;其中,R1为web服务器随机产生的随机数;
[0028] 将初始化处理后得到的用户信息发送给用户身份数据库进行保存;所述用户信息包括用户身份标识UID、虚拟账号H_UID、随机数R1、虚拟密码H_PWD。
[0029] 上述方法中,所述浏览器利用web服务器提供的两个随机数得到认证信息为:
[0030] 浏览器向web服务器请求web URL登录页面,web服务器将生成的随机数R、总密钥key与web URL登录页面发送给浏览器;
[0031] 浏览器根据用户输入的用户身份标识UID和收到的总密钥key,利用公式H_UID=SHA1(UID+key)计算虚拟账号H_UID,并将计算出的虚拟账号H_UID发送给web服务器;web服务器根据收到的虚拟账号H_UID,从用户身份数据库获取与所述虚拟账号H_UID对应的随机数R1,将所述随机数R1返回给浏览器;
[0032] 浏览器根据用户输入的初始密码、随机数R、随机数R1以及用户身份标识UID,利用公式h1=SHA1(UID+R1+P)、h2=SHA1(SHA1(UID+R+P))、h3=SHA1(h1+R+h2),计算认证信息;所述认证信息包括虚拟密码h1、虚拟密码h2和校验码h3。
[0033] 上述方法中,所述web服务器根据保存的用户信息和收到的认证信息,进行登录认证为:
[0034] web服务器根据收到的认证信息中的虚拟密码h1、虚拟密码h2以及先前产生的随机数R,利用公式h3=SHA1(h1+R+h2)计算校验码h3,将计算出的h3与认证信息中的校验码h3进行比对,计算出的校验码h3与收到的认证信息中的校验码h3相同时,完整性的认证成功;
[0035] 完整性的认证成功后,从用户身份数据库中获取用户信息,再根据虚拟密码h1,利用公式H_PWD=SHA1(h1)计算虚拟密码H_PWD,计算出的虚拟密码H_PWD与获取的用户信息中的虚拟密码H_PWD相同时,登录认证成功,向浏览器返回登录认证成功的响应。
[0036] 上述方法中,该方法还包括:web服务器更新原先保存的用户信息。
[0037] 上述方法中,所述web服务器更新原先保存的用户信息为:
[0038] 登录认证成功后,web服务器刷新用户身份数据库中原先保存的用户信息,用随机数R和虚拟密码h2分别替换用户身份数据库中原先保存的用户信息中的随机数R1和虚拟密码H_PWD。
[0039] 本发明提供的web应用的登录认证方法及系统,收到用户的登录请求后,浏览器利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;web服务器根据保存的用户信息和收到的认证信息,进行登录认证,如此,利用两个随机数参与用户登录认证过程,能够防止数据篡改、窃听攻击、小数攻击、字典攻击、重放攻击和拒绝服务攻击。此外,用户身份标识和初始密码不在网络进行直接传输,数据库不保存静态密码,仅保存根据随机数计算的动态虚拟密码,能够提高用户信息的安全性,而且系统开销少,适合轻量级的用户进行登录认证,满足用户对web应用的安全认证的需求。

附图说明

[0040] 图1是本发明实现web应用的登录认证系统的结构示意图;
[0041] 图2是本发明实现web应用的登录认证方法的流程示意图。

具体实施方式

[0042] 本发明的基本思想是:收到用户的登录请求后,浏览器利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器;web服务器根据保存的用户信息和收到的认证信息,进行登录认证。
[0043] 下面通过附图及具体实施例对本发明再做进一步的详细说明。
[0044] 本发明提供一种web应用的登录认证系统,图1是本发明实现web应用的登录认证系统的结构示意图,如图1所示,该系统包括:浏览器10、web服务器20;其中,[0045] 浏览器10,用于收到用户的登录请求后,利用web服务器20提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器20;
[0046] web服务器20,用于根据保存的用户信息和收到的认证信息,进行登录认证。
[0047] 该系统还包括:用户身份数据库30;其中,
[0048] 所述浏览器10,还用于利用web服务器20提供的两个随机数得到认证信息之前,接收用户注册web应用的请求,将注册时的用户数据发送给web服务器20;
[0049] 所述web服务器20,还用于利用随机数对收到的用户数据进行初始化;
[0050] 所述用户身份数据库30,用于保存初始化后得到的用户信息。
[0051] 所述web服务器20,还用于更新用户身份数据库30中原先保存的用户信息。
[0052] 所述浏览器10进一步包括:注册模块11、请求模块12和登录模块13;其中,[0053] 注册模块11,用于接收用户注册web应用的请求,将注册时的用户数据发送给web服务器;
[0054] 请求模块12,用于接收用户的登录请求,然后向web服务器请求web URL登录页面;
[0055] 登录模块13,用于利用web服务器提供的两个随机数得到认证信息,并将所述认证信息发送给web服务器。
[0056] 所述web服务器20进一步包括:处理模块21、登录模块22、认证模块23、更新模块24;其中,
[0057] 处理模块21,用于利用随机数对收到的用户数据进行初始化,将初始化处理后得到的用户信息发送给用户身份数据库30进行保存;
[0058] 登录模块22,用于将生成的随机数R、总密钥key与web URL登录页面发送给浏览器10;还用于根据收到的虚拟账号H_UID,从用户身份数据库获取与所述虚拟账号H_UID对应的随机数R1,将所述随机数R1返回给浏览器10;
[0059] 认证模块23,用于根据保存的用户信息和收到的认证信息,进行登录认证;
[0060] 更新模块24,用于更新原先保存的用户信息。
[0061] 为实现上述系统,本发明还提供一种web应用的登录认证方法,图2是本发明实现web应用的登录认证方法的流程示意图,如图2所示,该方法包括以下步骤:
[0062] 步骤201,浏览器接收用户注册web应用的请求,将注册时的用户数据发送给web服务器;
[0063] 具体的,浏览器的注册模块接收用户注册web应用的请求,注册过程中,注册模块接收用户输入的用户数据,并将收到的用户数据发送给web服务器;所述web应用指的是服务商提供的基于网页的应用程序,如网站、邮箱等;所述用户数据包括用户身份标识UID、初始密码P、邮箱等注册过程中用户输入的相关信息。
[0064] 步骤202,web服务器利用随机数对收到的用户数据进行初始化,并保存初始化后得到的用户信息;
[0065] 具体的,web服务器的处理模块收到浏览器的注册模块发送的用户数据,或web服务器的处理模块收到从后台批量导入的用户数据后,对用户数据进行初始化处理;
[0066] 所述处理模块进行的初始化处理具体包括:首先,利用公式H_UID=SHA1(UID+key),计算虚拟账号H_UID,其中,SHA1表示利用哈希算法计算虚拟账号H_UID;UID为收到的用户数据中的用户身份标识,该UID在后面的登录认证时不在网络中传输,如此,可以在登录认证过程中对用户身份标识UID进行保护;key为总密钥,用于登录认证时保护用户身份标识UID的安全性,存储在web服务器的存储模块中;然后,利用公式H_PWD=SHA1(SHA1(UID+R1+P))计算虚拟密码H_PWD;其中,P为用户数据中的初始密码,是真实的用户密码,在后面的登录认证时不在网络中传输;R1为4位的随机数,在计算虚拟密码H_PWD时由web服务器的处理模块随机产生;
[0067] 处理模块将初始化处理后得到的用户信息发送给用户身份数据库,由用户身份数据库保存该用户信息,其中,用户信息包括用户身份标识UID、虚拟账号H_UID、随机数R1、虚拟密码H_PWD。
[0068] 步骤203,收到用户的登录请求后,浏览器利用web服务器提供的两个随机数得到认证信息,并将该认证信息发送给web服务器;
[0069] 具体的,浏览器的请求模块通过http协议向web服务器请求web URL登录页面;web服务器的登录模块接收请求,并向浏览器返回web URL登录页面;浏览器的请求模块根据收到的web URL登录页面,可以从web服务器下载页面登录控件,下载后的页面登录控件作为浏览器的登录模块;同时,web服务器的登录模块生成随机数R,将随机数R与总密钥key与web URL登录页面一起返回给浏览器;
[0070] 浏览器的登录模块根据用户输入的用户身份标识UID和收到的总密钥key,利用公式H_UID=SHA1(UID+key)计算虚拟账号H_UID,并将计算出的虚拟账号H_UID发送给web服务器;web服务器的登录模块根据收到的虚拟账号H_UID,从用户身份数据库中保存的用户信息中,获取与该虚拟账号H_UID对应的随机数R1,将该随机数R1返回给浏览器;
[0071] 浏览器的登录模块根据用户输入的初始密码、随机数R、随机数R1以及用户身份标识UID,利用公 式h1=SHA1(UID+R1+P)、h2=SHA1(SHA1(UID+R+P))、h3=SHA1(h1+R+h2),计算认证信息,该认证信息包括虚拟密码h1、虚拟密码h2和校验码h3,浏览器的登录模块将计算出的认证信息发送给web服务器。
[0072] 步骤204,web服务器根据保存的用户信息和收到的认证信息,进行登录认证;
[0073] 具体的,web服务器的认证模块接收浏览器发送的认证信息,首先进行完整性的认证,根据收到的认证信息中的虚拟密码h1、虚拟密码h2以及先前产生的随机数R,利用公式h3=SHA1(h1+R+h2)计算校验码h3,将计算出的h3与认证信息中的校验码h3进行比对,如果认证模块计算出的校验码h3与收到的认证信息中的校验码h3相同,表示传输过程中,web服务器与浏览器之间交互的数据都没有被篡改,数据是完整的,因此完整性的认证成功;如果认证模块计算出的校验码h3与收到的认证信息中的校验码h3不同,表示传输过程中,web服务器与浏览器之间交互的数据中存在被篡改的数据,数据不完整,完整性的认证失败,认证模块向浏览器的登录模块返回登录认证失败的响应,用户不能登录web应用,结束流程;
[0074] 完整性的认证成功后,还需要进一步验证虚拟密码的正确性,认证模块先从用户身份数据库中获取用户信息,再根据虚拟密码h1,利用公式H_PWD=SHA1(h1)计算虚拟密码H_PWD,如果计算出的虚拟密码H_PWD与获取的用户信息中的虚拟密码H_PWD相同,则认为虚拟密码正确,登录认证成功,认证模块向浏览器的登录模块返回登录认证成功的响应,用户可以正常登录web应用;如果计算出的虚拟密码H_PWD与获取的用户信息中的虚拟密码H_PWD不同,则认为虚拟密码不正确,登录认证失败,认证模块向浏览器的登录模块返回登录认证失败的响应,用户不能登录web应用,结束流程。
[0075] 步骤205,web服务器更新原先保存的用户信息;
[0076] 具体的,如果登录认证成功,则web服务器的更新模块需要刷新用户身份数据库中原先保存的用户信息,用随机数R和虚拟密码h2分别替换用户身份数据库中原先保存的用户信息中的随机数R1和虚拟密码H_PWD;如此,利用随机数进行虚拟密码的运算,使得用户身份数据库中的虚拟密码能够动态刷新,提高用户信息的安全性。
[0077] 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。