发明名称 前向安全的不可拆分数字签名方法
摘要 本发明公开了一种前向安全的不可拆分数字签名方法,该方法中包括算法有:密钥生成算法KGen,密钥升级算法KUpd,不可拆分签名方法生成算法UndSigFunGen,不可拆分签名算法FSUndSig,不可拆分签名验证算法FSUndVrfy,签名算法Sign,验证算法Vrfy。本发明在白盒攻击环境下,可实现前向安全的不可拆分数字签名。整个方案中,移动代理不需要携带私有密钥当它们产生的数字签名代表原始签名,因此私钥将不会受到影响。加密的功能与原始签署者的要求相结合,所以签名算法的误操作可被防止。该方案并不需要专门的密钥分发机构,同时即便签名者被攻破,该方案仍具有前向安全性。
申请公布号 CN104168115A 申请公布日期 2014.11.26
申请号 CN201410407512.X 申请日期 2014.08.19
申请人 同济大学 发明人 史扬;刘琴;穆斌;赵钦佩;韩景轩
分类号 H04L9/32(2006.01)I;H04W12/06(2009.01)I 主分类号 H04L9/32(2006.01)I
代理机构 上海天协和诚知识产权代理事务所 31216 代理人 叶凤
主权项 一种前向安全的不可拆分数字签名方法,其特征在于,它包括八个步骤如下: 步骤1.某客户在一台客户端计算机上完成购物,随即,计算机生成移动代理,之后客户端计算机根据规定好的安全级别下(输入需要的安全指数k)运行算法1.,算法定义如下 算法1.密钥生成算法:KGen(1<sup>k</sup>)输入总共的时间片段数T和1<sup>k</sup>当k∈□(□为自然数)时一个安全参数,算法输出公共密钥设置<img file="FDA0000555986400000012.GIF" wi="792" he="114" />以及初始密钥S<sub>0</sub>;Ω中G<sub>1</sub>是一个阶为q乘法循环群,G<sub>2</sub>同样是一个阶为q的乘法循环群;G和P是G<sub>1</sub>和G<sub>2</sub>各自的固定生成元;<img file="FDA0000555986400000013.GIF" wi="490" he="114" />是一个线性映射,将G<sub>1</sub>和G<sub>2</sub>中的元素先做笛卡尔积,然后映射到G<sub>T</sub>中的元素上;<img file="dest_path_BDA0000555986410000034.GIF" wi="403" he="109" />和H<sub>2</sub>:{0,1}<sup>*</sup>→G<sub>1</sub>是两个特殊的哈希映射,作用就是分别将任意二进制数值映射到<img file="FDA0000555986400000015.GIF" wi="90" he="116" />和G<sub>1</sub>,<img file="FDA0000555986400000016.GIF" wi="93" he="123" />是以质数q为阶且无零元的整数加法群;定义:在(G<sub>1</sub>,G<sub>2</sub>)上的判定Diffie‑Hellman问题(co‑DDH):给出P,P<sup>a</sup>∈G<sub>2</sub>和Y,Y<sup>b</sup>∈G<sub>1</sub>作为输入,如果a=b那么输出yes,否则输出no;当输出为yes时,称(P,P<sup>a</sup>,Y,Y<sup>b</sup>)是一个Diffie‑Hellman元组(co‑DHT); 将全局设定Ω存储在U<sub>0</sub>,也就是公钥元素携带着全局信息; KGen(1<sup>k</sup>)算法完成,输出公钥U<sub>0</sub>和初始密钥S<sub>0</sub>,进行下一步; 步骤2然后客户端向算法2输入公钥U<sub>0</sub>、初始密钥s<sub>0</sub>、CERT<sub>j</sub>和当前时间片j,然后运行算法2,其定义如下: 算法2. KUpd(s<sub>j‑1</sub>,CERT<sub>j</sub>,j,U<sub>0</sub>) BEGIN &lt;U<sub>0</sub>′,j′,U<sub>j</sub>′,Λ<sub>j</sub>&gt;←CERT<sub>j</sub><img file="FDA0000555986400000022.GIF" wi="566" he="95" /><img file="FDA0000555986400000021.GIF" wi="806" he="114" />return  ⊥  //abort erase  s<sub>j‑1</sub>return  s<sub>j</sub>END 抹除S<sub>0</sub>后,算法返回S<sub>1</sub>,进行下一步; 步骤3.客户端完成交易,准备发送移动代理进行交易; 如果当前密钥过期执行步骤4,否则执行步骤5; 步骤4.客户端以上一时期密钥S<sub>j‑1</sub>,当前时期j,公钥U<sub>0</sub>以及算法1生成的CERT<sub>j</sub>为输入,重新运行KUpd,得到下一时间段密钥S<sub>j</sub>,进行下一步; 步骤5.客户端以REQ_C||ID<sub>C</sub>,s<sub>j</sub>,CERT<sub>j</sub>为输入,其中REQ_C||ID<sub>C</sub>是客户需求和用户ID属于敏感数据运行算法3,其定义如下: 算法3. UndSigFunGen(REQ_C||ID<sub>C</sub>,s<sub>j</sub>,CERT<sub>j</sub>) Begin H←H<sub>2</sub>(REQ_C||ID<sub>C</sub>); <img file="FDA0000555986400000023.GIF" wi="225" he="81" /><img file="FDA0000555986400000024.GIF" wi="866" he="116" /><img file="FDA0000555986400000025.GIF" wi="419" he="94" />End 输出<img file="FDA0000555986400000026.GIF" wi="275" he="96" />使代理携带;随后客户端运行算法6为代理敏感数据签名,输入为敏感数据、当前时间片段j 以及当前密钥S<sub>j</sub>,算法定义如下 算法6. Sign(s<sub>j</sub>,j,Msg) Begin <img file="FDA0000555986400000033.GIF" wi="1215" he="115" />return  σ<sub>j</sub>End 输出为j时期的签名,同样使代理携带;进行下一步 步骤6.商店接收到代理,先用算法7检验代理的合法性,即检验σ<sub>j</sub>,输入为公钥、签名消息、签名和当前时期,算法定义如下: 算法7. Vrfy(U<sub>0</sub>,σ,j,Msg) Begin &lt;CERT<sub>j</sub>,σ′&gt;←σ;&lt;U<sub>0</sub>′,j′,U<sub>j</sub>′,Λ<sub>j</sub>&gt;←CERT<sub>j</sub>If(U<sub>0</sub>≠U<sub>0</sub>′)  return  0 If(j≠j′)  return  0 <img file="FDA0000555986400000034.GIF" wi="1148" he="117" /><img file="FDA0000555986400000032.GIF" wi="1012" he="108" />Else  return  1 End 如果输出为0,退出交易 如果输出为1,判断是否代理继续在商店间迁移,如果需要,重复该步骤,即进行步骤6;否则进行步骤7; 步骤7.在此,商店已经做出最终决策,如果完成交易,那么生成CONTRACT和其他交易信息作为输入,运行算法4,定义如下: 算法4. UndSig(Msg) Begin h=H<sub>1</sub>(Msg) <img file="FDA0000555986400000043.GIF" wi="577" he="127" />End 输出为最终的不可拆分签名,在此记为Z。保存到代理中,然后使代理迁移回到客户端,进行下一步。 步骤8.客户端收到交易完成的代理,以U<sub>0</sub>,Z,j,Msg,REQ_C||ID<sub>C</sub>为输入,其中Msg为CONTRACT和其他交易信息,运行算法5检验Msg的合法性,算法定义如下: 算法5. UndVrfy(U<sub>0</sub>,Z,j,Msg,REQ_C||ID<sub>C</sub>) Begin &lt;&lt;CERT<sub>j</sub>,Z′&gt;,j&gt;←Z;&lt;U<sub>0</sub>′,j′,U<sub>j</sub>′,Λ<sub>j</sub>&gt;←CERT<sub>j</sub>If(U<sub>0</sub>≠U<sub>0</sub>′)  return  0 If(j≠j′)  return  0 If(Msg does not satisfy REQ_C)  return  0 <img file="FDA0000555986400000041.GIF" wi="1222" he="125" /><img file="FDA0000555986400000042.GIF" wi="1374" he="140" />else  return  1 End 如果算法输出为0,则终止交易; 否则输出为1,完成交易。 如果用户仍需要交易,直接跳到步骤3。 
地址 200092 上海市杨浦区四平路1239号