CN112887096A - 用于签名和密钥交换的素数阶椭圆曲线生成方法及系统 - Google Patents

用于签名和密钥交换的素数阶椭圆曲线生成方法及系统 Download PDF

Info

Publication number
CN112887096A
CN112887096A CN202110192635.6A CN202110192635A CN112887096A CN 112887096 A CN112887096 A CN 112887096A CN 202110192635 A CN202110192635 A CN 202110192635A CN 112887096 A CN112887096 A CN 112887096A
Authority
CN
China
Prior art keywords
elliptic curve
prime
signature
key exchange
order elliptic
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
CN202110192635.6A
Other languages
English (en)
Other versions
CN112887096B (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.)
Shandong Blockchain Research Institute
Original Assignee
Shandong Blockchain Research Institute
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 Shandong Blockchain Research Institute filed Critical Shandong Blockchain Research Institute
Priority to CN202110192635.6A priority Critical patent/CN112887096B/zh
Publication of CN112887096A publication Critical patent/CN112887096A/zh
Application granted granted Critical
Publication of CN112887096B publication Critical patent/CN112887096B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public 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/3033Public 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
    • 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

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攻击,该攻击算法的运行时间为
Figure BDA0002945673190000011
其中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,返回并输出
Figure BDA0002945673190000031
及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线
Figure BDA0002945673190000032
分别具有阶数ni,1≤i≤6的z;计算
Figure BDA0002945673190000033
若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与
Figure BDA0002945673190000034
的对应关系表中查找m,若m所在列的第一个元素为
Figure BDA0002945673190000035
则返回并输出
Figure BDA0002945673190000036
及对应的大素数p。
作为一种实施方式,n1~n6分别对应的原根g的指数为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6)。
作为一种实施方式,(c,d)(mod2)与
Figure BDA0002945673190000037
的对应关系表为:
Figure BDA0002945673190000038
作为一种实施方式,计算使得椭圆曲线
Figure BDA0002945673190000039
分别具有阶数ni,1≤i≤6的z的过程为:
定义H2为由
Figure BDA00029456731900000310
中所有二次剩余所构成的集合,定义H3为由
Figure BDA00029456731900000311
中所有三次剩余所构成的集合,定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数;使用Adleman算法检测nc是否属于H2及nq是否属于H3
计算z如下:
Figure BDA0002945673190000041
作为一种实施方式,指定位数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,返回并输出
Figure BDA0002945673190000042
及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线
Figure BDA0002945673190000051
0≤j≤5分别具有阶数ni,1≤i≤6的z;计算
Figure BDA0002945673190000052
若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与
Figure BDA0002945673190000053
0≤k≤5的对应关系表中查找m,若m所在列的第一个元素为
Figure BDA0002945673190000054
则返回并输出
Figure BDA0002945673190000055
及对应的大素数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曲线,第一类是定义在二进制扩域
Figure BDA0002945673190000061
上的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:
Figure BDA0002945673190000071
secp224k1:
Figure BDA0002945673190000072
secp256k1:
Figure BDA0002945673190000073
其中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′。
步骤2-2:令变量
Figure BDA0002945673190000081
变量r=x22-qx12,x21=qx11+x21,x22=r。
步骤2-2′:令变量
Figure BDA0002945673190000082
变量r=x12-qx22,x11=qx21+x11,x12=r。
步骤3:当步骤2中的循环结束后,输出a-1=x11
Adleman等人于1977年提出一个算法,也就是Adleman算法,当输入素数p和模p的一个二次剩余a时,在广义黎曼假设的前提下,可以在确定多项式时间内输出最小的
Figure BDA0002945673190000083
使得x2≡a(mod p),即可以求二次剩余的2次根。特别地,他们还将该算法进行改进,使得新算法可以用于求模p的q(q为素数)次剩余的次根(因此自然也适用于我们的发明中三次剩余的情况),甚至是求模p的n(n为合数)次剩余的n次根。
求n次剩余的n次根的思想是,首先对gcd(n,p-1)进行因式分解,对于gcd(n,p-1)的每个素因子q,提取一个q次根,然后再提取一个
Figure BDA0002945673190000084
次根,最后将它们合成一个n次根。
实施例一
本实施例的用于签名和密钥交换的素数阶椭圆曲线生成方法,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性。
在具体实施中,除了求解二次剩余的2次根外,本实施例仅需要求3k+1型素数的三次剩余的三次根,即必有gcd(n,p-1)=3,因此只需再多给出求解三次剩余的三次根的算法。
①求二次剩余的2次根的算法:
输入:素数p及
Figure BDA0002945673190000091
输出:最小的
Figure BDA0002945673190000092
使得x2≡a(modp)或者“a不是模p的二次剩余”。
步骤1:输入素数p和a。
步骤2:利用Euclidean算法和Miller算法检测是否满足(a,p)=1及p为素数,若不成立则返回“输入错误”并终止程序。
步骤3:计算是否满足
Figure BDA0002945673190000093
若不成立则输出“a不是模p的二次剩余”,并终止程序。
步骤4:找到满足
Figure BDA0002945673190000094
的最小的g(即找到模p的最小非二次剩余)。
步骤5:计算K,N,使得p-1=2K(2N+1)。
步骤6:令L=1。
步骤7:找到满足
Figure BDA0002945673190000095
的最小的J。
步骤8:若J=0,则令D=aN+1并进入步骤9;反之,则令
Figure BDA0002945673190000096
Figure BDA0002945673190000097
并返回步骤7。
步骤9:利用Euclidean算法计算L模p的逆L-1,输出min{D·L-1modp,-(DL-1)modp}。
②求三次剩余的三次根的算法:
输入:素数p及
Figure BDA0002945673190000101
输出:
Figure BDA0002945673190000102
使得x3≡a(modp)或者“a不是模p的三次剩余”。
步骤1:输入素数p和a。
步骤2:利用Euclidean算法和Miller算法检测是否满足(a,p)=1及p为素数,若不成立则返回“输入错误”并终止程序。
步骤3:计算是否满足
Figure BDA0002945673190000103
若不成立则输出“a不是模p的三次剩余”,并终止程序。
步骤4:找到满足
Figure BDA0002945673190000104
的最小的g(即找到模p的最小非三次剩余)。
步骤5:计算K,N,N′,使得p-1=3K(3N+N′),0<N′<3。
步骤6:令L=1。
步骤7:找到满足
Figure BDA0002945673190000105
的最小的J。
步骤8:若J=0,则计算h:=3-1(mod 3N+N′),令D=ah并进入步骤9;反之,则进入步骤10-11。
步骤9:利用Euclidean算法计算L模p的逆L-1,输出D·L-1modp。
步骤10:计算λ∈{1,2},使其满足
Figure BDA0002945673190000106
步骤11:令
Figure BDA0002945673190000107
Figure BDA0002945673190000108
并返回步骤7。
参照图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,则
Figure BDA0002945673190000111
必定分别对应上述6种阶数,通过查表即可求得r0(0≤t0<6),使得
Figure BDA0002945673190000112
具有该素数阶n’;若无法迅速找到原根,也可根据Adleman算法计算出z,使得椭圆曲线
Figure BDA0002945673190000113
分别具有上述6种阶数;通过计算
Figure BDA0002945673190000114
(其中
Figure BDA0002945673190000115
以及查表可求出使得
Figure BDA00029456731900001114
的唯一的k(0≤k<6)的并返回b=zk(modp)。
本实施例提出了一个结合数学理论筛选大素数域上的素数阶Koblitz曲线的方法,当给定大素数p时,只需检测6个数,就能够确定所有
Figure BDA0002945673190000116
对应的Koblitz曲线的阶数
Figure BDA0002945673190000117
是否为素数。并且,当这6个数中存在素数时,无论是否能够迅速找到原根g,都可以在多项式时间内找到
Figure BDA0002945673190000118
使得
Figure BDA0002945673190000119
为该素数。
在实际应用中,原根g通常易被求出,因此也无需使用Adleman算法计算z,所以该算法在实际使用时通常比理论上更加便捷。即使无法迅速找到原根g,该方法在广义黎曼假设的前提下,也是一个确定多项式时间算法,相比于目前实践中所使用的椭圆曲线选取方法,效率得到大幅度提升。
具体地,生成素数阶的椭圆曲线的具体过程为:
步骤1:生成具有指定位数n(n为32的倍数)的大素数p。
步骤1-1:定义
Figure BDA00029456731900001110
个变量
Figure BDA00029456731900001111
其中,
Figure BDA00029456731900001112
的取值范围均为{-1,0,1},而a[0]可以为任意非零的较小的整数。
步骤1-2:遍历这
Figure BDA00029456731900001113
个变量的所有满足非零变量数不超过一半的可能的取值,对于每种取值:
步骤1-2-1:检查
Figure BDA0002945673190000121
是否模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-2:计算
Figure BDA0002945673190000122
(该u实际上为模p意义下的本原三次根)。
步骤2-3:利用秦九韶算法求解u模p的逆u-1,并在算法运行的每步都测试是否存在
Figure BDA0002945673190000123
(该等式预计将在算法运行的中间成立。)
步骤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的三次根,并在算法运行的每步都测试是否存在
Figure BDA0002945673190000124
预计将在算法的中间得到分解
Figure BDA0002945673190000125
然后检查是否满足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)。
步骤4-2:在表1中给出的6个阶数中寻找素数n′,找到后停止程序,返回对应的r0,并输出
Figure BDA0002945673190000131
及对应的大素数p。
步骤5:计算出z,使得椭圆曲线
Figure BDA0002945673190000132
分别具有阶数ni(1≤i≤6),并以此找到
Figure BDA0002945673190000133
使得
Figure BDA0002945673190000134
为大素数。
步骤5-1:定义H2为由
Figure BDA0002945673190000135
中所有二次剩余所构成的集合,定义H3为由
Figure BDA0002945673190000136
中所有三次剩余所构成的集合。定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数。使用Adleman算法检测nc是否属于H2及nq是否属于H3
步骤5-2:计算z如下:
Figure BDA0002945673190000137
步骤5-3:计算
Figure BDA0002945673190000138
若p|(c-d-dV),则令z=z5
步骤5-4:计算m:=p+1-n′,并在表2中查找m。若m所在列的第1个元素为
Figure BDA0002945673190000139
则返回并输出b=zk(modp)及对应的大素数p。
表1
Figure BDA00029456731900001310
Figure BDA0002945673190000141
表2
Figure BDA0002945673190000142
例如:
我们考虑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
然后,在用秦九韶大衍求一术计算u-1(mod p)的过程中,在第109步和第110步(一共218步),我们得到了分解
Figure BDA0002945673190000143
如下:
Figure BDA0002945673190000144
为了满足c≡2(mod 3)且d≡0(mod 3)的条件,最终,我们取
Figure BDA0002945673190000151
接下来,通过素检测,我们又进一步判断了p+1+(c+d)是一个素数。由于(c,d)≡(0,1)(mod 2),由表2可知
Figure BDA0002945673190000152
为该素数。由此,我们便筛选出了素数阶的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为:
Figure BDA0002945673190000153
另外,我们还需要指定一个密码学哈希函数H,比如可以取H为输出长度为384位的SHA-384或者SHA-3-384。
建立在E243之上的椭圆曲线数字签名协议如下:
设有用户A和B,用户A的私钥是dA(1<dA<N),A的公钥是PA=dAG。我们假定用户B已得到A的公钥PA
首先,用户A对文件M进行签名,其程序如下:
Figure BDA0002945673190000161
然后,假设用户B已经收到了文件M′和签名(r′,s′),B将按照下述程序验证签名的有效性:
Figure BDA0002945673190000162
本发明实施例的所述素数阶椭圆曲线还可以用于密钥交换。
其中,密钥交换协议是人们日常生活中非常常用的一种协议。比如,用户登录银行网站时,第一步就是用户的计算机和银行服务器间进行密钥交换。现在实际中绝大部分场景使用的密钥交换协议都是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,返回并输出
Figure BDA0002945673190000181
及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线
Figure BDA0002945673190000182
分别具有阶数ni,1≤i≤6的z;计算
Figure BDA0002945673190000183
若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与
Figure BDA0002945673190000184
的对应关系表中查找m,若m所在列的第一个元素为
Figure BDA0002945673190000185
则返回并输出
Figure BDA0002945673190000186
及对应的大素数p。
此处需要说明的是,本实施例的基于椭圆曲线的签密系统中的各个模块,与实施例一中的基于椭圆曲线的签密方法中的各个步骤一一对应,其具体实施过程相同,此处不再累述。
实施例三
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例一所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
实施例四
本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例一所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

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,返回并输出
Figure FDA0002945673180000011
及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线
Figure FDA0002945673180000012
分别具有阶数ni,1≤i≤6的z;计算
Figure FDA0002945673180000013
若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与
Figure FDA0002945673180000014
的对应关系表中查找m,若m所在列的第一个元素为
Figure FDA0002945673180000015
则返回并输出
Figure FDA0002945673180000016
及对应的大素数p。
2.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,n1~n6分别对应的原根g的指数r0为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6)。
3.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,(c,d)(mod2)与
Figure FDA0002945673180000021
的对应关系表为:
Figure FDA0002945673180000022
4.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,计算使得椭圆曲线
Figure FDA0002945673180000023
分别具有阶数ni,1≤i≤6的z的过程为:
定义H2为由
Figure FDA0002945673180000024
中所有二次剩余所构成的集合,定义H3为由
Figure FDA0002945673180000025
中所有三次剩余所构成的集合,定义nq为不属于H2的最小素数,定义nc为不属于H3的最小素数;使用Adleman算法检测nc是否属于H2及nq是否属于H3
计算z如下:
Figure FDA0002945673180000026
5.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,指定位数n为32的倍数。
6.如权利要求1所述的用于签名和密钥交换的素数阶椭圆曲线生成方法,其特征在于,使用秦九韶算法和Adleman算法将p分解为p=c2-cd+d2的形式。
7.一种用于签名和密钥交换的素数阶椭圆曲线生成系统,其特征在于,所述素数阶椭圆曲线用于与发送方的私钥一起对文件进行签名,由接收方利用共享的公钥及素数阶椭圆曲线来验证签名的有效性;或所述素数阶椭圆曲线用于密钥交换;
所述用于签名和密钥交换的素数阶椭圆曲线生成系统包括:
大素数生成模块,其用于生成具有指定位数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,返回并输出
Figure FDA0002945673180000031
及对应的大素数p;
若在设定时间内未找到原根g,计算使得椭圆曲线
Figure FDA0002945673180000032
分别具有阶数ni,1≤i≤6的z;计算
Figure FDA0002945673180000033
若满足p|(c-d-dV),则将z更新为z5;计算m:=p+1-n′,并在(c,d)(mod2)与
Figure FDA0002945673180000036
0≤k≤5的对应关系表中查找m,若m所在列的第一个元素为
Figure FDA0002945673180000034
则返回并输出
Figure FDA0002945673180000035
及对应的大素数p。
8.如权利要求7所述的用于签名和密钥交换的素数阶椭圆曲线生成系统,其特征在于,n1~n6分别对应的原根g的指数为r,(r+1)(mod6),(r+2)(mod6),(r+3)(mod6),(r+4)(mod6),(r+5)(mod6)。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
10.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-6中任一项所述的用于签名和密钥交换的素数阶椭圆曲线生成方法中的步骤。
CN202110192635.6A 2021-02-20 2021-02-20 用于签名和密钥交换的素数阶椭圆曲线生成方法及系统 Active CN112887096B (zh)

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 true CN112887096A (zh) 2021-06-01
CN112887096B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254968A (zh) * 2021-06-04 2021-08-13 晶澄微电子(宁波)有限公司 减少模逆计算的ecc密钥交换方法、系统、网络设备及存储介质
CN117254909A (zh) * 2023-11-13 2023-12-19 泉州信息工程学院 一种快速生成高概率原根的计算方法、系统及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735858A (zh) * 2003-01-10 2006-02-15 皇家飞利浦电子股份有限公司 构造适合于加密目的的超椭圆曲线的方法以及使用这种方法的密码设备
CN1913433A (zh) * 2006-07-21 2007-02-14 北京理工大学 一种椭圆曲线密钥交换方法在manet网络中的应用
CN101714074A (zh) * 2009-12-22 2010-05-26 上海大学 基于演化计算的安全椭圆曲线快速选择算法
EP2498438A1 (en) * 2011-03-07 2012-09-12 Certicom Corp. Accelerated verification of digital signatures on partially encrypted messages
CN106888088A (zh) * 2017-03-29 2017-06-23 中国人民解放军信息工程大学 椭圆曲线密码快速实现方法及其装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735858A (zh) * 2003-01-10 2006-02-15 皇家飞利浦电子股份有限公司 构造适合于加密目的的超椭圆曲线的方法以及使用这种方法的密码设备
CN1913433A (zh) * 2006-07-21 2007-02-14 北京理工大学 一种椭圆曲线密钥交换方法在manet网络中的应用
CN101714074A (zh) * 2009-12-22 2010-05-26 上海大学 基于演化计算的安全椭圆曲线快速选择算法
EP2498438A1 (en) * 2011-03-07 2012-09-12 Certicom Corp. Accelerated verification of digital signatures on partially encrypted messages
CN106888088A (zh) * 2017-03-29 2017-06-23 中国人民解放军信息工程大学 椭圆曲线密码快速实现方法及其装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254968A (zh) * 2021-06-04 2021-08-13 晶澄微电子(宁波)有限公司 减少模逆计算的ecc密钥交换方法、系统、网络设备及存储介质
CN117254909A (zh) * 2023-11-13 2023-12-19 泉州信息工程学院 一种快速生成高概率原根的计算方法、系统及存储介质
CN117254909B (zh) * 2023-11-13 2024-02-23 泉州信息工程学院 一种快速生成高概率原根的计算方法、系统及存储介质

Also Published As

Publication number Publication date
CN112887096B (zh) 2022-04-12

Similar Documents

Publication Publication Date Title
Joux et al. The function field sieve in the medium prime case
CA2594670C (en) Elliptic curve random number generation
US7912216B2 (en) Elliptic curve cryptosystem optimization using two phase key generation
KR101089121B1 (ko) 빠른 집합 검증 방법 및 그 장치
CN112446052B (zh) 一种适用于涉密信息系统的聚合签名方法及系统
CN112887096B (zh) 用于签名和密钥交换的素数阶椭圆曲线生成方法及系统
Dobson et al. Trustless unknown-order groups
Gligoroski et al. Edon-R, An Infinite Family of Cryptographic Hash Functions.
Gorbenko et al. Methods of building general parameters and keys for NTRU Prime Ukraine of 5 th–7 th levels of stability. Product form
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
Khan et al. Security and Performance Analysis of Elliptic Curve Crypto System using Bitcoin Curves.
Gaudry Integer factorization and discrete logarithm problems
Overmars Survey of rsa vulnerabilities
RU2380838C1 (ru) Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ
RU2401513C2 (ru) Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ
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
Smart et al. Investigations of fully homomorphic encryption (ifhe)

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