CN109818744A - 共享秘密密钥生成方法、装置、计算机设备和存储介质 - Google Patents
共享秘密密钥生成方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN109818744A CN109818744A CN201910144551.8A CN201910144551A CN109818744A CN 109818744 A CN109818744 A CN 109818744A CN 201910144551 A CN201910144551 A CN 201910144551A CN 109818744 A CN109818744 A CN 109818744A
- Authority
- CN
- China
- Prior art keywords
- user
- elliptic curve
- key
- private key
- parameter
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000006870 function Effects 0.000 claims description 64
- 238000009795 derivation Methods 0.000 claims description 17
- 238000004422 calculation algorithm Methods 0.000 claims description 13
- 238000012795 verification Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本申请提供了一种共享秘密密钥生成方法、装置、计算机设备和存储介质,其中,该方法包括:获取椭圆曲线系统参数和安全哈希函数;根据椭圆曲线系统参数生成主公钥和主私钥;接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息;根据椭圆曲线系统参数、主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、主私钥和第二用户身份信息,为第二用户端生成第二用户私钥;将主公钥、椭圆曲线系统参数、安全哈希函数和第一用户私钥发送给第一用户端,将主公钥、椭圆曲线系统参数、安全哈希函数和第二用户私钥发送给第二用户端。上述方案解决了现有技术中存在的证书管理成本高的技术问题。
Description
技术领域
本申请涉及密码协议技术领域,特别涉及一种共享秘密密钥生成方法、装置、计算机设备和存储介质。
背景技术
SM2椭圆曲线公钥密码算法是由国家密码管理局颁布的一种椭圆曲线公钥密码算法,该算法确定了包括数据加密、数字签名和密钥交换等算法或协议。其中,SM2密钥交换协议因具有高安全和高效率的特性,被广泛应用于商业密码应用中的密钥交换,可适用于通信双方经过两次或可选三次的信息传递协商双方共同决定的共享秘密密钥(会话密钥)。
虽然SM2密钥交换协议安全高效且简单易用,还能为安全产品生产商提供产品和技术的标准定位以及标准化的参考以提高安全产品的可信性与互操作性,但是SM2密钥交换协议基于PKI体系设计的密码系统,需要依赖CA(Certificate Authority,证书授权中心)维护管理用户的公钥证书,涉及证书的颁发、撤销、更新等方面的工作,需要昂贵的计算和存储开销,这些开销随着用户数量增加而成线性增长,尤其是在用户量巨大的云计算和大数据环境下,证书管理开销将成为制约SM2密钥交换协议广泛应用的重要因素。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种共享秘密密钥生成方法、装置、计算机设备和存储介质,以解决现有技术中存在的证书管理成本高的问题。
本申请实施例提供了一种共享秘密密钥生成方法,包括:密钥协商系统获取椭圆曲线系统参数和安全哈希函数;密钥协商系统根据椭圆曲线系统参数生成系统主公钥和系统主私钥;密钥协商系统接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息;密钥协商系统根据椭圆曲线系统参数、系统主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、系统主私钥和第二用户身份信息,为第二用户端生成第二用户私钥;密钥协商系统将系统主公钥、椭圆曲线系统参数、安全哈希函数和第一用户私钥发送给第一用户端,将系统主公钥、椭圆曲线系统参数、安全哈希函数和第二用户私钥发送给第二用户端;其中,系统主公钥、椭圆曲线系统参数、安全哈希函数、第一用户私钥和第二用户密钥用于第一用户端和第二用户端生成共享秘密密钥。
在一个实施例中,共享秘密密钥是第一用户端和第二用户端按照如下方式生成的:第一用户端根据第一用户信息和系统主公钥验证第一用户私钥的合法性,第二用户端根据第二用户信息和系统主公钥验证第二用户私钥的合法性;在确定第一用户私钥合法的情况下,第一用户端根据第一用户私钥和椭圆曲线系统参数生成第一用户的第一公共参数,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数;第一用户端根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一用户端的第一杂凑值,第二用户端根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值;第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥。
在一个实施例中,密钥协商系统根据椭圆曲线系统参数生成系统主公钥和系统主私钥,包括按照以下公式生成系统主公钥和系统主私钥:
Ppri=dK;
Ppub=PK=[dK]G=(xK,yK),
其中,Ppub为系统主公钥,Ppri为系统主私钥,dK是从集合{1,2,…,n-1}中随机选取的整数,q、Fq、a、b、n和G为椭圆曲线系统参数,其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,定义Fq上的一条椭圆曲线E,椭圆曲线E的椭圆曲线方程为y2=x3+ax+b,G为椭圆曲线E的上一个基点,n为基点G的阶,(xK,yK)表示系统主公钥Ppub的横纵坐标。
在一个实施例中,密钥协商系统根据椭圆曲线系统参数、系统主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、系统主私钥和第二用户身份信息,为第二用户端生成第二用户私钥,包括:
按照以下公式生成第一用户私钥:
dA=lA+hAdKmod n,
按照以下公式生成第二用户私钥:
dB=lB+hBdKmod n,
其中,(dA,LA)为第一用户私钥,(dB,LB)为第二用户私钥,lA和lB是从集合{1,2,…,n-1}中随机选取的整数,[u]G为椭圆曲线的基点G的正整数u倍点,和分别表示LA和LB的横纵坐标, 其中,IDA为第一用户信息中的第一可辨别标识,IDB为第二用户信息中的第二可辨别标识,ENTLA是IDA的比特数转换而成的两个字节,ENTLB是IDB的比特数转换而成的两个字节,H为安全哈希函数,符号||表示比特串连接,mod表示模运算。
在一个实施例中,第一用户端根据第一用户信息和系统主公钥验证第一用户私钥的合法性,第二用户端根据第二用户信息和系统主公钥验证第二用户私钥的合法性,包括:
第一用户端验证以下等式是否成立以验证第一用户私钥的合法性:
第二用户端验证以下等式是否成立以验证第二用户私钥的合法性:
在一个实施例中,在确定第一用户私钥合法的情况下,第一用户端根据第一用户私钥和椭圆曲线系统参数生成第一用户端的第一公共参数,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数,包括:
第一用户端按照以下公式计算第一公共参数:
PA=[dA]G=(xA,yA);
第二用户端按照以下公式计算第二公共参数:
PB=[dB]G=(xB,yB),
其中,PA是第一公共参数,PB是第二公共参数,(xA,yA)表示PA的横纵坐标,(xB,yB)表示PB的横纵坐标。
在一个实施例中,第一用户端根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一用户端的第一杂凑值,第二用户端根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值,包括:
第一用户端按照以下公式计算第一杂凑值:
ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA);
第二用户端按照以下公式计算第二杂凑值:
ZB=H256(ENTLB||IDB||a||b||xG||yG||xB||yB),
其中,ZA是第一杂凑值,ZB是第二杂凑值,(xG,yG)表示基点G的横纵坐标。
在一个实施例中,第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥,包括:
第一用户端按照如下公式计算第一椭圆曲线点:
RA=[rA]G=(x1,y1),
其中,RA为第一椭圆曲线点,rA是从集合{1,2,…,n-1}中随机选取的整数,(x1,y1)表示RA的横纵坐标;
第一用户端将第一椭圆曲线点发送给第二用户端;
第二用户端按照如下公式计算第二椭圆曲线点:
RB=[rB]G=(x2,y2),
其中,RB为第二椭圆曲线点,rB是从集合{1,2,…,n-1}中随机选取的整数,(x2,y2)表示RB的横纵坐标;
第二用户端在第一椭圆曲线点满足椭圆曲线方程的情况下,生成第二用户端的第二秘密密钥,并将第二椭圆曲线点发送给第一用户端;
第一用户端在第二椭圆曲线点满足椭圆曲线方程的情况下,生成第一用户端的第一秘密密钥,第一秘密密钥与第二秘密密钥相等,为共享秘密密钥。
在一个实施例中,第二用户端在第一椭圆曲线点满足椭圆曲线方程的情况下,生成第二用户端的第二秘密密钥,包括:
验证以下等式是否成立以确定第一椭圆曲线点是否满足椭圆曲线方程:
在确定第一椭圆曲线点满足椭圆曲线方程的情况下,按照如下公式计算第三椭圆曲线点:
其中,V是第三椭圆曲线点,h为余因子,h=#E(Fq)/n, 其中,#E(Fq)为椭圆曲线E(Fq)的阶, &是两个整数的按比特与运算,为顶函数;
确定第三椭圆曲线点是否为无穷远点;
在确定第三椭圆曲线点不是无穷远点的情况下,按照以下公式计算第二用户端的第二秘密密钥:
KB=KDF(xV||yV||ZA||ZB,klen),
其中,KB是第二用户端的第二秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
在一个实施例中,第一用户端在第二椭圆曲线点满足椭圆曲线方程的情况下,生成第一用户端的第一秘密密钥,包括:
验证以下等式是否成立以确定第二椭圆曲线点是否满足椭圆曲线方程:
按照如下公式计算第四椭圆曲线点:
其中,U是第四椭圆曲线点,h为余因子,h=#E(Fq)/n, 其中,#E(Fq)为椭圆曲线E(Fq)的阶, 其中,&是两个整数的按比特与运算,为顶函数;
确定第四椭圆曲线点是否为无穷远点;
在确定第四椭圆曲线点不是无穷远点的情况下,按照以下公式计算第一用户端的第一秘密密钥:
KA=KDF(xU||yU||ZA||ZB,klen),
其中,KA是第一用户端的第一秘密密钥,KA=KB=K,K为共享秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
本申请实施例还提供了一种共享秘密密钥生成装置,位于密钥协商系统中,该装置包括:获取模块,用于获取椭圆曲线系统参数和安全哈希函数;第一生成模块,用于根据椭圆曲线系统参数生成系统主公钥和系统主私钥;接收模块,用于接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息;第二生成模块,用于根据椭圆曲线系统参数、系统主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、系统主私钥和第二用户身份信息,为第二用户端生成第二用户私钥;发送模块,用于将系统主公钥、椭圆曲线系统参数、安全哈希函数和第一用户私钥发送给第一用户端,将系统主公钥、椭圆曲线系统参数、安全哈希函数和第二用户私钥发送给第二用户端;其中,系统主公钥、椭圆曲线系统参数、安全哈希函数、第一用户私钥和第二用户密钥用于第一用户端和第二用户端生成共享秘密密钥。
本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的共享秘密密钥生成方法的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的共享秘密密钥生成方法的步骤。
在本申请实施例中,提供了一种共享秘密密钥生成方法,密钥协商系统根据椭圆曲线系统参数生成系统主公钥和系统主私钥,接收第一用户端和第二用户端返回的第一用户信息和第二用户信息,并根据第一用户信息和第二用户信息分别生成第一用户端的第一用户私钥和第二用户端的第二用户私钥,并将生成的第一用户私钥和第二用户私钥分别发送给第一用户端和第二用户端,以便于第一用户端和第二用户端生成共享秘密密钥,实现第一用户端和第二用户端之间的密钥交换。上述方案中,通过密钥协商系统基于用户身份信息为第一用户端和第二用户端生成私钥,直接利用第一用户端和第二用户端的身份信息代替现有技术中的用户公钥来参与第一用户端和第二用户端的密钥协商,以生成共享秘密密钥,因而能够有效地避免公钥证书的发送、验证和维护,降低和减轻系统的开销和负担,适应云计算和大数据等领域下不同用户的安全通信服务需求。通过上述方案解决了现有的共享秘密密钥生成中存在的证书管理成本高的技术问题,达到了有效降低和减轻系统成本和负担的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
图1示出了本申请一实施例中的共享秘密密钥生成方法的流程图;
图2示出了本申请一实施例中的共享秘密密钥生成方法的流程图;
图3示出了本申请一实施例中的共享秘密密钥生成装置的示意图;
图4示出了本申请一实施例中的计算机设备的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
本申请实施例提供了一种共享秘密密钥生成方法,如图1所示,可以包括以下步骤:
步骤S101,密钥协商系统获取椭圆曲线系统参数和安全哈希函数。
其中,椭圆曲线系统参数可以包括(q,Fq,a,b,n,G),其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,定义Fq上的一条椭圆曲线E,椭圆曲线E的椭圆曲线方程为y2=x3+ax+b,G为椭圆曲线E的上一个基点,n为基点G的阶。安全哈希函数可以包括H(·),H256(·)等,其中,H256(·)为消息摘要长度为256比特的安全哈希函数。在系统初始化阶段,密码协商系统中的密钥生成中心获取椭圆曲线系统参数和安全哈希函数。
步骤S102,密钥协商系统根据椭圆曲线系统参数生成系统主公钥和系统主私钥。
具体地,在系统初始化阶段,在获取椭圆曲线系统参数之后,密钥协商系统中的密钥生成中心可以根据椭圆曲线系统参数生成系统主公钥和系统主私钥。
步骤S103,密钥协商系统接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息。
具体地,为了通过密钥协商系统根据用户身份信息为作为通信双方的第一用户端和第二用户端生成用户私钥,第一用户端和第二用户端分别向密钥协商系统提交各自的第一用户信息和第二用户信息。其中,第一用户信息是第一用户端对应的用户唯一标识,第二用户信息是第二用户端对应的用户的唯一标识。该唯一标识可以包括用户的姓名、住址、邮箱地址和手机号码等信息。
步骤S104,密钥协商系统根据椭圆曲线系统参数、系统主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、系统主私钥和第二用户身份信息,为第二用户端生成第二用户私钥。
具体地,密码协商系统的密钥生成中心根据椭圆曲线系统参数、系统主私钥和第一用户身份信息为第一用户端生成第一用户私钥,并根据椭圆曲线系统参数、系统主私钥和第二用户身份信息为第二用户端生成第二用户私钥。
步骤S105,密钥协商系统将系统主公钥、椭圆曲线系统参数、安全哈希函数和第一用户私钥发送给第一用户端,将系统主公钥、椭圆曲线系统参数、安全哈希函数和第二用户私钥发送给第二用户端。
其中,系统主公钥、椭圆曲线系统参数、安全哈希函数、第一用户私钥和第二用户密钥用于第一用户端和第二用户端生成共享秘密密钥。第一用户端和第二用户端根据接收到的系统主公钥、椭圆曲线系统参数、安全哈希函数、第一用户私钥和第二用户密钥进行密钥协商,以生成共享秘密密钥。
上述实施例中的共享秘密密钥生成方法中,通过密钥协商系统基于用户身份信息为第一用户端和第二用户端生成用户私钥,直接利用第一用户端和第二用户端的身份信息代替现有技术中的用户公钥来参与第一用户端和第二用户端的密钥协商,以生成共享秘密密钥,因而能够有效地避免证书授权中心的公钥证书的发送、验证和维护,降低和减轻系统的开销和负担,适应云计算和大数据等领域下不同用户的安全通信服务需求。通过上述方案解决了现有的共享秘密密钥生成中存在的证书管理成本高的技术问题,达到了有效降低和减轻系统成本和负担的技术效果。
进一步地,在本申请一些实施例中,共享秘密密钥可以是第一用户端和第二用户端按照如下方式生成的:第一用户端根据第一用户信息和系统主公钥验证第一用户私钥的合法性,第二用户端根据第二用户信息和系统主公钥验证第二用户私钥的合法性;在确定第一用户私钥合法的情况下,第一用户端根据第一用户私钥和椭圆曲线系统参数生成第一用户的第一公共参数,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数;第一用户端根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一用户端的第一杂凑值,第二用户端根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值;第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥。
具体地,第一用户端在接收到第一用户私钥之后,根据第一用户信息和系统主公钥验证第一用户私钥的合法性,在确定第一用户私钥合法的情况下,第一用户根据第一用户私钥和椭圆曲线系统参数生成第一公共参数,然后根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一杂凑值。第二用户端在接收到第二用户私钥之后,根据第二用户信息和系统主公钥验证第二用户私钥的合法性,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数,然后根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值。之后,第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥。上述方式中,使用公共参数代替现有技术中的用户公钥,结合用户身份信息和椭圆曲线系统参数生成杂凑值,进而进行密钥协商,此外,通过SM2密钥交换算法可以实现共享秘密密钥生成的低计算复杂性、高安全性和易验证。
进一步地,在本申请一些实施例中,密钥协商系统根据椭圆曲线系统参数生成系统主公钥和系统主私钥,可以包括按照以下公式生成系统主公钥和系统主私钥:
Ppri=dK;
Ppub=PK=[dK]G=(xK,yK),
其中,Ppub为系统主公钥,Ppri为系统主私钥,dK是从集合{1,2,…,n-1}中随机选取的整数,q、Fq、a、b、n和G为椭圆曲线系统参数,其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,定义Fq上的一条椭圆曲线E,椭圆曲线E的椭圆曲线方程为y2=x3+ax+b,G为椭圆曲线E的上一个基点,n为基点G的阶,(xK,yK)表示系统主公钥Ppub的横纵坐标。通过上述方式,可以方便快捷地通过密钥生成中心生成系统主公钥和系统主私钥。
进一步地,在本申请一些实施例中,密钥协商系统根据椭圆曲线系统参数、系统主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、系统主私钥和第二用户身份信息,为第二用户端生成第二用户私钥,可以包括:
按照以下公式生成第一用户私钥:
dA=lA+hAdKmod n;
按照以下公式生成第二用户私钥:
dB=lB+hBdKmod n;
其中,(dA,LA)为第一用户私钥,(dB,LB)为第二用户私钥,lA和lB是从集合{1,2,…,n-1}中随机选取的整数,[u]G为椭圆曲线的基点G的正整数u倍点,即和分别表示LA和LB的横纵坐标,其中,IDA为第一用户信息中的第一可辨别标识,IDB为第二用户信息中的第二可辨别标识,ENTLA是IDA的比特数转换而成的两个字节,ENTLB是IDB的比特数转换而成的两个字节,H为安全哈希函数,符号||表示比特串连接,mod表示模运算。
进一步地,在本申请一些实施例中,第一用户端根据第一用户信息和系统主公钥验证第一用户私钥的合法性,第二用户端根据第二用户信息和系统主公钥验证第二用户私钥的合法性,可以包括:
第一用户端验证以下等式是否成立以验证第一用户私钥的合法性:
第二用户端验证以下等式是否成立以验证第二用户私钥的合法性:
通过上述方式,可以容易地实现用户私钥合法性的验证,在验证用户私钥合法性之后再进行密钥协商,可以提高密钥交换的准确性。
进一步地,在本申请一些实施例中,在确定第一用户私钥合法的情况下,第一用户端根据第一用户私钥和椭圆曲线系统参数生成第一用户端的第一公共参数,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数,可以包括:
第一用户端按照以下公式计算第一公共参数:
PA=[dA]G=(xA,yA);
第二用户端按照以下公式计算第二公共参数:
PB=[dB]G=(xB,yB),
其中,PA是第一公共参数,PB是第二公共参数,(xA,yA)表示PA的横纵坐标,(xB,yB)表示PB的横纵坐标。通过上述方式,可以根据用户私钥和椭圆曲线系统参数便捷地计算出第一用户端的第一公开参数和第二用户端的第二公开参数。
进一步地,在本申请一些实施例中,第一用户端根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一用户端的第一杂凑值,第二用户端根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值,可以包括:
第一用户端按照以下公式计算第一杂凑值:
ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA);
第二用户端按照以下公式计算第二杂凑值:
ZB=H256(EMTLB||IDB||a||b||xG||yG||xB||yB),
其中,ZA是第一用户身份信息、部分椭圆曲线系统参数和第一公共参数的第一杂凑值,ZB是第二用户身份信息、部分椭圆曲线系统参数和第二公共参数的第二杂凑值,(xG,yG)表示基点G的横纵坐标。
进一步地,在本申请一些实施例中,第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥,可以包括:
第一用户端按照如下公式计算第一椭圆曲线点:
RA=[rA]G=(x1,y1),
其中,RA为第一椭圆曲线点,rA是从集合{1,2,…,n-1}中随机选取的整数,(x1,y1)表示RA的横纵坐标;
第一用户端将第一椭圆曲线点发送给第二用户端;
第二用户端按照如下公式计算第二椭圆曲线点:
RB=[rB]G=(x2,y2),
其中,RB为第二椭圆曲线点,rB是从集合{1,2,…,n-1}中随机选取的整数,(x2,y2)表示RB的横纵坐标;
第二用户端在第一椭圆曲线点满足椭圆曲线方程的情况下,生成第二用户端的第二秘密密钥,并将第二椭圆曲线点发送给第一用户端;
第一用户端在第二椭圆曲线点满足椭圆曲线方程的情况下,生成第一用户端的第一秘密密钥,第一秘密密钥与第二秘密密钥相等,为共享秘密密钥。
上述实施例中,第一用户端为密钥交换的发起方,第二用户为密钥交换的响应方。第一用户端计算第一椭圆曲线点并将其发送到第二用户端进行验证,第二用户端验证第一椭圆曲线点是否满足椭圆方程,若不满足,则第二用户端验证失败,若满足,则第二用户端生成第二椭圆曲线点,并生成第二秘密密钥,将第二椭圆曲线点发送给第一用户端。第一用户端验证第二椭圆曲线点是否满足椭圆曲线方程,若不满足,则第一用户端验证失败,若满足,则第一用户端生成第一用户端的第一秘密密钥。其中,第一秘密密钥与第二秘密密钥相同,为所述共享秘密密钥。通过上述方式,第一用户端和第二用户端进行密钥协商,并生成共享秘密密钥。
进一步地,在本申请一些实施例中,第二用户端在第一椭圆曲线点满足椭圆曲线方程的情况下,生成第二用户端的第二秘密密钥,可以包括:
验证以下等式是否成立以确定第一椭圆曲线点是否满足椭圆曲线方程:
在确定第一椭圆曲线点满足椭圆曲线方程的情况下,按照如下公式计算第三椭圆曲线点:
其中,V是第三椭圆曲线点,h为余因子,h=#E(Fq)/n, 其中,#E(Fq)为椭圆曲线E(Fq)的阶, &是两个整数的按比特与运算,为顶函数,例如,为大于或等于x的最小整数;
确定第三椭圆曲线点是否为无穷远点;
在确定第三椭圆曲线点不是无穷远点的情况下,按照以下公式计算第二用户端的第二秘密密钥:
KB=KDF(xV||yV||ZA||ZB,klen),
其中,KB是第二用户端的第二秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
上述实施例中,第二用户端先计算第三椭圆曲线点并在确定第三椭圆曲线点不是无穷远点的情况下,生成第二秘密密钥,通过进一步的验证,可以提高密钥交换的准确性。
进一步地,在本申请一些实施例中,第一用户端在第二椭圆曲线点满足椭圆曲线方程的情况下,生成第一用户端的第一秘密密钥,可以包括:
验证以下等式是否成立以确定第二椭圆曲线点是否满足椭圆曲线方程:
按照如下公式计算第四椭圆曲线点:
其中,U是第四椭圆曲线点,h为余因子,h=#E(Fq)/n, 其中,#E(Fq)为椭圆曲线E(Fq)的阶, 其中,&是两个整数的按比特与运算,为顶函数;
确定第四椭圆曲线点是否为无穷远点;
在确定第四椭圆曲线点不是无穷远点的情况下,按照以下公式计算第一用户端的第一秘密密钥:
KA=KDF(xU||yU||ZA||ZB,klen),
其中,KA是第一用户端的第一秘密密钥,KA=KB=K,K为共享秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
上述实施例中,第一用户端先计算第四椭圆曲线点并在确定第四椭圆曲线点不是无穷远点的情况下,生成第一秘密密钥,通过进一步的验证,可以提高密钥交换的准确性,使得生成的第一秘密密钥和第二秘密密钥相同,实现第一用户端和第二用户端的密钥交换。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
如图2所示,示出了本申请一实施例中共享秘密密钥生成方法的流程图,可以包括以下步骤(下文中的“选项”表示该步骤是可选的,用户A相当于上文中的第一用户,用户B相当于上文中的第二用户):
步骤1.系统初始化:该步骤主要用于产生整个密钥交换过程所需参数,主要包括:椭圆曲线相关参数(q,Fq,a,b,n,G)、安全哈希函数(H(·),H256(·))。
步骤2.系统主密钥生成(KeyGen):该步骤主要用于产生系统主公私钥对(Ppub,Ppri),由密钥生成中心(Key Generation Center,KGC)执行,其中Ppub为系统主公钥,Ppri为系统主私钥。具体过程如下:
步骤2.1:KGC从集合{1,2,…,n-1}中随机选取整数dK作为主私钥Ppri=dK,其中n表示SM2密码运算所使用的椭圆曲线点群的阶。
步骤2.2:KGC根据所选主私钥dK,计算PK=[dK]G=(xK,yK)并公布系统主公钥Ppub=PK,其中G为椭圆曲线点群的基点,[dK]G表示点乘运算,(xK,yK)表示主公钥Ppub的横纵坐标。
步骤3.用户私钥提取:该步骤主要用于产生用户的私钥。假设用户i具有长度entleni比特的可辨别标识IDi,记ENTLi是由整数entleni转换而成的两个字节,则KGC为用户i生成私钥信息和公开参数过程如下:
步骤3.1:从集合{1,2,…,n-1}中随机选取整数li;计算得到用户私钥的第一部分其中,表示Li的横纵坐标。
步骤3.2:将点Li的坐标的数据类型转换成比特串后计算其中,表示安全哈希函数,符号||表示比特串连接。
步骤3.3:计算得到用户私钥的第二部分di=li+hidKmod n,其中,mod n表示模n运算。
步骤3.3:最终得到用户i的私钥信息(di,Li),并将其以安全信道的方式发送给用户i。
步骤3.4:用户i接收到(di,Li),验证的正确性以判断(di,Li)的合法性后,确定用户i的私钥信息(di,Li)及其公开参数Pi=[di]G。
因此,记用户A和用户B的私钥信息分别为(dA,LA),(dB,LB),对应的公开参数分别为PA=[dA]G,PB=[dB]G。用户A和用户B的身份可辨标识、椭圆曲线系统参数和公钥信息的杂凑值分别为ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA)和ZB=H256(ENTLB||IDB||a||b||xG||yG||xB||yB),其中a,b为椭圆曲线方程参数,xG,yG为基点G的坐标,xA,yA和xB,yB分别为PA和PB的坐标。
步骤4.密钥交换协议:该步骤主要用于用户A和B协商获得相同的秘密密钥,设用户A和B协商获得密钥数据的长度为klen比特,用户A为发起方,用户B为响应方,记具体过程如下:
步骤4.1:用户A执行以下过程:
A1:从集合{1,2,…,n-1}中随机选取整数rA;
A2:通过计算RA=[rA]G=(x1,y1)得到椭圆曲线点RA,其中,(x1,y1)表示RA的横纵坐标;
A3:将RA发送给用户B;
步骤4.2:用户B执行以下过程:
B1:从集合{1,2,…,n-1}中随机选取整数rB;
B2:通过计算RB=[rB]G=(x2,y2)得到椭圆曲线点RB,其中,(x2,y2)表示RB的横纵坐标;
B3:从RB中取出元素x2,计算
B4:计算
B5:验证RA是否满足椭圆曲线方程,若不满足则协商失败;否则从RA中取出元素x1计算
B6:计算其中,h为余因子,h=#E(Fq)/n,若V是无穷远点,则用户B协商失败;否则将xV,yV的数据类型转换成比特串;
B7:计算第二秘密密钥KB=KDF(xV||yV||ZA||ZB,klen),其中KDF(·)为密钥派生函数,得到长度为klen比特的密钥数据比特串;
B8:(选项)将RA的坐标x1,y1和RB的坐标x2,y2的数据类型转换成比特串,计算SB=H256(0x02||yV||Hash(xV||ZA||ZB||x1||y1||x2||y2));
B9:将RB、(选项SB)发送给用户A;
步骤4.3:用户A执行以下过程:
A4:从RA取出元素x1,计算
A5:计算
A6:验证RB是否满足椭圆曲线方程,若不满足则用户A协商失败;否则从RB中取出元素x2,计算
A7:计算若U是无穷远点,则A协商失败;否则将xU,yU的数据类型转换成比特串;
A8:计算第一秘密密钥KA=KDF(xU||yU||ZA||ZB,klen);
A9:(选项)将RA的坐标x1,y1和RB的坐标x2,y2的数据类型转换成比特串,计算S1=H256(0x02||yU||Hash(xU||ZA||ZB||x1||y1||x2||y2)),并检验S1=SB是否成立,若等式不成立则从用户B到用户A的密钥确认失败;
A10:(选项)计算SA=H256(0x03||yU||Hash(xU||ZA||ZB||x1||y1||x2||y2)),并将SA发送给用户B。
步骤4.4:用户B执行以下过程:
B10:(选项)计算S2=H256(0x03||yV||Hash(xV||ZA||ZB||x1||y1||x2||y2)),并检验S2=SA是否成立,若等式不成立则从用户A到用户B的密钥确认失败,若成立,则KA=KB=K,K为共享秘密密钥。
上述实施例中,密钥协商系统中的密钥生成中心KGC、用户A和用户B参与密钥交换协议过程,首先KGC产生系统主公私钥对(Ppub,Ppri)、为用户A生成私钥信息(dA,LA),以及为用户B生成私钥信息(dB,LB)。然后将(dA,LA)和(dB,LB)以安全信道的方式分别发送给用户A和用户B。最后用户A和B密钥协商得到相同的秘密密钥KA=KDF(xU||yU||ZA||ZB,klen)和KB=KDF(xV||yV||ZA||ZB,klen),其中,KA=KB。由于本申请的密钥交换协议过程中,在不改变原始基于SM2的密钥交换协议基础上,使用新型的用户私钥生成方式,即基于用户的身份来生成用户的私钥和公开参数,无需使用公钥证书,因此有效避免了昂贵的公钥证书管理和维护代价,从而保证了本申请密钥交换协议具有低计算复杂性、高安全性和易验证等特点,有效降低和减轻了系统的开销和负担,适应云计算和大数据等领域下不同用户的安全通信服务需求。
基于同一发明构思,本申请实施例中还提供了一种共享秘密密钥生成装置,如下面的实施例所述。由于共享秘密密钥生成装置解决问题的原理与共享秘密密钥生成方法相似,因此共享秘密密钥生成装置的实施可以参见共享秘密密钥生成方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本申请实施例的共享秘密密钥生成装置的一种结构框图,如图3所示,可以包括:获取模块301、第一生成模块302、接收模块303、第二生成模块304和发送模块305,下面对该结构进行说明。
获取模块301用于获取椭圆曲线系统参数和安全哈希函数;
第一生成模块302用于根据椭圆曲线系统参数生成系统主公钥和系统主私钥;
接收模块303用于接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息;
第二生成模块304用于根据椭圆曲线系统参数、系统主私钥和第一用户身份信息,为第一用户端生成第一用户私钥,根据椭圆曲线系统参数、系统主私钥和第二用户身份信息,为第二用户端生成第二用户私钥;
发送模块305用于将系统主公钥、椭圆曲线系统参数、安全哈希函数和第一用户私钥发送给第一用户端,将系统主公钥、椭圆曲线系统参数、安全哈希函数和第二用户私钥发送给第二用户端;
其中,系统主公钥、椭圆曲线系统参数、安全哈希函数、第一用户私钥和第二用户密钥用于第一用户端和第二用户端生成共享秘密密钥。
在本申请一些实施例中,共享秘密密钥可以是第一用户端和第二用户端按照如下方式生成的:第一用户端根据第一用户信息和系统主公钥验证第一用户私钥的合法性,第二用户端根据第二用户信息和系统主公钥验证第二用户私钥的合法性;在确定第一用户私钥合法的情况下,第一用户端根据第一用户私钥和椭圆曲线系统参数生成第一用户的第一公共参数,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数;第一用户端根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一用户端的第一杂凑值,第二用户端根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值;第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥。
在本申请一些实施例中,第一生成模块可以具体用于按照以下公式生成系统主公钥和系统主私钥:
Ppri=dK;
Ppub=PK=[dK]G=(xK,yK),
其中,Ppub为系统主公钥,Ppri为系统主私钥,dK是从集合{1,2,…,n-1}中随机选取的整数,q、Fq、a、b、n和G为椭圆曲线系统参数,其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,定义Fq上的一条椭圆曲线E,椭圆曲线E的椭圆曲线方程为y2=x3+ax+b,G为椭圆曲线E的上一个基点,n为基点G的阶,(xK,yK)表示系统主公钥Ppub的横纵坐标。
在本申请一些实施例中,第二生成模块可以具体用于:
按照以下公式生成第一用户私钥:
dA=lA+hAdKmod n,
按照以下公式生成第二用户私钥:
dB=lB+hBdKmod n,
其中,(dA,LA)为第一用户私钥,(dB,LB)为第二用户私钥,lA和lB是从集合{1,2,…,n-1}中随机选取的整数,[u]G为椭圆曲线的基点G的正整数u倍点,和分别表示LA和LB的横纵坐标, 其中,IDA为第一用户信息中的第一可辨别标识,IDB为第二用户信息中的第二可辨别标识,ENTLA是IDA的比特数转换而成的两个字节,ENTLB是IDB的比特数转换而成的两个字节,H为安全哈希函数,符号||表示比特串连接,mod表示模运算。
在本申请一些实施例中,第一用户端根据第一用户信息和系统主公钥验证第一用户私钥的合法性,第二用户端根据第二用户信息和系统主公钥验证第二用户私钥的合法性,可以包括:
第一用户端验证以下等式是否成立以验证第一用户私钥的合法性:
第二用户端验证以下等式是否成立以验证第二用户私钥的合法性:
在本申请一些实施例中,在确定第一用户私钥合法的情况下,第一用户端根据第一用户私钥和椭圆曲线系统参数生成第一用户端的第一公共参数,在确定第二用户私钥合法的情况下,第二用户端根据第二用户私钥和椭圆曲线系统参数生成第二用户端的第二公共参数,可以包括:
第一用户端按照以下公式计算第一公共参数:
PA=[dA]G=(xA,yA);
第二用户端按照以下公式计算第二公共参数:
PB=[dB]G=(xB,yB),
其中,PA是第一公共参数,PB是第二公共参数,(xA,yA)表示PA的横纵坐标,(xB,yB)表示PB的横纵坐标。
在本申请一些实施例中,第一用户端根据第一公共参数、第一用户身份信息和椭圆曲线系统参数生成第一用户端的第一杂凑值,第二用户端根据第二公共参数、第二用户身份信息和椭圆曲线系统参数生成第二用户端的第二杂凑值,可以包括:
第一用户端按照以下公式计算第一杂凑值:
ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA);
第二用户端按照以下公式计算第二杂凑值:
ZB=H256(ENTLB||IDB||a||b||xG||yG||xB||yB),
其中,ZA是第一杂凑值,ZB是第二杂凑值,(xG,yG)表示基点G的横纵坐标。
在本申请一些实施例中,第一用户端和第二用户端根据系统主公钥、椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥,可以包括:
第一用户端按照如下公式计算第一椭圆曲线点:
RA=[rA]G=(x1,y1),
其中,RA为第一椭圆曲线点,rA是从集合{1,2,…,n-1}中随机选取的整数,(x1,y1)表示RA的横纵坐标;
第一用户端将第一椭圆曲线点发送给第二用户端;
第二用户端按照如下公式计算第二椭圆曲线点:
RB=[rB]G=(x2,y2),
其中,RB为第二椭圆曲线点,rB是从集合{1,2,…,n-1}中随机选取的整数,(x2,y2)表示RB的横纵坐标;
第二用户端在第一椭圆曲线点满足椭圆曲线方程的情况下,生成第二用户端的第二秘密密钥,并将第二椭圆曲线点发送给第一用户端;
第一用户端在第二椭圆曲线点满足椭圆曲线方程的情况下,生成第一用户端的第一秘密密钥,第一秘密密钥与第二秘密密钥相等,为共享秘密密钥。
在本申请一些实施例中,第二用户端在第一椭圆曲线点满足椭圆曲线方程的情况下,生成第二用户端的第二秘密密钥,可以包括:
验证以下等式是否成立以确定第一椭圆曲线点是否满足椭圆曲线方程:
在确定第一椭圆曲线点满足椭圆曲线方程的情况下,按照如下公式计算第三椭圆曲线点:
其中,V是第三椭圆曲线点,h为余因子,h=#E(Fq)/n, 其中,#E(Fq)为椭圆曲线E(Fq)的阶, &是两个整数的按比特与运算,为顶函数;
确定第三椭圆曲线点是否为无穷远点;
在确定第三椭圆曲线点不是无穷远点的情况下,按照以下公式计算第二用户端的第二秘密密钥:
KB=KDF(xV||yV||ZA||ZB,klen),
其中,KB是第二用户端的第二秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
在本申请一些实施例中,第一用户端在第二椭圆曲线点满足椭圆曲线方程的情况下,生成第一用户端的第一秘密密钥,可以包括:
验证以下等式是否成立以确定第二椭圆曲线点是否满足椭圆曲线方程:
按照如下公式计算第四椭圆曲线点:
其中,U是第四椭圆曲线点,h为余因子,h=#E(Fq)/n, 其中,#E(Fq)为椭圆曲线E(Fq)的阶, 其中,&是两个整数的按比特与运算,为顶函数;
确定第四椭圆曲线点是否为无穷远点;
在确定第四椭圆曲线点不是无穷远点的情况下,按照以下公式计算第一用户端的第一秘密密钥:
KA=KDF(xU||yU||ZA||ZB,klen),
其中,KA是第一用户端的第一秘密密钥,KA=KB=K,K为共享秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
从以上的描述中,可以看出,本申请实施例实现了如下技术效果:通过密钥协商系统基于用户身份信息为第一用户端和第二用户端生成私钥,直接利用第一用户端和第二用户端的身份信息代替现有技术中的用户公钥来参与第一用户端和第二用户端的密钥协商,以生成共享秘密密钥,因而能够有效地避免公钥证书的发送、验证和维护,降低和减轻系统的开销和负担,适应云计算和大数据等领域下不同用户的安全通信服务需求。通过上述方案解决了现有的共享秘密密钥生成中存在的证书管理成本高的技术问题,达到了有效降低和减轻系统成本和负担的技术效果。
本申请实施方式还提供了一种计算机设备,具体可以参阅图4所示的基于本申请实施例提供的共享秘密密钥生成方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备41、处理器42、存储器43。其中,所述存储器43用于存储处理器可执行指令。所述处理器42执行所述指令时实现上述任意实施例中所述的共享秘密密钥生成方法的步骤。所述输入设备31具体可以用于输入椭圆曲线系统参数等。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本申请实施方式中还提供了一种基于共享秘密密钥生成方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述共享秘密密钥生成方法的步骤。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种共享秘密密钥生成方法,其特征在于,所述方法包括:
密钥协商系统获取椭圆曲线系统参数和安全哈希函数;
所述密钥协商系统根据所述椭圆曲线系统参数生成系统主公钥和系统主私钥;
所述密钥协商系统接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息;
所述密钥协商系统根据所述椭圆曲线系统参数、所述系统主私钥和所述第一用户身份信息,为所述第一用户端生成第一用户私钥,根据所述椭圆曲线系统参数、所述系统主私钥和所述第二用户身份信息,为所述第二用户端生成第二用户私钥;
所述密钥协商系统将所述系统主公钥、所述椭圆曲线系统参数、所述安全哈希函数和所述第一用户私钥发送给所述第一用户端,将所述系统主公钥、所述椭圆曲线系统参数、所述安全哈希函数和所述第二用户私钥发送给所述第二用户端;
其中,所述系统主公钥、所述椭圆曲线系统参数、所述安全哈希函数、所述第一用户私钥和所述第二用户密钥用于所述第一用户端和所述第二用户端生成共享秘密密钥。
2.根据权利要求1所述的方法,其特征在于,所述共享秘密密钥是所述第一用户端和所述第二用户端按照如下方式生成的:
所述第一用户端根据所述第一用户信息和所述系统主公钥验证所述第一用户私钥的合法性,所述第二用户端根据所述第二用户信息和所述系统主公钥验证所述第二用户私钥的合法性;
在确定所述第一用户私钥合法的情况下,所述第一用户端根据所述第一用户私钥和所述椭圆曲线系统参数生成所述第一用户的第一公共参数,在确定所述第二用户私钥合法的情况下,所述第二用户端根据所述第二用户私钥和所述椭圆曲线系统参数生成所述第二用户端的第二公共参数;
所述第一用户端根据所述第一公共参数、所述第一用户身份信息和所述椭圆曲线系统参数生成所述第一用户端的第一杂凑值,所述第二用户端根据所述第二公共参数、所述第二用户身份信息和所述椭圆曲线系统参数生成所述第二用户端的第二杂凑值;
所述第一用户端和第二用户端根据所述系统主公钥、所述椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥。
3.根据权利要求2所述的方法,其特征在于,所述密钥协商系统根据所述椭圆曲线系统参数生成系统主公钥和系统主私钥,包括:
按照以下公式生成所述系统主公钥和系统主私钥:
Ppri=dK;
Ppub=PK=[dK]G=(xK,yK),
其中,Ppub为所述系统主公钥,Ppri为所述系统主私钥,dK是从集合{1,2,…,n-1}中随机选取的整数,q、Fq、a、b、n和G为椭圆曲线系统参数,其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,定义Fq上的一条椭圆曲线E,椭圆曲线E的椭圆曲线方程为y2=x3+ax+b,G为椭圆曲线E的上一个基点,n为基点G的阶,(xK,yK)表示系统主公钥Ppub的横纵坐标。
4.根据权利要求3所述的方法,其特征在于,所述密钥协商系统根据所述椭圆曲线系统参数、所述系统主私钥和所述第一用户身份信息,为所述第一用户端生成第一用户私钥,根据所述椭圆曲线系统参数、所述系统主私钥和所述第二用户身份信息,为所述第二用户端生成第二用户私钥,包括:
按照以下公式生成第一用户私钥:
dA=lA+hAdK mod n,
按照以下公式生成第二用户私钥:
dB=lB+hBdK mod n,
其中,(dA,LA)为所述第一用户私钥,(dB,LB)为所述第二用户私钥,lA和lB是从集合{1,2,…,n-1}中随机选取的整数,[u]G为椭圆曲线的基点G的正整数u倍点,和分别表示LA和LB的横纵坐标, 其中,IDA为所述第一用户信息中的第一可辨别标识,IDB为所述第二用户信息中的第二可辨别标识,ENTLA是IDA的比特数转换而成的两个字节,ENTLB是IDB的比特数转换而成的两个字节,H为安全哈希函数,符号||表示比特串连接,mod表示模运算。
5.根据权利要求4所述的方法,其特征在于,所述第一用户端根据所述第一用户信息和所述系统主公钥验证所述第一用户私钥的合法性,所述第二用户端根据所述第二用户信息和所述系统主公钥验证所述第二用户私钥的合法性,包括:
所述第一用户端验证以下等式是否成立以验证所述第一用户私钥的合法性:
所述第二用户端验证以下等式是否成立以验证所述第二用户私钥的合法性:
6.根据权利要求5所述的方法,其特征在于,在确定所述第一用户私钥合法的情况下,所述第一用户端根据所述第一用户私钥和所述椭圆曲线系统参数生成所述第一用户端的第一公共参数,在确定所述第二用户私钥合法的情况下,所述第二用户端根据所述第二用户私钥和所述椭圆曲线系统参数生成所述第二用户端的第二公共参数,包括:
所述第一用户端按照以下公式计算第一公共参数:
PA=[dA]G=(xA,yA);
所述第二用户端按照以下公式计算第二公共参数:
PB=[dB]G=(xB,yB),
其中,PA是所述第一公共参数,PB是所述第二公共参数,(xA,yA)表示PA的横纵坐标,(xB,yB)表示PB的横纵坐标。
7.根据权利要求6所述的方法,其特征在于,所述第一用户端根据所述第一公共参数、所述第一用户身份信息和所述椭圆曲线系统参数生成所述第一用户端的第一杂凑值,所述第二用户端根据所述第二公共参数、所述第二用户身份信息和所述椭圆曲线系统参数生成所述第二用户端的第二杂凑值,包括:
所述第一用户端按照以下公式计算第一杂凑值:
ZA=H256(ENTLA||IDA||a||b||xG||yG||xA||yA);
所述第二用户端按照以下公式计算第二杂凑值:
ZB=H256(ENTLB||IDB||a||b||xG||yG||xB||yB),
其中,ZA是所述第一杂凑值,ZB是所述第二杂凑值,(xG,yG)表示基点G的横纵坐标。
8.根据权利要求7所述的方法,其特征在于,所述第一用户端和第二用户端根据所述系统主公钥、所述椭圆曲线系统参数、第一用户私钥、第二用户私钥、第一公开参数、第二公开参数、第一杂凑值和第二杂凑值,利用SM2密钥交换算法进行密钥协商,以生成共享秘密密钥,包括:
所述第一用户端按照如下公式计算第一椭圆曲线点:
RA=[rA]G=(x1,y1),
其中,RA为所述第一椭圆曲线点,rA是从集合{1,2,…,n-1}中随机选取的整数,(x1,y1)表示RA的横纵坐标;
所述第一用户端将所述第一椭圆曲线点发送给所述第二用户端;
所述第二用户端按照如下公式计算第二椭圆曲线点:
RB=[rB]G=(x2,y2),
其中,RB为所述第二椭圆曲线点,rB是从集合{1,2,…,n-1}中随机选取的整数,(x2,y2)表示RB的横纵坐标;
所述第二用户端在所述第一椭圆曲线点满足所述椭圆曲线方程的情况下,生成所述第二用户端的第二秘密密钥,并将所述第二椭圆曲线点发送给所述第一用户端;
所述第一用户端在所述第二椭圆曲线点满足所述椭圆曲线方程的情况下,生成所述第一用户端的第一秘密密钥,所述第一秘密密钥与所述第二秘密密钥相等,为所述共享秘密密钥。
9.根据权利要求8所述的方法,其特征在于,所述第二用户端在所述第一椭圆曲线点满足所述椭圆曲线方程的情况下,生成所述第二用户端的第二秘密密钥,包括:
验证以下等式是否成立以确定所述第一椭圆曲线点是否满足所述椭圆曲线方程:
在确定所述第一椭圆曲线点满足所述椭圆曲线方程的情况下,按照如下公式计算第三椭圆曲线点:
其中,V是所述第三椭圆曲线点,h为余因子,h=#E(Fq)/n,其中,#E(Fq)为椭圆曲线E(Fq)的阶,&是两个整数的按比特与运算,为顶函数;
确定所述第三椭圆曲线点是否为无穷远点;
在确定所述第三椭圆曲线点不是无穷远点的情况下,按照以下公式计算所述第二用户端的第二秘密密钥:
KB=KDF(xV||yV||ZA||ZB,klen),
其中,KB是第二用户端的第二秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
10.根据权利要求9所述的方法,其特征在于,所述第一用户端在所述第二椭圆曲线点满足所述椭圆曲线方程的情况下,生成所述第一用户端的第一秘密密钥,包括:
验证以下等式是否成立以确定所述第二椭圆曲线点是否满足所述椭圆曲线方程:
按照如下公式计算第四椭圆曲线点:
其中,U是所述第四椭圆曲线点,h为余因子,h=#E(Fq)/n,其中,#E(Fq)为椭圆曲线E(Fq)的阶,其中,&是两个整数的按比特与运算,为顶函数;
确定所述第四椭圆曲线点是否为无穷远点;
在确定第四椭圆曲线点不是无穷远点的情况下,按照以下公式计算所述第一用户端的第一秘密密钥:
KA=KDF(xU||yU||ZA||ZB,klen),
其中,KA是第一用户端的第一秘密密钥,KA=KB=K,K为所述共享秘密密钥,KDF是密钥派生函数,klen是密钥派生函数输出的密钥数据比特串的指定长度。
11.一种共享秘密密钥生成装置,其特征在于,所述装置位于密钥协商系统中,所述装置包括:
获取模块,用于获取椭圆曲线系统参数和安全哈希函数;
第一生成模块,用于根据所述椭圆曲线系统参数生成系统主公钥和系统主私钥;
接收模块,用于接收第一用户端返回的第一用户身份信息和第二用户端返回的第二用户身份信息;
第二生成模块,用于根据所述椭圆曲线系统参数、所述系统主私钥和所述第一用户身份信息,为所述第一用户端生成第一用户私钥,根据所述椭圆曲线系统参数、所述系统主私钥和所述第二用户身份信息,为所述第二用户端生成第二用户私钥;
发送模块,用于将所述系统主公钥、所述椭圆曲线系统参数、所述安全哈希函数和所述第一用户私钥发送给所述第一用户端,将所述系统主公钥、所述椭圆曲线系统参数、所述安全哈希函数和所述第二用户私钥发送给所述第二用户端;
其中,所述系统主公钥、所述椭圆曲线系统参数、所述安全哈希函数、所述第一用户私钥和所述第二用户密钥用于所述第一用户端和所述第二用户端生成共享秘密密钥。
12.一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至10中任一项所述方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现权利要求1至10中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910144551.8A CN109818744B (zh) | 2019-02-27 | 2019-02-27 | 共享秘密密钥生成方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910144551.8A CN109818744B (zh) | 2019-02-27 | 2019-02-27 | 共享秘密密钥生成方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109818744A true CN109818744A (zh) | 2019-05-28 |
CN109818744B CN109818744B (zh) | 2022-11-18 |
Family
ID=66607534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910144551.8A Active CN109818744B (zh) | 2019-02-27 | 2019-02-27 | 共享秘密密钥生成方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109818744B (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010277A (zh) * | 2019-12-27 | 2020-04-14 | 北京海泰方圆科技股份有限公司 | 密钥交换方法、装置和存储介质、计算装置 |
CN111162906A (zh) * | 2019-12-27 | 2020-05-15 | 上海市数字证书认证中心有限公司 | 一种基于茫然传输算法的协同秘密分享方法及装置、系统、介质 |
CN111342967A (zh) * | 2020-03-06 | 2020-06-26 | 北京中宇万通科技股份有限公司 | 一种区块链用户证书丢失或损坏解决方法和装置 |
CN111783136A (zh) * | 2020-06-17 | 2020-10-16 | 联想(北京)有限公司 | 一种数据保护方法、装置、设备和存储介质 |
CN111368317B (zh) * | 2020-03-04 | 2021-03-19 | 江苏经贸职业技术学院 | 一种计算机数据加密系统及方法 |
CN112887082A (zh) * | 2020-09-15 | 2021-06-01 | 深圳奥联信息安全技术有限公司 | 一种密钥生成方法及装置 |
CN113141247A (zh) * | 2021-04-25 | 2021-07-20 | 重庆都会信息科技有限公司 | 一种同态加密方法、装置、系统及可读存储介质 |
CN113468601A (zh) * | 2021-06-30 | 2021-10-01 | 建信金融科技有限责任公司 | 数据隐私融合方法和装置 |
CN113538129A (zh) * | 2021-07-19 | 2021-10-22 | 建信金融科技有限责任公司 | 一种跨机构的隐私查询请求方法及装置 |
CN113572607A (zh) * | 2021-08-11 | 2021-10-29 | 太原理工大学 | 一种采用非平衡sm2密钥交换算法的安全通信方法 |
CN113765670A (zh) * | 2020-06-03 | 2021-12-07 | 成都天瑞芯安科技有限公司 | 无证书的可信任密钥生成方法与系统 |
CN114128209A (zh) * | 2019-07-17 | 2022-03-01 | 日本电信电话株式会社 | 密钥交换系统、通信装置、密钥交换方法及程序 |
CN117729056A (zh) * | 2024-02-09 | 2024-03-19 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种设备身份认证方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104481A (zh) * | 2010-12-17 | 2011-06-22 | 中国科学院数据与通信保护研究教育中心 | 一种基于椭圆曲线的密钥交换方法 |
CN105024994A (zh) * | 2015-05-29 | 2015-11-04 | 西北工业大学 | 无对运算的安全无证书混合签密方法 |
WO2017152423A1 (zh) * | 2016-03-11 | 2017-09-14 | 华为技术有限公司 | 密钥协商方法、设备和系统 |
CN108989053A (zh) * | 2018-08-29 | 2018-12-11 | 武汉珈港科技有限公司 | 一种基于椭圆曲线的无证书公钥密码体制实现方法 |
-
2019
- 2019-02-27 CN CN201910144551.8A patent/CN109818744B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104481A (zh) * | 2010-12-17 | 2011-06-22 | 中国科学院数据与通信保护研究教育中心 | 一种基于椭圆曲线的密钥交换方法 |
CN105024994A (zh) * | 2015-05-29 | 2015-11-04 | 西北工业大学 | 无对运算的安全无证书混合签密方法 |
WO2017152423A1 (zh) * | 2016-03-11 | 2017-09-14 | 华为技术有限公司 | 密钥协商方法、设备和系统 |
CN108989053A (zh) * | 2018-08-29 | 2018-12-11 | 武汉珈港科技有限公司 | 一种基于椭圆曲线的无证书公钥密码体制实现方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114128209A (zh) * | 2019-07-17 | 2022-03-01 | 日本电信电话株式会社 | 密钥交换系统、通信装置、密钥交换方法及程序 |
CN114128209B (zh) * | 2019-07-17 | 2024-05-24 | 日本电信电话株式会社 | 密钥交换系统、通信装置、密钥交换方法及记录介质 |
CN111162906A (zh) * | 2019-12-27 | 2020-05-15 | 上海市数字证书认证中心有限公司 | 一种基于茫然传输算法的协同秘密分享方法及装置、系统、介质 |
CN111010277A (zh) * | 2019-12-27 | 2020-04-14 | 北京海泰方圆科技股份有限公司 | 密钥交换方法、装置和存储介质、计算装置 |
CN111010277B (zh) * | 2019-12-27 | 2021-06-25 | 北京海泰方圆科技股份有限公司 | 密钥交换方法、装置和存储介质、计算装置 |
CN111162906B (zh) * | 2019-12-27 | 2023-04-14 | 上海市数字证书认证中心有限公司 | 一种基于茫然传输算法的协同秘密分享方法及装置、系统、介质 |
CN111368317B (zh) * | 2020-03-04 | 2021-03-19 | 江苏经贸职业技术学院 | 一种计算机数据加密系统及方法 |
CN111342967A (zh) * | 2020-03-06 | 2020-06-26 | 北京中宇万通科技股份有限公司 | 一种区块链用户证书丢失或损坏解决方法和装置 |
CN113765670B (zh) * | 2020-06-03 | 2024-01-26 | 成都天瑞芯安科技有限公司 | 无证书的可信任密钥生成方法与系统 |
CN113765670A (zh) * | 2020-06-03 | 2021-12-07 | 成都天瑞芯安科技有限公司 | 无证书的可信任密钥生成方法与系统 |
CN111783136A (zh) * | 2020-06-17 | 2020-10-16 | 联想(北京)有限公司 | 一种数据保护方法、装置、设备和存储介质 |
CN111783136B (zh) * | 2020-06-17 | 2024-07-23 | 联想(北京)有限公司 | 一种数据保护方法、装置、设备和存储介质 |
CN112887082A (zh) * | 2020-09-15 | 2021-06-01 | 深圳奥联信息安全技术有限公司 | 一种密钥生成方法及装置 |
CN113141247B (zh) * | 2021-04-25 | 2023-07-04 | 重庆都会信息科技有限公司 | 一种同态加密方法、装置、系统及可读存储介质 |
CN113141247A (zh) * | 2021-04-25 | 2021-07-20 | 重庆都会信息科技有限公司 | 一种同态加密方法、装置、系统及可读存储介质 |
CN113468601A (zh) * | 2021-06-30 | 2021-10-01 | 建信金融科技有限责任公司 | 数据隐私融合方法和装置 |
CN113538129A (zh) * | 2021-07-19 | 2021-10-22 | 建信金融科技有限责任公司 | 一种跨机构的隐私查询请求方法及装置 |
CN113572607A (zh) * | 2021-08-11 | 2021-10-29 | 太原理工大学 | 一种采用非平衡sm2密钥交换算法的安全通信方法 |
CN117729056A (zh) * | 2024-02-09 | 2024-03-19 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种设备身份认证方法和系统 |
CN117729056B (zh) * | 2024-02-09 | 2024-05-03 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 一种设备身份认证方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109818744B (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109818744B (zh) | 共享秘密密钥生成方法、装置、计算机设备和存储介质 | |
CN108809658B (zh) | 一种基于sm2的身份基的数字签名方法与系统 | |
US10903991B1 (en) | Systems and methods for generating signatures | |
CN107483212B (zh) | 一种双方协作生成数字签名的方法 | |
CN104539423B (zh) | 一种无双线性对运算的无证书公钥密码体制的实现方法 | |
CN110247757B (zh) | 基于国密算法的区块链处理方法、装置及系统 | |
CA2772136C (en) | System and method for providing credentials | |
CN108667626A (zh) | 安全的两方协作sm2签名方法 | |
US12010216B2 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
CN112235107B (zh) | 一种数据传输方法、装置、设备和存储介质 | |
EP3360279B1 (en) | Public key infrastructure&method of distribution | |
CN107659395A (zh) | 一种多服务器环境下基于身份的分布式认证方法及系统 | |
CN113300836B (zh) | 一种基于区块链和ecc的车载网络报文认证方法及系统 | |
CN111147245A (zh) | 一种区块链中使用国家密码进行加密的算法 | |
US11528127B2 (en) | Computer-implemented system and method for highly secure, high speed encryption and transmission of data | |
WO2020058806A1 (en) | Computer implemented system and method for sharing a common secret | |
CN110597836A (zh) | 基于区块链网络的信息查询请求响应方法及装置 | |
CN114844643A (zh) | 一种基于双线性映射获取适配器签名的方法和电子设备 | |
WO2021010444A1 (ja) | 鍵交換システム、通信装置、鍵交換方法及びプログラム | |
JP5432776B2 (ja) | Idベース暗号利用方法、暗号化装置、管理装置及びそれらのプログラム | |
US8638928B2 (en) | Key exchanging apparatus | |
CN118413321B (zh) | 资源公钥基础设施的资源签发方法、资源验证方法及系统 | |
CN109327310B (zh) | 一种基于无证书的链路保护方法 | |
KR101489856B1 (ko) | Ami 환경에서 중간자공격에 안전한 경량화 키 분배 프로토콜 | |
CN115174058A (zh) | 一种基于sm2算法的两方适配器签名生成方法及系统 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230413 Address after: 518061 room 304, block B, building 5, software industry base, Nanshan District, Shenzhen City, Guangdong Province Patentee after: JUZIX TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: WUHAN University Address before: 518061 room 304, block B, building 5, software industry base, Nanshan District, Shenzhen City, Guangdong Province Patentee before: JUZIX TECHNOLOGY (SHENZHEN) Co.,Ltd. |