发明名称 一种基于椭圆曲线的群签名方法
摘要 一种基于椭圆曲线的群签名方法,它有六大步骤:一、选取椭圆曲线上两个阶为p的乘法循环群G1,G2,以及一个非退化的双线性映射e,它把G1,G2中的元素映射到GT,即e:G1×G2→GT;二、群管理员运行密钥生成算法,产生群公钥,并为群中的成员产生签名密钥;三、在密钥生成算法群成员得到相应的签名密钥后,运行签名算法;四、验证者利用群公钥运行验证算法验证签名δ的有效性;五、签名追踪算法,对于给定的一个签名,将成员在该签名产生的时间段的撤销标识代入撤销验证不等式中,如果不等式成立,即说明签名为撤销标识相对应的群成员所签;六、成员撤销算法,在某些情况下,要将一些成员的签名能力撤销掉,这需要计算相应时间间隔该成员的撤销标识,并公布到撤销列表中。
申请公布号 CN101977110B 申请公布日期 2012.08.29
申请号 CN201010506282.4 申请日期 2010.10.09
申请人 北京航空航天大学 发明人 魏凌波;刘建伟;郑志明
分类号 H04L9/32(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 1.一种基于椭圆曲线的群签名方法,其特征在于:该方法具体步骤如下:步骤一:在系统初化阶段,选取椭圆曲线上两个阶为素数p的乘法循环群G<sub>1</sub>,G<sub>2</sub>,以及一个非退化的双线性映射e,它把G<sub>1</sub>,G<sub>2</sub>中的元素映射到G<sub>T</sub>,即e:G<sub>1</sub>×G<sub>2</sub>→G<sub>T</sub>;在本系统中选取G<sub>1</sub>≠G<sub>2</sub>,且从G<sub>2</sub>到G<sub>1</sub>存在一个有效的可计算的同态映射:ψ:G<sub>2</sub>→G<sub>1</sub>;步骤二:群管理员运行密钥生成算法KeyGen(n,T),产生群公钥,并为群中的成员产生签名密钥,这里n,T分别指群中成员的个数、时间间隔的总数,这两个参数是作为输入参数,被输入到密钥生成算法中;产生密钥的具体实现过程如下:(1)随机选取G<sub>2</sub>中的一个生成元g<sub>2</sub>,以及一个碰撞自由的哈希函数H,它把由0和1构成的比特串映射到模p的整数域<img file="FDA00001627704800011.GIF" wi="51" he="54" />上,即<img file="FDA00001627704800012.GIF" wi="320" he="54" />令g<sub>1</sub>=ψ(g<sub>2</sub>),G<sub>1</sub>=&lt;g<sub>1</sub>&gt;,即g<sub>1</sub>是G<sub>1</sub>的一个生成元;(2)随机选取<img file="FDA00001627704800013.GIF" wi="51" he="55" />中的一个随机元素γ,即<img file="FDA00001627704800014.GIF" wi="154" he="55" />计算公钥的组成部分<img file="FDA00001627704800015.GIF" wi="173" he="60" />(3)随机选取<img file="FDA00001627704800016.GIF" wi="51" he="55" />中的一个随机元素x<sub>i</sub>,即<img file="FDA00001627704800017.GIF" wi="174" he="55" />对所有的成员i∈[1,n],计算群成员i的签名密钥的组成部分<img file="FDA00001627704800018.GIF" wi="309" he="69" />(4)随机选取<img file="FDA00001627704800019.GIF" wi="51" he="54" />中的一个随机元素r<sub>i</sub>,<img file="FDA000016277048000110.GIF" wi="160" he="54" />对所有的j∈[1,T],计算第j个时间间隔中第i个群成员的撤销标识为<maths num="0001"><![CDATA[<math><mrow><msub><mi>grt</mi><mi>ij</mi></msub><mo>=</mo><mrow><mo>(</mo><msubsup><mi>grt</mi><mi>ij</mi><mn>1</mn></msubsup><mo>,</mo><msubsup><mi>grt</mi><mi>ij</mi><mn>2</mn></msubsup><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><msup><mrow><mo>(</mo><msubsup><mi>wg</mi><mn>2</mn><msub><mi>x</mi><mi>i</mi></msub></msubsup><mo>)</mo></mrow><msub><mi>r</mi><mi>j</mi></msub></msup><msubsup><mi>h</mi><mi>j</mi><mrow><mo>(</mo><msub><mrow><mo>-</mo><mi>x</mi></mrow><mi>i</mi></msub><mo>)</mo></mrow></msubsup><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>以及公钥的组成部分<img file="FDA000016277048000112.GIF" wi="189" he="70" />为了降低不必要的运算量,这里的撤销标识不同以往方案,不是在密钥产生阶段就被计算,而是在需要撤销的时被计算;至此,密钥产生算法输出群公钥gpk=(g<sub>1</sub>,g<sub>2</sub>,h<sub>1</sub>,...,h<sub>T</sub>,w)、群成员i的签名密钥gsk<sub>i</sub>=(A<sub>i</sub>,x<sub>i</sub>);以上各式中的符号含义是γ:群管理员的密钥;(A<sub>i</sub>,x<sub>i</sub>):第i个群成员的签名;步骤三:在密钥生成算法之后,群成员得到相应的签名密钥,就可以运行签名算法;群成员可以对任意的消息M进行签名,产生相应的签名δ;具体的签名算法Sign(gpk,j,gsk<sub>i</sub>,M)运行过程如下:(1)随机选取<maths num="0002"><![CDATA[<math><mrow><mi>&alpha;</mi><mo>&Element;</mo><msubsup><mi>Z</mi><mi>p</mi><mo>*</mo></msubsup><mo>,</mo></mrow></math>]]></maths>计算<maths num="0003"><![CDATA[<math><mrow><msub><mi>T</mi><mn>1</mn></msub><mo>=</mo><msubsup><mi>A</mi><mi>i</mi><mi>&alpha;</mi></msubsup><mo>,</mo></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msub><mi>T</mi><mn>2</mn></msub><mo>=</mo><msubsup><mi>h</mi><mi>j</mi><mrow><mi>&alpha;</mi><mo>+</mo><msub><mi>x</mi><mi>i</mi></msub></mrow></msubsup><mo>;</mo></mrow></math>]]></maths>(2)产生一个关于如下表示的知识签名即signature of knowledge:<maths num="0005"><![CDATA[<math><mrow><mi>&pi;</mi><mo>=</mo><mi>SPK</mi><mo>{</mo><mrow><mo>(</mo><mi>&alpha;</mi><mo>,</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>A</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>:</mo><msub><mi>T</mi><mn>1</mn></msub><mo>=</mo><msubsup><mi>A</mi><mi>i</mi><mi>&alpha;</mi></msubsup><mo>,</mo><msub><mi>T</mi><mn>2</mn></msub><mo>=</mo><msubsup><mi>h</mi><mi>j</mi><mrow><mi>&alpha;</mi><mo>+</mo><msub><mi>x</mi><mi>i</mi></msub></mrow></msubsup><mo>,</mo><mi>e</mi><mrow><mo>(</mo><msub><mi>A</mi><mi>i</mi></msub><mo>,</mo><mi>w</mi><msup><msub><mi>g</mi><mn>2</mn></msub><msub><mi>x</mi><mi>i</mi></msub></msup><mo>)</mo></mrow><mo>=</mo><mi>e</mi><mrow><mo>(</mo><msub><mi>g</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>2</mn></msub><mo>)</mo></mrow><mo>}</mo><mrow><mo>(</mo><mi>M</mi><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0006"><![CDATA[<math><mrow><mi>SPK</mi><mo>{</mo><mrow><mo>(</mo><mi>&alpha;</mi><mo>,</mo><msub><mi>x</mi><mi>i</mi></msub><mo>,</mo><msub><mi>A</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>:</mo><mi>e</mi><mrow><mo>(</mo><msub><mi>T</mi><mn>1</mn></msub><mo>,</mo><mi>w</mi><mo>)</mo></mrow><mo>=</mo><mi>e</mi><msup><mrow><mo>(</mo><msub><mi>g</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>&alpha;</mi></msup><mo>/</mo><mi>e</mi><msup><mrow><mo>(</mo><msub><mi>T</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>2</mn></msub><mo>)</mo></mrow><msub><mi>x</mi><mi>i</mi></msub></msup><mo>,</mo><msub><mi>T</mi><mn>2</mn></msub><mo>=</mo><msubsup><mi>h</mi><mi>j</mi><mrow><mi>&alpha;</mi><mo>-</mo><msub><mi>x</mi><mi>i</mi></msub></mrow></msubsup><mo>}</mo><mrow><mo>(</mo><mi>M</mi><mo>)</mo></mrow></mrow></math>]]></maths>具体操作为:(a)随机选择盲因子r<sub>α</sub>,<img file="FDA00001627704800023.GIF" wi="177" he="55" />计算<maths num="0007"><![CDATA[<math><mrow><msub><mi>R</mi><mn>1</mn></msub><mo>=</mo><mi>e</mi><msup><mrow><mo>(</mo><msub><mi>g</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>2</mn></msub><mo>)</mo></mrow><msub><mi>r</mi><mi>&alpha;</mi></msub></msup><mo>/</mo><mi>e</mi><msup><mrow><mo>(</mo><msub><mi>T</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>2</mn></msub><mo>)</mo></mrow><msub><mi>r</mi><msub><mi>x</mi><mi>i</mi></msub></msub></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0008"><![CDATA[<math><mrow><msub><mi>R</mi><mn>2</mn></msub><mo>=</mo><msubsup><mi>h</mi><mi>j</mi><mrow><msub><mi>r</mi><mi>&alpha;</mi></msub><mo>+</mo><msub><mi>r</mi><msub><mi>x</mi><mi>i</mi></msub></msub></mrow></msubsup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>(b)计算挑战值c=H(gpk,j,M,T<sub>1</sub>,T<sub>2</sub>,R<sub>1</sub>,R<sub>2</sub>),以及<img file="FDA00001627704800026.GIF" wi="600" he="50" />(3)最后输出签名<img file="FDA00001627704800027.GIF" wi="470" he="54" />式中δ:表示群成员产生的一个群签名;步骤四:当收到签名δ时,验证者利用群公钥运行验证算法Verify(gp k,<sub>j</sub>,RL<sub>j</sub>,δ,M),就可以验证签名δ的有效性,具体实现过程如下:(1)签名验证:计算<maths num="0009"><![CDATA[<math><mrow><msub><mover><mi>R</mi><mo>&OverBar;</mo></mover><mn>1</mn></msub><mo>=</mo><mi>e</mi><msup><mrow><mo>(</mo><msub><mi>g</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>2</mn></msub><mo>)</mo></mrow><msub><mi>s</mi><mi>&alpha;</mi></msub></msup><msup><mrow><mo>(</mo><mn>1</mn><mo>/</mo><mi>e</mi><mrow><mo>(</mo><msub><mi>T</mi><mn>1</mn></msub><mo>,</mo><msub><mi>g</mi><mn>1</mn></msub><mo>)</mo></mrow><mo>)</mo></mrow><msub><msub><mi>s</mi><mi>x</mi></msub><mi>i</mi></msub></msup><msup><mrow><mo>(</mo><mfrac><mn>1</mn><mrow><mi>e</mi><mrow><mo>(</mo><msub><mi>T</mi><mn>1</mn></msub><mo>,</mo><mi>w</mi><mo>)</mo></mrow></mrow></mfrac><mo>)</mo></mrow><mi>c</mi></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0010"><![CDATA[<math><mrow><msub><mover><mi>R</mi><mo>&OverBar;</mo></mover><mn>2</mn></msub><mo>=</mo><msup><mi>h</mi><mrow><msub><mi>s</mi><mi>&alpha;</mi></msub><mo>+</mo><msub><mi>s</mi><msub><mi>x</mi><mi>i</mi></msub></msub></mrow></msup><msup><mrow><mo>(</mo><mn>1</mn><mo>/</mo><msub><mi>T</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>c</mi></msup><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>检验等式<img file="FDA000016277048000210.GIF" wi="627" he="54" />是否成立,来判定挑战c是否有效;(2)撤销验证:在签名验证通过后,可以利用该算法验证产生签名δ的群成员是否是合法的群成员,即确定其签名密钥相应的撤销标识没有包含在撤销列表中;操作如下:在第j时间间隔里,对撤销列表中的每一个撤销标识<img file="FDA000016277048000211.GIF" wi="606" he="64" />检验不等式<img file="FDA000016277048000212.GIF" wi="562" he="64" />是否成立;若成立,则表明成员是合法的群成员,没有被撤销;反之,成员已经被撤销;通过以上两步检验的签名,即为一个合法成员的有效签名;步骤五:签名追踪算法,对于给定的一个签名,可以把成员i在该签名产生的时间间隔j的撤销标识grt<sub>ij</sub>一一代入撤销验证不等式<img file="FDA000016277048000213.GIF" wi="561" he="64" />中,如果不等式成立,即说明签名为撤销标识相对应的群成员所签;步骤六:成员撤销算法,在一些特定情况下,需要将一些成员的签名能力撤销掉,这时只需要计算相应时间间隔j该成员i的撤销标识grt<sub>ij</sub>,并公布到撤销列表RL<sub>j</sub>中。
地址 100191 北京市海淀区学院路37号北航电子信息工程学院