发明名称 一个具有前向安全的门限数字签名方法与系统
摘要 本发明属于信息安全技术领域,涉及对数字信息进行签名问题,更确切地说是涉及一种能够增加敌手窃取签名密钥难度并且能够减轻签名密钥泄露影响的数字签名方法与系统。该签名方法通过应用Shamir秘密共享技术以及多方安全计算技术为一个经典的基础数字签名方法添加了门限机制与子秘密更新机制。门限机制增强了签名密钥的安全性,并可以起到权利分散的作用;子秘密更新机制实现了签名密钥的前向安全,即:即使敌手获得当前时间段的签名密钥,敌手也不能够通过该密钥伪造出一个属于前一时间段的合法签名,保护了以前的签名的有效性,降低了密钥泄露的损失。另外,该签名方法还包括一个成员加入机制,加强了方案的安全性和适用范围。
申请公布号 CN101425902A 申请公布日期 2009.05.06
申请号 CN200810046535.7 申请日期 2008.11.12
申请人 电子科技大学 发明人 许春香;张 辉
分类号 H04L9/32(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 代理人
主权项 1、一种数字签名方法与签名系统,该签名方法具有门限机制、子秘密更新机制以及成员加入机制。其特征是,以Shamir-SS协议、Mult-SS协议、Joint-Shamir-RSS协议为基础模块,设计出的前向安全的门限签名方案(FST-SIG签名方案)。整个数字签名方案包括五个部分:密钥生成协议、密钥进化协议、签名协议、签名验证算法、新成员加入协议。方案中涉及到的协议及算法的核心内容如下:Protocol FST-SIG.keygen(k,T)  // 密钥生成协议(1).分发者挑选两个随机的大素数p和q,并且满足p≡q≡3(mod4),p,q需要保密;(2).分发者计算N,使N=pq;(3).分发者在Z<sub>N</sub><sup>*</sup>中随机选取S<sub>0</sub>并计算U,<maths num="0001"><![CDATA[<math><mrow><mi>U</mi><mo>=</mo><msup><mrow><mo>(</mo><msubsup><mi>S</mi><mn>0</mn><msup><mn>2</mn><mrow><mi>l</mi><mrow><mo>(</mo><mi>T</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></mrow></msup></msubsup><mo>)</mo></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msup><mo>;</mo></mrow></math>]]></maths>(4).分发者利用Shamir-SS,在Z<sub>n</sub>上计算S<sub>0</sub>的子秘密:<img file="A200810046535C00022.GIF" wi="428" he="81" />(5).令<maths num="0002"><![CDATA[<math><mrow><msubsup><mi>SK</mi><mn>0</mn><mrow><mo>(</mo><mi>&rho;</mi><mo>)</mo></mrow></msubsup><mo>=</mo><mrow><mo>(</mo><mi>N</mi><mo>,</mo><mi>T</mi><mo>,</mo><mn>0</mn><mo>,</mo><msubsup><mi>S</mi><mn>0</mn><mrow><mo>(</mo><mi>&rho;</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow></mrow></math>]]></maths>(ρ=1,2,…,n),PK=(N,T,U);(6).分发者通过保密的信道将<img file="A200810046535C00024.GIF" wi="106" he="57" />发送给第ρ个参与者并发布签名验证密钥PK。Protocol FST-SIG.sign(m,j)  // 签名协议(1).参与者利用Joint-Shamir-RSS共同生成随机数R(R∈Z<sub>N</sub>),每个参与者拥有R的子秘密R<sup>(ρ)</sup>;(2).参与者根据R<sup>(ρ)</sup>利用Mult-SS计算Y,使Y=R<sup>2l(T+1-j)</sup>;(3).每一个参与者ρ计算σ=H(j,Y,m);(4).利用Mult-SS参与者联合计算<maths num="0003"><![CDATA[<math><mrow><mi>Z</mi><mo>=</mo><msubsup><mi>RS</mi><mi>j</mi><mi>&sigma;</mi></msubsup><mo>;</mo></mrow></math>]]></maths>(5).公布消息m的签名&lt;j,(Z,σ)&gt;。Algorithm FST-SIG.verify(m,PK,sign)  // 签名验证算法假设:PK是(N,U,T);sign是&lt;j,(Z,σ)&gt;;ifZ≡0(modN)return(0);else Y′=Z<sup>2l(T+1-j)</sup>U<sup>σ</sup>mod N;if σ==H(j,Y′,m)then return(1);else return(0);Protocal FST-SIG.update(j)  // 密钥进化协议(1).如果j=T,则返回空串;否则,执行:(2).参与者根据各自的子秘密<img file="A200810046535C00031.GIF" wi="73" he="61" />利用Mult-SS,计算S<sub>j-1</sub>的2<sup>l</sup>次方S<sub>j</sub>的子秘密<img file="A200810046535C00032.GIF" wi="95" he="62" />(3).每个参与者ρ删除<img file="A200810046535C00033.GIF" wi="99" he="61" />Protocal FST-SIG.jion(j,n+1)//成员加入协议(1).每一个参与者P<sub>i</sub>,i∈{1…n}在Z<sub>q</sub>上选取一个随机t次多项式δ<sub>i</sub>(x),满足δ<sub>i</sub>(n+1)=0。(可以这样选取:在Z<sub>q</sub>上选取随机数{δ<sub>ij</sub>}<sub>j∈{1…t}</sub>然后计算δ<sub>i0</sub>=-∑<sub>j∈{1…t}</sub>δ<sub>ij</sub>(n+1)<sup>j</sup>(modq)。)(2).每个参与者P<sub>i</sub>使用其他参与者P<sub>j</sub>的公钥加密δ<sub>i</sub>(j)(j∈{1…n},j≠i)得到{ENC<sub>j</sub>(δ<sub>i</sub>(j))}并广播。(3).每个参与者P<sub>i</sub>计算<maths num="0004"><![CDATA[<math><mrow><msubsup><mi>S</mi><mi>j</mi><mrow><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>&prime;</mo></mrow></msubsup><mo>=</mo><msubsup><mi>S</mi><mi>j</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></msubsup><mo>+</mo><msub><mi>&Sigma;</mi><mrow><msub><mi>P</mi><mi>j</mi></msub><mo>&Element;</mo><mi>D</mi></mrow></msub><msub><mi>&delta;</mi><mi>j</mi></msub><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow></mrow></math>]]></maths>并将<img file="A200810046535C00035.GIF" wi="70" he="71" />保密传送给P<sub>n+1</sub>。(4).新加入者P<sub>n+1</sub>获得所有的<img file="A200810046535C00036.GIF" wi="70" he="71" />用拉格朗日插值法恢复出属于他的子秘密<img file="A200810046535C00037.GIF" wi="99" he="60" />,进而获得签名子密钥<maths num="0005"><![CDATA[<math><mrow><msubsup><mi>SK</mi><mi>j</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>=</mo><mrow><mo>(</mo><mi>N</mi><mo>,</mo><mi>T</mi><mo>,</mo><mi>j</mi><mo>,</mo><msubsup><mi>S</mi><mi>j</mi><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>.</mo></mrow></math>]]></maths>Shamir-SS算法算法参数:Z,s,n,t(1).执行者在集合Z中选择t个随机数a<sub>1</sub>,a<sub>2</sub>,…,a<sub>t</sub>作为系数,以秘密s作为常数项构造t次多项式f(x)=s+a<sub>1</sub>x+a<sub>2</sub>x<sup>2</sup>+…a<sub>t</sub>x<sup>t</sup>;(2).执行者为多项式赋值,得到关于秘密s的子秘密s<sub>1</sub>=f(1),s<sub>2</sub>=f(2),…,s<sub>n</sub>=f(n)。Mult-SS协议参与者P<sub>i</sub>的输入:f<sub>α</sub>(i)和f<sub>β</sub>(i)的值(1).参与者选取一个随机t次多项式h<sub>i</sub>(x),满足h<sub>i</sub>(0)=f<sub>α</sub>(i)f<sub>β</sub>(i),用各个参与者对应的公钥加密属于他们的值h<sub>i</sub>(j)得到<img file="A200810046535C00041.GIF" wi="255" he="61" />1≤j≤2t+1并以广播的形式将这些加密后的子秘密公布出去。(2).每一个参与者P<sub>j</sub>接收<img file="A200810046535C00042.GIF" wi="231" he="62" />解密出h<sub>i</sub>(j),然后计算属于他的αβ的子秘密:<maths num="0006"><![CDATA[<math><mrow><mi>H</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mn>2</mn><mi>t</mi><mo>+</mo><mn>1</mn></mrow></munderover><msub><mi>&lambda;</mi><mi>i</mi></msub><msub><mi>h</mi><mi>i</mi></msub><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow><mo>.</mo></mrow></math>]]></maths>Joint-Shamir-RSS协议(1).参与者P<sub>i</sub>选取一个随机数s<sub>i</sub>作为秘密,并选取t个随机数a<sub>i1</sub>,a<sub>i2</sub>,…,a<sub>it</sub>作为系数构造t次多项式f<sub>i</sub>(x)=s<sub>i</sub>+a<sub>i1</sub>x+a<sub>i2</sub>x<sup>2</sup>+…a<sub>it</sub>x<sup>t</sup>;(2).参与者P<sub>i</sub>计算属于每一个参与者的子秘密:<img file="A200810046535C00044.GIF" wi="321" he="57" />,用各个参与者对应的公钥加密属于他们的子秘密得到<maths num="0007"><![CDATA[<math><mrow><msub><mi>E</mi><msub><mi>PK</mi><mn>1</mn></msub></msub><mrow><mo>(</mo><msubsup><mi>S</mi><mi>i</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>,</mo><msub><mi>E</mi><msub><mi>PK</mi><mn>2</mn></msub></msub><mrow><mo>(</mo><msubsup><mi>S</mi><mi>i</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><msub><mi>E</mi><msub><mi>PK</mi><mi>n</mi></msub></msub><mrow><mo>(</mo><msubsup><mi>S</mi><mi>i</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></msubsup><mo>)</mo></mrow></mrow></math>]]></maths>,并以广播的形式将这些加密后的子秘密公布出去;(3).每一个参与者P<sub>j</sub>解密所有接收到的<img file="A200810046535C00046.GIF" wi="208" he="65" />得<img file="A200810046535C00047.GIF" wi="68" he="56" />,而参与者P<sub>j</sub>掌握的对应的联合生成的随机数的子秘密为<maths num="0008"><![CDATA[<math><mrow><msubsup><mi>S</mi><mn>1</mn><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>+</mo><msubsup><mi>S</mi><mn>2</mn><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>+</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><msubsup><mi>S</mi><mi>n</mi><mrow><mo>(</mo><mi>j</mi><mo>)</mo></mrow></msubsup><mo>.</mo></mrow></math>]]></maths>
地址 610054四川省成都市建设北路二段4号