CN109600225A - 一种密钥交换方法、装置和存储介质 - Google Patents

一种密钥交换方法、装置和存储介质 Download PDF

Info

Publication number
CN109600225A
CN109600225A CN201811476101.0A CN201811476101A CN109600225A CN 109600225 A CN109600225 A CN 109600225A CN 201811476101 A CN201811476101 A CN 201811476101A CN 109600225 A CN109600225 A CN 109600225A
Authority
CN
China
Prior art keywords
key
group
indicate
parameter
opposite end
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811476101.0A
Other languages
English (en)
Other versions
CN109600225B (zh
Inventor
王学进
蒋红宇
安晓江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Haitai Fangyuan High Technology Co Ltd
Original Assignee
Beijing Haitai Fangyuan High Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Haitai Fangyuan High Technology Co Ltd filed Critical Beijing Haitai Fangyuan High Technology Co Ltd
Priority to CN201811476101.0A priority Critical patent/CN109600225B/zh
Publication of CN109600225A publication Critical patent/CN109600225A/zh
Application granted granted Critical
Publication of CN109600225B publication Critical patent/CN109600225B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种密钥交换方法、装置和存储介质,涉及信息安全技术领域。该方法中,接收对端发送的RB;若确定RB属于G1,则计算双线性对g1’=e(RB,dA);计算将得到的g1’与g2’相乘得到g3’;根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。这样,密钥交换双方执行步骤相同,所以对于密钥交换的双方来说计算方便。而且信息传递只有一次,节省由于多次信息交互导致的处理资源消耗,提高协商密钥的效率。此外,在传输过程中,即使截获到RB,也无法求得共享密钥,从而保证了共享密钥的安全。

Description

一种密钥交换方法、装置和存储介质
技术领域
本申请涉及信息安全技术领域,尤其涉及一种密钥交换方法、装置和存储介质。
背景技术
公钥密码的诞生成为密码学上革命性的事件,国家也研发了一系列国密标准的密钥算法。相应地,为了解决传统对称密码难以解决的密钥交换问题,也出现一系列的密钥交换算法。
现有技术中RSA密钥交换算法主要以DH(Diffie-Hellman)密钥交换算法为核心,ECC密钥交换算法的理论基础是离散对数求取的困难性。RSA和ECC的密钥交换算法中密钥交换双方,执行的操作通常相同,即执行的步骤和采用的数学函数通常相同,只是使用的部分参数不同。在密钥交换算法中的这种双方执行相同的操作对于密钥交换的双方来说是非常便捷的。在SM9密钥交换标准算法中,采用了双线对的性质,但是密钥交换双方执行的操作步骤不相同。这对于密钥交换的双方来说不方便,而且信息传递次数较多,不利于保护共享密钥。
发明内容
本申请实施例中提供了一种密钥交换方法、装置和存储介质。
第一方面,本申请实施例中提供一种密钥交换方法,该方法包括:
接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群;
若确定RB属于G1,则计算双线性对g1’=e(RB,dA);其中g1’是群GT中的元素,dA表示本侧设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N的加法循环群,不同于G1;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1’与g2’相乘得到g3’;
根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。
进一步的,接收对端发送的RB之前,所述方法还包括:
计算QB;其中,QB为椭圆曲线群G1中的元素;
随机产生临时密钥值rA;其中,rA∈[1,N-1],N是大于1的自然数;
计算RA;其中,RA=[rA]QB
将计算得到的RA发送给对端,以使对端根据RA执行如下操作:
若确定RA属于G1,则计算双线性对g1=e(RA,dB);其中g1是群GT中的元素,dB表示对端设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N不同于G1的加法循环群;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1与g2相乘得到g3
根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与对端设备相同。
进一步的,所述指定参数还包括:
本侧设备标识IDA、本侧参数RA,对端设备标识IDB、对端参数RB
进一步的,所述方法还包括:
若确定RB不属于G1,则确定双方密钥交换失败。
进一步的,该方法中,dA=[s/(s+HA)]P2,dB=[s/(s+HB)]P2;其中,HA和HB表示由密码杂凑函数派生的密码函数,s表示主私钥。
另一方面,本申请实施例提供一种密钥交换装置,该装置包括:
接收模块,用于接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群;
第一计算模块,用于若确定RB属于G1,则计算双线性对g1’=e(RB,dA);其中g1’是群GT中的元素,dA表示本侧设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N的加法循环群,不同于G1;群GT是阶为素数N的乘法循环群;
第二计算模块,用于计算其中,Ppub表示主公钥,P2表示群G2的生成元;
第三计算模块,用于将得到的g1’与g2’相乘得到g3’;
第四计算模块,用于根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。
进一步的,第五计算模块用于在接收模块接收对端发送的RB之前,计算QB;其中,QB为椭圆曲线群G1中的元素;
随机模块,用于随机产生临时密钥值rA;其中,rA∈[1,N-1],N是大于1的自然数;
第六计算模块,用于计算RA;其中,RA=[rA]QB
发送模块,用于将计算得到的RA发送给对端,以使对端根据RA执行如下操作:
若确定RA属于G1,则计算双线性对g1=e(RA,dB);其中g1是群GT中的元素,dB表示对端设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N不同于G1的加法循环群;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1与g2相乘得到g3
根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与对端设备相同。
进一步的,所述指定参数还包括:本侧设备标识IDA、本侧参数RA、对端设备标识IDB、对端参数RB
进一步的,所述装置还包括:
逻辑处理模块,用于若确定RB不属于G1,则确定双方密钥交换失败。
进一步的,该装置中dA=[s/(s+HA)]P2,dB=[s/(s+HB)]P2;其中,HA和HB表示由密码杂凑函数派生的密码函数,s表示主私钥。
本申请另一实施例还提供了一种计算装置,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请实施例提供的任一密钥交换方法。
本申请另一实施例还提供了一种计算机存储介质,其中,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行本申请实施例中的任一密钥交换方法。
本申请实施例提供的密钥交换方法、装置和存储介质,密钥交换双方执行步骤相同,所以对于密钥交换的双方来说计算方便。而且信息传递只有一次,节省由于多次信息交互导致的处理资源消耗,提高协商密钥的效率。此外,在传输过程中,即使截获到RA和RB,也无法求得共享密钥,从而保证了共享密钥的安全。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中密钥交换方法流程示意图;
图2为本申请实施例中密钥交换方法另一流程示意图;
图3为本申请实施例中密钥交换方法应用场景示意图;
图4为本申请实施例中密钥交换装置示意图;
图5为根据本申请实施方式的计算装置的结构示意图。
具体实施方式
为了进行密钥交换,本申请实施例提供一种密钥交换方法、装置和存储介质。为了更好的理解本申请实施例提供的技术方案,这里对该方案的基本原理做一下简单说明:
接收对端发送的RB,若确定RB属于G1,则计算双线性对g1’=e(RB,dA)。再计算将得到的g1’与g2’相乘得到g3’。根据KDF密钥派生函数和指定参数生成共享密钥SKA
本申请实施例中提供的密钥交换方法中,无论发起方或响应方,密钥交换的双方执行的操作相同。通过上述方法,由于双方操作相同,所以对于密钥交换的双方来说计算方便。而且信息传递只有一次,节省由于多次信息交互导致的处理资源消耗,提高协商密钥的效率。此外,在传输过程中,即使截获到RB,也无法求得共享密钥,从而保证了共享密钥的安全。
如图1所示,其为本申请实施例中密钥交换方法的流程示意图。该流程包括以下步骤:
步骤101:接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群。
步骤102:若确定RB属于G1,则计算双线性对g1’=e(RB,dA);其中g1’是群GT中的元素,dA表示本侧设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N的加法循环群,不同于G1;群GT是阶为素数N的乘法循环群。
步骤103:计算其中,Ppub表示主公钥,P2表示群G2的生成元。
步骤104:将得到的g1’与g2’相乘得到g3’。
步骤105:根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。
通过上述方法,密钥交换方法中采用双线性对,并且密钥交换中的双方,使用范围广。在传输过程中,即使截获到RA和RB,也无法求得共享密钥,从而保证了共享密钥的安全。
进一步的,接收对端发送的RB之前,所述方法还包括:
计算QB;其中,QB为椭圆曲线群G1中的元素;
随机产生临时密钥值rA;其中,rA∈[1,N-1],N是大于1的自然数;
计算RA;其中,RA=[rA]QB
将计算得到的RA发送给对端,以使对端根据RA执行相同操作。即,对端执行如下步骤:
步骤01:若确定RA属于G1,则计算双线性对g1=e(RA,dB);其中g1是群GT中的元素,dB表示对端设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N不同于G1的加法循环群;群GT是阶为素数N的乘法循环群;
步骤02:计算其中,Ppub表示主公钥,P2表示群G2的生成元;
步骤03:将得到的g1与g2相乘得到g3
步骤04:根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与对端设备相同。
通过上述方法,密钥交换中的双方执行相同操作,对于密钥交换的双方来说计算方便,并且使用范围广泛。
基于共享密钥的交换要求,协商密钥的双方各自得到的共享密钥SKA和SKB是必须相同的。这里对本申请实施例提供的方案中确实得到相同的密钥进行证明。首先在证明SKA和SKB相同之前,先对双线对的性质进行说明,即:对任意的P∈G1,Q∈G2,a,b∈ZN,有e([a]P,[b]Q)=e(P,Q)ab
在介绍完双线性对性质后,接下来证明g3=g1*g2与g3’=g1’*g2’相等即可证明双方密钥相同:
记HA=H1(IDA||hid,N),HB=H1(IDB||hid,N),其中,hid是用一个字节表示的私钥生成函数识别符,是一个相对固定的公开常数,H1是由密码杂凑函数派生的密码函数。
用户A的私钥dA生成过程是:
t1=H1(IDA||hid,N)+s mod N,t2=s/t1mod N,
dA=[t2]P2
即dA=[s/(s+HA)]P2.
同理可推导用户B的私钥dB=[s/(s+HB)]P2.
由于QB=[HB]P1+Ppub,Ppub=[s]P1
因此
P1表示群G1的生成元,P2表示群G2的生成元。需要说明的是,未做解释的符号,与前述相同符号的含义相同,此处不再赘述。
同样地,
由于QA=[HA]P1+Ppub,Ppub=[s]P1,因此
因此g3=g3’。
因为SKA=KDF(IDA||IDB||RA||RB||g3’,klen)
SKB=KDF(IDA||IDB||RA||RB||g3,klen),所以SKA=SKB。其中klen表示密钥交换的双方协商获得密钥数据的比特长度。
g3与g3’字符长度可以为384字节(3072比特),足以作为对称密码算法的密钥。如果需要获取更长的密钥流,可以根据密钥派生函数KDF由g3(或g3’)拼接指定参数派生出更多的密钥流。
如图2所示,其为本实施例中密钥交换方法的流程示意图。该流程中包括以下步骤,假设密钥交换双方为用户A和用户B:
A1:计算QB=[H1(IDB||hid,N)]P1+Ppub
A2:随机产生临时密钥值rA∈[1,N-1]。
A3:计算RA=[rA]QB
A4:将RA发送给用户B。
A5:验证RB∈G1?,若RB∈G1则执行A6,否则执行A7。
A6:计算g1’=e(RB,dA),g3’=g1’*g2
SKA=KDF(IDA||IDB||RA||RB||g3’,klen)。
A7:协商失败。
B1:计算QA=[H1(IDA||hid,N)]P1+Ppub
B2:随机产生临时密钥值rB∈[1,N-1]。
B3:计算RB=[rB]QA
B4:将RB发送给用户A。
B5:验证RA∈G1?,若RA∈G1则执行B6,否则执行A7。
B6:计算g1=e(RA,dB),g3=g1*g2
SKB=KDF(IDA||IDB||RA||RB||g3,klen)。
如图2所示,A1与B1中,用户A和用户B执行的操作和使用的数学函数相同,并且使用的参数也相同。而A6和B6中,用户A和用户B执行的操作和使用的数学函数相同,使用的部分参数不同。上述两种情况,都是用户A和用户B执行相同操作。
这样,密钥交换双方执行相同操作,并且只有一次信息传输,密钥交换算法更加简洁。在信息传输过程中即使被截获,也无法求得rB和rA,从而保证了共享密钥的安全。
如图3所示,其为本申请实施例中密钥交换方法的应用场景示意图。该场景中包括用户10的终端设备11,用户20的终端设备21。
用户10通过终端设备11与用户20的终端设备21进行密钥交换,则终端设备11首先计算QB,并随机产生临时密钥值rA。然后计算RA=[rA]QB,并将计算得到的RA发送给终端设备21。同样的,终端设备21计算QA,并随机产生临时密钥值rB。然后计算RB=[rB]QA,并将计算得到的RB发送给终端设备11。
终端设备11接收终端设备21发送的RB,若确定RB属于G1,则计算双线性对g1’=e(RB,dA)。继续计算并将得到的g1’与g2’相乘得到g3’。最后根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与终端设备21相同。同样的,终端设备21接收终端设备11发送的RA,若确定RA属于G1,则计算双线性对g1=e(RA,dB)。然后计算并将得到的g1与g2相乘得到g3。最后根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与终端设备11相同。
通过上述场景,可以看出终端设备11和终端设备21执行的操作相同。其中,终端设备11和终端设备21可通过通信网络进行通信连接,该网络可以为局域网、广域网等,当然也可以通过线连接。终端设备11和终端设备21可以为手机、平板电脑、笔记本电脑、个人计算机等。
进一步的,指定参数还包括本侧设备标识IDA、本侧参数RA、对端设备标识IDB、对端参数RB。g3与g3’字符长度为384字节(3072比特),足以作为对称密码算法的密钥,如果需要获取更长的密钥流,可以根据密钥派生函数KDF由g3(或g3’)拼接指定参数派生出更多的密钥流。
这样,共享密钥的长度不固定,可以根据需要改变,使用范围广泛。
该方法还包括,若确定RA或RB不属于G1,则确定双方密钥交换失败。这样,在信息传输过程中发现错误,通过此验证结果,则可以结束密钥交换操作,不会带来损失。
基于相同的发明构思,本申请实施例中还提供一种密钥交换装置,如图4所示,其为密钥交换装置示意图。该装置包括:
接收模块1001,用于接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群;
第一计算模块1002,用于若确定RB属于G1,则计算双线性对g1’=e(RB,dA);其中g1’是群GT中的元素,dA表示本侧设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N的加法循环群,不同于G1;群GT是阶为素数N的乘法循环群;
第二计算模块1003,用于计算其中,Ppub表示主公钥,P2表示群G2的生成元;
第三计算模块1004,用于将得到的g1’与g2’相乘得到g3’;
第四计算模块1005,用于根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。
进一步的,第五计算模块用于在接收模块1001接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群之前,计算QB;其中,QB为椭圆曲线群G1中的元素;
随机模块,用于随机产生临时密钥值rA;其中,rA∈[1,N-1],N是大于1的自然数;
第六计算模块,用于计算RA;其中,RA=[rA]QB
发送模块,用于将计算得到的RA发送给对端,以使对端根据RA执行如下操作:
若确定RA属于G1,则计算双线性对g1=e(RA,dB);其中g1是群GT中的元素,dB表示对端设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N不同于G1的加法循环群;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1与g2相乘得到g3
根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与对端设备相同。
进一步的,该装置中所述指定参数还包括:本侧设备标识IDA、本侧参数RA、对端设备标识IDB、对端参数RB
进一步的,该装置还包括:逻辑处理模块,用于若确定RB不属于G1,则确定双方密钥交换失败。
进一步的,该装置中dA=[s/(s+HA)]P2,dB=[s/(s+HB)]P2;其中,HA和HB表示由密码杂凑函数派生的密码函数,s表示主私钥。
在介绍了本申请示例性实施方式的密钥交换方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的计算装置。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本申请的计算装置可以至少包括至少一个处理器、以及至少一个存储器(如前述的第一服务器)。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本申请各种示例性实施方式的密钥交换方法中的步骤。例如,处理器可以执行如图1中所示的步骤101-105。
下面参照图5来描述根据本申请的这种实施方式的计算装置130。图5显示的计算装置130仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算装置130以通用计算装置的形式表现。计算装置130的组件可以包括但不限于:上述至少一个处理器131、上述至少一个存储器132、连接不同系统组件(包括存储器132和处理器131)的总线133。
总线133表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器132可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)1321和/或高速缓存存储器1322,还可以进一步包括只读存储器(ROM)1323。
存储器132还可以包括具有一组(至少一个)程序模块1324的程序/实用工具1325,这样的程序模块1324包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置130也可以与一个或多个外部设备134(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置130交互的设备通信,和/或与使得该计算装置130能与一个或多个其它计算装置进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口135进行。并且,计算装置130还可以通过网络适配器136与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器136通过总线133与用于计算装置130的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置130使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
在一些可能的实施方式中,本申请提供的密钥交换方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本申请各种示例性实施方式的密钥交换方法中的步骤,例如,计算机设备可以执行如图1中所示的步骤101-105。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的用于密钥交换的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算装置上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算装置上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算装置上部分在远程计算装置上执行、或者完全在远程计算装置或服务器上执行。在涉及远程计算装置的情形中,远程计算装置可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算装置,或者,可以连接到外部计算装置(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种密钥交换方法,其特征在于,所述方法包括:
接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群;
若确定RB属于G1,则计算双线性对g1’=e(RB,dA);其中g1’是群GT中的元素,dA表示本侧设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N的加法循环群,不同于G1;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1’与g2’相乘得到g3’;
根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。
2.根据权利要求1所述的方法,其特征在于,接收对端发送的RB之前,所述方法还包括:
计算QB;其中,QB为椭圆曲线群G1中的元素;
随机产生临时密钥值rA;其中,rA∈[1,N-1],N是大于1的自然数;
计算RA;其中,RA=[rA]QB
将计算得到的RA发送给对端,以使对端根据RA执行如下操作:
若确定RA属于G1,则计算双线性对g1=e(RA,dB);其中g1是群GT中的元素,dB表示对端设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N不同于G1的加法循环群;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1与g2相乘得到g3
根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与对端设备相同。
3.根据权利要求1或2所述的方法,其特征在于,所述指定参数还包括:
本侧设备标识IDA、本侧参数RA,对端设备标识IDB、对端参数RB
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定RB不属于G1,则确定双方密钥交换失败。
5.根据权利要求1或2所述的方法,其特征在于,其中,dA=[s/(s+HA)]P2,dB=[s/(s+HB)]P2;其中,HA和HB表示由密码杂凑函数派生的密码函数,s表示主私钥。
6.一种密钥交换装置,其特征在于,所述装置包括:
接收模块,用于接收对端发送的RB;其中,RB=[rB]QA,rB为对端的临时密钥值,QA为椭圆曲线群G1中的元素,G1是阶为素数N的加法循环群;
第一计算模块,用于若确定RB属于G1,则计算双线性对g1’=e(RB,dA);其中g1’是群GT中的元素,dA表示本侧设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N的加法循环群,不同于G1;群GT是阶为素数N的乘法循环群;
第二计算模块,用于计算其中,Ppub表示主公钥,P2表示群G2的生成元;
第三计算模块,用于将得到的g1’与g2’相乘得到g3’;
第四计算模块,用于根据KDF密钥派生函数和指定参数生成共享密钥SKA,其中,指定参数中除g3’外其它用于计算SKA的参数与对端设备相同。
7.根据权利要求6所述的装置,其特征在于,第五计算模块用于在接收模块接收对端发送的RB之前,计算QB;其中,QB为椭圆曲线群G1中的元素;
随机模块,用于随机产生临时密钥值rA;其中,rA∈[1,N-1],N是大于1的自然数;
第六计算模块,用于计算RA;其中,RA=[rA]QB
发送模块,用于将计算得到的RA发送给对端,以使对端根据RA执行如下操作:
若确定RA属于G1,则计算双线性对g1=e(RA,dB);其中g1是群GT中的元素,dB表示对端设备的私钥,e表示从群G1×G2到GT的双线性对,群G2是阶为素数N不同于G1的加法循环群;群GT是阶为素数N的乘法循环群;
计算其中,Ppub表示主公钥,P2表示群G2的生成元;
将得到的g1与g2相乘得到g3
根据KDF密钥派生函数和指定参数生成共享密钥SKB,其中,指定参数中除g3外其它用于计算SKB的参数与对端设备相同。
8.根据权利要求6或7所述的装置,其特征在于,所述指定参数还包括:本侧设备标识IDA、本侧参数RA、对端设备标识IDB、对端参数RB
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
逻辑处理模块,用于若确定RB不属于G1,则确定双方密钥交换失败。
10.根据权利要求6或7所述的装置,其特征在于,该装置中dA=[s/(s+HA)]P2,dB=[s/(s+HB)]P2;其中,HA和HB表示由密码杂凑函数派生的密码函数,s表示主私钥。
CN201811476101.0A 2018-12-04 2018-12-04 一种密钥交换方法、装置和存储介质 Active CN109600225B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811476101.0A CN109600225B (zh) 2018-12-04 2018-12-04 一种密钥交换方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811476101.0A CN109600225B (zh) 2018-12-04 2018-12-04 一种密钥交换方法、装置和存储介质

Publications (2)

Publication Number Publication Date
CN109600225A true CN109600225A (zh) 2019-04-09
CN109600225B CN109600225B (zh) 2019-10-15

Family

ID=65962016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811476101.0A Active CN109600225B (zh) 2018-12-04 2018-12-04 一种密钥交换方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN109600225B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247771A (zh) * 2019-06-21 2019-09-17 恒宝股份有限公司 一种智能卡及其曲线参数密钥的管理方法
CN113114627A (zh) * 2021-03-19 2021-07-13 京东数科海益信息科技有限公司 一种基于密钥交换的安全数据交互方法以及交互系统
WO2021143457A1 (zh) * 2020-01-15 2021-07-22 江苏芯盛智能科技有限公司 基于sm9算法的身份认证方法、装置和计算机设备
CN114021173A (zh) * 2021-11-15 2022-02-08 日晷科技(上海)有限公司 基于sm9密钥交换的量子密钥扩展方法、系统、介质及终端

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1889433A (zh) * 2006-07-20 2007-01-03 上海交通大学 基于隐式公钥证书的双方认证密钥协商方法及系统
CN101060530A (zh) * 2007-05-22 2007-10-24 赵运磊 可抵赖的互联网密钥交换协议
CN101119196A (zh) * 2006-08-03 2008-02-06 西安电子科技大学 一种双向认证方法及系统
CN101431414A (zh) * 2008-12-15 2009-05-13 西安电子科技大学 基于身份的认证群组密钥管理方法
US20150019868A1 (en) * 2013-07-15 2015-01-15 Korea University Research And Business Foundation Public encryption method based on user id
CN106209369A (zh) * 2016-07-01 2016-12-07 中国人民解放军国防科学技术大学 基于身份密码系统的单交互认证密钥协商协议
CN108418686A (zh) * 2017-11-23 2018-08-17 矩阵元技术(深圳)有限公司 一种多分布式的sm9解密方法与介质及密钥生成方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1889433A (zh) * 2006-07-20 2007-01-03 上海交通大学 基于隐式公钥证书的双方认证密钥协商方法及系统
CN101119196A (zh) * 2006-08-03 2008-02-06 西安电子科技大学 一种双向认证方法及系统
CN101060530A (zh) * 2007-05-22 2007-10-24 赵运磊 可抵赖的互联网密钥交换协议
CN101431414A (zh) * 2008-12-15 2009-05-13 西安电子科技大学 基于身份的认证群组密钥管理方法
US20150019868A1 (en) * 2013-07-15 2015-01-15 Korea University Research And Business Foundation Public encryption method based on user id
CN106209369A (zh) * 2016-07-01 2016-12-07 中国人民解放军国防科学技术大学 基于身份密码系统的单交互认证密钥协商协议
CN108418686A (zh) * 2017-11-23 2018-08-17 矩阵元技术(深圳)有限公司 一种多分布式的sm9解密方法与介质及密钥生成方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247771A (zh) * 2019-06-21 2019-09-17 恒宝股份有限公司 一种智能卡及其曲线参数密钥的管理方法
CN110247771B (zh) * 2019-06-21 2022-10-25 恒宝股份有限公司 一种智能卡及其曲线参数密钥的管理方法
WO2021143457A1 (zh) * 2020-01-15 2021-07-22 江苏芯盛智能科技有限公司 基于sm9算法的身份认证方法、装置和计算机设备
CN113114627A (zh) * 2021-03-19 2021-07-13 京东数科海益信息科技有限公司 一种基于密钥交换的安全数据交互方法以及交互系统
CN114021173A (zh) * 2021-11-15 2022-02-08 日晷科技(上海)有限公司 基于sm9密钥交换的量子密钥扩展方法、系统、介质及终端

Also Published As

Publication number Publication date
CN109600225B (zh) 2019-10-15

Similar Documents

Publication Publication Date Title
CN109600225B (zh) 一种密钥交换方法、装置和存储介质
CN111010277B (zh) 密钥交换方法、装置和存储介质、计算装置
CN106487503B (zh) 基于剪裁的霍普菲尔德神经网络的多元公钥密码系统和方法
EP2787682A1 (en) Key negotiation method and apparatus according to sm2 key exchange protocol
AU2021370924B2 (en) Certificate based security using post quantum cryptography
US8681986B2 (en) Single-round password-based key exchange protocols
CN109039611B (zh) 基于sm9算法的解密密钥分割及解密方法、装置、介质
CN105337737B (zh) 公钥加密通信方法和装置
CN110380862A (zh) 签名验证方法、装置、计算机设备和存储介质
WO2013053058A1 (en) Generating implicit certificates
US9172530B2 (en) Apparatus and method for generating secret key for ID-based encryption system and recording medium having program recorded thereon for causing computer to execute the method
CN109257176A (zh) 基于sm2算法的解密密钥分割及解密方法、装置和介质
JP2021145388A (ja) デジタル署名方法、署名情報検証方法、関連装置及び電子機器
CN112436938B (zh) 数字签名的生成方法、装置和服务器
CN110312054A (zh) 图像的加解密方法、及相关装置、存储介质
CN115694777A (zh) 基于同态加密的隐私集合求交方法、装置、设备及介质
JP2022095852A (ja) デジタル署名方法、署名情報の検証方法、関連装置及び電子機器
CN105162585B (zh) 一种隐私保护的会话密钥协商方法
CN105306212B (zh) 一种身份隐藏且强安全的签密方法
WO2022116175A1 (zh) 数字签名的生成方法、装置和服务器
CN108768634B (zh) 可验证加密签名生成方法和系统
CN111314080B (zh) 一种基于sm9算法的协同签名方法、装置、介质
CN102769530A (zh) 一种计算高效的在线/离线数字签名方法
CN111931204A (zh) 用于分布式系统的加密去重存储方法、终端设备
US11902428B2 (en) Key exchange system, communication apparatus, key exchange method and program

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant