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

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

发明内容
本发明需要解决的技术问题是研究出一种新的公钥签名算法,使之具有简单快速的特点,易于采用运算能力较弱的国产CPU或集成规模较低的国产芯片制作实体鉴别硬件密码器。本发明的目的,是采用以下技术方案来实现的,其特征是(a)选取一个RSA模数n=pq,其中p和q是两个秘密的大数素;(b)选取两个小于n的正整数λ1和λ2作为私钥,其中gcd(λ1-λ2,n)=1;(c)按如下公式计算两个小于n的正整数σ1和σ2σ1=(λ1+λ2)(mod n) (1)
σ2=(λ1λ2)(mod n)(2)公钥取为三元组(n,σ1,σ2);(d)对信息M的签名算法分为两步,第一步计算M的散列值,并将其分解为一对小于n的正整数m1和m2,即将信息映射为一个二元组(m1,m2);第二步(m1,m2)的数字签名取为s=μ1x(mod n)。
(3)其中x是一个公开的系统参数,可取为较小的正整数,μ1满足如下方程(λ1μ1+λ2μ2)(mod n)=m1, (4)(μ1+μ2)(mod n)=m2; (5)(e)对信息M的签名验证算法分为三步第一步计算M的散列值,并将其映射为(m1,m2);第二步根据由(1)和(2)确定的公钥与私钥之间的关系以及μ1和μ2所满足的方程(5)和(6)计算ε=(μ1x+μ2x)(mod n), (6)δ=(μ1μ2)x(mod n); (7)第三步验证数字签名s是否满足如下方程(s2-εs+δ)(mod n)=0,(8)若满足,则接受签名为真,否则予以拒绝。
本发明的有益效果是可以用一个很小的x保证签名算法的安全性,从而产生出迄今为止世界上最快速的公开密钥数字签名算法。该算法能够有效降低开发实体鉴别硬件密码器对芯片集成技术的要求,为采用国产化产品满足我国电子商务和电子政务的需求提供一项实用的新技术。将本发明的签名算法逻辑和RSA的签名验证算法逻辑封装在一起可以构成一种互补公钥算法的实体鉴别密码器。这种硬件密码器的特点是对微处理器的运算能力或芯片的集成规模要求不高,造价低廉,在客户-服务器应用体系中能够作为独立的客户端,与服务器实现双向身份验证,特别适用于电子政务应用。


附图是实施本发明所需要的模块及其相互之间逻辑关系的框图。
具体实施例方式
以下结合附图,对本发明的具体实施方法作进一步的说明。
(一)摸数计算。该模块产生秘密素数p和q,并计算模数n=pq。摸数可由用户自己计算,也可由密钥管理中心提供,并由密钥管理中心保管其素数因子,以满足密钥托管的要求,如附图所示。只要p和q保密,摸数可以共享,这个特点可以减轻密钥管理中心的负担。
(二)密钥计算。本模块首先采用随机数发生器生成秘密随机数λ1,λ2,并按(1)和(2)计算公钥σ1,σ2。
(三)签名。本模块先采用公知的算法如SHA和MD5算出信息的散列值,并将其分为两半,高位部分为m1,低位部分为m2,再按如下公式算出(4)和(5)的解μ1=(m2-λ2m1)(λ1-λ2)-1(mod n),(9)μ2=(m2-λ1m1)(λ2-λ1)-1(mod n), (10)最后按(3)算出签名,其中x可取为一个8比特的短整数。
(四)签名验证。根据(9)和(10)可得ρ=μ1μ1(mod n)=(m22-σ1m1m2+σ2m12)(4σ2-σ12)-1(mod n); (11)本模块根据(11)计算δ=ρx(mod n),并采用如下递推公式计算ε=zxz1=(μ1+μ2)(mod n)=m2,(12)z2=(μ12+μ22)(mod n)=(m22-2ρ)(mod n),(13)zi+1=(μ1i+1+μ2i+1)(mod n)=[(μ1+μ2)(μ1i+μ2i)-μ1μ2(μ1i-1+μ2i-1)(mod n)=(m2zi-ρzi-1)(mod n),i=3,4,...x, (14)本模块并引入如下公式加速ε的计算过程z2i=(μ12i+μ22i)(mod n)=[(μ1i+μ2i)2-2(μ1μ2)i](mod n)=(zi2-2ρi)(mod n)。(15)(六)实体鉴别硬件密码器。如附图所示,由于RSA的签名验证算法逻辑与本发明的签名算法逻辑基本相同,且两者计算量相当,故可以在一个硬件密码器中同时封装以上两种算法逻辑。在客户-服务器应用体系中,本发明的算法用于客户端的签名,RSA的算法用于对服务器签名的验证,从而实现客户端与服务器的双向身份验证。
权利要求
1.一种公开密钥数字签名算法,其特征在于(a)选取一个RSA模数n=pq,其中p和q是两个秘密的大数素;(b)选取两个小于n的正整数λ1和λ2作为私钥,其中gcd(λ1-λ2,n)=1;(c)按如下公式计算两个小于n的正整数σ1和σ2σ1=(λ1+λ2)(mod n) (1)σ2=(λ1λ2)(mod n)(2)公钥取为三元组(n,σ1,σ2);(d)对信息M的签名算法分为两步,第一步计算M的散列值,并将其分解为一对小于n的正整数m1和m2,即将信息映射为一个二元组(m1,m2);第二步(m1,m2)的数字签名取为s=μ1x(mod n)。
(3)其中x是一个公开的系统参数,可取为较小的正整数,μ1满足如下方程(λ1μ1+λ2μ2)(mod n)=m1, (4)(μ1+μ2)(mod n)=m2; (5)(e)对信息M的签名验证算法分为三步第一步计算M的散列值,并将其映射为(m1,m2);第二步根据由(1)和(2)确定的公钥与私钥之间的关系以及μ1和μ2所满足的方程(4)和(5)计算ε=(μ1x+μ2x)(mod n),(6)δ=(μ1μ2)x(mod n); (7)第三步验证数字签名s是否满足如下方程(s2-εs+δ)(mod n)=0,(8)若满足,则接受签名为真,否则予以拒绝。
2.如权利要求1所述的公开密钥数字签名算法的实现方法,其特征在于(a)进行签名时,按如下公式算出(4)和(5)的解μ1=(m2-λ2m1)(λ1-λ2)-1(mod n), (9)μ2=(m2-λ1m1)(λ2-λ1)-1(mod n), (10)(b)进行签名验证时,先根据(9)和(10)算出ρ=μ1μ1(mod n)=(m22-σ1m1m2+σ2m12)(4σ2-σ12)-1(mod n);(11)而后根据(11)计算δ=ρx(mod n),并采用如下递推公式计算ε=zxz1=(μ1+μ2)(mod n)=m2,(12)z2=(μ12+μ22)(mod n)=(m22-2ρ)(mod n), (13)zi+1=(μ1i+1+μ2i+1)(mod n)=[(μ1+μ2)(μ1i+μ2i)-μ1μ2(μ1i-1+μ2i-1)(mod n)=(m2zi-ρzi-1)(mod n),i=3,4,...x, (14)同时采用如下公式加速ε的计算过程z2i=(μ12i+μ22i)(mod n)=[(μ1i+μ2i)2-2(μ1μ2)i](mod n)=(zi2-2ρi)(mod n)。 (15)
全文摘要
一种迄今为止世界上最快速的公开密钥数字签名算法,能够有效降低开发实体鉴别硬件密码器对芯片集成技术的要求,为采用国产化产品满足我国电子商务和电子政务的需求提供一项实用的新技术。
文档编号H04L9/30GK1555150SQ20031012115
公开日2004年12月15日 申请日期2003年12月22日 优先权日2003年12月22日
发明者郑建德 申请人:郑建德
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1