[发明专利]入侵回弹的不可拆分数字签名方法有效
申请号: | 201711330710.0 | 申请日: | 2017-12-13 |
公开(公告)号: | CN108011723B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 史扬;张清;傅晓巍 | 申请(专利权)人: | 同济大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32;H04L9/16;H04L29/06 |
代理公司: | 上海科律专利代理事务所(特殊普通合伙) 31290 | 代理人: | 叶凤 |
地址: | 200092 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种入侵回弹的不可拆分数字签名方法。本发明的创新在于通过特殊的算法设计,进而同时达到入侵回弹和不可拆分签名的安全特征。它并不是单纯简单的算法拼装,而是通过理论推理论证以及相应的实验而达到的两种安全方案的有机结合。本发明的目的在于克服目前方案在移动代理安全领域各自的不足,既能解决生成电子签名需要自身携带签名算法以及签名密钥的过程中,会让攻击者从代理端伪造签名算法,甚至破解签名密钥的安全问题,又能解除移动代理或其子系统在路过某恶意主机时可能会形成白盒攻击(WBAC)环境时所面临的威胁。同时由于不需要专门的安全机构来颁发证书或者是密钥,增加了签名方法的适用范围,也抵消了权威机构被攻破的巨大威胁。 | ||
搜索关键词: | 入侵 回弹 不可 拆分 数字签名 方法 | ||
【主权项】:
1.一种入侵回弹的不可拆分数字签名方法,其特征在于,它包括十一个步骤具体如下:步骤1.在一台权威认证的可信机构服务器Server上,根据规定好的安全级别下输入需要的安全指数k,运行算法1.,生成全局参数并输出公共参数和轮常数链,算法定义如下:算法1.密钥生成算法IRKGen(1k ):1.1.输入总共的时间片段数T和1k , ( 为自然数)为一个安全参数,算法首先生成全局参数: 1.2.调用任一基于离散对数的数字签名方案中的密钥生成算法KG生成两对公钥、私钥对:<PK,sk>←KG(1k )以及<PK*,sk*>←KG(1k );其中,PK=Gsk ,PK*=Gsk* ,G是群 的生成元;1.3.从BLS签名方案的密钥池D中均匀随机地选一个初始密钥元素: 1.4.调用BLS签名方案中的任一指数运算计算初始时间段内t=1的轮常数:R(1) ←Gk(1) ;1.5.循环计算其他时间段内(t=2,…,T)的轮常数:k(t) ←H1 (k(t-1) ), 并删除所有轮的密钥元素,并生成轮常数链R=<R(1) ,…,R(T) >;1.6.以sk为私钥调用BLS签名算法Sign为R和PK*签名:σpub =(H2 (R,PK*))sk ,并删除签名所用的私钥sk,输出公共参数R,PK,PK*及签名σpub ;1.7.将另一私钥sk*发送给基地;步骤2.随后基地运行算法2.输入当前时间片t、链R和私钥sk*,然后运行算法2,实现基地的密钥升级,输出当前时间段的初始基地密钥SKBt,0 ,其定义如下:算法2.基地密钥升级算法UB:2.1.输入t,R,从R中读取当前时间段的轮常数:R(t) ←R;2.2.调用密钥生成算法KG生成当前时间段内的公钥、私钥对:<PKt ,skt >←KG(1k ),其中 2.3.以sk*为私钥调用BLS签名算法Sign构造当前时间段的签名:σt =(H2 (t,PKt )+R(t) )sk* ,其中R(t) 用来与H2 (t,PKt )相加;2.4.生成当前时间段内的公钥证书CERTt =<σt ,<t,PKt >>以及当前时间段t的初始基地密钥SKBt,0 =<⊥,skt >;2.5.删除前一时间段的初始基地密钥SKBt-1,0 ,并发送密钥升级消息SKUt-1 =CERTt 给客户端进行下一步;步骤3.客户端(签名者)接收到密钥升级消息SKUt-1 ,将其作为算法3的输入,初始化当前时间段的签名密钥。其定义如下:算法3.签名密钥升级算法US:3.1.输入密钥升级消息SKUt-1 ;3.2.输出时间段t内的初始签名密钥SKSt,0 =<⊥,SKUt-1 >,删除前一时间段的初始签名密钥SKSt-1,0 。步骤4.基地(安全性较高的物理设备)再次通过向算法4输入当前时间片t,当前轮数r(1≤r≤Round(t),Round(t)表示某时间段t内,基地密钥刷新算法和签名密钥刷新算法各要运行Round(t)次),以及前一轮的基地密钥SKBt,r-1 ,刷新得到时间段t内第r轮的基地密钥SKBt,r 。具体定义如下:算法4.基地密钥刷新算法RB:4.1.输入t,r以及SKBt,r-1 ;4.2.从SKBt,r-1 中提取私钥skt :skt ←I2,2 (SKBt,r-1 ),其中Ia,b 代表从a元组中提取第b个元素;4.3.调用BLS方案中的密钥生成算法KG生成当前时间段t内第r轮的公钥、私钥对:<PKt,r ,skt,r >←KG(1k );4.4.以skt 为私钥调用BLS签名算法Sign构造当前时间段t内第r轮的签名: 4.5.生成当前时间段t内第r轮的公钥证书certt,r =<σt,r ,<t,r,PKt,r >>,以及时间段t内第r轮的基地密钥SKBt,r =<skt,r ,skt >;4.6.删除前一轮的基地密钥SKBt,r-1 ,并发送密钥刷新消息SKRt,r-1 =<skt,r ,certt,r >给客户端进行下一步。步骤5.客户端(签名者)以接收到的密钥刷新消息SKRt,r-1 以及时间段t内前一轮的签名密钥SKSt,r-1 作为算法5的输入,定义如下:算法5.签名密钥刷新算法RS:5.1.输入SKRt,r-1 以及前一轮签名密钥SKSt,r-1 ;5.2.生成时间段t内第r轮的签名密钥SKSt,r =<SKRt,r-1 ,I2,2 (SKSt,r-1 )>,删除前一轮签名密钥SKSt,r-1 。步骤6.客户端(签名者)完成交易,准备发送移动代理进行交易;步骤7.客户端(签名者)在获取当前的签名密钥SKSt,r 之后,将此密钥与REQ_C||IDc (签名者需求及ID属于敏感数据)作为输入运行算法6,其定义如下:算法6.不可拆分签名方法的生成算法IRUndFunGen:6.1.从签名密钥SKSt,r 中获取当前时间段内当前轮数生成的私钥skt,r 及两个证书:skt,r ←I2,1 (I2,1 (SKSt,r )),certt,r ←I2,2 (I2,1 (SKSt,r )),CERTt ←I2,2 (SKSt,r );6.2.以skt,r 为私钥调用BLS签名算法Sign对REQ_C||IDc 进行签名:首先利用哈希函数H2 将二进制变量REQ_C||IDc 转换为群 上的元素H←H2 (REQ_C||IDc ),再得到 6.3.生成不可拆分签名方法对: x为任一待签名消息;6.4.输出fIRSign (x)=<t,r,<f(x),fSign (x)>,certt,r ,CERTt >,使代理携带。步骤8.随后客户端运行算法7为代理中的敏感数据签名,输入为当前敏感数据Msg、当前时间片t、当前轮数r、以及当前签名密钥SKSt,r ,输出代理携带的签名。算法定义如下:算法7.基于离散对数的普通签名算法Sign(即上文中提及的BLS签名算法):7.1.从签名密钥SKSt,r 中获取当前时间段内当前轮数生成的私钥skt,r 及两个证书:skt,r ←I2,1 (I2,1 (SKSt,r )),certt,r ←I2,2 (I2,1 (SKSt,r )),CERTt ←I2,2 (SKSt,r );7.2.以skt,r 为私钥为敏感数据Msg签名: 7.3.输出sig=<t,r,certt,r ,CERTt ,σsig >,由代理携带,进行下一步。步骤9.商店接受到代理以及代理携带的签名,先用算法8检验代理的合法性,即验证步骤8中的生成的签名σ是否合法。输入为系列公共参数R,PK,PK*,σpub 及代理携带敏感数据Msg及签名,验证算法定义如下:算法8.基于离散对数的普通验证算法Vrfy:8.1.<t,r,certt,r ,CERTt ,σsig >←sig,<σt ,<t,PKt >>←CERTt ,<σt,r ,<t,r,PKt,r >>←certt,r ;8.2.首先验证公共签名σpub ,检验轮常数链R的合法性:若 输出0,算法结束;否则进行下一步;8.3.验证证书CERTt 的合法性,若 输出0,算法结束;否则进行下一步;8.4.验证证书certt,r 的合法性,PKt ←I2,2 (I2,2 (CERTt )),若 输出0,算法结束;否则进行下一步;8.5.验证签名σsig 的合法性,PKt,r ←I3,3 (I2,2 (certt,r )),若 输出0,算法结束;否则输出1。如果输出为0,退出交易;如果输出为1,判断代理是否继续在商店间迁移,如果需要,则新商店需要重复该验证步骤(步骤9);否则进行步骤10。步骤10.在此,商店已经做出最终决策完成交易,那么生成CONTRACT和其他交易信息M作为输入,同时利用代理携带的不可拆分签名方法对<f(x),fSign (x)>运行算法9,得到最终的不可拆分签名undsig,算法定义如下:算法9.不可拆分签名算法IRUndSign:9.1.<f(x),fSign (x)>←I5,3 (fIRSign (x)),certt,r ←I5,4 (fIRSign (x)),CERTt ←I5,5 (fIRSign (x));9.2.以CONTRACT||M作为不可拆分方法fSign (x)的输入生成不可拆分签名:σundsig =fSign (CONTRACT||M);9.3.输出undsig=<t,r,σundsig ,certt,r ,CERTt >,保存至代理中,然后使代理迁移返回客户端,进行下一步。步骤11.最后客户端收到交易完成的代理,以不可拆分签名undsig、交易消息CONTRACT||M、约束条件REQ_C||IDc 及公共参数R,PK,PK*,σpub 为输入运行不可拆分签名验证算法,验证不可拆分签名的合法性,输出0或1,算法定义如下:算法10.不可拆分签名验证算法IRUndVrfy:10.1.<t,r,certt,r ,CERTt ,σundsig >←undsig,<σt ,<t,PKt >>←CERTt ,<σt,r ,<t,r,PKt,r >>←certt,r ;10.2.首先验证公共签名σpub ,检验轮常数链R的合法性:若 输出0,算法结束;否则进行下一步;10.3.验证证书CERTt 的合法性,若 输出0,算法结束;否则进行下一步;10.4.验证证书certt,r 的合法性,PKt ←I2,2 (I2,2 (CERTt )),若 输出0,算法结束;否则进行下一步;10.5.验证签名σundsig 的合法性,PKt,r ←I3,3 (I2,2 (certt,r )),若 输出0,算法结束;否则输出1。如果输出为0,退出交易;如果输出为1,完成交易。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201711330710.0/,转载请声明来源钻瓜专利网。