本发明数据安全技术领域,尤其涉及一种身份认证方法及系统。
背景技术:
随着越来越多的网页应用,手机应用,如何储存用户的账号密码成为一个重要问题。由于时常爆出数据库被脱库,以及不安全的储存方式导致库中账号密码泄露,造成了用户的巨大损失。同时随着欧盟的GDPR(General Data Protection Regulation,通用数据保护条例)的生效,人们更加关注自身的数据安全,各公司也关心自己的安全措施是否符合法律法规。
目前,现有技术最接近的是Linux中通过公私钥来登录。用户保存一份私钥,服务端存着对应的公钥,通过公私钥的方法就可以不使用密码登录。服务端发送一串字符,用户加密后返回给服务端,服务端解密后对比是否一致,如果一致,就登录成功。另一种技术就是通过交互式零知识证明来完成身份认证,但是交互式需要客户端与服务端交互更多的次数,并且过程中没有随机因素,无法防止重放攻击。
因此,如何减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性,提高认证的安全性,是一项亟待解决的问题。
技术实现要素:
有鉴于此,本发明提供了一种身份认证方法,能够有效减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性和提高认证的安全性。
本发明提供了一种身份认证方法,应用于客户端,所述方法包括:
将密码转化成椭圆曲线上的一个值x,其中,0<x<n,n为椭圆曲线基点g的阶;
计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存,其中,g为椭圆曲线上的基点,[x]g为g的x倍点;
生成登录请求;
接收所述服务端在接收到所述登录请求后产生的随机数m;
基于所述随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*;
产生随机数w;
基于所述随机数w,通过哈希算法输出结果c,r;
将所述结果c,r发送至所述服务端,所述结果c,r用于所述服务端进行认证。
优选地,所述基于所述随机数w,通过哈希算法输出结果r,c,包括:基于所述随机数w,通过公式W=[w]g计算W;
通过公式c=Hash(W,pub*)计算c;
基于公式r=w-c(x+m)mod(n)输出结果r,其中,n为椭圆曲线基点g的阶。
一种身份认证方法,应用于服务端,所述方法包括:
保存客户端发送的公钥信息pub;
接收客户端生成的登录请求;
基于所述登录请求产生的随机数m;
发送所述随机数m至所述客户端;
基于所述登录请求,根据唯一的登录名查找到存储的所述pub;
基于所述随机数m和所述pub计算登录依据pub*;
接收所述客户端基于所述随机数m通过哈希算法输出的结果r,c;
基于所述结果r,c,通过哈希算法进行身份认证。
优选地,所述基于所述随机数m和所述pub计算登录依据pub*,包括:
根据公式pub*=pub+[m]g(mod q)计算登录依据pub*。
优选地,所述基于所述结果r,c,通过哈希算法进行身份认证,包括:
判断Hash([r]g+[c]pub*,pub*)是否等于c,若是,则身份认证成功,若否,则身份认证失败。
一种身份认证系统,应用于客户端,所述系统包括:
转化模块,用于将密码转化成椭圆曲线上的一个值x,其中,0<x<n,n为椭圆曲线基点g的阶;
第一计算模块,用于计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存,其中,g为椭圆曲线上的基点,[x]g为g的x倍点;
第一生成模块,用于生成登录请求;
接收模块,用于接收所述服务端在接收到所述登录请求后产生的随机数m;
第二计算模块,用于基于所述随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*;
第二生成模块,用于产生随机数w;
第三计算模块,用于基于所述随机数w,通过哈希算法输出结果r,c;
发送模块,用于将所述结果r,c发送至所述服务端,所述结果r,c用于所述服务端进行认证。
优选地,所述第三计算模块在执行基于所述随机数w,通过哈希算法输出结果r,c时,具体用于:
基于所述随机数w,通过公式W=[w]g计算W;
通过公式c=Hash(W,pub*)计算c;
基于公式r=w-c(x+m)mod(n)输出结果r,其中,n为椭圆曲线基点g的阶。
一种身份认证系统,应用于服务端,所述系统包括:
存储模块,用于保存客户端发送的公钥信息pub;
第一接收模块,用于接收客户端生成的登录请求;
生成模块,用于基于所述登录请求产生的随机数m;
发送模块,用于发送所述随机数m至所述客户端;
查找模块,用于基于所述登录请求,根据唯一的登录名查找到存储的所述pub;
计算模块,用于基于所述随机数m和所述pub计算登录依据pub*;
第二接收模块,用于接收所述客户端基于所述随机数m通过哈希算法输出的结果r,c;
认证模块,用于基于所述结果r,c,通过哈希算法进行身份认证。
优选地,所述计算模块在执行基于所述随机数m和所述pub计算登录依据pub*时,具体用于:
根据公式pub*=pub+[m]g(mod q)计算登录依据pub*。
优选地,所述认证模块在执行基于所述结果r,c,通过哈希算法进行身份认证时,具体用于:
判断Hash([r]g+[c]pub*,pub*)是否等于c,若是,则身份认证成功,若否,则身份认证失败。
综上所述,本发明公开了一种身份认证方法,应用于客户端,当需要进行身份认证时,首先将密码转化成椭圆曲线上的一个值x,然后计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存,生成登录请求,接收服务端在接收到登录请求后产生的随机数m,基于随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*,产生随机数w;基于随机数w,通过哈希算法输出结果r,c,将结果r,c发送至服务端,结果r,c用于服务端进行认证。本发明能够有效减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性和提高认证的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种身份认证方法实施例1的方法流程图;
图2为本发明公开的一种身份认证方法实施例2的方法流程图;
图3为本发明公开的一种身份认证系统实施例1的结构示意图;
图4为本发明公开的一种身份认证系统实施例2的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明公开的一种身份认证方法实施例1的方法流程图,所述方法应用于客户端,所述方法可以包括以下步骤:
S101、将密码转化成椭圆曲线上的一个值x;
当需要进行身份认证时,在客户端将密码转化成椭圆曲线上的一个值x,其中,0<x<n,n为椭圆曲线基点g的阶,g为椭圆曲线的一个基点。
S102、计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存;
当将密码转化成椭圆曲线上的一个值x后,根据x计算[x]g的值,得到计算结果公钥信息pub。然后将计算得到的结果公钥信息pub发送至服务端,服务端将接收到的结果公钥信息pub进行存储,其中,[x]g为g的x倍点。
S103、生成登录请求;
由客户端发起登录请求,即由客户端生成登录请求。
S104、接收服务端在接收到登录请求后产生的随机数m;
服务端在接收到客户端发起的登录请求后,根据唯一的登录名查找到存储的pub,产生随机数m,根据公式pub*=pub+[m]g(mod q)在服务端计算登录依据pub*,并将产生的随机数m返回至客户端,客户端接收该随机数m。
S105、基于随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*;
客户端在接收到服务端返回的随机数m后,根据接收到的随机数m在客户端计算本轮登录需要的新公钥pub*。具体的,在根据接收到的随机数m在客户端计算本轮登录需要的新公钥pub*时,具体可以根据公式pub*=[x+m]g进行计算。
S106、产生随机数w;
进一步在客户端产生随机数w。
S107、基于随机数w,通过哈希算法输出结果r,c;
根据产生的随机数w,通过公式W=[w]g计算出W,然后根据公式c=Hash(W,pub*)计算出c,然后根据公式r=w-c(x+m)mod(n)输出结果r,其中,n为椭圆曲线基点g的阶。
S108、将结果r,c发送至服务端,其中,结果r,c用于服务端进行认证。
客户端将结果r,c发送至服务端,服务端根据接收到的结果r,c,通过哈希算法进行身份认证。具体的,判断Hash([r]g+[c]pub*,pub*)是否等于c,若是,则身份认证成功,若否,则身份认证失败。其中,pub*为根据公式pub*=pub+[m]g(mod q)在服务端计算出的登录依据。
综上所述,在上述实施例中,应用于客户端,当需要进行身份认证时,首先将密码转化成椭圆曲线上的一个值x,然后计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存,生成登录请求,接收服务端在接收到登录请求后产生的随机数m,基于随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*,产生随机数w;基于随机数w,通过哈希算法输出结果r,c,将结果r,c发送至服务端,结果r,c用于服务端进行认证。本发明能够有效减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性和提高认证的安全性。
如图2所示,为本发明公开的一种身份认证方法实施例2的方法流程图,所述方法应用于服务端,所述方法可以包括以下步骤:
S201、保存客户端发送的公钥信息pub;
当需要进行身份认证时,在客户端将密码转化成椭圆曲线上的一个值x,其中,0<x<n,n为基点g的阶,g为椭圆曲线的一个基点。当将密码转化成椭圆曲线上的一个值x后,根据x计算[x]g的值,得到计算结果公钥信息pub。然后将计算得到的结果公钥信息pub发送至服务端,服务端将接收到的结果公钥信息pub进行存储,其中,[x]g为g的x倍点。
S202、接收客户端生成的登录请求;
由客户端发起登录请求,即由客户端生成登录请求,服务端接收由客户端生成的登录请求。
S203、基于登录请求产生的随机数m;
服务端在接收到客户端发起的登录请求后,产生随机数m。
S204、发送随机数m至客户端;
并将产生的随机数m发送至客户端。
S205、基于登录请求,根据唯一的登录名查找到存储的pub;
同时,服务端在接收到客户端发起的登录请求后,根据唯一的登录名查找到存储的pub。
S206、基于随机数m和pub计算登录依据pub*;
并根据公式pub*=pub+[m]g(mod q)在服务端计算登录依据pub*。
S207、接收客户端基于随机数m通过哈希算法输出的结果r,c;
客户端在接收到服务端返回的随机数m后,根据接收到的随机数m在客户端根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*。进一步在客户端产生随机数w,根据产生的随机数w,通过公式W=[w]g计算出W,然后根据公式c=Hash(W,pub*)计算出c,然后根据公式r=w-c(x+m)mod(n)输出结果r,客户端将结果r,c发送至服务端,服务端接收由客户端发送的结果r,c。
S208、基于结果r,c,通过哈希算法进行身份认证。
服务端根据接收到的结果r,c,通过哈希算法进行身份认证。具体的,判断Hash([r]g+[c]pub*,pub*)是否等于c,若是,则身份认证成功,若否,则身份认证失败。其中,pub*为根据公式pub*=pub+[m]g(mod q)在服务端计算出的登录依据。
综上所述,在上述实施例中,应用于服务端,当需要进行身份认证时,首先保存客户端发送的公钥信息pub,然后接收客户端生成的登录请求,基于登录请求产生的随机数m,发送所随机数m至客户端,基于登录请求,根据唯一的登录名查找到存储的所述pub,基于随机数m和pub计算登录依据pub*,接收客户端基于随机数m通过哈希算法输出的结果r,c;基于结果r,c,通过哈希算法进行身份认证。本发明能够有效减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性和提高认证的安全性。
如图3所示,为本发明公开的一种身份认证系统实施例1的结构示意图,所述系统应用于客户端,所述系统可以包括:
转化模块301,用于将密码转化成椭圆曲线上的一个值x;
当需要进行身份认证时,在客户端将密码转化成椭圆曲线上的一个值x,其中,0<x<n,n为椭圆曲线基点g的阶,g为椭圆曲线的一个基点。
第一计算模块302,用于计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存;
当将密码转化成椭圆曲线上的一个值x后,根据x计算[x]g的值,得到计算结果公钥信息pub。然后将计算得到的结果公钥信息pub发送至服务端,服务端将接收到的结果公钥信息pub进行存储,其中,[x]g为g的x倍点。
第一生成模块303,用于生成登录请求;
由客户端发起登录请求,即由客户端生成登录请求。
接收模块304,用于接收服务端在接收到登录请求后产生的随机数m;
服务端在接收到客户端发起的登录请求后,根据唯一的登录名查找到存储的pub,产生随机数m,根据公式pub*=pub+[m]g(mod q)在服务端计算登录依据pub*,并将产生的随机数m返回至客户端,客户端接收该随机数m。
第二计算模块305,用于基于随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*;
客户端在接收到服务端返回的随机数m后,根据接收到的随机数m在客户端计算本轮登录需要的新公钥pub*。具体的,在根据接收到的随机数m在客户端计算本轮登录需要的新公钥pub*时,具体可以根据公式pub*=[x+m]g进行计算。
第二生成模块306,用于产生随机数w;
进一步在客户端产生随机数w。
第三计算模块307,用于基于随机数w,通过哈希算法输出结果r,c;
根据产生的随机数w,通过公式W=[w]g计算出W,然后根据公式c=Hash(W,pub*)计算出c,然后根据公式r=w-c(x+m)mod(n)输出结果r,其中,n为椭圆曲线基点g的阶。
发送模块308,用于将结果r,c发送至服务端,其中,结果r,c用于服务端进行认证。
客户端将结果r,c发送至服务端,服务端根据接收到的结果r,c,通过哈希算法进行身份认证。具体的,判断Hash([r]g+[c]pub*,pub*)是否等于c,若是,则身份认证成功,若否,则身份认证失败。其中,pub*为根据公式pub*=pub+[m]g(mod q)在服务端计算出的登录依据。
综上所述,在上述实施例中,应用于客户端,当需要进行身份认证时,首先将密码转化成椭圆曲线上的一个值x,然后计算[x]g的值,并将计算结果公钥信息pub发送至服务端进行保存,生成登录请求,接收服务端在接收到登录请求后产生的随机数m,基于随机数m,根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*,产生随机数w;基于随机数w,通过哈希算法输出结果r,c,将结果r,c发送至服务端,结果r,c用于服务端进行认证。本发明能够有效减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性和提高认证的安全性。
如图4所示,为本发明公开的一种身份认证系统实施例2的结构示意图,所述系统应用于服务端,所述系统可以包括:
存储模块401,用于保存客户端发送的公钥信息pub;
当需要进行身份认证时,在客户端将密码转化成椭圆曲线上的一个值x,其中,0<x<n,n为基点g的阶,g为椭圆曲线的一个基点。当将密码转化成椭圆曲线上的一个值x后,根据x计算[x]g的值,得到计算结果公钥信息pub。然后将计算得到的结果公钥信息pub发送至服务端,服务端将接收到的结果公钥信息pub进行存储,其中,[x]g为g的x倍点。
第一接收模块402,用于接收客户端生成的登录请求;
由客户端发起登录请求,即由客户端生成登录请求,服务端接收由客户端生成的登录请求。
生成模块403,用于基于登录请求产生的随机数m;
服务端在接收到客户端发起的登录请求后,产生随机数m。
发送模块404,用于发送随机数m至客户端;
并将产生的随机数m发送至客户端。
查找模块405,用于基于登录请求,根据唯一的登录名查找到存储的pub;
同时,服务端在接收到客户端发起的登录请求后,根据唯一的登录名查找到存储的pub。
计算模块406,用于基于随机数m和pub计算登录依据pub*;
并根据公式pub*=pub+[m]g(mod q)在服务端计算登录依据pub*。
第二接收模块407,用于接收客户端基于随机数m通过哈希算法输出的结果r,c;
客户端在接收到服务端返回的随机数m后,根据接收到的随机数m在客户端根据公式pub*=[x+m]g计算本轮登录需要的新公钥pub*。进一步在客户端产生随机数w,根据产生的随机数w,通过公式W=[w]g计算出W,然后根据公式c=Hash(W,pub*)计算出c,然后根据公式r=w-c(x+m)mod(n)输出结果r,客户端将结果,c发送至服务端,服务端接收由客户端发送的结果r,c。
认证模块408,用于基于结果r,c,通过哈希算法进行身份认证。
服务端根据接收到的结果r,c,通过哈希算法进行身份认证。具体的,判断Hash([r]g+[c]pub*,pub*)是否等于c,若是,则身份认证成功,若否,则身份认证失败。其中,pub*为根据公式pub*=pub+[m]g(mod q)在服务端计算出的登录依据。
综上所述,在上述实施例中,应用于服务端,当需要进行身份认证时,首先保存客户端发送的公钥信息pub,然后接收客户端生成的登录请求,基于登录请求产生的随机数m,发送所随机数m至客户端,基于登录请求,根据唯一的登录名查找到存储的所述pub,基于随机数m和pub计算登录依据pub*,接收客户端基于随机数m通过哈希算法输出的结果r,c;基于结果r,c,通过哈希算法进行身份认证。本发明能够有效减少客户端与服务端的交互次数,提高效率,以及提高密码的便捷性和提高认证的安全性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。