非对称密码身份鉴别方法、装置、计算机设备及存储介质与流程

文档序号:14253096阅读:738来源:国知局
非对称密码身份鉴别方法、装置、计算机设备及存储介质与流程

本发明涉及密码学技术领域,特别是涉及一种非对称密码的身份鉴别方法、装置、计算机设备和计算机存储介质。



背景技术:

零知识证明(zero-knowledgeproof)是由s.goldwasser、s.micali及c.rackoff于20世纪80年代初提出,指声称者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的,其实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。在该协议中,声称者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。

国家标准《gb/t15843.5-2005信息技术安全技术实体鉴别第5部分:使用零知识技术的机制》定义了一个基于证书的使用非对称加密系统的实体鉴别机制,该实体鉴别机制涉及到上述零知识证明的声称者和验证者之间的信息交换,它使得验证者能够核查声称者的身份。这种传统的鉴别机制中,验证者能够利用声称者的公开密钥加密一个随机消息,并要求声称者返回解密的消息。这种鉴别机制要求声称者持有完整的用户私钥,当用户私钥被分割为多个分量,由多个参与方持有时,传统技术中不能提供在采用了协同签名、加解密机制的条件下实施基于非对称密码的身份鉴别协议。



技术实现要素:

基于此,有必要针对传统技术无法在采用了协同签名、加解密机制的条件下进行身份鉴别的问题,提供一种非对称密码的身份鉴别方法、装置、计算机设备和计算机存储介质。

一种非对称密码的身份鉴别方法,包括:

向服务端发起身份鉴别请求,所述身份鉴别请求包括客户端数字证书;

接收所述服务端返回的身份鉴别响应,所述身份鉴别响应至少包括服务端基于所述客户端数字证书的用户公钥对第一随机数进行加密得到的加密结果;

根据客户端私钥分量对所述身份鉴别响应进行处理,获得处理结果;

基于所述处理结果向所述服务端发送身份验证请求,所述身份验证请求用于指示所述服务端进行身份验证处理。

一种非对称密码的身份鉴别方法,包括:

接收客户端发送的身份鉴别请求,所述身份鉴别请求包括客户端数字证书;

验证所述客户端数字证书有效后,基于所述客户端数字证书的用户公钥对第一随机数进行加密获得加密结果,并向所述客户端返回身份鉴别响应,所述身份鉴别响应至少包括所述加密结果;

接收所述客户端基于根据客户端私钥分量对所述身份鉴别响应进行处理获得的处理结果返回的身份验证请求;

根据所述身份验证请求进行身份验证处理,获得身份验证结果。

一种非对称密码的身份鉴别装置,包括:

鉴别请求发送模块,用于向服务端发起身份鉴别请求,所述身份鉴别请求包括客户端数字证书;

响应接收模块,用于接收所述服务端返回的身份鉴别响应,所述身份鉴别响应至少包括服务端基于所述客户端数字证书的用户公钥对第一随机数进行加密得到的加密结果;

响应处理模块,用于根据客户端私钥分量对所述身份鉴别响应进行处理,获得处理结果;

验证请求发送模块,用于基于所述处理结果向所述服务端发送身份验证请求,所述身份验证请求用于指示所述服务端进行身份验证处理。

一种非对称密码的身份鉴别装置,包括:

鉴别请求接收模块,用于接收客户端发送的身份鉴别请求,所述身份鉴别请求包括客户端数字证书;

鉴别请求响应模块,用于验证所述客户端数字证书有效后,基于所述客户端数字证书的用户公钥对第一随机数进行加密获得加密结果,并向所述客户端返回身份鉴别响应,所述身份鉴别响应至少包括所述加密结果;

验证请求接收模块,用于接收所述客户端基于根据客户端私钥分量对所述身份鉴别响应进行处理获得的处理结果返回的身份验证请求;

验证处理模块,用于根据所述身份验证请求进行身份验证处理,获得身份验证结果。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。

上述非对称密码的身份鉴别方法、装置、计算机设备和介质,利用客户端数字证书携带用户公钥和服务端的第一随机数进行身份鉴别处理,当客户端和服务端分别持有私钥分量时,同样可通过用户公钥与客户端和服务端分别持有的私钥分量来完成客户端与服务端之间的协同解密,从而实现对客户端的身份鉴别。

附图说明

图1为一个本实施例方案的应用环境的示意图;

图2为一个实施例中的非对称密码的身份鉴别方法的流程示意图;

图3为另一个实施例中的非对称密码的身份鉴别方法的流程示意图;

图4为又一个实施例中的非对称密码的身份鉴别方法的流程示意图;

图5为又一个实施例中的非对称密码的身份鉴别方法的流程示意图;

图6为一个实施例中的非对称密码的身份鉴别装置的结构示意图;

图7为另一个实施例中的非对称密码的身份鉴别装置的结构示意图;

图8为一个具体示例的身份鉴别过程的交互流程示意图;

图9为另一个具体示例的身份鉴别过程的交互流程示意图;

图10为另一个具体示例的身份鉴别过程的交互流程示意图;

图11为又一个具体示例的身份鉴别过程的交互流程示意图;

图12为又一个具体示例的身份鉴别过程的交互流程示意图;

图13为又一个具体示例的身份鉴别过程的交互流程示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中非对称密码的身份鉴别方法的应用环境图。参照图1,该非对称密码的身份鉴别方法应用于非对称密码的身份鉴别系统。该非对称密码的身份系统包括终端110和服务端120。终端110和服务端120通过网络连接。终端110具体可以是台式终端、移动终端以及其他的可以或者需要进行非对称加密的终端设备,移动终端具体可以是手机、平板电脑、笔记本电脑等中的至少一种,服务端120可以用独立的服务器或者是多个服务器组成的服务器集群实现。终端110持有客户端数字证书以及客户端私钥d1,服务端120持有服务端数字证书以及服务端私钥d2,客户端私钥d1和服务端私钥d2共同构成用户私钥da,即da=f(d1,d2)。本申请一个实施例中采用的私钥分割方式为da=d1·d2,可以理解,在其他实施方式中也可以采用其他的私钥分割方式,采用其他的私钥分割方式时需对应性调整步骤。例如,私钥分割方式可以为da=d1-1·d2-1-1。服务端120对终端110身份鉴别认证成功具体可以表现为终端110可以访问服务端120、终端110可以登录服务端120的系统等。

图2示出了一个实施例中的非对称密码的身份鉴别方法的流程示意图,该实施例中的方法应用于上述图1中的终端110或者设置在终端110上的客户端。参照图2,该实施例中的非对称密码的身份鉴别方法具体包括如下步骤s120至步骤s160。

步骤s120,向服务端120发起身份鉴别请求,身份鉴别请求包括客户端数字证书。

终端110在需要访问服务端120或者需要登录服务端120系统时,向服务端120发起身份鉴别请求。身份鉴别请求包括客户端数字证书,客户端数字证书是指终端110获得的互联网通讯中标志通讯各方身份信息的一串数字。身份鉴别请求可以被服务端120接收和响应。

步骤s140,接收服务端120返回的身份鉴别响应,身份鉴别响应至少包括服务端120基于客户端数字证书的用户公钥对第一随机数进行加密得到的加密结果。

用户公钥与用户私钥组成密钥对,其中用户公钥是密钥对中公开的部分,用户私钥是密钥对中非公开的部分。用户公钥的生成方式并不唯一,一个实施例中可以基于以下公式计算用户公钥:

pa=[da]g

其中,pa为用户公钥,da为用户私钥,g为椭圆曲线群生成元。

椭圆曲线系统参数(含上述椭圆曲线群生成元g),可以结合实际技术需要进行选取,一个实施例中可以参照《gmt0003.5-2012sm2椭圆曲线公钥密码算法第5部分:参数定义》规范进行选择。相关参数包括:有限域fq的规模q,定义椭圆曲线方程e(fq)的两个元素a,b∈fq,e(fq)上的基点g=(xg,yg)(g≠o),其中xg和yg是fq中的两个元素;g的阶n及其他可选项(如n的余因子h等)。

服务端120在接收到身份鉴别请求后,对身份鉴别请求进行响应得到身份鉴别响应。根据响应的处理方式不同,获得的身份鉴别响应也有所不同。例如,身份鉴别响应至少包括服务端120基于客户端数字证书的用户公钥对第一随机数进行加密得到的加密结果。加密结果是指采用加密算法对第一随机数进行处理得到的数据,进行加密时采用的加密算法并不唯一,一个实施例中可以采用sm2算法进行加密,算法中椭圆曲线系统参数可以参照《gm/t0003.1-2012sm2椭圆曲线公钥密码算法第5部分:参数定义》规范进行选取。可以基于以下公式得到加密结果:

其中,challenge为加密结果,r为第一随机数,函数代表使用公钥ps对输入报文执行sm2加密操作,在上式中即对第一随机数r执行sm2加密操作。

步骤s160,根据客户端私钥分量对身份鉴别响应进行处理,获得处理结果。

终端110根据客户端私钥分量对身份鉴别响应进行处理,其中客户端私钥分量是指终端110持有的客户端私钥分量d1,其与服务端120持有的服务端私钥分量d2共同构成用户私钥da,即da=f(d1,d2)。可以理解,由于服务端可能需要针对多个不同的客户端进行身份验证,因此,对不同的客户端可以采用相同或不同的私钥分割方式,以对客户端采用不同的私钥分割方式为例,此时上述客户端私钥分量d1和服务端私钥分量d2可以是与终端110持有的客户端数字证书相对应。

本申请一个实施例中采用的私钥分割方式可以为da=d1·d2,可以理解,在其他实施方式中也可以采用其他的私钥分割方式,采用其他的私钥分割方式时需对应性调整步骤。例如,私钥分割方式可以为da=d1-1·d2-1-1。可以理解,根据身份鉴别响应的不同,获得的处理结果也对应有所不同。

步骤s180,基于处理结果向服务端120发送身份验证请求,所述身份验证请求用于指示服务端进行身份验证处理。

终端110基于处理结果向服务端120发送身份验证请求,可以理解,基于处理结果的不同,身份验证请求中包含的信息可以有所不同。在一些实施例中,身份验证请求可以直接包含该处理结果,在另一些实施例中,可以是对该处理结果做进一步处理(如计算消息摘要)后,在身份验证请求中包含该进一步处理后的结果(如消息摘要),在下述各示例中进行举例说明。可以理解,相对应地,基于身份验证请求中包含的信息的不同,对应的服务端的身份验证处理也对应有所不同。

上述非对称密码的身份鉴别方法,利用客户端数字证书携带用户公钥和服务端的第一随机数进行身份鉴别处理,当客户端和服务端分别持有私钥分量时,同样可通过用户公钥与客户端和服务端分别持有的私钥分量实现客户端与服务端之间的协同解密来实现对客户端身份鉴别。

在一个实施例中,可以由终端来发起协同解密过程。此时,步骤s160中根据客户端私钥分量对所述身份鉴别响应进行处理的方式包括:根据客户端私钥分量以及加密结果,生成客户端解密参数。此时,所述处理结果包括客户端解密参数,上述身份验证请求中可以包括该处理结果。客户端解密参数是指在身份鉴别过程中终端110生成的用来协同解密的参数,在该实施例中,是终端110发起协同解密时终端110生成的用来协同解密的参数。具体得到客户端解密参数的方式并不唯一,一个实施例中可以基于以下公式得到客户端解密参数:

其中,u1为客户端解密参数,d1为终端持有的客户端私钥分量,为终端110从加密结果中提取比特串c1后,将比特串按gm/t0003.1-2012标准4.2.4和4.2.10给出的方法对数据类型进行转换得到的椭圆曲线群元素。

在本实施例中,由终端110发起协同解密过程,最后由服务端120获得解密结果并进行验证,不同于服务端120发起协同解密过程,同样提供了一种通过用户公钥与用户私钥实现终端110与服务端120之间的协同解密来实现对终端110身份鉴别的方法。

在一个实施例中,可以由服务端发起协同解密过程。在该实施例中,身份鉴别响应还包括:服务端120基于服务端私钥分量和加密结果确定的服务端解密参数。服务端解密参数是指在服务端120生成的用来协同解密的参数。在本实施例中,由服务端120发起协同解密过程,可以理解,终端110发起协同解密与服务端120发起协同解密时,得到的服务端解密参数也会有所不同,具体得到服务端解密参数的方式并不唯一。以该实施例中服务端120发起协同解密为例,可以基于以下公式得到服务端解密参数:

其中,u2为服务端解密参数,d2为服务端持有的服务端私钥分量,为服务端120从加密结果中提取比特串c1后,按gm/t0003.1-2012标准4.2.4和4.2.10给出的方法对数据类型转换得到的椭圆曲线群元素。

据此,该实施例中,步骤s160中根据客户端私钥分量对所述身份鉴别响应进行处理的方式包括以下步骤:

根据客户端私钥分量以及服务端解密参数生成客户端解密参数;

根据客户端解密参数对加密结果进行解密,获得解密结果,处理结果包括解密结果。

终端110根据客户端私钥分量以及服务端解密参数生成客户端解密参数,具体得到客户端解密参数的方式并不唯一,一个实施例中,在服务端120发起协同解密时,终端110的客户端可以基于以下公式得到客户端解密参数:

u1=[d1]u2

其中,u1为客户端解密参数,u2为服务端120发起协同解密时得到的服务端解密参数,d1为终端110的客户端持有的客户端私钥分量。

终端110根据客户端解密参数对加密结果进行解密,获得解密结果,此时上述处理结果包括解密结果,上述身份验证请求中可以包括该解密结果。解密结果是指采用解密算法对加密结果进行解密处理得到的数据,采用的解密算法并不唯一,对应于上述步骤s140的实施例中采用的加密算法,对应的解密算法基于以下公式得到加密结果:

其中,r′为解密结果,challenge为加密结果,代表使用用户私钥da来对输入报文执行sm2解密操作。可以理解,由于服务端发送过来的服务端解密参数是基于服务端密钥分量d2获得,而客户端生成的客户端解密参数是基于客户端密钥分量d1获得,而客户端密钥分量d1和服务端密钥分量d2是由用户私钥da分解而得,因此,客户端可以基于用户私钥da完成解密过程,具体的解密方式本实施例不做限定。

在本实施例中,由服务端120发起协同解密过程,终端110生成解密结果发送至由服务端120,由服务端120进行验证,不同于终端110发起协同解密过程,同样提供了一种通过用户公钥与用户私钥实现终端110与服务端120之间的协同解密来实现对终端110身份鉴别的方法。

在一个实施例中,还可以在终端与服务端之间协商出共享密钥,以在终端与服务端之间建立安全通道,实现通信数据的保密传输。据此,在该实施例中,如图3所示,在步骤s120之前,还可以包括步骤s110。

步骤s110,生成第二随机数,并基于客户端数字证书的用户公钥对第二随机数进行加密得到第一共享密钥参数。

此时,身份鉴别请求还包括该第一共享密钥参数,身份鉴别响应还包括服务端120基于客户端数字证书的用户公钥对第三随机数进行加密得到的第二共享密钥参数。

在该实施例中,终端110生成第二随机数,并基于用户公钥对第二随机数进行加密得到第一共享密钥参数。第一共享密钥参数是指终端110为生成客户端共享密钥经过加密处理得到的中间参数。采用的加密算法并不唯一,一个实施例中,采用的加密算法可以基于以下公式得到第一共享密钥参数:

t1=[a]pa

其中,t1为第一共享密钥参数,a为第二随机数,pa为用户公钥。

此时,在步骤s180基于所述处理结果向所述服务端发送身份验证请求之前,还可以包括步骤s166。

步骤s166,根据第二随机数和第二共享密钥参数计算得到客户端共享密钥。

客户端共享密钥是指终端110用来建立与服务端120之间的信息传输安全通道的密钥。终端110根据第二随机数和第二共享密钥参数计算得到客户端共享密钥的方式并不唯一,一个实施例中可以基于以下公式得到客户端共享密钥:

(x1,y1)=[a]t2

k0=kdf(x1||y1,klen)

其中,(x1,y1)为椭圆曲线群元素,a为第二随机数,t2为第二共享密钥参数,k0为客户端共享密钥,其中||表示拼接,kdf(*)为预先定义的密钥派生函数,klen表述输出的比特串长度。

在本实施例中,终端110和服务端120在完成身份鉴别的同时,执行了一个基于椭圆曲线密码体制的ecdh协议,通过协商的共享密钥,使得通信双方建立了安全通道,实现了对通信数据的保密传输,提高了身份鉴别的可靠性。

在一个实施例中,还可对服务端身份进行认证,以实现双向鉴别。在该实施例中,上述身份鉴别响应还可以包括:服务端数字证书以及数字签名结果。服务端数字证书是指服务端120获得的互联网通讯中标志通讯各方身份信息的一串数字,数字签名结果是指服务端120生成的用于证明服务端120自身身份的数据。

该实施例中,在上述步骤s140之后、步骤s160之前,还可以包括:验证服务端数字证书以及服务端数字签名结果。

终端110验证服务端数字证书以及服务端数字签名结果的方法并不唯一,一个实施例中,终端110先验证服务端数字证书及其证书链的有效性,再通过服务端数字证书对应的公钥验证数字签名结果的有效性,当验证结果均有效时,再进行步骤s160。

本实施例中,通过对服务端120的服务端数字证书进行验证,使得终端110可以通过验证服务端120的服务端数字证书信任服务端120的身份,避免了中间人攻击,提高了身份鉴别的可靠性。

在一个实施例中,还可以通过计算消息摘要来完成隐私保护。图4示出了该实施例中的身份鉴别过程的流程示意图。如图4所示,在该实施例中,在步骤s160之后、步骤s180之前,还包括步骤s170。

步骤s170,计算处理结果的消息摘要,获得客户端消息摘要。

此时,上述步骤s180发送的身份验证请求中,是包括有所述客户端消息摘要,即终端并不直接将处理结果通过身份验证请求发送给服务端120,而是将针对处理结果计算得到的客户端消息摘要发送给服务端120,以达到保护用户隐私的目的。终端110计算处理结果的消息摘要的方法并不唯一,如可以通过对处理结果进行杂凑运算得到该客户端消息摘要。一个具体示例中,在处理结果为解密结果时,可以基于以下公式得到客户端消息摘要:

r=sm3_hash(r′)

其中,r为客户端消息摘要,sm3_hash(*)为预先定义的杂凑函数,r′为解密结果。

在本实施例中,终端110没有直接把解密结果等处理结果直接发送给服务端120,而是计算出处理结果的消息摘要发送给服务端120,服务端120通过验证sm3摘要来判断终端110解密结果是否正确,有效防止了不诚实的服务端利用身份鉴别协议中的协同解密步骤来欺骗客户端解密用户在服务端加密存储的敏感数据,提高协议的安全性。

在一个实施例中,还可以在协商出共享密钥后,再通过计算消息摘要来完成隐私保护。据此,在该实施例中,结合图3、图4所示,在步骤s120之前,还可以包括步骤s110。

步骤s110,生成第二随机数,并基于客户端数字证书的用户公钥对第二随机数进行加密得到第一共享密钥参数。

此时,身份鉴别请求还包括该第一共享密钥参数,第一共享密钥参数是指终端110为生成客户端共享密钥经过加密处理得到的中间参数,生成第一共享密钥参数的方式并不唯一,一个实施例中可以基于以下公式得到第一共享密钥参数:

t1=[a]pa

其中,t1为第一共享密钥参数,a为第二随机数,pa为用户公钥。

在此情况下,身份鉴别响应还包括服务端120基于客户端数字证书的用户公钥对第三随机数进行加密得到的第二共享密钥参数。

此时,在步骤s180基于所述处理结果向所述服务端发送身份验证请求之前,还可以包括步骤s166和步骤s170。

步骤s166,根据第二随机数和第二共享密钥参数计算得到客户端共享密钥;

客户端共享密钥是指终端110用来建立与服务端120之间的信息传输安全通道的密钥。终端110根据第二随机数和第二共享密钥参数计算得到客户端共享密钥的方式并不唯一,一个实施例中可以基于以下公式得到客户端共享密钥:

(x1,y1)=[a]t2

k0=kdf(x1||y1,klen)

其中,(x1,y1)为椭圆曲线群元素,a为第二随机数,t2为第二共享密钥参数,k0为客户端共享密钥,其中||表示拼接,kdf(*)为预先定义的密钥派生函数,klen表述输出的比特串长度。

步骤s170,基于客户端共享密钥和处理结果计算消息摘要,获得客户端消息摘要。

终端110计算消息摘要的方法并不唯一,如可以通过杂凑运算得到该客户端消息摘要。一个具体示例中,在处理结果为解密结果时,可以基于以下公式得到客户端消息摘要:

r=sm3_hash(r′||k0)

其中,r为客户端消息摘要,sm3_hash(*)为预先定义的杂凑函数,r′为解密结果,k0为客户端共享密钥。

在本实施例中,终端110和服务端120在完成身份鉴别的同时,不仅通过协商共享密钥使得通信双方建立了安全通道,实现了对通信数据的保密传输,提高了身份鉴别的可靠性,而且也没有直接把解密结果等处理结果直接发送给服务端120,而是计算出处理结果的消息摘要发送给服务端120,有效防止了不诚实的服务端利用身份鉴别协议中的协同解密步骤来欺骗客户端解密用户在服务端加密存储的敏感数据,提高协议的安全性。

图5示出了另一个实施例中的非对称密码的身份鉴别方法的流程示意图,该实施例中的方法应用于上述图1中的服务端120。参照图5,该实施例中的非对称密码的身份鉴别方法具体包括如下步骤s220至步骤s280。

步骤s220,接收客户端发送的身份鉴别请求,身份鉴别请求包括客户端数字证书。

步骤s240,验证客户端数字证书有效后,基于客户端数字证书的用户公钥对第一随机数进行加密获得加密结果,并向客户端返回身份鉴别响应,身份鉴别响应至少包括加密结果。

服务端120在接收到身份鉴别请求后,先验证客户端数字证书是否有效,当客户端证书有效时,再对身份鉴别请求进行响应得到身份鉴别响应。根据响应的处理方式不同,身份鉴别响应也对应有所不同。例如,身份鉴别响应至少包括服务端120基于客户端数字证书的用户公钥对第一随机数进行加密得到的加密结果。加密结果是指采用加密算法对第一随机数进行处理得到的数据,采用的加密算法并不唯一,一个实施例中采用的加密算法可基于以下公式得到加密结果:

其中,challenge为加密结果,r为第一随机数,函数代表使用公钥pa来对输入报文执行sm2加密操作,在上式中即对第一随机数r执行sm2加密操作。

步骤s260,接收客户端基于根据客户端私钥分量对所述身份鉴别响应进行处理获得的处理结果返回的身份验证请求。

服务端120接收客户端返回的身份验证请求,根据客户端对身份鉴别响应的处理的不同,上述处理结果也对应有所不同。基于处理结果的不同,身份验证请求中包含的信息可以有所不同,相对应地,身份验证处理也会有所不同。在一些实施例中,身份验证请求可以直接包含该处理结果,在另一些实施例中,可以是对该处理结果做进一步处理(如计算消息摘要)后,在身份验证请求中包含该进一步处理后的结果(如消息摘要),在下述各示例中进行举例说明。

步骤s280,根据身份验证请求进行身份验证处理,获得身份验证结果。

服务端120根据身份验证请求进行身份验证处理,根据身份验证请求中包含的信息的不同,对应的身份验证处理方式也有所不同。

上述非对称密码的身份鉴别方法,利用客户端数字证书携带用户公钥和服务端的第一随机数进行身份鉴别处理,当客户端和服务端分别持有私钥分量时,同样可通过用户公钥与客户端和服务端分别持有的私钥分量实现客户端与服务端之间的协同解密来实现对客户端身份鉴别。

在一个实施例中,可以由终端客户端来发起协同解密过程。此时,所述处理结果可以包括客户端根据客户端私钥分量以及加密结果生成的客户端解密参数,在上述身份验证请求中可以包括该处理结果。在该实施例中,上述步骤s280根据身份验证请求进行身份验证处理获得身份验证结果的方式可以包括以下步骤:

根据客户端解密参数、服务端私钥分量生成服务端解密参数;

根据服务端解密参数对加密结果进行解密,获得解密结果;

比较解密结果与第一随机数的一致性,获得身份验证结果。

服务端解密参数是指在服务端110生成的用来协同解密的参数。终端110发起协同解密与服务端120发起协同解密得到的服务端解密参数会有所不同,具体得到服务端解密参数的方式也并不唯一,在该终端110发起协同解密的实施例中,服务端可以基于以下公式得到服务端解密参数:

u2=[d2]u1

其中,u2为服务端解密参数,u1为客户端发送身份验证请求中的客户端解密参数,d2为服务端持有的服务端私钥分量。

解密结果是指采用解密算法对加密结果进行解密处理得到的数据,采用的解密算法并不唯一,对应于上述步骤s240中的实施例中采用的加密算法,对应的解密算法基于以下公式得到解密结果:

其中,r′为解密结果,challenge为加密结果,代表使用用户私钥da来对输入报文执行sm2解密操作。可以理解,由于服务端发送给客户端的服务端解密参数是基于服务端密钥分量d2获得,而客户端生成的客户端解密参数是基于客户端密钥分量d1获得,而客户端密钥分量d1和服务端密钥分量d2是由用户私钥da分解而得,因此,客户端可以基于用户私钥da完成解密过程,具体的解密方式本实施例不做限定。

服务端120比较解密结果与第一随机数的一致性,当解密结果与第一随机数一致时,身份验证结果为通过身份鉴别;当解密结果与第一随机数不一致时,身份验证结果为没有通过身份鉴别。

在本实施例中,由终端110发起协同解密过程,最后由服务端120获得解密结果并进行验证,不同于服务端120发起协同解密过程,同样提供了一种通过用户公钥与用户私钥实现终端110与服务端120之间的协同解密来实现对终端110身份鉴别的方法。

在一个实施例中,可以由服务端发起协同解密过程。在该实施例中,步骤s240中在获得加密结果后,返回身份鉴别响应之前,还包括:基于服务端私钥分量和加密结果确定服务端解密参数。

服务端解密参数是指在服务端120生成的用来协同解密的参数。可以理解,终端110发起协同解密时与服务端120发起协同解密时,得到的服务端解密参数可以有所不同,具体得到服务端解密参数的方式并不唯一。以该实施例中服务端120发起协同解密过程为例,可以基于以下公式得到服务端解密参数:

其中,u2为服务端解密参数,d2为服务端持有的服务端私钥分量,为服务端120从加密结果中提取比特串c1后,按gm/t0003.1-2012标准4.2.4和4.2.10给出的方法对数据类型转换得到的椭圆曲线群元素。

此时,在该实施例中,身份鉴别响应还包括服务端解密参数;上述处理结果包括客户端根据客户端私钥分量和服务端解密参数得到客户端解密参数后、根据客户端解密参数对加密结果进行解密获得的解密结果,上述身份验证请求中包括该处理结果。上述步骤s280具体可以包括:比较解密结果与第一随机数的一致性,获得身份验证结果。

在本实施例中,由服务端120发起协同解密过程,终端110生成解密结果发送至由服务端120,由服务端120进行验证,不同于终端110发起协同解密过程,同样提供了一种通过用户公钥与用户私钥实现终端110与服务端120之间的协同解密来实现对终端110身份鉴别的方法。

在一个实施例中,还可以在终端与服务端之间协商出共享密钥,以在终端与服务端之间建立安全通道,实现通信数据的保密传输。据此,在该实施例中,身份鉴别请求还包括客户端基于客户端数字证书的用户公钥对第二随机数进行加密得到的第一共享密钥参数。

在该实施例中,步骤s240中在获得加密结果后,返回身份鉴别响应之前,还包括:基于用户公钥对第三随机数进行加密获得第二共享密钥参数。

此时,上述身份鉴别响应还包括第二共享密钥参数,上述处理结果包括客户端根据第一共享密钥参数和第二共享密钥参数得到的客户端共享密钥。第二共享密钥参数是指服务端120为生成客户端共享密钥经过加密处理得到的中间参数。采用的加密算法并不唯一,一个实施例中,采用的加密算法可以基于以下公式得到第二共享密钥参数:

t2=[b]pa

其中,t2为服务端密钥参数,b为第三随机数,pa为用户公钥。

在该实施例中,身份验证请求中可以包括上述处理结果,即身份验证请求包括所述客户端共享密钥。此时,上述步骤s280具体可以包括以下步骤:

根据第三随机数和第一共享密钥参数计算得到服务端共享密钥;

根据客户端共享密钥和服务端共享密钥进行身份验证,获得身份验证结果。服务端共享密钥是指服务端120用来建立与终端110之间的信息传输安全通道的密钥。服务端120根据第三随机数和第一共享密钥参数计算得到服务端共享密钥的方式并不唯一,一个实施例中可以基于以下公式得到服务端共享密钥:

(x2,y2)=[b]t1

k=kdf(x2||y2,klen)

其中,(x2,y2)为椭圆曲线群元素,b为第二随机数,t1为第一密共享钥参数,k为服务端共享密钥,其中||表示拼接,kdf(*)为预先定义的密钥派生函数,klen表述输出的比特串长度。

可以理解,在正常情况下,计算出的客户端共享密钥和服务端共享密钥应当相同,即客户端与服务端持有的实际上是同一份共享密钥,本申请提及的客户端共享密钥、服务端共享密钥仅是基于处理方的不同在名称上进行区分。

在本实施例中,终端110和服务端120在完成身份鉴别的同时,执行了一个基于椭圆曲线密码体制的ecdh协议,通过协商的共享密钥,使得通信双方建立了安全通道,实现了对通信数据的保密传输,提高了身份鉴别的可靠性。

在一个实施例中,还可对服务端身份进行认证,以实现双向鉴别。在该实施例中,在步骤s240中在获得加密结果后,返回身份鉴别响应之前,还包括:根据服务端数字证书对应的私钥执行数字签名,获得数字签名结果。

此时,身份鉴别响应还包括:服务端数字证书以及数字签名结果。服务端120根据服务端数字证书对应的私钥执行数字签名,执行数字签名的方式并不唯一,一个实施例中,可以基于以下公式得到数字签名结果:

其中,s1为数字签名结果,challenge为加密结果,u2为服务端解密参数,||表示拼接,代表使用服务端120对应私钥ssc来对输入报文执行sm2签名操作。

本实施例中,通过服务端120的服务端数字证书进行签名,使得终端110可以通过验证服务端120的服务端数字证书信任服务端120的身份,避免了中间人攻击,提高了身份鉴别的可靠性。

在一个实施例中,还可以通过计算消息摘要来完成隐私保护。此时,上述客户端基于处理结果返回的身份验证请求中,包括的并不是处理结果本身,而是针对处理结果计算得到的客户端消息摘要,以达到保护用户隐私的目的。此时,该实施例中的步骤s280包括以下步骤:

计算确定服务端消息摘要;

比较客户端消息摘要和服务端消息摘要的一致性,获得身份验证结果。

服务端消息摘要是指服务端120对数据进行运算得到的摘要。服务端计算得到服务端消息摘要的方法并不唯一,如可以通过进行杂凑运算得到该服务端消息摘要。一个具体示例中,可以基于以下公式得到服务端消息摘要:

r′=sm3_hash(r)

其中,r′为服务端消息摘要,sm3_hash(*)为预先定义的杂凑函数,r为第一随机数。

在另一个实施例中,还可以基于下述公式计算出服务端消息摘要:

r′=sm3_hash(r||k)

其中,r′为服务端消息摘要,sm3_hash(*)为预先定义的杂凑函数,r为第一随机数,k为服务端共享密钥。

从而,不仅在终端与服务端之间协商出共享密钥,以在终端与服务端之间建立安全通道,同时通过计算消息摘要来完成隐私保护。

服务端120比较客户端消息摘要和服务端消息摘要的一致性,当客户端消息摘要和服务端消息摘要一致时,身份验证结果为通过身份鉴别;当客户端消息摘要和服务端消息摘要不一致时,身份验证结果为没有通过身份鉴别。

在本实施例中,终端110没有直接把解密结果等处理结果直接发送给服务端120,而是计算出处理结果的消息摘要(sm3摘要)发送给服务端120,服务端120通过验证sm3摘要来判断终端110解密结果是否正确,有效防止了不诚实的服务端利用身份鉴别协议中的协同解密步骤来欺骗客户端解密用户在服务端加密存储的敏感数据,提高协议的安全性。

如图6所示,在一个实施例中,提供了一种非对称密码的身份鉴别装置。本实施例主要以该装置应用于上述图1中的终端110来举例说明。参照图6,该非对称密码的身份鉴别装置具体包括如下:

鉴别请求发送模块112,用于向服务端发起身份鉴别请求,身份鉴别请求包括客户端数字证书;

响应接收模块114,用于接收服务端返回的身份鉴别响应,身份鉴别响应至少包括服务端基于客户端数字证书的用户公钥对第一随机数进行加密得到的加密结果;

响应处理模块116,用于根据客户端私钥分量对身份鉴别响应进行处理,获得处理结果;

验证请求发送模块118,用于基于处理结果向服务端发送身份验证请求,所述身份验证请求用于指示服务端进行身份验证处理。

该装置还包括与上述以终端为例方法中步骤相对应的模块,作用已在方法中写出,这里不再赘述。

如图7所示,在一个实施例中,提供了一种非对称密码的身份鉴别装置。本实施例主要以该装置应用于上述图1中的服务端120来举例说明。参照图7,该非对称密码的身份鉴别装置具体包括如下:

鉴别请求接收模块122,用于接收客户端发送的身份鉴别请求,身份鉴别请求包括客户端数字证书;

鉴别请求响应模块124,用于验证客户端数字证书有效后,基于客户端数字证书的用户公钥对第一随机数进行加密获得加密结果,并向客户端返回身份鉴别响应,身份鉴别响应至少包括加密结果;

验证请求接收模块126,用于接收客户端基于根据客户端私钥分量对所述身份鉴别响应进行处理获得的处理结果返回的身份验证请求;

验证处理请块128,用于根据身份验证请求进行身份验证处理,获得身份验证结果。

该装置还包括与上述以服务端为例方法中步骤相对应的模块,作用已在方法中写出,这里不再赘述。

上述非对称密码的身份鉴别装置,利用客户端数字证书携带用户公钥和服务端的第一随机数进行身份鉴别处理,当客户端和服务端分别持有私钥分量时,同样可通过用户公钥与客户端和服务端分别持有的私钥分量实现客户端与服务端之间的协同解密来实现对客户端身份鉴别。

以下结合其中几个具体示例中的身份鉴别过程的交互流程进行举例说明,由于身份鉴别过程中的协同解密过程,可以由客户端发起,也可以由服务端发起,而由不同的发起方来发起协同解密过程时,所得到的解密参数可能并不相同,因此,在下述各具体示例的说明中,做以下设定:

服务端发起协同解密过程时,服务端得到的服务端解密参数称为服务端第一解密参数、客户端得到的客户端解密参数称为客户端第一解密参数;

客户端发起协同解密过程时,服务端得到的服务端解密参数称为服务端第二解密参数、客户端得到的客户端解密参数称为客户端第二解密参数。

图8示出了一个具体示例中的身份鉴别过程的交互流程示意图,该具体示例中以服务端发起协同解密过程为例进行说明。如图8所示,该具体示例中的身份鉴别过程的交互流程如下所述。

终端110发送身份鉴别请求至服务端120,身份鉴别请求包含客户端数字证书,客户端数字证书中携带用户公钥。

服务端120验证客户端数字证书,当验证通过时,提取用户公钥;服务端120选择第一随机数,用用户公钥对第一随机数加密,得到加密结果;基于加密结果、服务器私钥分量计算,得到服务端第一解密参数,返回身份鉴别响应至终端110,身份鉴别响应包括加密结果和服务端第一解密参数。

终端110根据客户端私钥分量和服务端第一解密参数生成客户端第一解密参数;根据客户端第一解密参数对加密结果进行解密,得到解密结果;并向服务端120发起身份验证请求,身份验证请求包括解密结果。

服务端120比较第一随机数与解密结果的一致性,获得身份鉴别结果;当解密结果与第一随机数一致时,身份验证结果为通过身份鉴别;当解密结果与第一随机数不一致时,身份验证结果为没有通过身份鉴别。

图9示出了另一个具体示例中的身份鉴别过程的交互流程示意图,该具体示例中以客户端发起协同解密过程为例进行说明。如图9所示,该具体示例中的身份鉴别过程的交互流程如下所述。

终端110发送身份鉴别请求至服务端120,身份鉴别请求包含客户端数字证书,证书中携带用户公钥。

服务端120验证客户端数字证书,当验证通过时,提取用户公钥;服务端120选择第一随机数,用用户公钥对第一随机数加密,得到加密结果;返回身份鉴别响应至终端110,身份鉴别响应包括加密结果。

终端110基于加密结果、客户端私钥分量计算,得到客户端第二解密参数;终端110向服务端120发起身份验证请求,身份验证请求包括客户端第二解密参数。

服务端120基于客户端第二解密参数、服务器私钥分量计算,得到服务端第二解密参数;根据服务端第二解密参数对加密结果进行解密,得到解密结果;并比较第一随机数与解密结果的一致性,获得身份鉴别结果;当解密结果与第一随机数一致时,身份验证结果为通过身份鉴别;当解密结果与第一随机数不一致时,身份验证结果为没有通过身份鉴别。

图10示出了另一个具体示例中的身份鉴别过程的交互流程示意图,该具体示例中以服务端发起协同解密过程、且计算消息摘要为例进行说明。如图10所示,该具体示例中的身份鉴别过程的交互流程如下所述。

终端110发送身份鉴别请求至服务端120,身份鉴别请求包含客户端数字证书,证书中携带用户公钥。

服务端120验证客户端数字证书,当验证通过时,提取用户公钥;服务端120选择第一随机数,用用户公钥对第一随机数加密,得到加密结果;基于加密结果、服务器私钥分量计算,得到服务端第一解密参数,返回身份鉴别响应至终端110,身份鉴别响应包括加密结果和服务端第一解密参数。

终端110根据客户端私钥分量和服务端第一解密参数生成客户端第一解密参数;根据客户端第一解密参数对加密结果进行解密,得到解密结果;根据解密结果计算客户端消息摘要;终端110向服务端120发起身份验证请求,身份验证请求包括客户端消息摘要。

服务端120计算第一随机数的服务端消息摘要;比较服务端消息摘要与客户端消息摘要的一致性,获得身份鉴别结果;当服务端消息摘要与客户端消息摘要一致时,身份验证结果为通过身份鉴别;当服务端消息摘要与客户端消息摘要不一致时,身份验证结果为未通过身份鉴别。

图11示出了另一个具体示例中的身份鉴别过程的交互流程示意图,该具体示例中以服务端发起协同解密过程、且协商出共享密钥为例进行说明。如图11所示,该具体示例中的身份鉴别过程的交互流程如下所述。

终端110生成第二随机数,并用用户公钥加密得到第一共享密钥参数;终端110发送身份鉴别请求至服务端120,身份鉴别请求包含第一共享密钥参数及客户端数字证书,证书中携带用户公钥。

服务端120验证客户端数字证书,当验证通过时,提取用户公钥;服务端120选择第一随机数,用用户公钥对第一随机数加密,得到加密结果;基于加密结果、服务器私钥分量计算,得到服务端第一解密参数;生成第三随机数,并用用户公钥加密得到第二共享密钥参数;返回身份鉴别响应至终端110,身份鉴别响应包括加密结果、服务端第一解密参数以及第二共享密钥参数。

终端110根据客户端私钥分量和服务端第一解密参数生成客户端第一解密参数;根据客户端第一解密参数对加密结果进行解密,得到解密结果;根据第二随机数、第二共享密钥参数计算得到客户端共享密钥;根据客户端共享密钥、解密结果计算客户端消息摘要;终端110向服务端120发起身份验证请求,身份验证请求包括客户端消息摘要。

服务端120根据第三随机数、第一共享密钥参数计算得到服务端共享密钥;根据服务端共享密钥、第一随机数计算服务端消息摘要;比较服务端消息摘要与客户端消息摘要的一致性,获得身份鉴别结果;当服务端消息摘要与客户端消息摘要一致时,身份验证结果为通过身份鉴别;当服务端消息摘要与客户端消息摘要不一致时,身份验证结果为没有通过身份鉴别。

图12示出了另一个具体示例中的身份鉴别过程的交互流程示意图,该具体示例中以服务端发起协同解密过程、且服务端进行数字签名以对服务端进行验证为例进行说明。如图12所示,该具体示例中的身份鉴别过程的交互流程如下所述。

终端110发送身份鉴别请求至服务端120,身份鉴别请求包含客户端数字证书,证书中携带用户公钥。

服务端120验证客户端数字证书,当验证通过时,提取用户公钥;服务端120选择第一随机数,用用户公钥对第一随机数加密,得到加密结果;基于加密结果、服务器私钥分量计算,得到服务端第一解密参数;用服务端数字证书对应的私钥对加密结果、服务端第一解密参数执行签名操作,获得签名结果;返回身份鉴别响应至终端110,身份鉴别响应包括加密结果、服务端第一解密参数、服务端数字证书以及签名结果。

终端110验证服务端数字证书及签名结果;当验证通过时,根据客户端私钥分量和服务端第一解密参数生成客户端第一解密参数;根据客户端第一解密参数对加密结果进行解密,得到解密结果;终端110向服务端120发起身份验证请求,身份验证请求包括解密结果。

服务端120比较第一随机数与解密结果的一致性,获得身份鉴别结果;当解密结果与第一随机数一致时,身份验证结果为通过身份鉴别;当解密结果与第一随机数不一致时,身份验证结果为没有通过身份鉴别。

图13示出了另一个具体示例中的身份鉴别过程的交互流程示意图,该具体示例中以服务端发起协同解密过程、且协商共享密钥、计算消息摘要以及服务端进行数字签名以对服务端进行验证为例进行说明。如图13所示,该具体示例中的身份鉴别过程的交互流程如下所述。

终端110生成第二随机数,并用用户公钥加密得到第一共享密钥参数;终端110发送身份鉴别请求至服务端120,身份鉴别请求包含第一共享密钥参数及客户端数字证书,证书中携带用户公钥。

服务端120验证客户端数字证书,当验证通过时,提取用户公钥;服务端120选择第一随机数,用用户公钥对第一随机数加密,得到加密结果;基于加密结果、服务器私钥分量计算,得到服务端第一解密参数;用服务端数字证书对应的私钥对加密结果、服务端第一解密参数执行签名操作,获得签名结果;生成第三随机数,并用用户公钥加密得到第二共享密钥参数;返回身份鉴别响应至终端110,身份鉴别响应包括加密结果、服务端第一解密参数、第二共享密钥参数、服务端数字证书以及签名结果。

终端110验证服务端数字证书及签名结果;当验证通过时,根据客户端私钥分量和服务端第一解密参数生成客户端第一解密参数;根据客户端第一解密参数对加密结果进行解密,得到解密结果;根据第二随机数、第二共享密钥参数计算得到客户端共享密钥;根据客户端共享密钥、解密结果计算客户端消息摘要;终端110向服务端120发起身份验证请求,身份验证请求包括客户端消息摘要。

服务端120根据第三随机数、第一共享密钥参数计算得到服务端共享密钥;根据服务端共享密钥、第一随机数计算服务端消息摘要;比较服务端消息摘要与客户端消息摘要的一致性,获得身份鉴别结果;当服务端消息摘要与客户端消息摘要一致时,身份验证结果为通过身份鉴别;当服务端消息摘要与客户端消息摘要不一致时,身份验证结果为没有通过身份鉴别。

结合以上所述的各实施例,假设用户端为bob,服务端为alice,其中一个具体的双方协同解密的过程可以是如下所述。

alice获取sm2密文(即加密结果)c=c1||c3||c2,从密文c中提取比特串c1,并按gm/t0003.1-2012标准4.2.4和4.2.10给出的方法对数据类型进行转换,得到椭圆曲线群元素然后验证是否为椭圆曲线e(fq)的无穷远点,若是则提示错误并退出解密流程。

若否,alice使用其持有的私钥分量d1计算alice的解密参数(若alice处于服务端,则为上述服务端解密参数)并将t1发送给bob。

bob接收到t1后,基于自身持有的私钥分量d2计算bob的解密参数t2=[d2]t1,然后计算(x2,y2)为椭圆曲线群元素。

bob计算共享密钥t=kdf(x2||y2,klen),其中||表示拼接,kdf(*)为预先定义的密钥派生函数,klen表述输出的比特串长度。若t为全0比特串,则报错并退出。

若t不是全0比特串,bob从密文c中提取比特串c2,并计算其中表示按位异或运算。

bob计算消息摘要u=hash(x2||m′||y2),然后从密文c中提取比特串c3,若u≠c3则报错并退出。

若u=c3则bob输出明文m′。

基于如上所述的示例,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现如上述各实施例中的任意一个实施例的方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性的计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

据此,在一个实施例中还提供一种存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如上述各实施例中的任意一个实施例的方法。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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