本发明属于身份识别和认证技术领域,尤其涉及一种基于零知识证明和密码技术的身份认证方法及认证系统。
背景技术:
目前,随着互联网和移动互联网技术和应用发展,基于pin的用户身份验证的应用场景、环境更加复杂,比如,在现代银行业务中,个人的资金是通过银行账户来体现的,操作和动用账户里的资金必须要得到用户的授权,pin作为一种身份验证和账户操作的授权得到了广泛应用。通常用户在终端输入自己的pin,传输到账户管理平台进行验证,验证通过才可以进行账户的相关操作。
目前常用的pin的保护方法是:
1)pin由个人设置并掌握,不能够泄露,通常用户会记忆在头脑中;
2)pin的输入设备,应用企业负责部署具有一定安全措施,防窃取、防篡改的专用设备提供给用户完成pin的输入;
3)pin通常有以下几种加密保护方式:
进行专门的pinblock对称加密,以密文方式向账户所在地传送。加密密钥由上级节点下发。
对pin进行对称加密,以密文方式向后台传送。加密密钥依赖安全通道下发到终端。
对pin进行对称加密,以密文方式向后台传送。加密密钥存储在usbkey中。
对pin进行非对称加密,以密文方式向后台传送。加密采用服务器公钥并以数字信封方式完成。
4)后台系统接收到pin密文,在专用设备(如密码机)内部完成pin的验证和比对。
通过上述分析,现有技术存在的问题及缺陷为:
(1)分段加密方式中,初始节点的加密密钥在一定时间段内是固定的。
(2)pin传输途径中每个节点均需解密和再加密这样一个数据转加密过程。
(3)最终的验证节点--核心系统必须掌握存储加密密钥和其前的节点共享密钥。
(4)在pin的验证过程中会有明文出现,尽管这种明文只在专用的设备内部出现,但也存在着一定的信息泄露风险甚至导致用户认证体系失效。
解决以上问题及缺陷的难度为:
在pin的验证过程中,如何有效保证pin的信息的有效性、机密性;
前后端不协商密钥的情况下,如何实现加解密同步,并且保证客户端的真实性。
解决以上问题及缺陷的意义为:
验证pin信息,不局限于信息本身,而是作为参数参与验证过程,不再是单一的pin的保密传输认证方式。
验证pin的真实性的同时,也验证了客户端的真实性,实现了双因子验证。
加解密算法,可以根据客户端的计算能力,采用不同等级的算法,方便业务开展和满足认证的安全需求。
技术实现要素:
针对现有技术存在的问题,本发明提供了一种基于零知识证明和密码技术的身份认证方法及认证系统。
本发明是这样实现的,一种基于零知识证明和密码技术的身份认证方法,所述基于零知识证明和密码技术的身份认证方法包括:
通过平台初始化客户端信息;
所述客户端和平台进行相关信息交互,同时所述平台和客户端各自独立计算,完成对pin的验证,确定客户端身份真实性和合法性。
进一步,所述平台初始化客户端信息的方法包括:
i)将个人id、pin码、公钥信息通过客户端导入到平台;
ii)平台采用sm3或其他hash算法计算pin码的hashvalue,验证公钥的合法性和有效性;
iii)平台加密保存id、hashvalue、公钥等信息,不保存pin码本身;
iv)客户端保存并保护好自己的id、pin码信息以及私钥。
进一步,对pin验证并确定客户端身份真实性和合法性的方法包括:
第一步,客户端产生随机数r1并缓存,同时将id、r1发送给平台;
第二步,平台收到id、r1后,产生随机数串r2,r2串长为16字节,并缓存r2;再进行加密,并将得到的加密信息发送给客户端;
第三步,客户端对第二步平台发送的加密信息进行解密,对解密后信息再进行加密并将加密后信息发送平台;
第四步,平台对第三步客户端传输的再加密信息解密以及验证。
进一步,第二步进一步包括:
a)平台收到id、r1后,产生随机数串r2,r2串长为16字节,并缓存r2;
b)平台以r2为密钥,采用对称加密算法,如sm4,加密r1,得到密文m1;
c)平台以hashvalue为密钥,采用对称加密算法sm4,加密r1^r2,得到密文m2;
d)平台采用非对称加密算法,如sm2,使用用户客户端的公钥加密m1||m2,得到ms;
e)平台将ms发送给用户的客户端。
进一步,第三步进一步包括:
1)用户输入pin;
2)采用平台相同的算法,如sm3算法,计算pin码的hashvalue;
3)采用非对称加密算法,如sm2,使用客户端的私钥解密解密ms,得到(m11||m22);
4)以hashvalue为密钥,采用对称加密算法,如sm4,解密m22,得到temp;
5)计算r2’=temp^r1;
6)以r2’为密钥,采用对称加密算法,如sm4,解密m11,得到r1’;
7)if(r1’==r1)continue;else认证失败;
8)采用对称加密算法,如sm4,使用r2’为密钥,加密r2’,得到m3;
9)将m3发送到平台。
进一步,第四步进一步包括:
平台使用缓存的r2为密钥,采用对称加密算法,如sm4解密m3,得到r2’;
如果(r2’==r2)验证通过,否则验证失败。
本发明的另一目的在于提供一种基于零知识证明和密码技术的身份认证系统包括:
平台,初始化客户端信息,采用hash算法,如sm3计算pin码的hashvalue,验证公钥的合法性和有效性;
客户端(用户客户端),与平台进行相关信息交互,同时进行独立计算,完成对pin的验证,确定用户身份真实性和合法性。
本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:
通过平台初始化客户端信息;
所述客户端和平台进行相关信息交互,同时所述平台和客户端各自独立计算,完成对pin的验证,确定客户端身份真实性和合法性。
本发明的另一目的在于提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如下步骤:
通过平台初始化客户端信息;
所述客户端和平台进行相关信息交互,同时所述平台和客户端各自独立计算,完成对pin的验证,确定客户端身份真实性和合法性。
本发明的另一目的在于提供一种实施所述基于零知识证明和密码技术的身份认证方法的金融行业密码机。
结合上述的所有技术方案,本发明所具备的优点及积极效果为:
本发明支持对各种通用的账户密码进行基于零知识和密码技术的验证。本发明采用典型的零知识证明模型实现pin的验证,即:客户端请求—>平台出题—>客户端给出答案。不再是单一的pin的保密传输认证方式。
本发明采用非对称加密方式实现客户端的验证,即:服务端采用客户端的公钥加密传输信息,拥有私钥的客户端解密出原信息。
本发明传输的信息是使用pin的hash值为密钥的加密相关信息得到的信息,而不是传输明文或密文pin。攻击者即使拿到了相关随机数和密文,密码算法原理保证了不可能推出pin,这样增加了pin的保护强度。
本发明客户端使用随机数r1,防止了重放攻击。能有效抵御黑客采用脱库、爆库、注入事件等攻击。
本发明是采用零知识证明和密码技术,使得处理过程和传输过程中都不暴露pin任何信息,平台和客户端通过对各自产生的随机数的交互与计算来实现对pin的验证,解决了遭遇暴力拖库、撞库等带来的pin被窃取和被泄露的安全风险,以及导致用户认证体系失效的核心问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于零知识证明和密码技术的身份认证方法流程图。
图2是本发明实施例提供的pin的验证流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术存在的问题,本发明提供了一种基于零知识证明和密码技术的身份认证方法及认证系统,下面结合附图对本发明作详细的描述。
如图1所示,本发明提供的基于零知识证明和密码技术的身份认证方法包括:
s101,通过平台初始化客户端信息。
s102,客户端和所述平台进行相关信息交互,同时平台和客户端各自独立计算,完成对pin的验证,确定客户端身份真实性和合法性。
本发明提供的基于零知识证明和密码技术的身份认证方法及认证系统业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的仅仅是一个具体实施例而已。
在本发明中,步骤s101中,进行注册,平台初始化用户信息时,采用如下步骤:
1)用户将个人信息,包括id、pin码、公钥等导入到平台。
2)平台采用sm3或其他hash算法计算pin码的hashvalue,验证公钥的合法性和有效性。
3)平台加密保存id、hashvalue、公钥等信息,不保存pin码本身。
4)用户保存并保护好自己的id、pin码等信息,客户端保存并保护好自己的私钥。
如图2所示,步骤s102具体包括:
s201,客户端产生随机数r1并缓存,同时将id、r1发送给平台。
s202,平台收到id、r1后,产生随机数串r2,r2串长为16字节,并缓存r2;再进行加密,并将得到的加密信息发送给客户端。
s203,客户端对步骤s202平台发送的加密信息进行解密,对解密后信息再进行加密并将加密后信息发送平台。
s204,平台对步骤s203客户端传输的再加密信息解密以及验证。
在本发明中,步骤s202进一步包括:
1)平台收到id、r1后,产生随机数串r2,r2串长为16字节,并缓存r2。
2)平台以r2为密钥,采用对称加密算法,如sm4,加密r1,得到密文m1。
3)平台以hashvalue为密钥,采用对称加密算法,如sm4,加密r1^r2,得到密文m2。
4)平台采用非对称加密算法,如sm2,使用用户客户端的公钥加密m1||m2,得到ms。
5)平台将ms发送给用户的客户端。
在本发明中,步骤s203进一步包括:
9)用户输入pin;
10)采用平台相同的算法,如sm3算法或其他hash算法,计算pin码的hashvalue;
11)采用非对称加密算法,如sm2,使用客户端的私钥解密解密ms,得到(m11||m22)
12)以hashvalue为密钥,采用对称加密算法,如sm4,解密m22,得到temp;
13)计算r2’=temp^r1;
14)以r2’为密钥,采用对称加密算法,如sm4,解密m11,得到r1’。
15)if(r1’==r1)continue;else认证失败;
16)采用对称加密算法,如sm4,使用r2’为密钥,加密r2’,得到m3;
17)将m3发送到平台。
在本发明中,步骤s204进一步包括:
1)平台使用缓存的r2为密钥,采用sm4解m3,得到r2’。
if(r2’==r2)验证通过,否则验证失败。
本发明提供一种基于零知识证明和密码技术的身份认证系统包括:平台,初始化客户端信息,采用sm3或其他hash算法计算pin码的hashvalue,验证公钥的合法性和有效性。
客户端,与平台进行相关信息交互,同时进行独立计算,完成对pin的验证,确定用户身份真实性和合法性。
本发明提供的基于零知识证明和密码技术的身份认证方法及认证系统业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的仅仅是一个具体实施例而已。
在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上;术语“上”、“下”、“左”、“右”、“内”、“外”、“前端”、“后端”、“头部”、“尾部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。