本发明涉及数字货币技术领域,尤其是一种隐式证书分发方法及系统。
背景技术:
可信中心(certificationauthority,ca)在安全公钥基础设施中作为中心角色扮演最顶层的可信根节点。可信中心通过颁发证书把用户的公钥和身份绑定在一起作为数字证书。数字证书类似于现实生活中的身份证,是一段含有证书持有人身份信息并经过认证中心签发的电子数据,能够为网络应用提供加密和数字签名等密码服务所必需的密钥和证书管理体系。这些证书通常由用户的身份信息,用户的公钥再加上由可信中心产生的签名组成。
在传统证书中,公钥和数字签名是不同的数据,而在隐式证书中,公钥和数字签名合二为一,在需要的时候可以从该数据生成公钥并且验证公钥。比较典型的隐式认证方案是ecqv(ellipticcurvequ-vanstone),它的数学基础是椭圆曲线理论,适用于weierstrass椭圆曲线。ecqv的提出已经过去了二十年以上,到目前为止几乎没有什么变动,它所基于的签名算法已经是二三十年前的标准了,不能适用于当前认可度多、使用广的twistededwards曲线。
技术实现要素:
鉴于上述的分析,本发明旨在提供一种隐式证书分发方法及系统,实现可适应不同椭圆曲线的、应用更广泛的隐式证书分发。
本发明的目的主要是通过以下技术方案实现的:
一方面,提供了一种隐式证书分发方法,应用于认证中心,包括,
生成椭圆曲线的生成元g以及认证中心的私钥kca、公钥qca;
根据用户产生的临时公钥和认证中心产生的临时私钥产生随机数r;
根据随机数r、用户的临时公钥和生成元g计算用户在椭圆曲线上的坐标y;
根据用户在椭圆曲线上的坐标、认证中心的公钥、私钥、用户的身份生成用户的认证结果s;
将认证结果s和用户坐标y发送给用户,用于产生用户的新公钥和新私钥。
进一步地,所述随机数r的生成方法为:
接收用户根据用户临时私钥a生成的用户临时公钥ag,a为随机数,a∈[1,n-1],n为椭圆曲线生成元g的阶;
选择随机数k∈[1,n-1],作为认证中心临时私钥,计算认证中心临时公钥kg;
计算hk=h(ag||k)和r=h(hk)得到随机数r;式中h(·)为hash函数,||为联接符号。
进一步地,根据公式y=ag+rg计算用户在椭圆曲线上的坐标y。
进一步地,所述认证结果s=er+dkca(modn),式中,
d=yx,yx表示取点y的x坐标;
e=h(y||qca||ida),ida为用户的身份。
进一步地,所述认证结果s=er+dkca(modn),式中,
d=h(y);
e=h(y||qca||ida),ida为用户的身份。
进一步地,用户的新私钥为a′=2c(ea+s)(modn),新公钥是q′a=2c(ey+d·qca),c为椭圆曲线阶的2因子的幂次。
进一步地,c∈{0,1,2,3}。
进一步地,参数c=0时对应于weierstrass曲线。
进一步地,参数c={1,2,3}时对应于twistededwards曲线。
另一方面,提供了一种隐式证书分发系统,包括,
系统参数生成模块,用于生成椭圆曲线的生成元g以及认证中心的私钥kca、公钥qca;
随机数生成模块,用于根据用户产生的临时公钥和认证中心产生的临时私钥产生随机数r;
用户坐标计算模块,用于根据随机数r、用户的临时公钥和生成元g计算用户在椭圆曲线上的坐标y;
认证结果生成模块,用于根据用户在椭圆曲线上的坐标、认证中心的公钥、私钥、用户的身份生成用户的认证结果s;
发送模块,用于将认证结果s和用户坐标y发送给用户,使用户产生的新公钥和新私钥。
本发明有益效果如下:
1)适用于普通的weierstrass椭圆曲线方程,也可用于当前认可度多、使用广的edwards曲线;
2)随机性不只依赖于认证中心,还可抵抗小子群攻击;
3)在随机性方面,比ecqv随机性更灵活,可以避免因认证中心随机数产生出现故障或者有人为的陷门而导致整个方案的随机数有缺陷的问题;
4)在随机预言模型和一般群模型假设下可以证明对被动敌手是安全的。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本实施例中的隐式证书分发方法流程图。
图2为本实施例中的隐式证书分发系统组成连接示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。
原有的隐式证书ecqv颁发的过程如下:
首先认证中心ca生成系统参数,包括安全椭圆曲线,椭圆曲线的生成元g。假设认证中心的私钥为kca,对应的公钥为qca=kcag。
给用户a的隐式证书过程如下:
1)用户a产生一个随机数a∈[1,n-1],再计算ag,然后把ag传送给认证中心;
2)认证中心选择随机数k∈[1,n-1],并计算kg,其中n为椭圆曲线的阶;
3)认证中心计算y=ag+kg;
4)认证中心计算e=h(y||ida),其中h(·)是一个hash函数,||为联接符号,ida为用户a的身份;
5)认证中心再计算s=ek+kca(modn),最后把(s,y)发给用户a。
则用户a的新的私钥为a′=ea+s(modn),新的公钥是q′a=ey+qca。
隐式认证有以下优势:
1)隐式证书比传统公钥证书小,隐式证书在传输过程中就可以减少带宽,更适合非接触式智能卡等资源受限环境。
2)隐式认证比传统认证计算量少。在隐式认证中没有对签名的认证过程,而且一些计算可以融入到随后的协议交互中,从而减少了计算,提高了效率。
但由于,隐式证书ecqv提出已经过去了二十年以上,只适用于weierstrass椭圆曲线,不能适用于当前认可度多、使用广的twistededwards曲线。
本发明实施例公开了一种隐式证书分发方法,实现可适应包括weierstrass椭圆曲线以及twistededwards曲线等不同椭圆曲线的、应用更广泛的隐式证书分发。
具体的隐式证书分发方法,如图1所示,包括以下步骤:
步骤s1、认证中心生成包括椭圆曲线、椭圆曲线的生成元g以及认证中心的私钥kca、公钥qca=kcag在内系统参数;
步骤s2、认证中心根据用户产生的临时公钥和认证中心产生的临时私钥产生随机数r;
具体的,随机数r的生成方法为:
用户临时公钥、私钥:用户a产生一个随机数a∈[1,n-1],作为用户临时私钥,生成用户临时公钥ag传送给认证中心;
n为椭圆曲线生成元g的阶;
认证中心临时公钥、私钥:认证中心选择随机数k∈[1,n-1],作为认证中心临时私钥,计算认证中心临时公钥kg;
随机数r:认证中心计算hk=h(ag||k)和r=h(hk)得到随机数r;
式中杂凑函数h(·)为hash函数,||为联接符号。
本实施例生成的随机数r,不需要依赖单个机器的随机数发生器,随机数r由用户(拥有临时私钥a)和认证中心(拥有临时私钥k)共同产生,若有一方不诚实(也就是即使a和k有一个不是随机选取的),产生不随机的整数也不影响r的随机性。
步骤s3、认证中心根据随机数r、用户的临时公钥和生成元g计算用户在椭圆曲线上的坐标点y;
具体的,认证中心根据公式y=ag+rg计算用户在椭圆曲线上的坐标y。
步骤s4、认证中心根据包括用户在椭圆曲线上的坐标、认证中心的公钥、私钥、用户的身份在内的信息生成用户的认证结果s;
具体的,认证结果s=er+dkca(modn),式中,
d=yx,yx表示取点y的x坐标;
e=h(y||qca||ida),其中ida为用户a的身份。
在本实施例中,通过增加参数d,进一步增强了方案的可证明安全性;
而且,当d=h(y),即对坐标点y取hash函数,同样可以取得与d=yx同样的可证明安全性。
步骤s5、认证中心将认证结果s和用户坐标y发送给用户,用于用户产生新的用户公钥和私钥。
具体的,用户的新私钥:a′=2c(ea+s)(modn);
用户的新公钥是q′a=2c(ey+d·qca)。
其中c为椭圆曲线阶的2因子的幂次,在工程应用中,一般c∈{0,1,2,3}。
这时如果另外一个用户b需要与用户a进行通信,则b获取y,ida和认证中心的公钥qca后就可以计算出用户a的公钥;而a用相同的方法可以计算出用户b的公钥。接着他们就可以按照通常做法一样,用密钥协商方案得到一个公共的密钥。
参数c=0时,对应于weierstrass曲线;参数c={1,2,3}时,对应于twistededwards曲线。通过采用不同的c来满足不同的椭圆曲线,适应性更广;并且在新的公私钥计算公式上增加了因子2c,还能避免小子群攻击。
对新的用户公钥和私钥进行正确性验证:
a′g=2c(ea+s)·g=2c(ea+er+dkca)·g
=2c(e(a+r)·g+dkca·g)=2c(ey+dqca)=q′a
从新的用户私钥a′可得到新的用户公钥q′a,因此,隐式认证新生成的公私钥对是正确的。
与原有的隐式证书ecqv方案的比较如表1
表1
比较结果:
在计算效率方面,本方案比ecqv方案多计算了两个杂凑函数、两个整数相乘dkca和2c(ea+s)还有一个标量乘d·qca。因为杂凑函数和整数相乘的计算速度很快,几乎可以忽略,因此忽略计算速度很快的杂凑函数和整数相乘,本实施例的计算量比ecqv多了一个标量乘计算。
在安全性和适用性方面,本实施例比ecqv适应性更广,可用于当前应用广泛的edwards曲线;随机性更好,本实施例的随机性不只依赖于认证中心,并且安全性可证。
在随机性方面,本实施例比ecqv随机性更灵活,可以避免因认证中心随机数产生出现故障或者有人为的陷门而导致整个方案的随机数有缺陷的问题。
本实施例还公开了一种隐式证书分发系统,应用于认证中心,如图2所示,包括,
系统参数生成模块,用于生成椭圆曲线的生成元g以及认证中心的私钥kca、公钥qca;
随机数生成模块,用于根据用户产生的临时公钥和认证中心产生的临时私钥产生随机数r;
具体的,用户a产生一个随机数a∈[1,n-1],作为用户临时私钥,生成用户临时公钥ag传送给认证中心的随机数生成模块;
认证中心选择随机数k∈[1,n-1],作为认证中心临时私钥,计算认证中心临时公钥kg;
随机数生成模块根据公式hk=h(ag||k)和r=h(hk)得到随机数r;
用户坐标计算模块,用于根据随机数r、用户的临时公钥和生成元g计算用户在椭圆曲线上的坐标y;
具体的,用户坐标计算模块根据公式y=ag+rg计算用户在椭圆曲线上的坐标y。
认证结果生成模块,用于根据用户在椭圆曲线上的坐标、认证中心的公钥、私钥、用户的身份生成用户的认证结果s;
具体的,认证结果生成模块根据公式s=er+dkca(modn)计算认证结果;其中d=yx,yx表示取点y的x坐标,或者d=h(y);e=h(y||qca||ida),其中ida为用户a的身份。
发送模块,用于将认证结果s和用户坐标y发送给用户,使用户产生的新公钥和新私钥。
具体的,用户根据公式a′=2c(ea+s)(modn)生成新私钥;根据公式q′a=2c(ey+d·qca)生成新公钥。
本实施例系统,可用于当前应用广泛的edwards曲线;随机性更好,本实施例的随机性不只依赖于认证中心,并且安全性可证。
采用本系统进行认证分发,可以避免因认证中心随机数产生出现故障或者有人为的陷门而导致整个方案的随机数有缺陷的问题。
另,本实施例公开的隐式证书分发方法及系统也可以应用于智能车联网。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。