CN112887096B - 用于签名和密钥交换的素数阶椭圆曲线生成方法及*** - Google Patents
用于签名和密钥交换的素数阶椭圆曲线生成方法及*** Download PDFInfo
- Publication number
- CN112887096B CN112887096B CN202110192635.6A CN202110192635A CN112887096B CN 112887096 B CN112887096 B CN 112887096B CN 202110192635 A CN202110192635 A CN 202110192635A CN 112887096 B CN112887096 B CN 112887096B
- Authority
- CN
- China
- Prior art keywords
- equal
- elliptic curve
- prime
- prime number
- signature
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3033—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to pseudo-prime or prime number generation, e.g. primality test
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
Abstract
本发明属于计算机应用领域,提供了一种用于签名和密钥交换的素数阶椭圆曲线生成方法及***。其中,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;或所述素数阶椭圆曲线用于密钥交换;该素数阶椭圆曲线生成方法在找到足够多条安全的椭圆曲线的基础上,可以进一步挑选具有更好数学性质的Koblitz曲线,实现在其上的签名、加密中包含的密码学运算速度更快、安全性更高的目的。
Description
技术领域
本发明属于计算机应用领域,尤其涉及一种用于签名和密钥交换的素数阶椭圆曲线生成方法及***。
背景技术
本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
应用于数据传输、存储和身份认证等方面的安全的加解密算法、签名算法,对构建安全平稳的网络环境有着至关重要的作用。传统的公钥密码体制主要分为两大类:基于整数因式分解的公钥密码体制,如RSA;基于离散对数的公钥密码体制,如DSA,DH;基于椭圆曲线的公钥密码体制(ECC)也属于基于离散对数的公钥密码体制。其中,基于椭圆曲线的公钥密码体制是在1985年由Koblitz和Miller分别独立提出的,目前的椭圆曲线密码的安全性大部分依赖于所选的椭圆曲线上的椭圆曲线离散对数的困难程度。1978年,Pohlig和Martin E.Hellman提出了Pohlig-Hellman攻击,该攻击算法的运行时间为其中n是椭圆曲线的阶数的最大素因子。因此,使用阶数为素数或者近似素数的椭圆曲线是ECC安全性的前提。因此,建立安全的椭圆曲线密码体制的第一步就是要选择出好的椭圆曲线。
随着计算速度的不停提升,算法的逐步改进,破解椭圆曲线密码的能力也会加强,所以目前实践中正在使用的椭圆曲线在未来可能需要被逐步更换,替换为在更大的素数域上的素数阶椭圆曲线,而发明人发现,目前构造安全椭圆曲线的方法主要为随机选取法,即先产生伪随机椭圆曲线,再计算椭圆曲线的阶,最后判断是否满足素性或者近似素性条件,这种方法属于暴力搜索方法,效率较低。
发明内容
为了解决上述背景技术中存在的技术问题,本发明提供一种用于签名和密钥交换的素数阶椭圆曲线生成方法及***,其能够在短时间内寻找到非常多条大素数域上的大素数阶的椭圆曲线,这些曲线上离散对数求解非常困难,同时也是具有更好数学性质的Koblitz曲线,因此可以实现在其上的签名、加密中包含的密码学运算速度更快,安全性更高的目的。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一个方面提供一种用于签名和密钥交换的素数阶椭圆曲线生成方法。
一种用于签名和密钥交换的素数阶椭圆曲线生成方法,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;或所述素数阶椭圆曲线用于密钥交换;
该素数阶椭圆曲线生成方法包括:
生成具有指定位数n且具有稀疏表示的3k+1型的大素数p;
将p分解为p=c2-cd+d2的形式,其中c≡2(mod 3),d≡0(mod 3);
判断下述ni,1≤i≤6中是否存在素数,若不存在,重新生成p:
n1:=p+1-d+2c,n2:=p+1+c+d,n3:=p+1-c+2d,
n4:=p+1+d-2c,n5:=p+1-c-d,n6:=p+1+c-2d;
若存在,则记该素数为n’,接着,寻找p的任意一个原根,若在设定时间内找到原根g,则计算s:=c(mod 2),t:=d(mod 2),r:=4(s+1)t(mod 6);按照原根g的指数与ni的对应关系,寻找素数n’对应的原根g的指数r0,返回并输出及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线分别具有阶数ni,1≤i≤6的z;计算若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与的对应关系表中查找m,若m所在列的第一个元素为则返回并输出及对应的大素数p。
作为一种实施方式,n1~n6分别对应的原根g的指数为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6)。
定义H2为由中所有二次剩余所构成的集合,定义H3为由中所有三次剩余所构成的集合,定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数;使用Adleman算法检测nc是否属于H2及nq是否属于H3:
计算z如下:
作为一种实施方式,指定位数n为32的倍数。
作为一种实施方式,使用秦九韶算法和Adleman算法将p分解为p=c2-cd+d2的形式。
本发明的第二个方面提供一种用于签名和密钥交换的素数阶椭圆曲线生成***。
一种用于签名和密钥交换的素数阶椭圆曲线生成***,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;或所述素数阶椭圆曲线用于密钥交换;
所述用于签名和密钥交换的素数阶椭圆曲线生成***包括:
大素数生成模块,其用于生成具有指定位数n且具有稀疏表示的3k+1型的大素数p;
大素数分解模块,其用于将p分解为p=c2-cd+d2的形式,其中c≡2(mod 3),d≡0(mod 3);
素数判断模块,其用于判断下述ni,1≤i≤6中是否存在素数,若不存在,重新生成p:
n1:=p+1-d+2c,n2:=p+1+c+d,n3:=p+1-c+2d,
n4:=p+1+d-2c,n5:=p+1-c-d,n6:=p+1+c-2d;
若存在,则记该素数为n’,接着,寻找p的任意一个原根,若在设定时间内找到原根g,则计算s:=c(mod 2),t:=d(mod 2),r:=4(s+1)t(mod 6)。;按照原根g的指数与ni的对应关系,寻找素数n’对应的原根g的指数r0,返回并输出及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线0≤j≤5分别具有阶数ni,1≤i≤6的z;计算若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与0≤k≤5的对应关系表中查找m,若m所在列的第一个元素为则返回并输出及对应的大素数p。
作为一种实施方式,n1~n6分别对应的原根g的指数为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6)。
本发明的第三个方面提供一种计算机可读存储介质。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
本发明的第四个方面提供一种计算机设备。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
与现有技术相比,本发明的有益效果是:
本发明提供了寻找新的更大的素数域上的素数阶椭圆曲线的方法,其寻找素数阶椭圆曲线的速度非常快,可以在设定短时间内寻找到非常多条大素数域上的大素数阶的椭圆曲线,这些曲线上离散对数求解非常困难,同时也是具有更好数学性质的Koblitz曲线,此外,在找到的很多条Koblitz曲线中可以挑选具有更加合适的参数的曲线,实现在该椭圆曲线上的运行更加高效和快速,安全性更高。
本发明附加方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
图1是本发明实施例的用于签名和密钥交换的素数阶椭圆曲线生成方法流程图。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
Koblitz曲线是一种特殊的椭圆曲线。目前存在两类Koblitz曲线,第一类是定义在二进制扩域上的Koblitz曲线,具体定义为y2+xy=x3+1或者y2+xy=x3+x2+1。其上具有的可高效计算的自同态,可以通过Frobenius映射将点乘算法中的倍点运算转化成二进制扩域上的平方运算,因此被广泛用于密码研究和实践中。2000年,在NIST推荐的15条安全的椭圆曲线中,包含了5条二进制Koblitz曲线:Curve K-163,Curve K-233,Curve K-283,Curve K-409,Curve K-571。而目前更受人关注的是第二类Koblitz曲线,即定义在素数域上的Koblitz曲线。2010年,高效加密标准(SECG)列举了3条达到通用安全级别的素数域Koblitz曲线:secp192k1:secp224k1:secp256k1:其中p1,p2,p3分别为长度为192,224和256位的素数。特别地,secp256k1是比特币、以太坊等区块链项目中使用的曲线。另外,Koblitz曲线系数简单,其上密码学运算更快,并且由于其无法隐藏信息和添加“后门”,因此其安全性更值得信任。。
在此之前,构造安全椭圆曲线的方法主要为随机选取法,即先产生伪随机椭圆曲线,再计算椭圆曲线的阶,最后判断是否满足素性或者近素性条件,这种方法属于暴力搜索方法。与之相比,我们的发明也属于搜索方法,但对于某个大素数p,随机选取法需要在所有b∈{1,2,…,p-1}中进行随机选取并计算对应椭圆曲线的阶数,而我们的发明只需要检测6个数是否为素数,特别地,只要其中存在素数,便可以通过查表直接找到使得椭圆曲线阶数为素数的b,效率得到了大幅的提升。另外,由于我们的发明在生成大素数p时要求满足稀疏性条件,即要求非零变量数不超过一半,这使得其上的计算更加简便。
秦九韶算法被南宋数学家秦九韶记录于其著作《数书九章》之中,又名大衍求一术。其主要用途是计算模逆。秦九韶算法同扩展欧几里得算法十分相似,但具有更多优势,比如总在偶数步完成、在算法过程中保持了一个不变量、编写程序时所使用的临时变量更少等。秦九韶算法提供了计算模逆的一个最自然、最简洁和最有效的方法。
秦九韶算法的具体过程如下:
输入:正整数a,m,满足1<a<m且gcd(a,m)=1
输出:a模m的逆a-1
步骤1:定义变量x11=1,x12=a,x21=0,x22=m。
步骤2:重复下述过程,直到x12=1。
步骤2-1:若x22>x12,则进入步骤2-2;反之,则进入步骤2-2′。
步骤3:当步骤2中的循环结束后,输出a-1=x11。
Adleman等人于1977年提出一个算法,也就是Adleman算法,当输入素数p和模p的一个二次剩余a时,在广义黎曼假设的前提下,可以在确定多项式时间内输出最小的使得x2≡a(mod p),即可以求二次剩余的2次根。特别地,他们还将该算法进行改进,使得新算法可以用于求模p的q(q为素数)次剩余的次根(因此自然也适用于我们的发明中三次剩余的情况),甚至是求模p的n(n为合数)次剩余的n次根。
实施例一
本实施例的用于签名和密钥交换的素数阶椭圆曲线生成方法,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性。
在具体实施中,除了求解二次剩余的2次根外,本实施例仅需要求3k+1型素数的三次剩余的三次根,即必有gcd(n,p-1)=3,因此只需再多给出求解三次剩余的三次根的算法。
①求二次剩余的2次根的算法:
步骤1:输入素数p和a。
步骤2:利用Euclidean算法和Miller算法检测是否满足(a,p)=1及p为素数,若不成立则返回“输入错误”并终止程序。
步骤5:计算K,N,使得p-1=2K(2N+1)。
步骤6:令L=1。
步骤9:利用Euclidean算法计算L模p的逆L-1,输出min{D·L-1modp,-(DL-1)modp}。
②求三次剩余的三次根的算法:
步骤1:输入素数p和a。
步骤2:利用Euclidean算法和Miller算法检测是否满足(a,p)=1及p为素数,若不成立则返回“输入错误”并终止程序。
步骤5:计算K,N,N′,使得p-1=3K(3N+N′),0<N′<3。
步骤6:令L=1。
步骤8:若J=0,则计算h:=3-1(mod 3N+N′),令D=ah并进入步骤9;反之,则进入步骤10-11。
步骤9:利用Euclidean算法计算L模p的逆L-1,输出D·L-1modp。
参照图1,本实施例首先选择所需位数的大素数p;利用秦九韶算法和Adleman算法将p分解为p=c2-cd+d2的形式;
依次测试
p+1-d+2c,p+1+c+d,p+1-c+2d,p+1-d+2c,p+1+c+d,p+1+c-2d是否为素数;若其中不存在素数则返回并重新选择大素数p。若其中存在素数,则记为n’。先寻找模p的原根,若能够在短时间内求得一个原根g,则必定分别对应上述6种阶数,通过查表即可求得r0(0≤t0<6),使得具有该素数阶n’;若无法迅速找到原根,也可根据Adleman算法计算出z,使得椭圆曲线分别具有上述6种阶数;通过计算(其中以及查表可求出使得的唯一的k(0≤k<6)的并返回b=zk(modp)。
本实施例提出了一个结合数学理论筛选大素数域上的素数阶Koblitz曲线的方法,当给定大素数p时,只需检测6个数,就能够确定所有对应的Koblitz曲线的阶数是否为素数。并且,当这6个数中存在素数时,无论是否能够迅速找到原根g,都可以在多项式时间内找到使得为该素数。
在实际应用中,原根g通常易被求出,因此也无需使用Adleman算法计算z,所以该算法在实际使用时通常比理论上更加便捷。即使无法迅速找到原根g,该方法在广义黎曼假设的前提下,也是一个确定多项式时间算法,相比于目前实践中所使用的椭圆曲线选取方法,效率得到大幅度提升。
具体地,生成素数阶的椭圆曲线的具体过程为:
步骤1:生成具有指定位数n(n为32的倍数)的大素数p。
是否模3同余1,若是则继续,若不是则重新检查下一种取值。
步骤1-2-2:对m进行素检测,若m是素数则作为大素数p;若不是则重新检查下一种取值。
步骤2:将大素数p分解为p=c2-cd+d2(c≡2(mod 3),d≡0(mod 3))的形式。
步骤2-1:利用Adleman算法计算v,使其满足v2≡-3(mod p)。
步骤2-4:检查是否满足x21≡2(mod 3)及x22≡0(mod 3),若(x21,x22)满足条件则直接进入步骤3,反之则考虑(-x21,-x22),(-x22,x21-x22),(x22,x22-x21),(x22-x21,-x21),(x21-x22,x21),其中必然有一个满足条件。
类似地,也可以令u为模p意义下的-1的不为p-1的三次根,并在算法运行的每步都测试是否存在预计将在算法的中间得到分解然后检查是否满足x11≡2(mod 3)及x12≡0(mod 3)。若不满足条件则考虑(-x11,-x12),(-x12,x11-x12),(x12,x12-x11),(x12-x11,-x11),(x11-x12,x11),其中必然有一个满足条件。
步骤3:依次测试n1:=p+1-d+2c,n2:=p+1+c+d,n3:=p+1-c+2d,
n4:=p+1+d-2c,n5:=p+1-c-d,n6:=p+1+c-2d是否为素数。若ni(1≤i≤6)中不存在素数,则输出“这样的b不存在”并返回步骤1;若其中存在素数,则记为n′,则进入步骤4。
步骤4:寻找模p的任意一个原根g,若能够在短时间内找到则继续进入步骤4-1,否则进入步骤5。
步骤4-1:计算s:=c(mod 2),t:=d(mod 2),r:=4(s+1)t(mod 6)。
步骤5-1:定义H2为由中所有二次剩余所构成的集合,定义H3为由中所有三次剩余所构成的集合。定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数。使用Adleman算法检测nc是否属于H2及nq是否属于H3。
步骤5-2:计算z如下:
表1
表2
例如:
我们考虑n=384位的素数域,这样的域在实际应用中能够提供足够的安全性。
首先,经过素检测和其他筛选,我们得到了一个384位的素数p=2384-264+679,它满足p≡1(mod 3)且具有某种稀疏表示。对于该素数p,易得到它的一个原根g=3。
下一步是寻找整数c,d使得p=c2-cd+d2,c≡2(mod 3)且d≡0(mod 3)。为此,我们先求得了模p意义下的本原三次根:
u=23964867741559581160926947099760662414097367886867181735140161025879544036186062151318641050044830966975870869899251
为了满足c≡2(mod 3)且d≡0(mod 3)的条件,最终,我们取
接下来,通过素检测,我们又进一步判断了p+1+(c+d)是一个素数。由于(c,d)≡(0,1)(mod 2),由表2可知为该素数。由此,我们便筛选出了素数阶的Koblitz椭圆曲线E243:y2=x3+243。
下记E243的阶为N,即N=p+1+(c+d)。
该椭圆曲线是非常安全的,因为其阶数是大素数。并且,该曲线上的基本密码学运算的速度较一般的椭圆曲线快得多,因为我们有下述关系:对于曲线上的点P=(Px,Py),
ΛP=(uPx,Py)
其中Λ是模N意义下的1的本原三次根。该关系使得我们能够应用关于数乘的GLV方法。
下面,我们描述建立在E243之上的椭圆曲线数字签名协议。我们需要的公共参数有p,E243还有曲线E243上的一个基点G=(Gx,Gy)。我们通过随机方法选择G为:
另外,我们还需要指定一个密码学哈希函数H,比如可以取H为输出长度为384位的SHA-384或者SHA-3-384。
建立在E243之上的椭圆曲线数字签名协议如下:
设有用户A和B,用户A的私钥是dA(1<dA<N),A的公钥是PA=dAG。我们假定用户B已得到A的公钥PA。
首先,用户A对文件M进行签名,其程序如下:
然后,假设用户B已经收到了文件M′和签名(r′,s′),B将按照下述程序验证签名的有效性:
本发明实施例的所述素数阶椭圆曲线还可以用于密钥交换。
其中,密钥交换协议是人们日常生活中非常常用的一种协议。比如,用户登录银行网站时,第一步就是用户的计算机和银行服务器间进行密钥交换。现在实际中绝大部分场景使用的密钥交换协议都是DH协议和其变种ECDH(椭圆曲线DH)密钥交换协议。ECDH是ECC和DH协议的结合,其安全性由椭圆曲线上的离散对数问题的困难性所保证。而本发明实施例的该素数阶椭圆曲线生成方法所搜索到的椭圆曲线就可以用于ECDH。
实施例二
本实施例提供了一种用于签名和密钥交换的素数阶椭圆曲线生成***,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;所述用于签名和密钥交换的素数阶椭圆曲线生成***包括:
大素数生成模块,其用于生成具有指定位数n且具有稀疏表示的3k+1型的大素数p;
大素数分解模块,其用于将p分解为p=c2-cd+d2的形式,其中c≡2(mod 3),d≡0(mod 3);
素数判断模块,其用于判断下述ni,1≤i≤6中是否存在素数,若不存在,重新生成p:
n1:=p+1-d+2c,n2:=p+1+c+d,n3:=p+1-c+2d,
n4:=p+1+d-2c,n5:=p+1-c-d,n6:=p+1+c-2d;
若存在,则记该素数为n’,接着,寻找p的任意一个原根,若在设定时间内找到原根g,则计算s:=c(mod2),t:=d(mod2),r:=4(s+1)t(mod6);按照原根g的指数与ni的对应关系,寻找素数n’对应的原根g的指数r0,返回并输出及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线分别具有阶数ni,1≤i≤6的z;计算若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与的对应关系表中查找m,若m所在列的第一个元素为则返回并输出及对应的大素数p。
此处需要说明的是,本实施例的基于椭圆曲线的签密***中的各个模块,与实施例一中的基于椭圆曲线的签密方法中的各个步骤一一对应,其具体实施过程相同,此处不再累述。
实施例三
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
实施例四
本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;或所述素数阶椭圆曲线用于密钥交换;
该素数阶椭圆曲线生成方法包括:
生成具有指定位数n且具有稀疏表示的3k+1型的大素数p;
将p分解为p=c2-cd+d2的形式,其中c≡2(mod 3),d≡0(mod 3);
判断下述ni,1≤i≤6中是否存在素数,若不存在,重新生成p:
n1:=p+1-d+2c,n2:=p+1+c+d,n3:=p+1-c+2d,
n4:=p+1+d-2c,n5:=p+1-c-d,n6:=p+1+c-2d;
若存在,则记该素数为n’,接着,寻找p的任意一个原根,若在设定时间内找到原根g,则计算s:=c(mod2),t:=d(mod2),r:=4(s+1)t(mod6);按照原根g的指数与ni的对应关系,寻找素数n’对应的原根g的指数r0,返回并输出及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线0≤j≤5分别具有阶数ni,1≤i≤6的z;计算若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与0≤k≤5的对应关系表中查找m,若m所在列的第一个元素为则返回并输出及对应的大素数p;
n1~n6分别对应的原根g的指数r0为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6);
定义H2为由中所有二次剩余所构成的集合,定义H3为由中所有三次剩余所构成的集合,定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数;使用Adleman算法检测nc是否属于H2及nq是否属于H3:
计算z如下:
2.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,指定位数n为32的倍数。
3.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,使用秦九韶算法和Adleman算法将p分解为p=c2-cd+d2的形式。
4.一种用于签名和密钥交换的素数阶椭圆曲线生成***,其特征在于,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;或所述素数阶椭圆曲线用于密钥交换;
所述用于签名和密钥交换的素数阶椭圆曲线生成***包括:
大素数生成模块,其用于生成具有指定位数n且具有稀疏表示的3k+1型的大素数p;
大素数分解模块,其用于将p分解为p=c2-cd+d2的形式,其中c≡2(mod 3),d≡0(mod3);
素数判断模块,其用于判断下述ni,1≤i≤6中是否存在素数,若不存在,重新生成p:
n1:=p+1-d+2c,n2:=p+1+c+d,n3:=p+1-c+2d,
n4:=p+1+d-2c,n5:=p+1-c-d,n6:=p+1+c-2d;
若存在,则记该素数为n’,接着,寻找p的任意一个原根,若在设定时间内找到原根g,则计算s:=c(mod2),t:=d(mod2),r:=4(s+1)t(mod6);按照原根g的指数与ni的对应关系,寻找素数n’对应的原根g的指数r0,返回并输出及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线0≤j≤5分别具有阶数ni,1≤i≤6的z;计算若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与0≤k≤5的对应关系表中查找m,若m所在列的第一个元素为则返回并输出及对应的大素数p;
n1~n6分别对应的原根g的指数为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6);
定义H2为由中所有二次剩余所构成的集合,定义H3为由中所有三次剩余所构成的集合,定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数;使用Adleman算法检测nc是否属于H2及nq是否属于H3:
计算z如下:
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一项所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
6.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-3中任一项所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110192635.6A CN112887096B (zh) | 2021-02-20 | 2021-02-20 | 用于签名和密钥交换的素数阶椭圆曲线生成方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110192635.6A CN112887096B (zh) | 2021-02-20 | 2021-02-20 | 用于签名和密钥交换的素数阶椭圆曲线生成方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112887096A CN112887096A (zh) | 2021-06-01 |
CN112887096B true CN112887096B (zh) | 2022-04-12 |
Family
ID=76056672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110192635.6A Active CN112887096B (zh) | 2021-02-20 | 2021-02-20 | 用于签名和密钥交换的素数阶椭圆曲线生成方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112887096B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254968B (zh) * | 2021-06-04 | 2022-07-05 | 晶澄微电子(宁波)有限公司 | 减少模逆计算的ecc密钥交换方法、***、网络设备及存储介质 |
CN117254909B (zh) * | 2023-11-13 | 2024-02-23 | 泉州信息工程学院 | 一种快速生成高概率原根的计算方法、***及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1586028A2 (en) * | 2003-01-10 | 2005-10-19 | Philips Intellectual Property & Standards GmbH | Method of constructing hyperelliptic curves suitable for cryptographic purposes and cryptographic apparatus using such a method |
CN1913433A (zh) * | 2006-07-21 | 2007-02-14 | 北京理工大学 | 一种椭圆曲线密钥交换方法在manet网络中的应用 |
CN101714074B (zh) * | 2009-12-22 | 2012-05-02 | 上海大学 | 用于椭圆曲线密码体制加密算法的基于演化计算的安全椭圆曲线快速选择方法 |
EP2498438A1 (en) * | 2011-03-07 | 2012-09-12 | Certicom Corp. | Accelerated verification of digital signatures on partially encrypted messages |
CN106888088B (zh) * | 2017-03-29 | 2019-08-13 | 中国人民解放军信息工程大学 | 椭圆曲线密码快速实现方法及其装置 |
-
2021
- 2021-02-20 CN CN202110192635.6A patent/CN112887096B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112887096A (zh) | 2021-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Joux et al. | The function field sieve in the medium prime case | |
EP2787682B1 (en) | Key negotiation method and apparatus according to sm2 key exchange protocol | |
US7912216B2 (en) | Elliptic curve cryptosystem optimization using two phase key generation | |
CN112887096B (zh) | 用于签名和密钥交换的素数阶椭圆曲线生成方法及*** | |
CN112446052B (zh) | 一种适用于涉密信息***的聚合签名方法及*** | |
KR20060104823A (ko) | 빠른 집합 검증 방법 및 그 장치 | |
Dobson et al. | Trustless unknown-order groups | |
Gligoroski et al. | Edon-R, An Infinite Family of Cryptographic Hash Functions. | |
Cheon et al. | Speeding up the Pollard rho method on prime fields | |
Yasuda et al. | A variant of rainbow with shorter secret key and faster signature generation | |
RU2392736C1 (ru) | Способ генерации и проверки подлинности электронной цифровой подписи, заверяющей электронный документ | |
Sosnovski | Cayley graphs of semigroups and applications to hashing | |
Gaudry | Integer factorization and discrete logarithm problems | |
Kovalenko et al. | Asymmetric cryptographic algorithms | |
Overmars | Survey of rsa vulnerabilities | |
Borges et al. | Small private keys for systems of multivariate quadratic equations using symmetric cryptography | |
RU2380838C1 (ru) | Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ | |
RU2401513C2 (ru) | Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ | |
Lenstra et al. | Computational methods in public key cryptology | |
Lee et al. | On the Security of Nova Recursive Proof System | |
Iavich et al. | A Post-Quantum Digital Signature Using Verkle Trees and Lattices. Symmetry 2023, 15, 2165 | |
Nofriansyah et al. | Efficiency of 128-bit Encryption and Decryption Process in Elgamal Method Using Elliptic Curve Cryptography (ECC) | |
RU2409903C2 (ru) | Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ | |
RU2369974C1 (ru) | Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ | |
Sarkar et al. | More on correcting errors in RSA private keys: Breaking CRT-RSA with low weight decryption exponents |
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 |