一种基于椭圆曲线的分布式签名方法及系统与流程

文档序号:11929711阅读:317来源:国知局
一种基于椭圆曲线的分布式签名方法及系统与流程

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



背景技术:

椭圆曲线签名体制是目前主流的签名方案之一,国际上通用的是ECDSA标准,而国内采用的是SM2标准,目前这两种签名方案在国内都有较大的应用市场。

数字签名是现代信息安全的重要的组成部分,应用数字签名技术可以识别篡改、伪装,还可以有效地防止否认。安全的数字签名在电子公文、电子合同等应用中确定双方身份,是保证信息真实可信的基础。当前常见的数字签名应用机制是通过智能密码钥匙(USBKey)存储密钥信息,在需要签名时,通过中间件配合调用智能密码钥匙完成运算。用户的密钥始终握在自己手中,是智能密码钥匙应用的安全基础。

随着移动互联网的普及,越来越多的签名业务逐步迁移到移动端,用户仅需要通过联网的移动智能设备(手机)就可以完成业务操作,给用户带来的极大的便利。但是传统的智能密码钥匙难以在移动端发挥作用,主要包括如下几方面原因:

●携带不便,用户需要在手机之外携带额外的硬件介质

●硬件接口无法对接,手机端无法提供对接传统Key的USB接口

●中间件开发困难,针对硬件调用的中间件开发难度较大

另外,一般在进行数字签名业务时,需要通过额外的存储介质来保护密钥的安全性,而在移动端进行签名时,这种方式不可行,需要新型的去介质的分布式签名方法,因此,在移动端提供安全合规的数字签名是当下急需解决的问题。



技术实现要素:

本发明所要解决的技术问题是:一般在进行数字签名业务时,需要通过额外的存储介质来保护密钥的安全性,而在移动端进行签名时,这种方式不可行,需要新型的去介质的分布式签名方法。

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

S1,客户端注册生成一对与用户永久绑定的固定公私钥对(PC,dC),将客户端自身固定公钥PC发送给签名代理中心;

S2,签名代理中心根据公钥PC生成与用户绑定的固定公私钥对(PB,dB),同时计算生成签名公钥P,并将签名公钥P发布;

S3,签名业务中心将待签名消息(msg)发送给客户端和签名代理中心;

S4,客户端收到S3中的待签名消息(msg)后,生成临时公私钥对(PTmp,dTmp),并将公钥PTmp发送给签名代理中心;

S5,签名代理中心根据收到的待签名消息(msg)后和临时公钥PTmp生成临时公私钥对(PSTmp,dSTmp),并计算生成签名消息摘要e;

S6,签名代理中心根据临时公钥PTmp、签名消息摘要e和固定私钥dB完成签名代理操作,并将签名代理结果发送给客户端;

S7,客户端根据签名代理结果,利用自身的固定私钥dC和临时私钥dTmp进行签名授权工作,得到符合标准协议的签名报文,并将签名与签名公钥P进行验证;

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

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

进一步,所述S2中还包括:计算生成签名公钥P,P=PC+PB+[dB]·PC,·表示点乘。

进一步,所述S5中还包括:计算签名消息摘要e,e=h(msg),同时生成随机数k,并利用随机数k计算点(x,y)=[k]·(PTmp+PSTmp),k∈[1,n-1],h是哈希函数。

进一步,所述S6中还包括:签名代理中心根据临时公钥PTmp、签名消息摘要e和固定私钥dB完成签名代理,并计算生成(r,sproxy1,sproxy2),其中r=(x+e)mod n;sproxy1=(1+dB)-1*k mod n;sproxy2=(1+dB)-1*(r+k*dSTmp)mod n,mod表示求模运算,*表示模乘运算。

进一步,所述S7中还包括:客户端根据签名代理结果,利用自身的固定私钥dC和临时私钥dTmp计算签名s,客户端将(r,s)作为完整的签名并输出,其中s=(1+dC)-1*dTmp*sproxy1+(1+dC)-1*sproxy2-r mod n。

进一步,当签名完成后客户端的临时公私钥对PTmp,dTmp自动销毁以及签名代理中心的临时公私钥(PSTmp,dSTmp)对自动销毁。

本发明的有益效果:签名私钥不会以明文的形式出现在任何过程中,保证签名私钥绝对的安全,分布式签名要求参与者必须同时进行签名,任何一方不能单独完成签名,安全性进一步提升,协议简单方便,只需要几次交互就能完成完整的签名,实现简单方便,用户可以对签名消息进行验证,保证所见即所签,客户端可以对签名结果进行验证,保证发出的签名报文的有效性。

本发明还涉及一种基于椭圆曲线的分布式签名系统,该分布式签名系统包括:客户端,签名代理中心,签名业务中心;客户端将公钥PC发送给签名代理中心;签名代理中心接收公钥PC后生成固定公私钥对(PB,dB),同时生成签名公钥P,并将签名公钥P公布;签名业务系统将待签名消息(msg)发送给客户端和签名代理中心;客户端接收签名消息(msg)生成临时公私钥对(PTmp,dTmp),并将临时公钥PTmp发送给签名代理中心;签名代理中心接收待签名消息(msg)与临时公钥PTmp后,生成(r,sproxy1,sproxy2),并将生成的(r,sproxy1,sproxy2)发送给客户端;客户端根据(r,sproxy1,sproxy2)生成完整签名(r,s),将完整签名(r,s)输出并与签名公钥P验证。

进一步,签名代理中心还包括:签名代理中心还包括:计算生成签名公钥P=PC+PB+[dB]·PC,计算签名消息摘要e,e=h(msg),同时生成随机数k,并利用随机数k计算点(x,y)=[k]·(PTmp+PSTmp),其中·表示点乘,k∈[1,n-1],h是相应的哈希函数。

进一步,签名代理中心还包括:签名代理中心根据临时公钥PTmp、签名消息摘要e和自身的私钥完成签名代理,并计算生成(r,sproxy1,sproxy2),其中r=(x+e)mod n;sproxy1=(1+dB)-1*k mod n;sproxy2=(1+dB)-1*(r+k*dSTmp)mod n,mod表示求模运算,*表示模乘运算。

进一步,客户端还包括:客户端根据签名代理结果,利用自身的固定私钥dC和临时私钥dTmp计算签名s,客户端将(r,s)作为完整的签名并输出,其中s=(1+dC)-1*dTmp*sproxy1+(1+dC)-1*sproxy2-r mod n。

进一步,签名代理中心还包括:将签名公钥P请求对接CA申请用户数字证书。

进一步,当签名完成后客户端的临时公私钥对PTmp,dTmp自动销毁以及签名代理中心的临时公私钥(PSTmp,dSTmp)对自动销毁。

有益效果:签名私钥不会以明文的形式出现在任何过程中,保证绝对的安全,分布式签名要求参与者必须同时进行签名,任何一方不能单独完成签名,安全性进一步提升,协议简单方便,只需要几次交互就能完成完整的签名,实现简单方便,用户可以对签名消息进行验证,保证所见即所签,客户端可以对签名结果进行验证,保证发出的签名报文的有效性。

附图说明

图1为本发明的一种基于椭圆曲线的分布式签名系统示意图;

图2为本发明的一种基于椭圆曲线的分布式签名方法流程图。

具体实施方式

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

如图2所示,一种基于椭圆曲线的分布式签名方法,该签名方法包括如下步骤:

客户端、签名代理中心和签名业务中心均支持SM2标准算法的椭圆曲线参数E(Fp)、G和n,椭圆曲线E为定义在有限素数域Fp上的椭圆曲线,G为椭圆曲线E上n阶基点,。

S1,客户端注册生成一对与用户永久绑定的固定公私钥(PC,dC),将客户端自身固定公钥PC发送给签名代理中心;

S2,签名代理中心根据公钥PC生成与用户绑定的的固定公私钥对(PB,dB),同时计算生成签名公钥P,并将签名公钥P发布,其中P=PC+PB+[dB]·PC,·表示点乘;

S3,签名业务中心将待签名消息(msg)发送给客户端和签名代理中心;

S4,客户端收到待签名消息(msg)后,生成临时公私钥对(PTmp,dTmp),并将PTmp发送给签名代理中心;

S5,签名代理中心根据收到的待签名消息(msg)和临时公钥PTmp生成临时公私钥对(PSTmp,dSTmp),并计算生成签名消息摘要e,e=h(msg),同时生成随机数k,并利用随机数k计算点(x,y)=[k]·(PTmp+PSTmp),k∈[1,n-1],h是哈希函数;

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

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

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

当签名完成后,客户端的临时公私钥对以及签名代理中心的临时公私钥对自动销毁

签名私钥不会以明文的形式出现在任何过程中,保证签名私钥绝对的安全,分布式签名要求参与者必须同时进行签名,任何一方不能单独完成签名,安全性进一步提升,协议简单方便,只需要几次交互就能完成完整的签名,实现简单方便,用户可以对签名消息进行验证,保证所见即所签,客户端可以对签名结果进行验证,保证发出的签名报文的有效性。

如图1所示,一种基于椭圆曲线的分布式签名系统,该分布式签名系统包括:客户端,签名代理中心,签名业务中心;客户端将公钥PC发送给签名代理中心;签名代理中心接收公钥PC后生成固定公私钥对(PB,dB),同时生成签名公钥P,并将签名公钥P公布;签名业务系统将待签名消息(msg)发送给客户端和签名代理中心;客户端接收签名消息(msg)生成临时公私钥对((PTmp,dTmp)),并将临时公钥PTmp发送给签名代理中心;签名代理中心接收待签名消息(msg)与临时公钥PTmp后,生成(r,sproxy1,sproxy2),并将生成的(r,sproxy1,sproxy2)发送给客户端;客户端根据(r,sproxy1,sproxy2)生成完整签名(r,s),将完整签名(r,s)输出并与签名公钥P验证。

签名代理中心还包括:签名代理中心还包括:计算生成签名公钥P=PC+PB+[dB]·PC,计算签名消息摘要e,e=h(msg),同时生成随机数k,并利用随机数k计算点(x,y)=[k]·(PTmp+PSTmp),其中·表示点乘,k∈[1,n-1],h是相应的哈希函数。

签名代理中心还包括:签名代理中心根据临时公钥PTmp、签名消息摘要e和自身的私钥完成签名代理,并计算生成(r,sproxy1,sproxy2),其中r=(x+e)mod n;sproxy1=(1+dB)-1*k mod n;sproxy2=(1+dB)-1*(r+k*dSTmp)mod n,mod表示求模运算,*表示模乘运算。

客户端还包括:客户端根据签名代理结果,利用自身的固定私钥dC和临时私钥dTmp计算签名s,客户端将(r,s)作为完整的签名并输出,其中s=s=(1+dC)-1*dTmp*sproxy1+(1+dC)-1*sproxy2-r mod n。

签名代理中心还包括:将签名公钥P请求对接CA申请用户数字证书。

当签名完成后客户端的临时公私钥对PTmp,dTmp自动销毁以及签名代理中心的临时公私钥(PSTmp,dSTmp)对自动销毁。

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

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

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