[发明专利]前向安全的不可拆分数字签名方法有效

专利信息
申请号: 201410407512.X 申请日: 2014-08-19
公开(公告)号: CN104168115B 公开(公告)日: 2017-07-11
发明(设计)人: 史扬;刘琴;穆斌;赵钦佩;韩景轩 申请(专利权)人: 同济大学
主分类号: H04L9/32 分类号: H04L9/32;H04W12/06
代理公司: 上海天协和诚知识产权代理事务所31216 代理人: 叶凤
地址: 200092 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 安全 不可 拆分 数字签名 方法
【权利要求书】:

1.一种前向安全的不可拆分数字签名方法,其特征在于,它包括八个步骤如下:

步骤1.某客户在一台客户端计算机上完成购物,随即,计算机生成移动代理,之后客户端计算机根据规定好的安全级别下(输入需要的安全指数k)运行算法1,算法定义如下

算法1.密钥生成算法KGen(1k):输入总共的时间片段数T和1k当(为自然数)时一个安全参数,该算法输出公共密钥设置以及初始密钥s0

Ω中G1是一个阶为q乘法循环群,G2同样是一个阶为q的乘法循环群;G和P是G1和G2各自的固定生成元;是一个线性映射,将G1和G2中的元素先做笛卡尔积,然后映射到GT中的元素上;和H2:{0,1}*→G1是两个特殊的哈希映射,作用就是分别将任意二进制数值映射到和G1,是以质数q为阶且无零元的整数加法群;

定义:在(G1,G2)上的判定Diffie-Hellman问题(co-DDH):给出P,Pa∈G2和Y,Yb∈G1作为输入,如果a=b那么输出yes,否则输出no;当输出为yes时,称(P,Pa,Y,Yb)是一个Diffie-Hellman元组(co-DHT);

将公共密钥设置Ω存储在U0,也就是公钥元素携带着全局信息;

KGen(1k)算法完成,输出公钥U0和初始密钥s0,进行下一步;

步骤2然后客户端向算法2输入公钥U0、初始密钥s0、CERTj和当前时间片j,然后运行算法2,其定义如下:

算法2.

KUpd(sj-1,CERTj,j,U0)

BEGIN<U0',j',Uj',Λj>←CERTj

<mrow><msub><mi>s</mi><mi>j</mi></msub><mo>&LeftArrow;</mo><msub><mi>H</mi><mn>1</mn></msub><mrow><mo>(</mo><msub><mi>s</mi><mrow><mi>j</mi><mo>-</mo><mn>1</mn></mrow></msub><mo>)</mo></mrow><mo>;</mo><msub><mi>U</mi><mi>j</mi></msub><mo>&LeftArrow;</mo><msup><mi>P</mi><msub><mi>s</mi><mi>j</mi></msub></msup></mrow>

<mrow><mi>I</mi><mi>f</mi><mrow><mo>(</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>&Lambda;</mi><mi>j</mi></msub><mo>,</mo><mi>P</mi></mrow><mo>)</mo><mo>&NotEqual;</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>H</mi><mn>2</mn></msub><mrow><mo>(</mo><mrow><msub><mi>U</mi><mn>0</mn></msub><mo>,</mo><mi>j</mi><mo>,</mo><msub><mi>U</mi><mi>j</mi></msub></mrow><mo>)</mo></mrow><mo>,</mo><msub><mi>U</mi><mn>0</mn></msub></mrow><mo>)</mo><mo>)</mo></mrow></mrow>

return⊥//abort

erase sj-1

return sj

END

抹除s0后,算法返回s1,进行下一步;

步骤3.客户端完成交易,准备发送移动代理进行交易;

如果当前密钥过期执行步骤4,否则执行步骤5;

步骤4.客户端以上一时期密钥sj-1,当前时期j,公钥U0以及算法1生成的CERTj为输入,重新运行KUpd,得到下一时间段密钥sj,进行下一步;

步骤5.客户端以REQ_C||IDC,sj,CERTj为输入,其中REQ_C||IDC是客户需求和用户ID属于敏感数据运行算法3,其定义如下:

算法3.

UndSigFunGen(REQ_C||IDC,sj,CERTj)

Begin

H←H2(REQ_C||IDC);

<mrow><mi>K</mi><mo>&LeftArrow;</mo><msup><mi>H</mi><msub><mi>s</mi><mi>j</mi></msub></msup></mrow>

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>s</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>p</mi></mrow></mtd><mtd><mrow><msub><mi>f</mi><mrow><msub><mi>Signed</mi><mi>j</mi></msub></mrow></msub><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mo>&lt;</mo><mo>&lt;</mo><msub><mi>CERT</mi><mi>j</mi></msub><mo>,</mo><msup><mi>K</mi><mi>x</mi></msup><mo>&gt;</mo><mo>,</mo><mi>j</mi><mo>&gt;</mo></mrow></mtd></mtr></mtable></mfenced>

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>r</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>r</mi><mi>n</mi></mrow></mtd><mtd><mrow><msub><mi>f</mi><mrow><msub><mi>Signed</mi><mi>j</mi></msub></mrow></msub><mrow><mo>(</mo><mo>&CenterDot;</mo><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced>

End

输出使代理携带;

随后客户端运行算法6为代理敏感数据签名,输入为敏感数据、当前时间片段j以及当前密钥sj,算法定义如下

算法6.

Sign(sj,j,Msg)

Begin

<mrow><msup><mi>&sigma;</mi><mo>&prime;</mo></msup><mo>&LeftArrow;</mo><msub><mi>H</mi><mn>2</mn></msub><msup><mrow><mo>(</mo><mi>M</mi><mi>s</mi><mi>g</mi><mo>)</mo></mrow><msub><mi>s</mi><mi>j</mi></msub></msup><mo>;</mo><mi>&sigma;</mi><mo>&LeftArrow;</mo><mo>&lt;</mo><msub><mi>CERT</mi><mi>j</mi></msub><mo>,</mo><msup><mi>&sigma;</mi><mo>&prime;</mo></msup><mo>&gt;</mo><mo>;</mo><msub><mi>&sigma;</mi><mi>j</mi></msub><mo>&LeftArrow;</mo><mo>&lt;</mo><mi>&sigma;</mi><mo>,</mo><mi>j</mi><mo>&gt;</mo></mrow>

return σj

End

输出为j时期的签名,同样使代理携带;进行下一步

步骤6.商店接收到代理,先用算法7检验代理的合法性,即检验σj,输入为公钥、签名消息、签名和当前时期,算法定义如下:

算法7.

Vrfy(U0,σ,j,Msg)

Begin

<CERTj,σ'>←σ;<U0',j',Uj',Λj>←CERTj

If(U0≠U0') return 0

If(j≠j') return 0

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>I</mi><mi>f</mi><mrow><mo>(</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>&Lambda;</mi><mi>j</mi></msub><mo>,</mo><mi>P</mi></mrow><mo>)</mo><mo>&NotEqual;</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>H</mi><mn>2</mn></msub><mrow><mo>(</mo><mrow><msub><mi>U</mi><mn>0</mn></msub><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><msup><msub><mi>U</mi><mi>j</mi></msub><mo>&prime;</mo></msup></mrow><mo>)</mo></mrow><mo>,</mo><msub><mi>U</mi><mn>0</mn></msub></mrow><mo>)</mo><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>r</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>r</mi><mi>n</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced>

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>I</mi><mi>f</mi><mrow><mo>(</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msup><mi>&sigma;</mi><mo>&prime;</mo></msup><mo>,</mo><mi>P</mi></mrow><mo>)</mo><mo>&NotEqual;</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>H</mi><mn>2</mn></msub><mrow><mo>(</mo><mrow><mi>M</mi><mi>s</mi><mi>g</mi></mrow><mo>)</mo></mrow><mo>,</mo><msub><mi>U</mi><mi>j</mi></msub></mrow><mo>)</mo><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>r</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>r</mi><mi>n</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced>

Else return 1

End

如果输出为0,退出交易

如果输出为1,判断是否代理继续在商店间迁移,如果需要,重复该步骤,即进行步骤6;否则进行步骤7;

步骤7.在此,商店已经做出最终决策,如果完成交易,那么生成CONTRACT和其他交易信息作为输入,运行算法4,定义如下:

算法4.

UndSig(Msg)

Begin

h=H1(Msg)

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>r</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>r</mi><mi>n</mi></mrow></mtd><mtd><mrow><msub><mi>f</mi><mrow><msub><mi>Signed</mi><mi>j</mi></msub></mrow></msub><mrow><mo>(</mo><mi>h</mi><mo>)</mo></mrow></mrow></mtd></mtr></mtable></mfenced>

End

输出为最终的不可拆分签名,在此记为Z,保存到代理中,然后使代理迁移回到客户端,进行下一步;

步骤8.客户端收到交易完成的代理,以U0,Z,j,Msg,REQ_C||IDC为输入,其中Msg为CONTRACT和其他交易信息,运行算法5检验Msg的合法性,算法定义如下:

算法5.

UndVrfy(U0,Z,j,Msg,REQ_C||IDC)

Begin

<<CERTj,Z'>,j>←Z;<U0',j',Uj',Λj>←CERTj

If(U0≠U0')return 0

If(j≠j')return 0

If(Msg does not satisfy REQ_C) return 0

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>I</mi><mi>f</mi><mrow><mo>(</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>&Lambda;</mi><mi>j</mi></msub><mo>,</mo><mi>P</mi></mrow><mo>)</mo><mo>&NotEqual;</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>H</mi><mn>2</mn></msub><mrow><mo>(</mo><mrow><msup><msub><mi>U</mi><mn>0</mn></msub><mo>&prime;</mo></msup><mo>,</mo><msup><mi>j</mi><mo>&prime;</mo></msup><mo>,</mo><msup><msub><mi>U</mi><mi>j</mi></msub><mo>&prime;</mo></msup></mrow><mo>)</mo></mrow><mo>,</mo><msub><mi>U</mi><mn>0</mn></msub></mrow><mo>)</mo><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>r</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>r</mi><mi>n</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced>

<mfenced open = "" close = ""><mtable><mtr><mtd><mrow><mi>I</mi><mi>f</mi><mrow><mo>(</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msup><mi>Z</mi><mo>&prime;</mo></msup><mo>,</mo><mi>P</mi></mrow><mo>)</mo><mo>&NotEqual;</mo><mover><mi>e</mi><mo>^</mo></mover><mo>(</mo><mrow><msub><mi>H</mi><mn>2</mn></msub><msup><mrow><mo>(</mo><mrow><mi>R</mi><mi>E</mi><mi>Q</mi><mo>_</mo><mi>C</mi><mo>|</mo><mo>|</mo><msub><mi>ID</mi><mi>C</mi></msub></mrow><mo>)</mo></mrow><mrow><msub><mi>H</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>M</mi><mi>s</mi><mi>g</mi><mo>)</mo></mrow></mrow></msup><mo>,</mo><msub><mi>U</mi><mi>j</mi></msub></mrow><mo>)</mo><mo>)</mo></mrow></mrow></mtd><mtd><mrow><mi>r</mi><mi>e</mi><mi>t</mi><mi>u</mi><mi>r</mi><mi>n</mi></mrow></mtd><mtd><mn>0</mn></mtd></mtr></mtable></mfenced>

else return 1

End

如果算法输出为0,则终止交易;

否则输出为1,完成交易;

如果用户仍需要交易,直接跳到步骤3。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410407512.X/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top