主权项 |
1.一种基于多变量密码体制的无证书多接收者签密方法,其特征在于包括以下步骤:步骤一、密钥生成中心选择秘密正整数参数s,产生大素数p和正整数l;选择阶为q的有限域G,其中q=p<sup>l</sup>;令G<sup>n</sup>是有限域G的n次扩张;令正整数g为多变量方程组中方程的个数;选择H<sub>1</sub>∶G×G×G<sup>n</sup>→G<sup>n</sup>,H<sub>2</sub>∶G→G<sup>n</sup>为密码学安全的抗碰撞单向不可逆哈希函数,生成系统参数{G,l,g,n,q,p,H<sub>1</sub>,H<sub>2</sub>};步骤二、密钥生成中心选择安全的多变量加密算法,其核心变换F为G<sup>n</sup>→G<sup>n</sup>上的可逆二次变换,并在G<sup>n</sup>→G<sup>n</sup>上随机选择两个可逆的仿射变换T和V,生成密钥生成中心的系统公钥<img file="FDA00002022576700011.GIF" wi="305" he="52" />系统私钥<img file="FDA00002022576700012.GIF" wi="325" he="61" />密钥生成中心在G<sup>n</sup>→G<sup>n</sup>上随机选择两个可逆的仿射变换T<sub>0</sub>和V<sub>0</sub>,计算<img file="FDA00002022576700013.GIF" wi="330" he="63" />则系统部分公钥为<img file="FDA00002022576700014.GIF" wi="73" he="64" />系统部分私钥为<img file="FDA00002022576700015.GIF" wi="501" he="62" />最后,密钥生成中心通过秘密信道将系统部分私钥传递给合法用户,密钥生成中心公开自己的系统公钥;当有用户退出时,密钥生成中心需重新生成系统部分公钥和系统部分私钥;增加新用户则不需重新生成系统部分公钥和系统部分私钥;步骤三、用户U获取密钥生成中心的系统部分私钥,然后计算系统部分私钥,随机选择G<sup>n</sup>→G<sup>n</sup>上的仿射变换T<sub>u</sub>和V<sub>u</sub>,合成自己的私钥<img file="FDA00002022576700016.GIF" wi="670" he="62" />并计算自己的公钥<img file="FDA00002022576700017.GIF" wi="351" he="63" />生成用户U的公钥为F<sub>u</sub>,用户U的私钥为<img file="FDA00002022576700018.GIF" wi="667" he="62" />用户U将自己的公钥F<sub>u</sub>传递给密钥生成中心,并且秘密保存自己的私钥<img file="FDA00002022576700019.GIF" wi="101" he="62" />步骤四、身份为ID<sub>A</sub>的用户Alice将签密消息m∈G发送给用户组L={ID<sub>1</sub>,ID<sub>2</sub>,…,ID<sub>t</sub>},首先通过向密钥生成中心查询得到用户组L的公钥信息,然后进行如下计算;选择随机数r∈G<sup>n</sup>,r<sub>1</sub>∈Gn<sup>-1</sup>,将消息m和r<sub>1</sub>链接得到M=m||r<sub>1</sub>,并依次计算<maths num="0001"><![CDATA[<math><mrow><mi>X</mi><mo>=</mo><mi>E</mi><mrow><mo>(</mo><mover><mi>F</mi><mo>‾</mo></mover><mo>,</mo><mi>r</mi><mo>)</mo></mrow><mo>,</mo></mrow></math>]]></maths>Y=H<sub>1</sub>(m,ID<sub>A</sub>,X),<maths num="0002"><![CDATA[<math><mrow><mi>S</mi><mo>=</mo><mi>D</mi><mrow><mo>(</mo><msubsup><mi>F</mi><mi>A</mi><mrow><mo>-</mo><mn>1</mn></mrow></msubsup><mo>,</mo><mi>Y</mi><mo>)</mo></mrow><mo>;</mo></mrow></math>]]></maths>对于ID<sub>i</sub>,i=1,2,...,t,计算q<sub>i</sub>=H<sub>2</sub>(ID<sub>i</sub>),<img file="FDA000020225767000112.GIF" wi="653" he="57" />对于用户组L,将L和r<sub>1</sub>链接得到L<sub>1</sub>=L||r<sub>1</sub>,计算<img file="FDA000020225767000113.GIF" wi="309" he="64" />最后生成密文σ={S,W<sub>1</sub>,W<sub>2</sub>,...,W<sub>t</sub>,L′};步骤五、用户ID<sub>i</sub>,i=1,2,...,t,收到密文σ后,进行如下计算;获取身份列表,<img file="FDA00002022576700021.GIF" wi="343" he="64" />L<sub>1</sub>的第一维元素即用户组身份列表L,提取ID<sub>i</sub>对应的密文信息{S,W<sub>i</sub>};依次计算Y′=E(F<sub>A</sub>,S),q<sub>i</sub>=H<sub>2</sub>(ID<sub>i</sub>),<img file="FDA00002022576700022.GIF" wi="377" he="61" /><img file="FDA00002022576700023.GIF" wi="527" he="61" />M′的第一维元素即消息m′;验证等式Y′=H<sub>1</sub>(m′,ID<sub>A</sub>,X′)是否成立;若等式成立,则接受密文σ;否则拒绝密文σ,并输出⊥。 |