发明名称 基于离散对数的有向传递签名方法
摘要 本发明提出了基于离散对数的有向传递签名方法,所述方法包括系统设置、节点添加、节点删除、边签名运算、边签名合成、边签名验证、Hash运算、在线任务分配过程;所述Hash运算器将节点的秘密标签进行哈希运算后返回给节点添加器;节点删除器删除指向的节点,使节点从图中脱离;在线任务分配器处理签名或传递消息及发送请求。边签名运算器,边签名合成器,边签名验证器分别处理图中指定边的签名,不相邻边的签名合成和验证边签名的正确性。本发明利用节点秘密值构造出了方向状态函数,系统而又简单的标明了复杂有向图节点之间的方向关系,从而成功地构造了一个针对复杂有向图的有向传递签名方法,有效的解决了公开问题。
申请公布号 CN103259661B 申请公布日期 2016.04.27
申请号 CN201310149352.9 申请日期 2013.04.25
申请人 河海大学 发明人 李继国;张亦辰;汪鑫;蒋勇;钱惠玲;滕美林;蒋鑫;郭宇燕
分类号 H04L9/32(2006.01)I 主分类号 H04L9/32(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 朱小兵
主权项 基于离散对数的有向传递签名方法,其特征在于,具体包括如下步骤:步骤A,系统参数生成:选择大素数p和q,满足2<sup>k'‑1</sup>≤p&lt;2<sup>k'</sup>,q∣(p‑1),其中k'为安全参数,|表示整除;选择两个生成元<img file="FDA0000851618200000011.GIF" wi="181" he="77" />使得他人求h关于基g的离散对数计算上不可行的,其中<img file="FDA0000851618200000012.GIF" wi="66" he="71" />表示集合{1,2,…,p‑2,p‑1};随机选择<img file="FDA0000851618200000013.GIF" wi="131" he="76" />作为私钥ssk,计算spk=g<sup>x</sup>modp,公布tpk=(p,q,g,spk)作为公钥;步骤B,建立新节点:为了添加新节点,利用签名算法TSign维持状态(V,l(i),Y(i),Σ(i),Δ(i))表示复杂有向图节点之间的映射关系和方向关系;其中,<img file="FDA0000851618200000014.GIF" wi="142" he="62" />是节点集,N是正整数集;函数l(i):<img file="FDA0000851618200000015.GIF" wi="630" he="75" />映射节点i∈V到一个秘密的标签值<maths num="0001"><math><![CDATA[<mrow><msub><mi>l</mi><mi>i</mi></msub><mo>&Element;</mo><msubsup><mi>Z</mi><mi>N</mi><mo>*</mo></msubsup><mo>=</mo><mo>{</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mo>...</mo><mo>,</mo><mi>N</mi><mo>-</mo><mn>2</mn><mo>,</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>}</mo><mo>;</mo></mrow>]]></math><img file="FDA0000851618200000016.GIF" wi="629" he="75" /></maths>函数Y(i):<img file="FDA0000851618200000017.GIF" wi="167" he="76" />映射节点i∈V到一个公开的标签值Y<sub>i</sub>;函数Σ(i):表示节点i∈V与标签值Y<sub>i</sub>级联后的值i||Y<sub>i</sub>在密钥ssk下的标准签名,函数值记为Σ<sub>i</sub>,其中符号||表示两个字符串级联;函数Δ(i):表示节点i与相邻节点的方向状态关系,凡是指向节点i的节点,其秘密值都通过hash函数映射后存储在节点i的方向状态函数值Δ<sub>i</sub>中;其步骤如下:步骤B‑1:在线任务分配器向节点添加器申请添加新的节点,并传输此节点的父节点集合;步骤B‑2:节点添加器将新节点的父节点集合所有秘密标签值传输给HASH运算器,询问相应的哈希值;步骤B‑3:HASH运算器对每个标签值l<sub>k</sub>计算hash(l<sub>k</sub>),并存储在节点i的方向状态函数值Δ<sub>i</sub>中,节点k是节点i的父节点;将Δ<sub>i</sub>返回给节点添加器;步骤B‑4:节点添加器将节点计数加1,V←V∪{i},随机选择秘密标签值<img file="FDA0000851618200000021.GIF" wi="164" he="74" />并计算<img file="FDA0000851618200000022.GIF" wi="310" he="76" />Σ<sub>i</sub>←SSign(ssk,(i||Y<sub>i</sub>)),即以密钥ssk作为输入,使用标准签名算法SSign对i||Y进行签名;对节点i的任意父节点的秘密标签值l<sub>k</sub>,询问HASH运算器得到hash(l<sub>k</sub>),那么i节点的方向状态函数值为Δ<sub>i</sub>=(hash(l<sub>1</sub>),…,hash(l<sub>t</sub>));公布节点i的签名值C<sub>i</sub>给在线任务分配器C<sub>i</sub>=(i,Y<sub>i</sub>,Σ<sub>i</sub>,Δ<sub>i</sub>);步骤C,删除节点:其过程如下:步骤C‑1:在线任务分配器传递需要删除的节点的编号给节点删除器;步骤C‑2:节点删除器执行,其过程如下:设n为已经建立的节点数,将n减1;V←V/{i},即从节点集合V中删除一个节点i;删除随机选择秘密标签值l<sub>i</sub>,以及节点i的签名值C<sub>i</sub>=(i,Y<sub>i</sub>,Σ<sub>i</sub>,Δ<sub>i</sub>);更新节点i指向的节点的方向状态函数,即把节点i指向节点的方向状态函值里面存储的hash(l<sub>i</sub>)删去;删除一切跟节点i有关的边的签名;步骤D,边签名:步骤D‑1:边签名运算器,其过程如下:首先判定边(i,j)的方向关系,如果节点j的方向状态函数值里有一个值等于hash(l<sub>i</sub>),则边(i,j)的方向关系是i指向j;如果节点i的方向状态函数值里有一个值等于hash(l<sub>j</sub>),则边(i,j)的方向关系是j指向i;如果边(i,j)的方向关系是i指向j,TSign发布3元组σ=(C<sub>i</sub>,C<sub>j</sub>,δ),σ=(C<sub>i</sub>,C<sub>j</sub>,δ)作为边(i,j)的签名给在线任务分配器,其中δ=(l<sub>i</sub>‑l<sub>j</sub>)modq;步骤D‑2:如果节点j的方向状态函数值里没有值等于hash(l<sub>i</sub>),并且节点i的方向状态函数值里没有值等于hash(l<sub>j</sub>),那么这两个节点则不是相邻节点,则转向步骤F,调用签名合成运算器;步骤E,边签名验证:步骤E‑1:在线任务分配器将待验证消息签名发送给验证者;步骤E‑2:边签名验证器,其过程如下:给定输入tpk=(p,q,g,spk),节点i,j的签名值和边(i,j)的签名σ,任何人可通过验证下面的规则来验证(i,j)的签名:如果SVf(spk,i||Y<sub>i</sub>,Σ<sub>i</sub>)=1且SVf(spk,j||Y<sub>j</sub>,Σ<sub>j</sub>)=1,返回1,否则返回0,其中SVf表示标准签名验证算法;如果Y<sub>i</sub>(Y<sub>j</sub>)<sup>‑1</sup>=g<sup>δ</sup>modp,返回1,否则返回0;如果同时满足上述验证过程则返回1,否则返回0;步骤F,合成边签名:边签名合成器,其过程如下:给定节点i,j,k的签名值和边(i,j)的签名(C<sub>i</sub>,C<sub>j</sub>,δ<sub>1</sub>),边(j,k)的签名(C<sub>j</sub>,C<sub>k</sub>,δ<sub>2</sub>),计算边(i,k)的签名(C<sub>i</sub>,C<sub>k</sub>,δ<sub>3</sub>),其中,δ<sub>3</sub>=δ<sub>1</sub>+δ<sub>2</sub>,δ<sub>1</sub>=(l<sub>i</sub>‑l<sub>j</sub>)modq,δ<sub>2</sub>=(l<sub>j</sub>‑l<sub>k</sub>)modq。
地址 211100 江苏省南京市江宁区佛城西路8号