当前位置: 首页 > 专利查询>武汉大学专利>正文

一种轻量级SM2两方协同生成数字签名的方法技术

技术编号:21612044 阅读:66 留言:0更新日期:2019-07-13 20:35
本发明专利技术公开了一种轻量级SM2两方协同生成数字签名的方法,参与两方为P1,P2,包括以下步骤:1)签名参数初始化;2)生成分布式密钥:生成参与方P1,P2的签名私钥,签名验证公钥;3)生成分布式签名:该步骤主要用于参与方P1,P2联合生成消息m的数字签名(r,s)。本发明专利技术方法采用预计算的方法,极大地减轻了两方联合生成SM2数字签名的计算开销,实现高效的SM2两方协同数字签名,同时在参与签名的各方之间保证安全性、隐私性和公平性。

A Lightweight SM2 Bilateral Cooperative Digital Signature Generation Method

【技术实现步骤摘要】
一种轻量级SM2两方协同生成数字签名的方法
本专利技术涉及信息安全技术,尤其涉及一种轻量级SM2两方协同生成数字签名的方法。
技术介绍
数字签名是数字化环境下对传统手写签名的模拟,在身份认证、数据完整性、不可否认性以及匿名性等方面有重要应用,通常使用公钥密码体制实现。用户使用签名私钥生成消息的签名,验证者通过公钥验证签名的合法性。签名的安全性完全依赖于签名私钥的安全性。但是在移动互联网的应用背景下,签名私钥的存储安全无法保证,因此催生了关于拆分私钥,联合签名的数字签名的研究。针对此类问题,比较常见的解决方法是使用门限秘密共享来实现数字签名。在这种方法中,完整私钥被分割为n个部分私钥并安全地分给n个参与方掌管。当需要签名消息时,n个参与者中的t个及以上可以重构私钥,少于t个参与者无法获得关于完整私钥的任何信息。但是,一旦私钥被恢复,持有完整私钥的一方就可以在其他参与方不知晓的情况下独立地签名消息,对系统的安全性造成巨大威胁。SM2是国家密码管理局于2010年12月颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范)。基于此算法能实现数字签名、密钥交换以及数据加密。本专利提出的两方联合生成SM2数字签名的方法与系统,任何一方都无法重构私钥,且整个签名过程需保证两个参与方同时在线,避免了私钥泄露的风险,实现了签名的安全性和公平性。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中的性能缺陷,提供一种轻量级SM2两方协同生成数字签名的方法。本专利技术解决其技术问题所采用的技术方案是:一种轻量级SM2两方协同生成数字签名的方法,参与两方为P1,P2,包括以下步骤:步骤1)签名参数初始化:产生整个签名系统所需的公开参数;所述参数包括:椭圆曲线相关参数(q,Fq,a,b,n,G)、密码杂凑函数h(·);其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,用于定义Fq上的一条椭圆曲线,n为素数,G为椭圆曲线的一个基点,其阶为n;步骤2)生成分布式密钥:生成参与方P1,P2的签名私钥,签名验证公钥;具体如下:2.1)参与方P1在Zn中随机选取一个整数x1作为自己的签名私钥,并分别通过公式(1),(2)计算中间变量X1,零知识证明参与方P1将发送给参与方P2;计算公式如下:其中,G为椭圆曲线的一个基点,用于生成关于x1是X1的一个椭圆曲线离散对数这个称述的零知识证明2.2)参与方P2在Zn中随机选取一个整数x2作为自己的签名私钥,并分别通过公式(3),(4)计算中间变量X2,零知识证明参与方P2将发送给参与方P1;计算公式如下:其中,用于证明x2是关于X2的一个椭圆曲线离散对数;2.3)参与方P1验证零知识证明是否合法,验证通过则通过公式(5)计算签名验证公钥步骤2.4)同样地,参与方P2验证零知识证明是否合法,验证通过则通过公式(5)计算签名验证公钥Ppub;2.5)参与方P1在Zn中随机选取两个整数a1,b1;参与方P2在Zn中随机选取两个整数a2,b2;2.6)参与方P1,P2通过相关运算(如同态操作或不经意传输等方法)分别获得加法分量z1,z2,使其满足z1+z2=(a1+a2)·(b1+b2)modn;步骤3)生成分布式签名:该步骤主要用于参与方P1,P2联合生成消息m的数字签名(r,s)。具体过程如下:3.1)参与方P1在Zn中随机选取两个整数k1,ρ1,并分别通过公式(6),(7)计算中间变量R1,零知识证明参与方P1将发送给参与方P2;其中,用于证明k1是关于R1的一个椭圆曲线离散对数;3.2)参与方P2在Zn中随机选取两个整数k2,ρ2,并分别通过公式(8),(9)计算中间变量R2,零知识证明参与方P2将发送给参与方P1;其中,用于证明k2是关于R2的一个椭圆曲线离散对数;3.3)参与方P1验证零知识证明是否合法,验证通过则使用公式(10)~(15)分别计算中间变量R,r,δ1,u1,v1,w1;参与方P1将(u1,v1,w1)发送给参与方P2;计算公式如下:v1=δ1-a1modn(14),w1=ρ1-b1modn(15)其中,e为密码杂凑函数h(·)作用于消息m的输出,即e=h(m);rx为R的横坐标,r为SM2签名的第一部分;3.4)参与方P2验证零知识证明是否合法,验证通过则使用公式(10)~(11),(16)~(19)分别计算中间变量R,r,δ2,u2,v2,w2;参与方P2将(u2,v2,w2)发送给参与方P1;计算公式如下:v2=δ2-a2modn(18),w2=ρ2-b2modn(19)3.5)参与方P1使用公式(20)~(24)分别计算中间变量u,v,w,α1,β1;参与方P1将(α1,β1)发送给参与方P2;计算公式如下:u=u1+u2modn(20),v=v1+v2modn(21)w=w1+w2modn(22),α1=x1w+ρ1u+z1-uwmodn(23)β1=δ1w+ρ1v+z1-vwmodn(24)3.6)参与方P2使用公式(20)~(22),(25)~(26)分别计算中间变量u,v,w,α2,β2;参与方P2将(α2,β2)发送给参与方P1;计算公式如下:u=u1+u2modn(20),v=v1+v2modn(21)w=w1+w2modn(22),α2=x2w+ρ2u+z2modn(25)β2=δ2w+ρ2v+z2modn(26)3.7)参与方P1通过公式(27)计算s′,为了保证最终结果的一致性,参与方P1选择s′,n-s′中的较小值作为最后SM2签名的第二部分,即s=min{s′,n-s′};s′=(α1+α2)-1(β1+β2)-rmodn(27)步骤3.8)参与方P2通过公式(27)计算s′;为了保证最终结果的一致性,参与方P2选择s′,n-s′中的较小值作为最后SM2签名的第二部分,即s=min{s′,n-s′};s′=(α1+α2)-1(β1+β2)-rmodn(27)步骤3.9)参与方P1更新a1,b1,z1,即分别令a1=k1,b1=ρ1,z1=α1,更新后的a1,b1,z1参与下一次的签名过程;步骤3.10)参与方P2更新a2,b2,z2,即分别令a2=k2,b2=ρ2,z2=α2,更新后的a2,b2,z2参与下一次的签名过程。按上述方案,在参与方P1,P2的通信过程中,各参与方使用零知识证明来证明发送的数据是来自发送方。本专利技术产生的有益效果是:1.本专利技术实现了两方联合生成SM2数字签名,任何一方都无法得到完整的签名私钥,且签名过程中所有参与方必须同时在线,这样实现了签名的安全性和公平性。2.本专利技术基于数学难题,保证即使有一方的私钥丢失,也不会泄露关于完整私钥或其他参与方持有的部分私钥的任何信息。附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1是本专利技术实施例的分布式密钥生成方法流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。如图1所示,本专利技术提出了一种基于两方联合的SM2数字签名方法,下面给出具体描述。符号及定义:P1,P2:两个参与方;q:大素数;Fq:包含本文档来自技高网...

【技术保护点】
1.一种轻量级SM2两方协同生成数字签名的方法,参与两方为P1、P2,其特征在于,包括以下步骤:步骤1)签名参数初始化:产生整个签名过程所需的公开参数;所述参数包括:椭圆曲线相关参数(q,Fq,a,b,n,G)、密码杂凑函数h(·);其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,用于定义Fq上的一条椭圆曲线,n为素数,G为椭圆曲线的一个基点,其阶为n;步骤2)生成分布式密钥:生成参与方P1,P2的签名私钥,签名验证公钥;具体如下:2.1)参与方P1在Zn中随机选取一个整数x1作为自己的签名私钥,并分别通过公式(1),(2)计算中间变量X1,零知识证明

【技术特征摘要】
1.一种轻量级SM2两方协同生成数字签名的方法,参与两方为P1、P2,其特征在于,包括以下步骤:步骤1)签名参数初始化:产生整个签名过程所需的公开参数;所述参数包括:椭圆曲线相关参数(q,Fq,a,b,n,G)、密码杂凑函数h(·);其中,q为大素数,Fq为包含q个元素的有限域,a,b为Fq中的元素,用于定义Fq上的一条椭圆曲线,n为素数,G为椭圆曲线的一个基点,其阶为n;步骤2)生成分布式密钥:生成参与方P1,P2的签名私钥,签名验证公钥;具体如下:2.1)参与方P1在Zn中随机选取一个整数x1作为自己的签名私钥,并分别通过公式(1),(2)计算中间变量X1,零知识证明参与方P1将发送给参与方P2;X1=[x1]G(1),其中,G为椭圆曲线的一个基点,用于生成关于x1是X1的一个椭圆曲线离散对数这个称述的零知识证明2.2)参与方P2在Zn中随机选取一个整数x2作为自己的签名私钥,并分别通过公式(3),(4)计算中间变量X2,零知识证明参与方P2将发送给参与方P1;X2=[x2]G(3),其中,用于证明x2是关于X2的一个椭圆曲线离散对数;2.3)参与方P1验证零知识证明是否合法,验证通过则通过公式(5)计算签名验证公钥Ppub;参与方P2验证零知识证明是否合法,若验证通过则通过公式(5)计算签名验证公钥Ppub;2.4)参与方P1在Zn中随机选取两个整数a1,b1;参与方P2在Zn中随机选取两个整数a2,b2;2.5)参与方P1,P2通过相关运算(如同态操作或不经意传输等方法)分别获得加法分量z1,z2,使其满足z1+z2=(a1+a2)·(b1+b2)modn;步骤3)生成分布式签名:该步骤主要用于参与方P1,P2联合生成消息m的数字签名(r,s);具体过程如下:3.1)参与方P1在Zn中随机选取两个整数k1,ρ1,并分别通过公式(6),(7)计算中间变量R1,零知识证明参与方P1将发送给参与方P2;R1=[k1]G(6),其中,用于证明k1是关于R1的一个椭圆曲线离散对数;3.2)参与方P2在Zn中随机选取两个整数k2,ρ2,并分别通过公式(8),(9)计算中间变量R2,零知识证明参与方P2将发送给参与方P1;R2=[k2]G(8),其中,用于证明k2是关于R2的一个椭圆曲线离散对数;3.3)参与方P1验证零知识证明是否合法,验证通过则使用公式(10)~(15)分别计算中间变量R,r,δ1,u1,v1,w1;参与方P1将(u1,v1,w1)发送给参与方P2;计算公式如下:r=e+rxmo...

【专利技术属性】
技术研发人员:何德彪张佳妮冯琦王婧陈泌文
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1