法律状态公告日
法律状态信息
法律状态
2015-12-16
未缴年费专利权终止 IPC(主分类):H04L9/08 授权公告日:20120530 终止日期:20141029 申请日:20091029
专利权的终止
2012-05-30
授权
授权
2010-08-04
实质审查的生效 IPC(主分类):H04L9/08 申请日:20091029
实质审查的生效
2010-05-26
公开
公开
技术领域
本发明属于通信技术领域,涉及网络通信的安全问题,应用于网络数字签名。
背景技术
在现实中,对数字签名方案最大的威胁来自于(秘密或者说签名)密钥的泄露。只要使用知名的方案和足够大的安全参数,即使敌手能成功分析签名方案,其造成的威胁也远不如密钥泄露造成的威胁。然而一旦签名者的秘密密钥泄露,敌手可以利用泄露的密钥伪造任何时间的签名,整个方案的安全性将瓦解。虽然数字签名中可以附加时间戳,然而这个时间是秘密密钥的使用者声称的,其安全性是建立在秘密密钥的保密上的,持有了秘密密钥的敌手一样可以伪造时间戳。
通常考虑的解决密钥泄露的方法是通过数个服务器经由秘密的共享实现密钥分配,密钥分配有许多实例化的方案比如门限签名方案等。然而,使用密钥分配的方式开销相当大,当大企业或者证书权威组织能分配密钥时,只拥有一台机器的普通用户却没有这样的选择。其他针对密钥泄露的保护方法包括使用受保护的硬件或者smartcard等,但这些方法也往往是昂贵或不切实际的。此外,密钥分配方案不一定能提供想象中的安全性,比如,密钥分配易受共模故障的影响:因为所有机器使用相同的操作系统,如果找出一个系统的可能造成非法入侵的漏洞,所有的机器都会受影响。
一般的数字签名还有一个基本的限制:如果一位签名者的秘密密钥已经不安全(泄露)了,则该签名者(过去和未来的)的所有签名都不可信了,这样的限制破坏了数字签名所应该提供的不可否认性,对于某个恶意的签名者来说,最简单的否认其签名(其可能从中获益)的方法就是将自己的秘密密钥匿名地发送到互联网上的某处并宣称计算机受到了入侵。
针对这样的问题和限制,R.Anderson首先于1997年在ACM CCS会议上提出了前向安全数字签名方案的概念。随后M.Bellare和S.Miner与1999年在Crypto99会议上发表了“AForward-Secure Digital Signature Scheme”一文,文中提出了数字签名的前向安全性的正式定义,给出了可行的前向安全数字签名方案——Bellare-Miner方案,并给出了衡量具体的前向安全性的方法,可以说其奠定了前向安全数字签名研究的基础。
直观上来说,前向安全的特性是指:对于一个数字签名方案,当前秘密密钥的泄露不会造成敌手得到伪造属于过去的签名的能力。Rose Anderson在1997年ACM CCS会议首次提出前向安全数字签名的概念时粗略地将其表示为当前私钥的泄露不会影响到过去的大量数字签名的安全性,而Bellare和Miner在其发表的文章中给出了较正式的定义,即对于一个具有密钥更新(或者说演化)机制的数字签名方案,在其安全性分析模型中允许敌手进行选择消息攻击,并在其所选的时间段j泄露秘密密钥,敌手将试图对于消息m伪造出关于某个时间段i(i<j,对应秘密密钥泄露之前的时间)的签名,如果敌手的伪造是计算上不可行的,那么称方案具有前向安全性。
除了前面提到的前向安全数字签名算法外,Hugo Krawczyk在文章“Simple Forward-secure Signature From Any Signature Scheme”中给出了一种将普通数字签名算法转化为前向安全数字签名算法的一般方法,并基于RSA签名算法给出了前向安全数字签名算法,但是这个算法的验证算法要用到交互式零知识证明,效率很低,除了特定场合外,在实际应用上价值不高。本发明基于RSA签名算法给出一个前向安全数字签名算法,与其他前向安全数字签名算法比较,具有效率高,密钥长度短的优势,具有很高的实用价值。并且本发明其实也隐含地给出了一种将普通数字签名算法转化为前向安全数字签名算法的一般方法。
一个前向安全的数字签名方案应当首先是一个具有密钥更新机制的数字签名方案。这样的一个方案和标准方案类似,但方案的生命周期被分为若干时间段,每个时间段中使用不同的秘密密钥来对消息进行签名,秘密密钥由一个基于当前时间段的密钥计算下一时间段密钥的算法更新,这个算法使用单向函数以保证不能由当前的秘密密钥得出以前的秘密密钥,整个生命周期内公开密钥保持不变,即签名的验证算法也保持不变。
更进一步表述,一个前向安全的数字签名方案FSign一般来说包括下面四个算法。
(1)密钥生成算法FSign.gen(T,1k):一个概率性算法,由时间段数量T和安全参数k生成秘密密钥SK1和公开密钥PK。
(2)密钥更新算法FSign.upd(j,SKj):可能的概率性算法,在方案的生命周期内PK保持不变,而秘密密钥随时间段的改变而更新,令时间段j内使用的秘密密钥为SKj,则一旦时间段j结束进入时间段j+1,就启用密钥更新算法,通过一个单向函数f和SKj计算出新的秘密密钥SKj+1,然后删除SKj。由于使用了单向函数,由SKj+1求出SKj是不可行的。
(3)签名算法FSign.sig(j,SKj,m):可能的概率性算法,使用当前时间段j对应的秘密密钥SKj对消息m签名,生成形如(j,s)的签名。
(4)验证算法FSign.ver(PK,m,(j,s)):确定性算法,使用公开密钥PK,消息m来验证一个声称的时间段j内产生的签名(j,s)是否确实为时间段j内关于消息m的有效签名,对于任何真实有效的签名其都能正确验证。
前向安全数字签名的出现,以一种不需要分配密钥或使用受保护的存储设备的较简单的方式,从某种程度上保护了签名的安全性(“向前的”,而不是全面的安全性),降低了秘密密钥泄露造成的风险和损失。
发明内容
本发明给出了一个新的前向安全的数字签名算法。
本发明用到的函数及主要符号:
T表示密钥周期总数;
函数对任意输入正整数n,输出不大于n且与n互素的正整数的个数;
函数gcd()对输入的两个整数,输出它们的最大公约数;
函数H()为一个哈希函数,对任意一个0、1序列进行哈希函数运算,所得到的结果为一个不大于n的整数;
PK表示签名者的公钥,SKi表示第i个密钥周期的签名密钥;
运算mod表述模运算,运算||表示字符串连接运算。
本发明的详细过程如下:
密钥生成算法FSign.gen(T,1k):
1.选择两个大素数p,q,计算n=pq,
2.选择安全的哈希函数H:{0,1}*→{0,1}log n;
3.选择T+1个数e0,e1,…,eT,使得1<ei<f(n),且
4.计算(0=i=T),(1≤i≤T-1);
5.计算CERTi=(e0,n,i,ei,κi)(1=i=T)。
公钥PK=(e0,n,H),私钥SK1=(1,d1,n,H)。
安全删除p,q,e0,e1,…,eT,d0,d1,…,dT,注册自己的公钥PK,安全保存私钥SK1,保存d′i(1≤i≤T-1),CERTi(1=i=T)。其中d′i,CETRi不用安全保存。
密钥更新算法FSign.upd(j,SKj):
1.如果j=T,运行FSign.gen(T,1k)重新初始化系统,否则;
2.计算SKj+1=(j+1,dj+1,n,H),安全删除SKj,安全保存SKj+1。
签名算法FSign.sig(j,SKj,m):
1.计算t=H(m);
2.计算
3.s=(s,CERTj),(j,s)是对消息m的签名。
验证算法FSign.ver(PK,m,(j,s)):
令s=(s,CERTj),CERTj=(e0,n,i,ei,κi)
1.验证CERTj中的e0是否和签名者的公钥一致;
2.验证CERTj中的i是否等于j;
3.验证
4.验证
5.如果以上验证都通过,则签名是有效的,否则签名无效。
本发明得到的前向安全的数字签名算法不但具有一般数字签名算法所具有的所有特性与安全性,而且还具有前向安全性。因为签名密钥di是独立选取的,攻击者即使的到密钥di,也不可能得到关于密钥dj(j<i)的任何信息,如果攻击者在不知道密钥di的情况下能够伪造一个第i密钥周期的合法签名,那么他就能够攻破RSA困难问题,这与RSA困难问题是难解的假设矛盾,因此本发明具有前向安全性。
与其他具有前向安全性的数字签名算法相比较,本算法的签名算法,验证算法以及密钥更新算法都具有很高的效率。其中:签名算法系需要一次哈希运算及一次模指数运算;验证算法只需要两次模指数运算,两次哈希运算及四次比较运算;密钥更新算法只需要一次模指数运算。除了效率高外,本算法还具有密钥短的特点,大大减小了密钥保存所需要的空间。
附图说明
附图是本发明的前向安全数字签名算法。
具体实施方式
本发明的发明内容部分对本发明的技术方案已经做出了详细说明,在此不再重复描述。
机译: 具有最佳签名的前向安全数字签名方法以及使用该方法的前向安全数字签名生成装置
机译: 具有主动安全性的基于椭圆曲线数字签名算法(ECDSA)的数字签名安全有弹性的分布式生成方法
机译: 基于除法的基于修正多项式的哈希函数在数字签名算法中的应用方案