一种快速公开密钥数字签名算法的制作方法

文档序号:7565696阅读:360来源:国知局
专利名称:一种快速公开密钥数字签名算法的制作方法
技术领域
本发明属于信息加密领域,特别涉及一种适用实体鉴别硬件密码器的快速公开密钥数字签名算法。
背景技术
数字签名算法是公钥基础设施(PKI)的核心技术之一,重要的数字签名算法都被授予过专利。目前国际上使用较多的公开密钥数字签名算法主要有RSA和DSA算法、以及基于椭圆曲线离散对数问题的公钥签名算法。
如何防止私钥泄密是PKI技术推广应用中的一个至关重要的问题。采用可随身携带的小型硬件如IC-卡和USB-卡存储私钥,避免将其放在计算机硬盘中是提高私钥保密性的一个有效措施。但是,如果不能在硬件密码器中完成所有与私钥相关的运算,而需要在签名过程中把私钥调入主机内存,则私钥通过主机被窃取的危险性依然存在。由于现有公钥签名算法依赖大指数乘方运算实现解密,其计算量大,目前还缺乏合适的国产CPU或国产集成芯片可用于制作普及型硬件密码器。虽然市场上有可用的进口产品,但价格偏高,也不利于我国建立自主的信息安全体系。

发明内容
本发明需要解决的技术问题是研究出一种新的公钥签名算法,使之具有简单快速的特点,易于采用运算能力较弱的国产CPU或集成规模较低的国产芯片制作实体鉴别硬件密码器。本发明的目的,是采用以下技术方案来实现的,其特征是(a)选择整数环Zn作为密码算法的定义域,其中模数n取为两个秘密大数素的积,n=pq,n的因子p和q保密;(b)私钥为(λ1,λ2),其中λ1,λ2为两个小于n的正整数,gcd(λ1-λ2,n)=1;(c)公钥为(n,σ1,σ2),其中σ1,σ2满足σ1=(λ1+λ2)(mod n) (1)σ2=(λ1λ2)(mod n) (2)(d)对信息M进行签名时,先计算M的散列值,并将其分解为两个小于n的正整数m1,m2,即将信息映射为(m1,m2),再按如下公式计算(m1,m2)的数字签名(s,θ)s=(k1μ1+k2μ2)x(mod n), (3)θ=k1k2(mod n),(4)其中x是一个公开的系统参数,可取为较小的正整数,μ1,μ2满足如下方程(λ1μ1+λ2μ2)(mod n)=m1, (5)(μ1+μ2)(mod n)=m2, (6)k1,k2为两个相关的随机数,满足(k1+k2)(mod n)=λ1α(mod n), (7)α是一个公开的大整数;(e)对信息M的签名进行验证时,先计算M的散列值,将其映射为(m1,m2),并构造一个满足det(zI-B)(mod n)=0,(8)的矩阵B,其中z=(k1μ1+k2μ2)(mod n),(9)μ1,μ2是方程组(4)和(5)的解,再验证数字签名中的s是否满足如下方程det(sI-Bx)(mod n)=0, (10)由于det(sI-Bx)(mod n)=det(zxI-Bx)(mod n)=det(zI-B)det(zx-1I+zx-2B+zx-3B2++Bx-1)(mod n),故若s满足(10),则接受签名为真,否则予以拒绝;(f)对信息M的签名进行验证算时所采用的矩阵B取为B=-β1-β2-β3-β4101010,---(11)]]>其元素β1,β2,β3,β4可通过比较如下多项式方程的两边获得det(z2+θm22-4θρ-m2zAα+ρA2α)(mod n)
=(z4+β1z3+β2z2+β3z+β4)(mod n),(12)其中ρ=μ1μ1(mod n), (13)A=Hdiag(λ1,λ2)H-1(mod n), (14)且上述算法的依据是从(4)、(6)、(7)、(9)和(13)可导出z2=(k1μ1+k2μ2)2(mod n)=(k12μ12+2k1k2μ1μ2+k22μ22)(mod n)=[(k1μ12+k2μ22)(k1+k2)-k1k2(μ12+μ22)+2k1k2μ1μ2](mod n)=[(k1μ12+k2μ22)λ1α-θ(μ12+μ22)+2θρ](mod n)=[(k1μ12+k2μ22)λ1α-θ(μ12+2μ1μ2+μ22)+4θρ](mod n)=[(k1μ12+k2μ22)λ1α-θm22+4θρ](mod n)=[(k1μ1+k2μ2)(μ1+μ2)λ1α-(k1+k2)μ1μ2λ1α-θm22+4θρ](mod n)=[m2zλ1α-ρλ12α-θm22+4θρ](mod n),即(z2+θm22-4θρ)(mod n)=(m2zλ1α-ρλ12α)(mod n),(15)故由(11)、(12)、(14)和(15)可得出det(zI-B)(mod n)=(z4+β1z3+β2z2+β3z+β4)(mod n)=det(z2+θm22-4θρ-m2zAα+ρA2α)(mod n)=det(m2zλ1α-ρλ12α-m2zAα+ρA2α)(mod n)=0。
本发明的有益效果是可以用一个很小的x保证签名算法的安全性,从而产生出迄今为止世界上最快速的公开密钥数字签名算法。该算法能够有效降低开发实体鉴别硬件密码器对芯片集成技术的要求,为采用国产化产品满足我国电子商务和电子政务的需求提供一项实用的新技术。将本发明的签名算法逻辑和RSA的签名验证算法逻辑封装在一起可以构成一种互补公钥算法的实体鉴别密码器。这种硬件密码器的特点是对微处理器的运算能力或芯片的集成规模要求不高,造价低廉,在客户-服务器应用体系中能够作为独立的客户端,与服务器实现双向身份验证,特别适用于电子政务应用。


附图是实施本发明所需要的模块及其相互之间逻辑关系的框图。
具体实施例方式
以下结合附图,对本发明的具体实施方法作进一步的说明。
(一)摸数计算。该模块产生秘密素数p和q,并计算模数n=pq。摸数可由用户自己计算,也可由密钥管理中心提供,并由密钥管理中心保管其素数因子,以满足密钥托管的要求,如附图所示。
(二)密钥计算。本模块首先采用随机数发生器生成秘密随机数λ1,λ2,并按(1)和(2)计算公钥σ1,σ2。本模块还预先计算λ1α(mod n),以减小签名时的计算量。
(三)签名。本模块分三步计算信息的签名第一步,采用公知的算法如SHA或MD5算出信息的散列值,并将其分为两半,高位部分为m1,低位部分为m2;第二步,按如下公式算出(5)和(6)的解μ1=(m2-λ2m1)(λ1-λ2)-1(mod n), (16)μ2=(m2-λ1m1)(λ2-λ1)-1(mod n); (17)第三步,产生随机数k1,并计算k2=(λ1α-k1)(mod n),再根据(3)和(4)完成数字签名的计算。指数x的长度可取为8比特。
(四)签名验证。本模块分三步完成数字签名的验证第一步,采用与签名算法第一步相同的方法将信息映射为(m1,m2);第二步,采用签名者的公钥计算ρ=μ1μ1(mod n)=(m22-σ1m1m2+σ2m12)(4σ2-σ12)-1(mod n), (18)A=Hdiag(λ1,λ2)H-1(modn)]]>=σ1-σ210,---(19)]]>并根据(12)算出β1,β2,β3,β4。
第三步,根据(11)和(10)对签名进行检验。
(六)实体鉴别硬件密码器。如附图所示,由于RSA的签名验证算法逻辑与本发明的签名算法逻辑基本相同,且两者计算量相当,故可以在一个硬件密码器中同时封装以上两种算法逻辑。在客户-服务器应用体系中,本发明的算法用于客户端的签名,RSA的算法用于对服务器签名的验证,从而实现客户端与服务器的双向身份验证。
权利要求
1.一种公开密钥数字签名算法,其特征在于(a)选择整数环Zn作为密码算法的定义域,其中模数n取为两个秘密大数素的积,n=pq,n的因子p和q保密;(b)私钥为(λ1,λ2),其中λ1,λ2为两个小于n的正整数,gcd(λ1-λ2,n)=1;(c)公钥为(n,σ1,σ2),其中σ1,σ2满足σ1=(λ1+λ2)(mod n)(1)σ2=(λ1λ2)(mod n) (2)(d)对信息M进行签名时,采用散列函数将其映射为(m1,m2),再按如下公式计算(m1,m2)的数字签名(s,θ)s=(k1μ1+k2μ2)x(mod n), (3)θ=k1k2(mod n), (4)其中x是一个公开的系统参数,可取为较小的正整数,μ1,μ2满足如下方程(λ1μ1+λ2μ2)(mod n)=m1,(5)(μ1+μ2)(mod n)=m2, (6)k1,k2为两个相关的随机数,满足(k1+k2)(mod n)=λ1α(mod n), (7)α是一个公开的大整数;(e)对信息M的签名进行验证时,先计算M的散列值,将其映射为(m1,m2),并构造一个满足det(zI-B)(mod n)=0, (8)的矩阵,其中z=(k1μ1+k2μ2)(mod n), (9)μ1,μ2是方程组(5)和(6)的解,再验证数字签名中的s是否满足如下方程det(sI-Bx)(mod n)=0,(10)若s满足(10),则接受签名为真,否则予以拒绝;(f)对信息M的签名进行验证算时所采用的矩阵B取为B=-β1-β2-β3-β4101010,----(11)]]>其元素β1,β2,β3,β4可通过比较如下多项式方程的两边获得det(z2+θm22-4θρ-m2zAα+ρA2α)(mod n)=(z4+β1z3+β2z2+β3z+β4)(mod n), (12)其中ρ=μ1μ1(mod n), (18)A=Hdiag(λ1,λ2)H-1(mod n), (19)且算法的依据是从(4)、(6)、(7)、(9)、(11)、(12)、(18)和(19)可导出(z2+θm22-4θρ)(mod n)=(m2zλ1α-ρλ12α)(mod n),(15)det(zI-B)(mod n)=det(z2+θm22-4θρ-m2zAα+ρA2α)(mod n)=det(m2zλ1α-ρλ12α-m2zAα+ρA2α)(mod n)=0。
全文摘要
一种迄今为止世界上最快速的公开密钥数字签名算法,能够有效降低开发实体鉴别硬件密码器对芯片集成技术的要求,为采用国产化产品满足我国电子商务和电子政务的需求提供一项实用的新技术。
文档编号H04L9/28GK1556605SQ200310123878
公开日2004年12月22日 申请日期2003年12月31日 优先权日2003年12月31日
发明者郑建德 申请人:郑建德
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1