一种基于身份的分布式签名方法及系统与流程

文档序号:12698786阅读:486来源:国知局
一种基于身份的分布式签名方法及系统与流程

本发明涉及信息密钥安全的技术领域,尤其涉及了一种基于身份的分布式签名方法及系统。



背景技术:

随着科技的发展,移动终端所具备的功能越来越完善,与此同时,在移动终端上的各种安全及隐私问题也逐渐暴露出来。在移动终端上,采取数字签名等措施可以有效地解决相关信息安全问题,以保证数据的安全性以及可靠性。

数字签名是现代信息安全的重要的组成部分,应用数字签名技术可以识别篡改、伪装,还可以有效地防止否认。安全的数字签名在电子公文、电子合同等应用中确定双方身份,是保证信息真实可信的基础。随着以手机为代表的移动终端的普及,数字签名在移动端的应用越来越广泛。研究应用于移动终端上的数字签名方案具有重要的意义。由于移动终端的计算资源有限且无线通信带宽受限,所以,基于证书的公钥密码体制不适合应用于上述环境。在基于身份的公钥密码体制中,可利用用户的身份信息直接生成用户的公钥,避免证书管理复杂和成本高的问题。

目前基于身份的数字签名方案,大体流程如下,用户将身份标识e I d和自身的公钥发送给密钥生成中心PKG,PKG利用用户的标识以及用户的私钥,结合自身的私钥完成部分私钥的生成工作,部分私钥中包含着用户的身份信息,且不可篡改。PKG同时计算出部分私钥对应的部分公钥,将部分公钥公开,部分私钥秘密发送给用户。用户用自身的私钥与接收到的部分私钥合成真正的签名私钥,而任何人都可以通过公开的部分公钥和用户标识计算出真正的验签公钥。而完整的签名私钥只有用户持有,PKG并不知情,即使PKG不可信也能保证私钥的安全。

但是在目前基于身份的数字签名方案中,虽然解决了密钥生成中心PKG不可信的问题,但是仍存在一定的安全性隐患,如签名所需要的真实私钥会完整的存在客户端,如果客户端的安全不能保证,容易造成私钥的泄漏。



技术实现要素:

本发明所要解决的技术问题是:目前的技术方案中密钥生成中心PKG存在安全性隐患,容易造成私钥的泄漏。

为解决上面的技术问题,本发明提供了一种基于身份的分布式签名方法,该分布式签名方法包括如下步骤:

S1,客户端根据用户身份标识eld生成一对与用户永久绑定的固定公私钥(PC,dC),客户端将固定公钥PC以及身份标识eld发送给服务器;

S2,服务器根据固定公钥PC以及身份标识eld生成与用户绑定的的固定公私钥对(PB,dB);

S3,服务器利用(eld、PB、PC)计算生成部分签名公钥p并发布,同时生成签名代理私钥dp

S4,客户端收到待签名消息M后,生成临时公私钥对(PTmp,dTmp),并将公钥PTmp发送给服务器;

S5,服务器生成临时公私钥对(PSTmp,dSTmp),并计算签名消息摘要e;

S6,服务器根据临时公钥PTmp、PSTmp、签名消息摘要e和签名代理私钥dp完成签名代理操作,并将签名代理结果发送给客户端;

S7,客户端根据签名代理结果,利用固定私钥dC和临时私钥dTmp进行签名授权工作,得到完整的签名并将签名输出。

进一步,客户端和服务端均支持SM2标准算法,SM2椭圆曲线参数为E(Fp)、G和n,椭圆曲线E为定义在有限素数域Fp上的椭圆曲线,G为椭圆曲线E上n阶基点。

进一步,所述S3中还包括:计算生成部分公钥p,所述部分公钥p包括p1和p2,p1=PC+PB,根据部分公钥p1计算收敛因子h=SM3(p1x||eId||p1y),并根据收敛因子h计算代理签名私钥dp=h*dB,并计算部分公钥p2=[dp]·PC,公布部分公钥p1和p2,则实际公钥W,其中W=p1+p2+[h-1]·PB,·表示点乘,||表示拼接符,公式是表示p1x、eId与p1y三者拼接,SM3()表示杂凑算法。

上述进一步的有益效果:任何人都可以利用用户的身份标识eld和公开的部分公钥p1和p2计算生成真正的验证公钥,并进行验签。

进一步,所述S5中还包括:根据待签名消息M计算签名消息摘要e,服务器在生成临时公私钥对(PSTmp,dSTmp)后,服务器生成随机数K,以及利用随机数K计算点(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘运算。

进一步,所述S6中还包括:服务器根据临时公钥PTmp、签名消息摘要e和签名代理私钥dp生成签名代理结果(r,sproxy1,sproxy2),r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模运算。

进一步,所述S7中包括:生成签名s,计算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客户端将(r,s)作为完整的签名,并对完整的签名进行验证,若签名验证成功,则将报文发送给签名业务中心,并将签名输出。

进一步,该方法还包括:当完成签名输出后,客户端的临时公私钥对(PTmp,dTmp)和服务器生成的临时公私钥对(PSTmp,dSTmp)自动销毁。

本发明的有益效果:克服了密钥生成中心PKG不可信的缺点,同时若客户端的安全不能保证,也不会造成私钥的泄漏,大大提高了用户的私钥安全性,另外,无需复杂的证书管理操作,可以利用用户标识eId进行签名和验签,签名私钥不会以明文的形式出现在任何过程中,保证绝对的安全,分布式签名要求双方必须同时进行签名,任何一方不能单独完成签名,安全性进一步提升,可以有效应用于具备唯一身份标识的应用系统中,无需接入CA系统、无需引入额外硬件,就可以实现应用与客户之间安全可靠的数字签名业务,协议简单方便,只需要两次交互就能完成完整的签名,实现简单方便。

本发明还涉及一种基于身份的分布式签名系统,该系统包括:客户端,服务器;客户端生成固定公私钥对(PC,dC),将公钥PC发送给服务器;服务器接收公钥PC后生成固定公私钥对(PB,dB),服务器利用(eld、PB、PC)计算生成部分签名公钥p并发布,同时生成签名代理私钥dp;客户端收到待签名消息M后,生成临时公私钥对(PTmp,dTmp),并将公钥PTmp发送给服务器;服务器生成临时公私钥对(PSTmp,dSTmp),并计算签名消息摘要e;服务器根据(PTmp、e、dp)完成签名代理操作,并将签名代理结果发送给客户端;客户端根据签名代理结果,利用(dC、dTmp)进行签名授权工作,得到完整的签名并将签名输出。

进一步,所述服务器还包括:计算生成部分公钥p,所述部分公钥p包括p1和p2,p1=PC+PB,并且根据部分公钥p1计算收敛因子h=SM3(p1x||eId||p1y),并根据收敛因子h计算代理签名私钥dp=h*dB,并计算部分公钥p2=[dp]·PC,公布部分公钥p1和p2,则实际公钥W,其中W=p1+p2+[h-1]·PB,·表示点乘,||表示拼接符,公式是表示p1x、eId与p1y三者拼接,SM3()表示杂凑算法。

进一步,所述服务器还包括:根据待签名消息M计算签名消息摘要e,服务器在生成临时公私钥对(PSTmp,dSTmp)后,服务器生成随机数K,以及利用随机数K计算点(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘运算。

进一步,所述服务器还包括:服务器根据临时公钥PTmp、签名消息摘要e和签名代理私钥dp生成签名代理结果(r,sproxy1,sproxy2),其中,r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模运算。

进一步,所述客户端还包括:生成签名s,计算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客户端将(r,s)作为完整的签名,并对完整的签名进行验证,若签名验证成功,则将报文发送给签名业务中心,并将签名输出。

有益效果:克服了密钥生成中心PKG不可信的缺点,同时若客户端的安全不能保证,也不会造成私钥的泄漏,大大提高了用户的私钥安全性,另外,无需复杂的证书管理操作,可以利用用户标识eId进行签名和验签,签名私钥不会以明文的形式出现在任何过程中,保证绝对的安全,分布式签名要求双方必须同时进行签名,任何一方不能单独完成签名,安全性进一步提升,可以有效应用于具备唯一身份标识的应用系统中,无需接入CA系统、无需引入额外硬件,就可以实现应用与客户之间安全可靠的数字签名业务,协议简单方便,只需要两次交互就能完成完整的签名,实现简单方便。

附图说明

图1为本发明的一种基于身份的分布式签名方法示意图;

图2为本发明的一种基于身份的分布式签名方法流程图;

图3为本发明的一种基于身份的分布式签名方法示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如附图1、图2和图3所示,一种基于身份的分布式签名方法,该分布式签名方法包括如下步骤:

客户端和服务端均支持SM2标准算法,SM2椭圆曲线参数E(Fp)、G和n,椭圆曲线E为定义在有限素数域Fp上的椭圆曲线,G为椭圆曲线E上n阶基点。下面所提到的用户身份标识eld均是指在一个安全域(或信息系统应用范围内),能够唯一标识用户身份的,比如手机号、邮箱、ip地址、微博账号、微信号、QQ号、银行账号、各种应用账号等。

S1,客户端根据用户身份标识eld生成一对与用户永久绑定的固定公私钥(PC,dC),同时客户端将固定公钥PC以及身份标识eld发送给服务器;

S2,服务器根据固定公钥PC以及身份标识eld生成与用户绑定的的固定公私钥对(PB,dB);

S3,服务器利用(eld、PB、PC)计算生成部分签名公钥p并发布,同时生成签名代理私钥dp,计算生成部分公钥p,所述部分公钥p包括p1和p2,p1=PC+PB,并且根据部分公钥p1计算收敛因子h=SM3(p1x||eId||p1y),并根据收敛因子h计算代理签名私钥dp=h*dB,并计算部分公钥p2=[dp]·PC,公布部分公钥p1和p2,则实际公钥W,W为p=p1+p2+[h-1]·PB,·表示点乘,||表示拼接符,公式是表示p1x、eId与p1y三者拼接,SM3()表示杂凑算法,任何人都可以利用用户的身份标识eld和公开的部分公钥p1和p2计算生成真正的验证公钥,并进行验签;

S4,客户端收到待签名消息M后,生成临时公私钥对(PTmp,dTmp),并将公钥PTmp发送给服务器;

S5,服务器生成临时公私钥对(PSTmp,dSTmp),计算签名消息摘要e;服务器在生成临时公私钥对(PSTmp,dSTmp)后,服务器生成随机数K,以及计算点(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘运算,;

S6,服务器根据临时公钥PTmp、签名消息摘要e和签名代理私钥dp完成签名代理操作,生成签名代理结果(r,sproxy1,sproxy2),将签名代理结果发送给客户端,其中r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模运算;

S7,客户端根据签名代理结果,利用固定私钥dC和临时私钥dTmp进行签名授权工作,其中计算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客户端将(r,s)作为完整的签名并输出,利用客户端自身的固定私钥和临时私钥进行签名授权工作,得到真正的符合标准协议的签名报文,并对签名进行验证;

S8,若签名验证成功,则将报文发送给签名业务中心。

当完成签名输出后,客户端的临时公私钥对(PTmp,dTmp)和服务器生成的临时公私钥对(PSTmp,dSTmp)自动销毁。

一种基于身份的分布式签名系统,该系统包括:客户端,服务器;客户端生成固定公私钥对(PC,dC),将公钥PC发送给服务器;服务器接收公钥PC后生成固定公私钥对(PB,dB),服务器利用(eld、PB、PC)计算生成部分签名公钥p并发布,同时生成签名代理私钥dp;客户端收到待签名消息M后,生成临时公私钥对(PTmp,dTmp),并将公钥PTmp发送给服务器;服务器生成临时公私钥对(PSTmp,dSTmp),并计算签名消息摘要e;服务器根据(PTmp、e、dp)完成签名代理操作,并将签名代理结果发送给客户端;客户端根据签名代理结果,利用(dC、dTmp)进行签名授权工作,得到完整的签名并将签名输出。

服务器还包括:计算生成部分公钥p,所述部分公钥p包括p1和p2,p1=PC+PB,并且根据部分公钥p1计算收敛因子h=SM3(p1x||eId||p1y),并根据收敛因子h计算代理签名私钥dp=h*dB,并计算部分公钥p2=[dp]·PC,公布部分公钥p1和p2,则实际公钥W,其中W=p1+p2+[h-1]·PB,·表示点乘,||表示拼接符,公式是表示p1x、eId与p1y三者拼接,SM3()表示杂凑算法。

服务器还包括:计算签名消息摘要e,服务器在生成临时公私钥对(PSTmp,dSTmp)后,服务器生成随机数K,以及利用随机数K计算点(x,y)=[k]*(PTmp+PSTmp),k∈[1,n-1],*表示模乘运算。

服务器还包括:服务器根据临时公钥PTmp、签名消息摘要e和签名代理私钥dp生成签名代理结果(r,sproxy1,sproxy2),r=(x+e)modn,sproxy1=(1+dp)-1*k,sproxy2=(1+dp)-1*(r+k*dSTmp),mod表示求模运算。

客户端还包括:生成签名s,计算s=(1+dc)-1*dTmp*sproxy1+(1+dc)-1*sproxy2-r,客户端将(r,s)作为完整的签名,并对完整的签名进行验证,若签名验证成功,则将报文发送给签名业务中心,并将签名输出。

在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1