发明名称 一种基于身份的数字签名方法
摘要 本发明提供一种基于身份的数字签名方法。该签名方法包括步骤:生成用于签名和验证签名的系统参数;根据用户身份信息以及所述系统参数,生成用户的私钥;利用所得到的私钥对消息进行签名;根据所述系统公开参数和签名者的身份对消息的签名进行验证。由于在本发明中,对于验证方程算法的某些计算在签名算法中,当系统参数确定之后,是常量,则在系统参数生成时对其进行预计算,大大减少验证方程的计算代价;在对同一用户对不同消息进行签名时候,进行特殊处理(文中有详细说明),能大大降低通信代价。经过这样的处理之后,在不降低安全性的基础上,极大的提高系统的运行效率。
申请公布号 CN101562524A 申请公布日期 2009.10.21
申请号 CN200910027375.6 申请日期 2009.05.31
申请人 河海大学 发明人 李继国;姜年进
分类号 H04L9/32(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 南京经纬专利商标代理有限公司 代理人 许 方
主权项 1、一种基于身份的数字签名方法,其特征在于,依次经过以下几个模块操作步骤:A、系统参数生成模块:PKG运行系统参数生成算法:首先系统选取大素数p,p阶乘法循环群G和G<sub>T</sub>,双线性映射e:G×G→G<sub>T</sub>,从G中选择一个生成元g,随机选择g<sub>2</sub>∈G,α∈Z<sub>p</sub>,计算g<sub>1</sub>=g<sup>α</sup>∈G,随机选择u′∈Z<sub>p</sub>,m′∈Z<sub>p</sub>,n<sub>u</sub>维向量U<sub>v</sub>=(u<sub>i</sub>),n<sub>m</sub>维向量M<sub>v</sub>=(m<sub>i</sub>),其中u<sub>i</sub>∈Z<sub>p</sub>,m<sub>i</sub>∈Z<sub>p</sub>。计算z<sub>1</sub>=e(g<sub>1</sub>,g<sub>2</sub>),z<sub>2</sub>=e(g,g<sub>2</sub>);综合上述信息,系统参数生成算法生成系统参数,其中系统公开参数为params=(p,g,g<sub>1</sub>,g<sub>2</sub>,u′,U<sub>v</sub>,m′,M<sub>v</sub>,z<sub>1</sub>,z<sub>2</sub>),系统主密钥为α∈Z<sub>p</sub>;B、用户密钥生成模块:步骤1:在线任务分配器用待签名的用户身份发送给密钥生成器;步骤2:密钥生成器将用户的身份信息发送给Hash运算器进行运算,计算得到身份的Hash值u,即:<maths num="0001"><![CDATA[<math><mrow><msub><mi>H</mi><mi>u</mi></msub><mo>:</mo><msup><mrow><mo>{</mo><mn>0,1</mn><mo>}</mo></mrow><mo>*</mo></msup><mo>&RightArrow;</mo><msup><mrow><mo>{</mo><mn>0,1</mn><mo>}</mo></mrow><msub><mi>n</mi><mi>u</mi></msub></msup><mo>,</mo></mrow></math>]]></maths>其中H<sub>u</sub>是{0,1}<sup>*</sup>到<img file="A2009100273750002C2.GIF" wi="110" he="63" />的密码学哈希函数,{0,1}<sup>*</sup>表示有不确定个集合{0,1}的笛卡尔积,<img file="A2009100273750002C3.GIF" wi="109" he="62" />表示有n<sub>u</sub>个集合{0,1}的笛卡尔积;步骤3:Hash运算器将计算得到的用户身份Hash值u发送给密钥生成器;步骤4:密钥生成器对得到的用户身份Hash值u进行以下处理:u为一个长度为n<sub>u</sub>的比特串,即经过抗碰撞哈希函数映射之后的Hash值,令U为u中比特值为1的位置的集合,则<maths num="0002"><![CDATA[<math><mrow><mi>U</mi><mo>&SubsetEqual;</mo><mo>{</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>n</mi><mi>u</mi></msub><mo>}</mo><mo>,</mo></mrow></math>]]></maths>计算<img file="A2009100273750002C5.GIF" wi="201" he="96" />随机选择t∈Z<sub>p</sub>,计算用户的密钥<maths num="0003"><![CDATA[<math><mrow><msub><mi>d</mi><mi>u</mi></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>d</mi><mn>0</mn></msub><mo>,</mo><msub><mi>d</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><msubsup><mi>g</mi><mn>2</mn><mrow><mi>&alpha;</mi><mo>+</mo><mi>t</mi><mrow><mo>(</mo><msup><mi>u</mi><mo>&prime;</mo></msup><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>U</mi></mrow></munder><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow></mrow></msubsup><mo>,</mo><msubsup><mi>z</mi><mn>2</mn><mi>t</mi></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>并通过安全信道把密钥传给在线任务分配器,若<maths num="0004"><![CDATA[<math><mrow><mi>&alpha;</mi><mo>+</mo><mi>t</mi><mrow><mo>(</mo><msup><mi>u</mi><mo>&prime;</mo></msup><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>U</mi></mrow></munder><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>=</mo><mn>0</mn><mi>mod</mi><mi>p</mi><mo>,</mo></mrow></math>]]></maths>则密钥生成器重新选择随机数t∈Z<sub>p</sub>,计算用户的私钥,发送给在线任务分配;C、签名模块:步骤5:在线任务分配器将得到的用户密钥通过安全信道发送给相应的用户;步骤6:用户得到密钥后,利用密钥验证器对密钥进行验证。密钥验证器将用户的身份信息发送给Hash运算器;步骤7:Hash运算器将计算得到的用户的定长身份比特串u发送给密钥验证器;密钥验证器验证等式:<maths num="0005"><![CDATA[<math><mrow><mi>e</mi><mrow><mo>(</mo><mi>g</mi><mo>,</mo><msub><mi>d</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mn>1</mn></msub><mo>&CenterDot;</mo><msubsup><mi>d</mi><mn>1</mn><mrow><mo>(</mo><msup><mi>u</mi><mo>&prime;</mo></msup><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>U</mi></mrow></munder><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow></msubsup><mo>,</mo></mrow></math>]]></maths>若等式不成立,执行步骤8;反之,则用户可以确认密钥是由PKG产生的,执行步骤9;步骤8:密钥验证器重新向PKG询问密钥,在线任务分配器重新执行步骤1;步骤9:密钥验证器将验证通过的用户密钥d<sub>u</sub>发送给签名运算器;步骤10:签名运算器将待签名的消息比特串发送给Hash运算器进行运算,计算得到消息Hash值m,即:<maths num="0006"><![CDATA[<math><mrow><msub><mi>H</mi><mi>m</mi></msub><mo>:</mo><msup><mrow><mo>{</mo><mn>0,1</mn><mo>}</mo></mrow><mo>*</mo></msup><mo>&RightArrow;</mo><msup><mrow><mo>{</mo><mn>0,1</mn><mo>}</mo></mrow><msub><mi>n</mi><mi>m</mi></msub></msup><mo>,</mo></mrow></math>]]></maths>其中H<sub>m</sub>是{0,1}<sup>*</sup>到<img file="A2009100273750003C3.GIF" wi="117" he="63" />的密码学哈希函数,{0,1}<sup>*</sup>表示有不确定个集合{0,1}的笛卡尔积,<img file="A2009100273750003C4.GIF" wi="117" he="62" />表示有n<sub>m</sub>个集合{0,1}的笛卡尔积;步骤11:Hash运算器将计算得到的Hash值m发送给签名运算器,签名运算器进行类似上面身份处理方法,令M为m中比特值为1的位置的集合,则<maths num="0007"><![CDATA[<math><mrow><mi>M</mi><mo>&SubsetEqual;</mo><mo>{</mo><mn>1</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>n</mi><mi>m</mi></msub><mo>}</mo><mo>,</mo></mrow></math>]]></maths>计算<img file="A2009100273750003C6.GIF" wi="243" he="101" />随机选择s∈Z<sub>p</sub>,计算消息的签名,共3个部分,即:<maths num="0008"><![CDATA[<math><mrow><mi>&sigma;</mi><mo>=</mo><mrow><mo>(</mo><mi>w</mi><mo>,</mo><mi>x</mi><mo>,</mo><mi>y</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><msub><mi>d</mi><mn>0</mn></msub><mo>&CenterDot;</mo><msubsup><mi>g</mi><mn>2</mn><mrow><mi>s</mi><mrow><mo>(</mo><msup><mi>m</mi><mo>&prime;</mo></msup><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mi>j</mi><mo>&Element;</mo><mi>M</mi></mrow></munder><msub><mi>m</mi><mi>j</mi></msub><mo>)</mo></mrow></mrow></msubsup><mo>,</mo><msubsup><mi>z</mi><mn>2</mn><mi>s</mi></msubsup><mo>,</mo><msub><mi>d</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>步骤12:签名运算器将消息的签名σ发送给在线任务分配器;D、验证模块:步骤13:在线任务分配器将待验证消息签名发送给验证者;步骤14:签名验证器首先将消息和签名者身份发送给Hash运算器,进行Hash映射;步骤15:Hash运算器将身份的映射结果u、和消息的映射结果m发送给签名验证器;步骤16:签名验证器用PKG公开参数(p,g,g<sub>1</sub>,g<sub>2</sub>,u′,U<sub>v</sub>,m′,M<sub>v</sub>,z<sub>1</sub>,z<sub>2</sub>)和签名用户的身份对消息的签名σ进行验证,若等式<maths num="0009"><![CDATA[<math><mrow><mi>e</mi><mrow><mo>(</mo><mi>g</mi><mo>,</mo><mi>w</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>z</mi><mn>1</mn></msub><mo>&CenterDot;</mo><msup><mi>x</mi><mrow><mo>(</mo><msup><mi>m</mi><mo>&prime;</mo></msup><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mi>j</mi><mo>&Element;</mo><mi>M</mi></mrow></munder><msub><mi>m</mi><mi>j</mi></msub><mo>)</mo></mrow></msup><mo>&CenterDot;</mo><msup><mi>y</mi><mrow><mo>(</mo><msup><mi>u</mi><mo>&prime;</mo></msup><mo>+</mo><munder><mi>&Sigma;</mi><mrow><mi>i</mi><mo>&Element;</mo><mi>U</mi></mrow></munder><msub><mi>u</mi><mi>i</mi></msub><mo>)</mo></mrow></msup></mrow></math>]]></maths>成立,则签名有效,反之无效。
地址 210046江苏省南京市西康路1号