发明名称 基于多变量多项式对消息匿名环签名的方法
摘要 本发明公开了一种基于多变量多项式对消息匿名环签名的方法,该方法按照以下步骤实施,生成系统参数,密钥生成,环签名生成,环签名的验证。基于传统密码体制的环签名方法,在量子计算机下其安全性受到威胁,而本发明基于多变量公钥密码体制的环签名方法解决了现有的环签名体制在量子计算下不安全的缺陷。本发明的方法既具有安全性又具有计算效率高的优点。
申请公布号 CN102006166A 申请公布日期 2011.04.06
申请号 CN201010544610.X 申请日期 2010.11.11
申请人 西安理工大学 发明人 王尚平;张磊
分类号 H04L9/32(2006.01)I;H04L9/30(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 西安弘理专利事务所 61214 代理人 罗笛
主权项 1.基于多变量多项式对消息匿名环签名的方法,其特征在于,该方法按照以下步骤实施:步骤1.生成系统参数1)设置k=GF(q)是特征为p的有限域,其中q=p<sup>l</sup>,l是一个正整数;2)令<img file="FSA00000346100300011.GIF" wi="302" he="60" />是有限域k的n次扩张,其中n是一个正整数,g(x)是有限域k上的一个n次不可约多项式;3)令m为多变量方程组中方程的个数,n为变量的个数;4)选择H:{0,1}<sup>*</sup>→k<sup>m</sup>为密码学安全的抗碰撞单向不可逆哈希函数,系统参数为(k,q,p,l,m,n,H);步骤2.密钥生成1)假设环中有t个用户,设为U={u<sub>0</sub>,u<sub>1</sub>,…,u<sub>t-1</sub>};2)根据多变量公钥密码体制,每个用户u<sub>i</sub>(0≤i≤t-1)选择F<sub>i</sub>是从k<sup>n</sup>到k<sup>m</sup>的可逆映射,F<sub>i</sub>满足:a)F<sub>i</sub>(x<sub>1</sub>,…,x<sub>n</sub>)=(f<sub>i1</sub>,…,f<sub>im</sub>),其中f<sub>ij</sub>∈k[x<sub>1</sub>,…,x<sub>n</sub>],j=1,…,m;b)任何方程F<sub>i</sub>(x<sub>1</sub>,…,x<sub>n</sub>)=(y′<sub>1</sub>,…,y′<sub>m</sub>),都易于求解;3)每个用户u<sub>i</sub>(0≤i≤t-1)选择其中L<sub>1i</sub>是从k<sup>m</sup>到k<sup>m</sup>的随机选择的一个可逆仿射变换L<sub>1i</sub>(x<sub>1</sub>,…,x<sub>m</sub>)=M<sub>1i</sub>(x<sub>1</sub>,…,x<sub>m</sub>)<sup>T</sup>+a<sub>1i</sub>,其中M<sub>1i</sub>是有限域k上的一个m×m的可逆矩阵,a<sub>1i</sub>是有限域k上的一个m×1的列向量;4)每个用户u<sub>i</sub>(0≤i≤t-1)选择L<sub>2i</sub>是从k<sup>n</sup>到k<sup>n</sup>的随机选择的一个可逆仿射变换L<sub>2i</sub>(x<sub>1</sub>,…,x<sub>n</sub>)=x<sub>2i</sub>(x<sub>1</sub>,…,x<sub>n</sub>)<sup>T</sup>+a<sub>2i</sub>,其中M<sub>2i</sub>是有限域k上的一个n×n的可逆矩阵,a<sub>2i</sub>是有限域k上的一个n×1的列向量;5)每个用户u<sub>i</sub>(0≤i≤t-1)公布其公钥<img file="FSA00000346100300021.GIF" wi="381" he="50" /><maths num="0001"><![CDATA[<math><mrow><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mi>x</mi><mi>n</mi></msub><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><msub><mover><mi>f</mi><mo>&OverBar;</mo></mover><mrow><mi>i</mi><mn>1</mn></mrow></msub><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><msub><mover><mi>f</mi><mo>&OverBar;</mo></mover><mi>im</mi></msub><mo>)</mo></mrow></mrow></math>]]></maths>其中每一个<img file="FSA00000346100300023.GIF" wi="43" he="65" />都是k[x<sub>1</sub>,…,x<sub>n</sub>]中的多项式;6)每个用户u<sub>i</sub>(0≤i≤t-1)保密其私钥SK<sub>i</sub>={L<sub>1i</sub>,F<sub>i</sub>,L<sub>2i</sub>};7)环中的t个用户的公钥集记为<img file="FSA00000346100300024.GIF" wi="354" he="62" />步骤3.环签名生成假设环成员u<sub>π</sub>(0≤π≤t-1)代表环成员中所有成员U={u<sub>0</sub>,u<sub>1</sub>,…,u<sub>t-1</sub>}对消息M∈{0,1}<sup>*</sup>进行签名,环中的t个用户的公钥集记为<img file="FSA00000346100300025.GIF" wi="356" he="62" />u<sub>π</sub>的公钥为<img file="FSA00000346100300026.GIF" wi="85" he="48" />私钥为SK<sub>π</sub>={L<sub>1π</sub>,F<sub>π</sub>,L<sub>2π</sub>},签名者u<sub>π</sub>计算环签名的步骤如下:1)签名者u<sub>π</sub>随机选取r∈k<sup>n</sup>,计算<maths num="0002"><![CDATA[<math><mrow><msub><mi>c</mi><mrow><mi>&pi;</mi><mo>+</mo><mn>1</mn><mi>mod</mi><mi>t</mi></mrow></msub><mo>=</mo><mi>H</mi><mrow><mo>(</mo><mi>L</mi><mo>|</mo><mo>|</mo><mi>M</mi><mo>|</mo><mo>|</mo><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mi>&pi;</mi></msub><mrow><mo>(</mo><mi>r</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>2)对i=π+1,...,t-1,0,1,...,π-1,签名者u<sub>π</sub>随机选取r<sub>i</sub>∈k<sup>n</sup>,计算<maths num="0003"><![CDATA[<math><mrow><msub><mi>c</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn><mi>mod</mi><mi>t</mi></mrow></msub><mo>=</mo><mi>H</mi><mrow><mo>(</mo><mi>L</mi><mo>|</mo><mo>|</mo><mi>M</mi><mo>|</mo><mo>|</mo><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>r</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>c</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&Element;</mo><msup><mi>k</mi><mi>m</mi></msup><mo>;</mo></mrow></math>]]></maths>3)签名者u<sub>π</sub>利用私钥计算<maths num="0004"><![CDATA[<math><mrow><msub><mi>r</mi><mi>&pi;</mi></msub><mo>=</mo><msubsup><mi>L</mi><mrow><mn>2</mn><mi>&pi;</mi></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><msubsup><mi>F</mi><mi>&pi;</mi><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><msubsup><mi>L</mi><mrow><mn>1</mn><mi>&pi;</mi></mrow><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><mrow><mo>(</mo><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mi>&pi;</mi></msub><mrow><mo>(</mo><mi>r</mi><mo>)</mo></mrow><mo>+</mo><msub><mi>c</mi><mi>&pi;</mi></msub><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>4)输出消息M∈{0,1}<sup>*</sup>关于环<img file="FSA000003461003000210.GIF" wi="330" he="62" />的环签名σ=(c<sub>0</sub>,r<sub>0</sub>,r<sub>1</sub>,...,r<sub>t-1</sub>);步骤4.环签名的验证给定消息M∈{0,1}<sup>*</sup>关于环<img file="FSA00000346100300031.GIF" wi="329" he="60" />的环签名σ=(c<sub>0</sub>,r<sub>0</sub>,r<sub>1</sub>,...,r<sub>t-1</sub>),验证者所有环成员公钥集合<img file="FSA00000346100300032.GIF" wi="355" he="61" />验证过程如下:1)对i=0,1,...,t-1,计算<maths num="0005"><![CDATA[<math><mrow><msub><mi>c</mi><mrow><mi>i</mi><mo>+</mo><mn>1</mn></mrow></msub><mo>=</mo><mi>H</mi><mrow><mo>(</mo><mi>L</mi><mo>|</mo><mo>|</mo><mi>M</mi><mo>|</mo><mo>|</mo><msub><mover><mi>F</mi><mo>&OverBar;</mo></mover><mi>i</mi></msub><mrow><mo>(</mo><msub><mi>r</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>-</mo><msub><mi>c</mi><mi>i</mi></msub><mo>)</mo></mrow><mo>&Element;</mo><msup><mi>k</mi><mi>m</mi></msup></mrow></math>]]></maths>得到c<sub>t</sub>;2)验证c<sub>t</sub>=c<sub>0</sub>是否成立,如成立,接受该环签名;否则拒绝签名。
地址 710048 陕西省西安市金花南路5号