基于半群上离散对数问题的数字签名及验证的方法

文档序号:7693171阅读:233来源:国知局
专利名称:基于半群上离散对数问题的数字签名及验证的方法
技术领域
本发明属于密码技术和信息安全技术领域,是一种利用数学上的困难问题,具体地说,是利用半群上求解离散对数的困难性防止假冒签名,来实现数字签名协议。本发明还公开了该数字签名协议的验证方法。
评价一种公钥密码方案的应用价值的一般准则是(1)具有足够的抗破译能力;(2)算法自由度较高,即算法足够复杂,有很大的设计空间;(3)具有足够的加解密速度;(4)明文、密文的分组长度较短,便于实现数据格式的标准化;(5)密钥长度较短,产生新密钥容易;(6)没有大的密文扩张。
目前国内外已发表了上百种公钥密码的实现方案,但绝大多数都已被攻破,只有极少数方案相对而言被认为是比较满意的,而安全性能得到严格数学证明的方案至今尚未出现。其中,分析最深入、技术最成熟、被认为有较强的安全性、已进入工程应用阶段的方案只有基于大数分解的RSA算法、基于求解有限域上离散对数问题的Diffie-Hellman算法、基于代数曲线上点的加法群性质的椭圆曲线算法等少数几种。
与传统的对称密码相比,上述几种公钥密码方案的共同缺点是算法复杂性和自由度明显偏低只能在少数几种严格规定的数学结构下进行变换,而不能使用任意的迭代与置换。从破译的角度看,过于简单的密码往往容易导致简洁的破译算法,从而影响了它在关键核心部门的大量使用。尤其是在还目前没有任何一种公钥密码算法的安全性获得了严格证明的现实条件下,密码使用部门从信息安全的利益出发,总是慎之又慎,要求公钥密码达到尽可能高的复杂性和自由度。
探索理想的公钥密码方案相当困难。设计公钥密码需要一些特殊的数学技巧,不仅要把握当代数学前沿问题的进展,还要有丰富的实际编码经验和分析水平,对密码算法的规律和本质有深入的理解和体验,并有一定的工程实现能力。近年来,国内外密码学术界在提高公钥密码安全性与算法自由度方面的研究始终在进行,但一直没有出现本质性的重大突破。
以往国内外发表和使用的公钥密码方案,无论是比较成熟的RSA算法、Diffie-Hellman算法、椭圆曲线算法,还是未被广泛使用的其它算法,如Rabin算法、二次剩余算法、McEliece算法,以及CN1258051A(一种公开密钥加密体制和装置)、CN1251715A(有限域离散对数密码系统的割圆多项式结构)等专利算法,都以“群”作为其最基本的数学结构。例如RSA算法采用由剩余类环中的原根组成的亚循环Abel群上的求幂运算,Diffie-Hellman算法采用有限域上的循环Abel群上的求幂运算,椭圆曲线算法采用有限域上2元3次方程中的点组成的Abel群的求幂运算。
群(group)是满足封闭性、结合律、有单位元、有逆元的二元运算结构,半群(semi-group)是满足封闭性、结合律的二元运算结构,而亚群(groupoid)则是只满足封闭性一条性质的二元运算结构。群是半群的子集,半群又是亚群的子集。
显然,对于设计公钥密码来说,亚群和半群是比群更好的代数结构。亚群和半群与群相比,其外延更广泛、形式更一般、性质更复杂,在抗数学分析方面有天然的优势。鉴于半群研究的现状,在现有技术中还从未出现过一种建立在半群基础上的数字签名及相应的验证方法。
为实现上述目的,本发明采用更适合于实现公钥密码及数字签名的半群,作为其基本代数结构,来实现数字签名协议及相应的验证。当然,本发明的实现是建立在对半群更为深入的研究的基础之上,正是因为本发明对半群的研究填补了国内外对半群研究的空白,才产生了本发明。
本发明的利用半群实现数字签名协议的方法的解决方案是
a、构造一类满足封闭性、结合律、对普通加法的分配律、非交换、无单位元、无逆元、有零因子的半群;b、利用半群实现数字签名由公证机构公开半群Q以及A∈Q,随机选择x,计算B=Ax,则公开密钥是B,私人密钥是x,将信息转换成标准长度的数据M,将M看作正整数;随机产生y,计算D=Ay,a=hash(D),hash()表示任何一种规定的散列函数,将a看作正整数;已知M、x、y、z由M=ax+by+c计算b、c,并把{b,c,D}作为签名。
本发明建立半群的方法是这样的R表示有限交换环或有限非交换环,#Rn表示R上的n阶向量的集合,n是正整数,并随机构造G=[g1,g2,...,gn],当R是有限交换环时,gi∈R;当R是有限非交换环时,gi是矩阵或λ矩阵中的元,gi≠0,表示二元运算,通过下式构造了一个半群 A=[a1,a2,...,an],B=[b1,b2,...,bn],C=[c1,c2,...,cn]A,B,C∈#Rn,ai,bi,ci,,∈R。
上述半群建立方法中的R,优选多重模运算下的一元多项式环,该环也是本发明所提出的,其构造方法包括以整数剩余类环Zm中的元为系数、以Zm为定义域、以Zm为值域,随机构造一个关于x的s次首1多项式u(x),由m、u(x)构造一个Zm上的多项式环R[u(x)]=(#u(x),+,·),#u(x)={f(x)| f(x)=f’(x)Mod m,u(x)},f’(x)表示Zm上的般的整数多项式,“+”、“·”分别表示在双重模运算“Mod m,u(x)”下的多项式加法和多项式乘法,x∈Zm,deg(u(x))=s;然后每次分别以上多项式环中的元素为系数、以上一多项式环为定义域、以上一多项式环为值域,随机构造一个若干次首1多项式,由m和所有出现过的首1多项式构造一个在上一多项式环上的新多项式R[α(β)]=(#α(β),+,·),#α(β)={f(β)|f(β)=f’(β)Mod m和所有出现过的首1多项式,f’(β)表示上一多项式环上的一般的多项式,“+”、“·”分别表示在m和所有出现过的首1多项式的多重模运算下的多项式加法和多项式乘法,这样一层一层扩展下去,直至达到需要的层次。
本发明还公布了其相应的验证方法,其过程是将信息转换成标准长度的数据M,将M看作正整数;计算a=hash(D);验证AM=BaDbAc,如果等式成立,签名{b,c,D}通过验证,如不成立,则没有通过验证。
通过上面的介绍可以看出,虽然在不知道私人密钥x的条件下,对于任意的x、y,都存在着不定方程M=ax+by+c的解{b,c},但这些解无法经受AM=BaDbAc的验证。公开密钥B是公知的,A也是已知的,要想知道私人密钥,就只能根据B=Ax求解x。而通过半群的建立过程可知,根据A和x正向求解B容易,根据B和A反向求解x是非常困难的,所以,假冒一个签名的代价等价于半群上的离散对数问题,即对于B=Ax,已知A、B求x的困难性,这是十分困难的。也就是说,本发明的密码强度基于求解半群上的离散对数的困难性。所以,本发明就比基于群基础上的实现数字签名协议及相应的验证方法在抗数学分析方面有更大的优势,密码分析十分困难,达到十分不容易被假冒的效果。
图2是本发明用有限交换环或矩阵环、λ矩阵环等有限非交换环构造半群的流程图。
图3是用半群实现数字签名协议的流程图。
图4是对图3的数字签名进行验证的流程图。
上述设计有些类似于七层网络通信协议模型,其优点是算法描述清晰,功能划分明确当较高层次的算法及数据调用低一层次的算法及数据时,只把低一层次的算法及数据看作一个整体,而并不考虑其内部的具体结构和具体实现过程。例如在完成数字签名时不考虑半群Q是怎样得到的。
子结构层R可以采用有限交换环,也可以采用矩阵环、λ矩阵环类型的有限非交换环,但本发明提出并重点推荐的最佳设计实例是用多重模运算下的一元多项式环作为R。如采用多重模运算下的一元多项式环效果会更好,但如不采用该环,也能实现发明目的。
构造多重模运算下的一元多项式环R的步骤如下[第一步]用Zm构造多项式环R[u(x)]。首先,构造整数剩余类环Zm,然后,以Zm中的元为系数、以Zm为定义域、以zm为值域,随机构造一个关于x的s次首1多项式u(x)u(x)=(xs+as-1xs-1+...+a1x+a0)Mod m我们用f’(x)表示Zm上的一般的整数多项式,用“+”、“·”分别表示在双重模运算“Mod m,u(x)”下的多项式加法和多项式乘法,则由m、u(x)可构造一个Zm上的多项式环R[u(x)]=(#u(x),+,·)#u(x)={f(x)|f(x)=f’(x)Mod m,u(x)}x∈Zm,deg(u(x))=s[第二步]用R[u(x)]构造多项式环R[v(y)]。以R[u(x)]中的元素为系数、以R[u(x)]为定义域、以R[u(x)]为值域,随机构造一个关于y的k次首1多项式v(y)v(y)=(yk+bk-1yk-1+...+b1y+b0)Mod m,u(x)我们用f’(y)表示环R[u(x)]上的一般的多项式,用“+”、“·”分别表示在三重模运算“Mod m,u(x),v(y)”下的多项式加法和多项式乘法,则由m、u(x)、v(y)可构造一个R[u(x)]上的多项式环;R[v(y)]=(#v(y),+,·)#v(y)={f(y)|f(y)=f’(y)Mod m,u(x),v(y)}x∈2m,y∈R[u(x)],deg(u(x))=s,deg(v(y))=k[第三步]用R [v(y)]构造多项式环R[w(z)]。以R[v(y)]中的元素为系数、以R[v(y)]为定义域、以R[v(y)]为值域,随机构造一个关于z的q次首1多项式w(z)w(z)=(zq+cq-1zq-1+...+c1z+c0)Mod m,u(x),v(y)我们用f’(z)表示环R[v(y)]上的一般的多项式,用“+”、“·”分别表示在四重模运算“Mod m,u(x),v(y),w(z)”下的多项式加法和多项式乘法,则电m、u(x)、v(y)、w(z)可构造一个R[v(y)]上的多项式环R[w(z)]=(#w(z),+,·)#w(z)={f(z)|f()=f’(z)Mod m,u(x),v(y),w(z)}x∈Zm,y∈R[u(x)],z∈R[v(y)]deg(u(x))=s,deg(v(y))=k,deg(w(z))=q最后,用R[w(z)]作为R。
以上描述了对剩余类环Zm进行R[u(x)]、R[v(y)]、R[w(z)]的三层非线性代数扩张,根据密码强度要求还可以任意增加或减少扩张的层次。实际上也可以是二层,甚至也可以是一层。适当设置m、s、k、q等参数,可获得各种具体的有限交换环,例如当q=k=s=1,R[w(z)]是一般的整数剩余类环,其中当m是素数时,R[w(z)]是有限域FP;当s>1,q=k=1,R[w(z)]是模m、u(x)的多项式环;当s,k>1,q=1,R[w(z)]是模m、u(x)、v(y)的多项式环;当s,k,q>1,R[w(z)]是模m、u(x)、v(y)、w(z)的多项式环;当m、u(x)、v(y)、w(z)全部采用素数或不可约多项式,R[w(z)]是多项式分裂域。
如果我们把以上的一元多项式环扩展到多元多项式环,即x∈zmr,y∈R[u(x)]t,z∈R[v(y)]p,r、t、p>1并且u(x)、v(y)、w(z)均采用不可约代数簇时,R[w(z)]还可以成为更加复杂的多元多项式分裂域。但由于R[u(x)]、R[v(y)]、R[w(z)]的不可约理想是一类非常复杂的对象,工程实现代价将迅速增加,按照目前的理论研究与器件发展水平,技术可行性很低。
结构层构造半群Q的步骤如图2所示,其过程为首先,选择正整数n,并随机构造G=[g1,g2,...,gn]∈Rn,gi≠0。这里的R表示一般意义的有限交换环。我们用#Rn表示R上的n阶向量的集合,用“”表示二元运算 A=[a1,a2,...,an],B=[b1,b2,...,bn],C=[c1,c2,...,cn]A,B,C∈#Rn, ai,bi,ci,,gi∈R[定义]由集合#Rn和二元运算“”,组成一个满足结合律、对普通加法的分配律、非交换、无单位元、无逆元、有零因子的半群Q=(#Rn,)以上的R也可采用矩阵环或λ矩阵环类型等有限非交换环。这时,与上述不同的是,gi表示矩阵或λ矩阵中的元素,而不是gi∈R,但ai,bi,ci∈R都满足。则按照上述方法构造的Q仍然是半群。
设a、b是正整数,D∈Q,半群Q的幂运算满足以下性质(Da)b=(Db)aD(a×b)=(Da)bD(a+b)=DaDbDaDb=DbDa 协议层运用半群Q实现数字签名协议及相关的验证过程。
数字签名是网络环境下安全会话的基础技术,用来实现信息的真实性(鉴别信息的来源)、完整性(确认信息没有被修改)、不可抵赖性(发送者事后不可能否认他发送的信息)。完成一个数字签名协议,需要两个密钥由签名人秘密保存的私人密钥用于产生签名,向所有人开放的公开密钥用于验证签名的正确性。还需要两个方法产生签名的方法和验证签名的方法。
首先,由公证机构按照要求构造并向所有用户公开半群Q以及A∈Q。然后,由每个用户为自己随机地选择一个足够大的正整数x,计算B=Ax,则该用户的公开密钥是B,私人密钥是x。
利用私人密钥x对信息M’进行签名的方法步骤如下,如图3所示[第一步]运用单向散列函数(例如SHA、MD5等国际标准算法),把M’转换成标准长度的数据M,并把M看作为一个正整数。
随机地选择一个足够大的正整数y,计算D=Ay[第三步]我们用hash()表示任何一种规定的散列函数,计算a=hash(D)这里把a看作为正整数,D∈Q。
已知正整数M、x、y、a,由M=ax+by+c计算出正整数b、c,其中x是私人密钥。
最后,把{b,c,D}作为对信息M’的数字签名。
利用公开密钥B验证M’的签名是否正确的算法步骤如下,如图4所示[第一步]运用单向散列函数(例如SHA、MD5等国际标准算法),把M’转换成标准长度的数据M,并把M看作为一个正整数。
计算a=hash(D),与签名的过程一样,把a看作为正整数,D∈Q。
验证
AM=BaDbAc如果等式成立,说明AM=BaDbAc=(Ax)a(Ay)bAc=Aax+by+c则签名被通过验证;如果等式不成立,则签名没有通过验证。
虽然在不知道私人密钥x的条件下,对于任意的x、y,都存在着不定方程M=ax+by+c的解{b,c},但这些解无法经受AM=BaDbAc的验证。所以,假冒一个签名的代价等价于半群上的离散对数问题,即对于B=Ax,已知A、B求x的困难性。
本发明首次提出并实现了用半群实现数字签名协议及相应的验证方法,这在密码和信息安全界还属首例。由于现有的在群、环、域上广泛使用的一大类数学分析手段和结果不能简单地推广到半群,使本发明的抗数学分析能力明显提高。本发明提出的创新部分包括多重模运算下的一元多项式环R的构造方法;半群Q的构造方法;运用半群Q实现数字签名协议的方法及相应的验证方法。
下面列举一个用剩余类环Zm上的矩阵环构造半群Q,并基于该半群进行数字签名并验证的实施例。
设参数n=2,模数m=32749,矩阵的维数s=2,g1=25232,g2=9591。设D∈Q,我们把一个象征性的散列函数a=hash(D)规定为D的8个元素相加后模3001。
运用矩阵环构造半群Q实现数字签名协议的实验设A={A1,A2},分别为A1={16219,22909,6809,14609}
A2={13969,19953,10347,23665}设私人密钥x=11207,需要签名的明文M=534734688,签名时使用的随机数y=7073,公开密钥B=Ax={B1,B2},分别为B1={25097,6441,19394,6028}B2={27778,23369,27820,27289}利用私人密钥x=11207对信息M=534734688进行签名时,首先随机产生正整数y=7073,计算D=Ay={D1,D2},分别为D1={29065,26569,4239,9324}D2={15228,8575,16871,21294}散列函数a=hash(D)=2122。把a、x、y、M代入M=ax+by+c,则签名为{b=72239,c=6987,D}。
验证签名的正确性时,检验AM=BaDbAc,左边与右边相等,均为AM1=(BaDbAc)1={8898,15769,2396,4525}AM2=(BaDbAc)2={30606,15152,6500,7748}上面,已经参照各附图
,对本发明进行了详细描述,以便使本发明变得更清楚,而不应认为本发明仅仅限于上述的实施例。本领域的技术人员,通过实施例的启迪,不难对本发明做出各种改进、改变或替换,因而这些改进、改变或替换,不应认为已脱离了本发明的构思,或附属权利要求书所限定的范围。
权利要求
1.一种基于半群上离散对数问题的数字签名的方法,其特征在于a、构造一类满足封闭性、结合律、对普通加法的分配律、非交换、无单位元、无逆元、有零因子的半群;b、利用半群实现数字签名b1、由公证机构公开半群Q以及A∈Q,随机选择x,计算B=Ax,则公开密钥是B,私人密钥是x,将信息转换成标准长度的数据M,将M看作正整数;b2、随机产生y,计算D=Ay,a=hash(D),hash()表示任何一种规定的散列函数,将a看作正整数;b3、已知M、x、y、z由M=ax+by+c计算b、c,并把{b,c,D}作为签名。
2.根据权利要求1所述的基于半群上离散对数问题的数字签名的方法,其特征在于步骤a中,以R表示有限交换环或有限非交换环,#Rn表示R上的n阶向量的集合,n是正整数,并随机构造G=[g1,g2,...,gn],当R是有限交换环时,gi∈R;当R是有限非交换环时,gi是矩阵或λ矩阵中的元,gi≠0,表示二元运算,通过下式构造了一个半群 A=[a1,a2,...,an],B=[b1,b2,...,bn],C=[c1,c2,...,cn]A,B,C∈#Rn,ai,bi,ci.,∈R。
3.根据权利要求2所述的基于半群上离散对数问题的数字签名的方法,其特征在于在步骤a中,R优选多重模运算下的一元多项式环,该环的构造方法包括以整数剩余类环Zm中的元为系数、以Zm为定义域、以Zm为值域,随机构造一个关于x的s次首1多项式u(x),由m、u(x)构造一个Zm上的多项式环R[u(x)]=(#u(x),+,·),#u(x)={f(x)|f(x)=f’(x)Mod m,u(x)},f’(x)表示Zm上的一般的整数多项式,“+”、“·”分别表示在双重模运算“Mod m,u(x)”下的多项式加法和多项式乘法,x∈Zm,deg(u(x))=.s;然后每次分别以上一多项式环中的元素为系数、以上一多项式环为定义域、以上一多项式环为值域,随机构造一个若干次首1多项式,由m和所有出现过的首1多项式构造一个在上一多项式环上的新多项式R[α(β)]=(#α(β),+,·),#α(β)={f(β)|f(β)=f’(β)Mod m和所有出现过的首1多项式,f’(β)表示上一多项式环上的一般的多项式,“+”、“·”分别表示在m和所有出现过的首1多项式的多重模运算下的多项式加法和多项式乘法,这样一层一层扩展下去,直至达到需要的层次。
4.一种验证数字签名的方法,所述数字签名是根据权利要求1的方法形成的,其特征在于a、将信息转换成标准长度的数据M,将M看作正整数;b、计算a=hash(D);c、验证AM=BaDbAc,如果等式成立,签名{b,c,D}通过验证,如不成立,则没有通过验证。
全文摘要
本发明提出了一种利用半群实现数字签名协议的方法,它是先构造一类满足封闭性、结合律、对普通加法的分配律、非交换、无单位元、无逆元、有零因子的半群;利用半群实现数字签名由公证机构公开半群Q以及A∈Q,随机选择x,计算B=A
文档编号H04L9/00GK1464678SQ0212340
公开日2003年12月31日 申请日期2002年6月26日 优先权日2002年6月26日
发明者管海明 申请人:管海明
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1