[发明专利]基于身份的不可拆分数字签名方法有效
申请号: | 201410403433.1 | 申请日: | 2014-08-15 |
公开(公告)号: | CN104184588B | 公开(公告)日: | 2017-09-08 |
发明(设计)人: | 史扬;刘琴;穆斌;赵钦佩;韩景轩 | 申请(专利权)人: | 同济大学 |
主分类号: | H04L9/32 | 分类号: | H04L9/32 |
代理公司: | 上海天协和诚知识产权代理事务所31216 | 代理人: | 叶凤 |
地址: | 200092 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 基于身份的不可拆分数字签名方法,属于信息安全领域。包括(1)KGEN这是公用密钥生成算法生成的主密钥和系统参数。(2)EXTRACT输入是一个身份标识ID和主密钥s;在多项式时间输出私钥skID。(3)UndSigFunGen是一个概率多项式时间算法,需要一个客户的REQ_C,客户身份的要求IDC,和客户的公钥以及私钥。(4)IDUndSig是一个多项式时间算法,这需要合同(或相关的哈希值)作为输入。(5)DUndVrfy是一个多项式时间算法,这需要合同和不可拆卸的签名作为输入。(6)IDSig是一个概率多项式时间算法。(7)IDVer是一个多项式时间的算法,需要输入签名者的身份ID,消息Msg和数字签名,并输出该“接受”或“拒绝”。本发明在白盒攻击环境下,可实现基于身份的不可拆分数字签名。 | ||
搜索关键词: | 基于 身份 不可 拆分 数字签名 方法 | ||
【主权项】:
一种基于身份的不可拆卸的数字签名方法,其特征在于,它包括七个步骤如下:步骤1.在一台权威认证的可信机构服务器C_Server上,在规定好的安全级别下,输入需要的安全指数k,运行算法1.,算法定义如下算法1.密钥生成算法:KGen输入1k当且为自然数时一个安全参数,算法输出系统参数以及主密钥s;k是安全指数,在系统参数Ω中,G1是由生成元P产生的循环群,它的阶数是质数q,G2是相同的阶为q的循环乘法群;假设离散对数问题在G1和G2之间是艰难的;映射是满足以下三个条件的双线性映射:条件1,双线性:同时满足(1)和(2)或单独满足(3)e^(P1+P2,Q)=e^(P1,Q)e^(P2,Q)---(1)]]>e^(P,Q1+Q2)=e^(P,Q1)e^(P,Q2)---(2)]]>e^(aP,bQ)=e^(P,Q)ab---(3)]]>上述为以质数q为阶且无零元的整数加法群;条件2,非退化性:存在P∈G1和Q∈G1受制于(4)e^(P,Q)≠1---(4)]]>条件3,可计算性:存在一个有效的算法来计算对所有系统参数可以按如下步骤生成:让P成为G1的生成元,取一个随机数然后计算Ppub=sP以及此外,同样在通用设定中给出两个安全的哈希函数:H2:{0,1}*→G1和H2的作用是将任意长度二进制数值映射到群G1;而H3的作用是将任意长度二进制数值与G2群中某元素的布尔乘积映射到整数加法群上;步骤2.C_server上算法1执行结束后会得到系统参数Ω和一个随机数Ω是所有人都可以轻易得到的,而s是要绝对保密的,随后C_server为每一个参与者即客户代理运行算法2,其具体定义如下算法2.基于身份私钥生成算法:Extract一个身份ID作为输入,算法输出私钥DID=sQID,其中QID=H2(ID),H2是上述哈希函数H2:{0,1}*→G1;私钥DID对于身份识别码ID,起到了关联公共密钥的作用;步骤3.C_server将系统参数Ω公开,然后通过特殊安全通道把私钥DID派送给客户端,并同时把拥有相应身份识别码ID的代理迁移给请求的客户端;步骤4.客户端安装移动代理,然后得到系统参数Ω,再然后通过特殊安全通道得到私钥DID,将DID和REQ_C作为输入运行算法3,算法定义如下:算法3.不可拆分签名函数生成算法:UndSigFunGen输入:REQ_C和DID后:表示从群中随机取出元素r,从系统参数Ω中取出g,随后计算U←gr和h←H3(REQ_C,U),H3为上述哈希函数,从Ω中取出Ppub,然后计算表示从群中随机取出元素t,计算A1←gt和A2←tPpub,最后输出函数fSigned(x)如下:fSigned(x)=<<U,V,A1>,V+xA2>,在客户端运行算法3后,移动代理就会一直携带不可拆分函数fSigned(·),随后运行算法6.其定义如下:算法6.签名算法:IDSig输入m=〈m1,m2〉和DID,m为需要签名的消息,其中m1为不敏感数据,m2为敏感数据,m1是没有进行签名的,而m2进行了签名运算,随机取t,计算A1←gt和A2←tPpub;y1←m1;y2←H3(m2,A1);y←〈y1,y2〉;然后输出签名Sig(y)=<<y1,A1〉,DID+y2A2〉,并将签名Sig(y)保存在代理当中,至此客户发送出代理,代理来代替客户在商店服务器中进行自己的行为,代理的迁移;步骤5.第一个接收到代理的商店在进行交易之前,先运行算法7,验证代理的合法性,即验证有没有被恶意篡改过,算法运行前需要输入代理携带来的签名Σ=〈Σ1,Σ2〉,即对应算法6.中的Sig(y),如此可知Σ1=〈y1,A1〉,而Σ2=DID+y2A2但是由于运算的特性,仅知道Σ2是无法计算DID的,这样保证了安全性,算法定义如下:算法7.验证算法:IDVer输入Σ=<Σ1,Σ2>,m=<m1,m2〉解析Σ1=(y1,A1)判断和是否相等是则输出1,否则输出0,在运行完算法7后,如果输出1则代理继续执行,否则终止交易,如果代理继续执行且交易需要代理迁移到另一台商店服务器,那么在新的商店服务器上重复运行步骤5.如果本商店服务器是最终交易服务器,即代理不需要再进行商店间迁移,那么执行步骤6.步骤6.在此,商店已经做出最终决策,如果完成交易,那么生成CONTRACT,然后运行算法4,其输入为CONTRACT和代理自身携带的,在步骤4中生成的fSigned(x),其中CONTRACT定义为CONTRACT=REQ_C||ID||BID_S||TBID_S,四个信息为(1)客户限制,(2)商店ID,(3)交易信息,(4)交易时间,算法4如下:算法4.不可拆分签名算法:IDUndSig输入CONTRACT,fSigned(x)从fSigned(x)中提取A1计算x←H3(CONTRACT,A1),代入fSigned(x),z←fSigned(x)=<<U,V,A1>,V+xA2>输出z;算法4.完成之后,代理将保存CONTRACT和z随后迁移回到客户端,进入步骤7;步骤7.客户端接收到交易完成后的代理后,运行算法5验证代理的合法性,防止被篡改,算法输入为代理携带的CONTRACT和z=<<U,V,A1>,B>算法5.不可拆分签名验证算法:IDUndVrfy输入CONTRACT,z=<<U,V,A1>,B>(1)从CONTRACT字符串中,提取ID,REQ_C和BID_S;如果BID_S不满足REQ_C,输出0,并终止该算法,否则跳到(2),(2)从z中提取<U,V>,(3)判断:和是否相等,如果相等,跳到第(4)步;否则输出0,终止算法,(4)x←H3(CONTRACT,A1)(5)计算B←V+xA2,QID←H2(ID)(6)计算和是否相等,如果相等,则输出1,不相等则输出0;如果算法5返回0,那么说明代理或交易不合法,终止交易;如果返回1,说明交易和代理合法,那么完成交易即可。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410403433.1/,转载请声明来源钻瓜专利网。