一种基于大素数的公钥密码体制的实现方法与流程

文档序号:15648365发布日期:2018-10-12 22:51阅读:276来源:国知局

本发明涉及安全技术领域,具体涉及一种基于大素数的公钥密码体制的实现方法。



背景技术:

素数的独特形式吸引着众多数学家们,其中17世纪的法国著名数学家马林·梅森(marinmersenne)对“2n-1”形式的素数进行过深入研究,成果卓越,因此后人将这一型的素数称为“梅森素数”。众多科学家认为梅森素数的研究成果是一个国家科技水平的体现,梅森素数的研究推动了数论的研究,也促进了计算机技术、程序设计等技术的发展,一些素数已经被用于加密和其他实际应用任务。

随着国家密码管理局关于实施sm2算法的相关要求及标准与规范的发布(国密局字[2011]50号),目前全面采用国产通用加密算法的条件和时机已经日趋成熟。建立和发展基于国产通用算法的商用密码支撑体系和应用体系已经成为我国商用密码产业的重要任务和重大发展机遇。

1995年,美国程序设计师乔治·沃特曼整理有关梅森素数的资料,编制了一个梅森素数计算程序,并将其放置在因特网上供数学爱好者使用,这就是分布式计算因特网梅森素数大搜索(gimps)项目。目前有6万多名志愿者、超过20万台计算机参与这项计划。该计划采取分布式计算方式,利用大量普通计算机的闲置时间,获得相当于超级计算机的运算能力,第37、38和39个梅森素数都是用这种方法找到的。

《计算机应用》第28卷第12期(2008年12月)第3200页的内容“

1)随机生成3个不同的[logn/3]位素数p1、p2、p3,并且满足gcd(p1-1,p2-1,p3-1)=2,然后计算n=p1×p2×p3。

2)随机生成3个不同的s位素数dp1、dp2、dp3,并且满足gcd(dp1,p1-1)=1,gcd(dp2,p2-1)=1,gcd(dp3,p3-1)=1,其中dp1=dp2=dp3mod2。

3)发现d,并且满足dpj=dmod(pj-1),j=1,2,3。”

是错的。

举个简单反例gcd(229-1,239-1,241-1)=2,显然197,199,227,229,239,241都是素数,若d=197mod(229-1),d=227mod(239-1),d=199mod(241-1),则d=197+(229-1)k1=199+(241-1)k2,从而114k1=1+120k2,偶数=奇数,矛盾。故d不存在。

《iacrcryptologyeprintarchive》,2003的文章

1-generatekdistinctrandomprimesofbitsp1,p2...,pk,withgod(p1-1,p2-1,...,pk-1)=2;andcalculaten←p1p2...pk.

2-generatekrandomnumbersofs-bitssuchthatand

3-finddsuchthatmodp1-1,modp2-1,...,modpk-1(see[8]).同样是错的。

可见,现有技术中对大素数的计算量较大,且在利用素数求解私钥相关参数d时存在一些错误,因此,有待提出新的计算量较小且正确的公钥密码体制的方法。



技术实现要素:

本发明提出了一种基于大素数的公钥密码体制的实现方法,本发明具体是以如下技术方案实现的:

一种基于大素数的公钥密码体制的实现方法,所述方法包括:

设p、q、r皆为大于2511的大素数,p、q、r两两互质,max{p,q,r}<2min{p,q,r},p、q、r皆为[(log2m+h-1)/h]bit长度的二进制数,k≥2,

第一步:应用两个无穷矩阵,随机选取三个长度大于681bit的大素数p、q、r,m随机的选取pqr,pq2,pqr2中的一种;

第二步:e可以任意取,但要求gcd(e,φ(m))=1;再选择d,要求d·e≡1modφ(m),且d>m0。3,(m,e),(m,d)就是密钥对,其中(m,e)为公钥,(m,d)为私钥,设f为明文,gcd(f,m)=1,g为密文,则:f≡ge(modm),g≡fd(modm)。

本发明的有益效果是:

本发明提供了一种基于大素数的公钥密码体制的实现方法,利用两个无穷矩阵给出素数的判别方法,构造寻找大素数的快捷方法,利用上述两个无穷矩阵破解rsa密码体制。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本发明实施例提供的大素数产生方法的流程图;

图2是本发明实施例提供的基于大素数的公钥密码体制的实现方法的流程图。

具体实施方法

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本发明实施例提供了一种大素数产生方法,首先构造无穷矩阵a=(ai,j),a1,1=35,第一行公差d1=30,第一列公差为42。i>1时,第i行公差di=di-1+36,ai,j=(6i-1)(6j+1),

这样我们就利用生成元35,只通过加法运算就构造出全体6s-1形合数所组成的矩阵。

其次,我们构造无穷矩阵d=(di,j),

设s∈n+,若则6s-1必是质数;若则6s+1必是质数。利用两个无穷矩阵给出素数的判别方法,构造寻找大素数的快捷方法。

请参见图1,步骤101:首先选取三个心仪的大奇数或随机选取。例如21023+1,21024+2512-1,21024+2255+1。

步骤102:如果其能被3整除,则加2或减2,化作无穷矩阵a或d中的元素或素数,若不被3整除则其本身就是无穷矩阵a或d中的元素或是素数。例如21023+1能被3整除,21023+1-2=21023-1∈d。

设x∈a∪d,则x+6u型的素数有无穷多个。

步骤103:将经过第二步骤所形成的三个大奇数改造成素数。

将其加上6u,u从c1(可以是负数)到c1+c2(大奇数1024bit长度左右时c2可取1000,2048bit至3072bit长度左右时c2可取5000,4096bit长度左右时c2可取10000)找素数。例如利用magma软件编程

u取闭区间[249,659]内的整数时,p=21023+6u-1有7个是1024bit长度的素数(u=249,264,281,397,444,457,659);u取闭区间[-827,120]内的整数时,q=21024+2512+6u-1有6个是1025bit长度的素数(u=-827,-447,-388,-262,86,120);u取闭区间[-882,116]内的整数时,r=21024+2255+6u-1有9个是1025bit长度的素数(u=-882,-510,-375,-364,-361,-356,-184,54,116)。

步骤104:在第三步骤生成的素数中选取心仪的p、q、r(也可随机地选取),可随机地选取m的结构,如pqr、pq2、pqr2中的一种。对于m取4096bit长度的二进制数,例如

m=(21023+1493)(21024+2512+515)(21024+2255+323)2

步骤105:计算φ(m),e和d是一对相关的值,e可以任意取,但要求gcd(e,φ(m))=1;再选择d,要求d·e≡1modφ(m),(m,e),(m,d)就是密钥对。其中(m,e)为公钥,(m,d)为私钥。出于安全性考虑,要求d>m0.3。对于一般情况而言可用上述素数产生器产生一系列满足m>d>max(p,q,r)且d>m0.3的素数d,选择心意的d。利用d·e≡1modφ(m)计算e,适当选择d还可同时满足gcd(e,m)=1。

步骤106:di计算器

设(c,d′)=1,先命k=0,选取a使di=(k+a)c+d′满足一定的题设条件,接着对a,c,d′赋值,k取闭区间[k1,k2]内的整数,用magma软件编程

本发明实施例基于上述大素数产生方法又提出了一种新的公钥密码体制的实现方法。设p、q、r皆为大于2511的大素数,p、q、r两两互质,max{p,q,r}<2min{p,q,r},p、q、r皆为[(log2m+h-1)/h]bit长度的二进制数,k≥2,m的二进制表示时所占用的位数,就是所谓的密钥长度。这样一来m在上述两个无穷矩阵中的位置就不是唯一确定,例如现在银行使用的是两个1024bit长度的素数的积作为m值,更改后就是三个1024bit长度的素数的积作为m值,m值可取3072bit长度的二进制数。对于保密级别较高的行业,m值可取4096bit长度的二进制数或8192bit长度的二进制数,m值可为两个素数和另一个素数平方的乘积。

对于m取4096bit长度的二进制数,我们可取三个1024bit长度的二进制素数和一个1025bit长度的二进制素数的乘积,由此增加破解难度。

为安全起见,我们只公布公钥(m,e),而不管m是多少个质数的乘积。

第一步:应用两个无穷矩阵,随机选取三个长度大于681bit的大素数p、q、r(对于h=4且安全级别不是很高的情形其长度大于511bit就足够了),m随机的选取pqr,pq2,pqr2中的一种;

第二步:e可以任意取,但要求gcd(e,φ(m))=1;再选择d,要求d·e≡1modφ(m),且d>m0。3,(m,e),(m,d)就是密钥对。其中(m,e)为公钥,(m,d)为私钥。其加解密的算法完全相同,设f为明文,gcd(f,m)=1,g为密文,则:f≡ge(modm);g≡fd(modm);e和d可以互换使用,即:f≡gd(modm);g≡fe(modm)。

正常情况下明文f<min{p,q,r}就已有海量的信息,例如|{f}|=2256就包含2236gbbit信息量,比全球所有硬盘及存储设备容量总和还要大。

具体细节可分情况计算:

第一种类型为m选取pq2,φ(m)=(p-1)(q-1)q

i)gcd(p-1,q-1)=2

ⅱ)gcd(p-1,q-1)=6

ⅲ)gcd(p-1,q-1)=2m,1<m≠3

取大素数dp,d2满足(p-1,dp)=1,(q(q-1),d2)=1,d2≡dpmod(p-1,q-1),则

取d的最小正整数解,然后求e。

存在性证明:只要取大素数dp,d2满足d2>max{p,q},min{p,q}>dp>max{p,q}/2就能满与φ(m)互质的条件,对于i)显然满足gcd(p-1,q-1)|(dp-d2),对于ⅱ)只要dp,d2同为6s+1或6s-1形素数就行了,对于ⅲ)d2=2m(k+a)+dp,选取适当的a使其满足2ma+dp>max{p,q},对于k的某段区间用本专利的素数产生器产生一系列满足条件的大素数d2。

设用户a用私钥d对重要文件进行签名h=fdmodm,用户a将文件和签名h一同发送给用户b,gcd(f,m)=1,计算

则publickey=〈m,e〉,privatekey=〈p,q,dp,d2〉

另外我们可用本专利的素数产生器产生一系列满足m>d>max(p,q)的素数d,选择心意的d。利用d·e≡1modφ(m)计算e,适当选择d还可同时满足gcd(e,m)=1。

计算其余步骤同上。

第二种类型为m选取pqr,φ(m)=(p-1)(q-1)(r-1)

ⅰ)gcd(p-1,q-1,r-1)=2

ⅱ)gcd(p-1,q-1,r-1)=6

ⅲ)gcd(p-1,q-1,r-1)=2m,1<m≠3

例如当gcd(p-1,q-1,r-1)=2时,取d=pq+qr+rp,则d显然满足m>d>m2/3,在题设的条件下d不与φ(m)互质的概率几乎为零,万一不互质可改变三个质数之一使其互质;当gcd(p-1,q-1,r-1)=6时,取d=(pq+qr+rp)/3,若gcd(d,(p-1)(q-1)(r-1))≠1,可改变三个质数之一使其互质;对于一般情况而言可用本专利的素数产生器产生一系列满足m>d>max(p,q,r)的素数d,选择心意的d。利用d·e≡1modφ(m)计算e,适当选择d还可同时满足gcd(e,m)=1。计算

也可以先产生dp,dq,dr,再计算d。

第一步:利用素数产生器产生一系列满足(max(p,q,r))0。3<di<min(p,q,r),(i=1,2),且(d1,p-1)=1,(d2,q-1)=1,d2≡d1mod(p-1,q-1)的大素数d1和d2;

第二步:计算

第三步:利用素数产生器产生一系列满足(max(p,q,r))0。3<d3<min(p,q,r),且(d3,r-1)=1,d3≡d′mod([p-1,q-1],r-1)的大素数d3。则

利用e≡d-1(modφ(m))求e。取dp=p1,dq=p2,dr=p3。

存在性证明:只要取min{p,q,r}>di>max{p,q,r}/2,(i=1,2,3)就能满足大素数di(i=1,2,3)与φ(m)互质的条件,设(p-1,q-1)=c,用本专利的素数产生器应用公式d2=(k+a)c+d1(a为绝对值较大的整数),对于k的其段区间产生一系列满足条件的大素数d2。选取心意的d2。计算显然(d′,[p-1,q-1])=1,设([p-1,q-1],r-1)=g,则(d′,g)=1,用本专利的素数产生器结合公式d3=kg+dt,对于k的其段区间产生一系列满足条件的大素数d3。选取心意的d3。最后计算d,显然d满足d≡d1mod(p-1),d≡d2mod(q-1),d≡d3mod(r-1)且(d,[p-1,q-1,r-1])=1,固有(d,φ(m))=1。证毕。

设用户a用私钥d对重要文件进行签名h=fdmodm,用户a将文件和签名h一同发送给用户b,计算

则publickey=〈m,e〉,privatekey=〈p,q,r,dp,dq,dr〉

第三种类型为m选取pqr2,φ(m)=(p-1)(q-1)(r-1)r

对于一般情况而言可用本专利的素数产生器产生一系列满足m>d>max{p,q,r}且d>m0。3的素数d,选择心意的d。利用d·e≡1modφ(m)计算e,适当选择d还可同时满足gcd(e,m)=1。

计算

设用户a用私钥d对重要文件进行签名h=fdmodm,用户a将文件和签名h一同发送给用户b,gcd(f,m)=1,计算h≡fd

modm

则publickey=〈m,e〉,privatekey=〈p,q,r,dp,dq,dr〉。

孙子定理:若(mi,mj)=1(i≠j),则

x≡ai(modmi),(1≤i≤s)

有唯一解,modm1m2…ms。

其表达式为:

其中:

用现代的语言表述,故有

取d满足(d,φ(m1m2…ms))=1,

设f为明文,

则当(f,m1m2…ms)=1时,结合孙子定理有

正常情况下明文f<min{mi}>2255就已有海量的信息,例如|{f}|=2256就包含2236gbbit信息量,比全球所有硬盘及存储设备容量总和还要大。

可见,孙子定理能够把高位宽大数的模幂运算转换为低位宽相对较小的数的模幂运算。

若(mi,mj)≠1(i≠j),则

x≡ai(modmi),(1≤i≤s)

当(m1,m2)|(a2-a1)时

时,进行如下迭代

a1←a′,a2←a3,m1←[m1,m2],m2←m3,则

时,进行如下迭代

a1←a′2,a2←a4,m1←[m1,m2,m3],m2←m4,……

如此迭代下去,最后可求得xmod[m1,m2,…,ms]。否则若进行到某步则无解。

本申请提出的基于大素数的公钥密码体制的实现方法,针对现有rsa的算法中m是两个大质数p和q的积,m在无穷矩阵a或d中的位置是唯一确定,容易攻破的问题,提出的一套新的密码体系替代不安全或错误的密码体系,利用两个无穷矩阵给出素数的判别方法,构造寻找大素数的快捷方法,给出素数定理精确表达式的严格证明,利用上述两个无穷矩阵破解rsa密码体制。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1