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

一种两方SM2数字签名生成方法技术

技术编号:20729677 阅读:26 留言:0更新日期:2019-03-30 19:20
本发明专利技术公布了一种两方SM2数字签名的生成方法,属于信息安全技术领域,利用Paillier同态加密方案使互不信任的双方可以合作生成SM2数字签名。本发明专利技术还针对性的给出了零知识证明的构造方法,以证明双方在合作过程中没有违反协议的行为,当签名失败时,通过零知识证明可以快速鉴别出不合作的一方。相比基于多项式秘密共享的两方签名方案,本发明专利技术方法具有更高的效率、更好的安全性及隐私性。

【技术实现步骤摘要】
一种两方SM2数字签名生成方法
本专利技术属于信息安全
,涉及数字签名生成方法,尤其涉及一种两方SM2数字签名生成方法。
技术介绍
SM2椭圆曲线公钥密码算法(简称SM2)是由国家密码管理局于2010年12月17日发布的公钥加密标准。在商用密码体系中,SM2主要用于替换RSA(Rivest-Shamir-Adleman)加密算法。SM2基于椭圆曲线密码学(ECC),安全性与NISTPrime256相当。SM2签名流程如图1所示,SM2验签流程如图2所示。在使用SM2签名的过程中,如果密钥只由一方来保管,往往有泄露或监管的风险,因此在许多应用场景中就需要密钥被两方(可能完全不互信)分别持有,且签名只有在两方的共同参与下才能生成,任何一方都无法单独的生成签名。但是,两方SM2数字签名并不能直接生成。在现有的两方SM2签名生成方案中,有些基于秘密共享的方法实现,但是,这类方法必须公开自己的秘密给对方,私钥使用一次之后必须重新协商,并且计算量也比较大,无法满足某些场景的实际需求。Paillier加密系统是1999年由PascalPaillier专利技术的概率公钥加密系统,基于复合剩余类的困难问题。该加密算法是一种同态加密,满足加法和数乘同态,即:其中:m1,m2为消息,Dsk()为解密函数,Epk()为加密函数,+pk为同态加,×pk为同态乘,sk为私钥,pk为公钥。
技术实现思路
为了克服上述现有技术的不足,本专利技术提供一种两方SM2数字签名生成方法,该方法允许不互相信任的双方可以在不泄露自己的私钥的情况下签出只有双方合作才可以签出的签名。本专利技术基于Paillier同态加密方案实现,并附带零知识证明的构造方法,当签名失败时,通过零知识证明可以鉴别出不合作的一方。为方便起见,定义以下参数及相应含义说明:由可信第三方生成的安全参数;h1:由可信第三方生成的安全参数;h2:由可信第三方生成的安全参数;d1:双方中的第一方(如Alice)的私钥;d2:双方中第二方(如Bob)的私钥;m:消息;pk:第一方Alice的Paillier加密公钥;pk′:第二方Bob的Paillier加密公钥;sk:第一方Alice的Paillier加密私钥;sk′:第二方Bob的Paillier加密私钥;n:椭圆曲线的阶;k1:临时随机数;k2:临时随机数;G:椭圆曲线的基点;e:消息m的hash;s:签名的一部分;阶为n的有限域。本专利技术提供的技术方案是:一种利用Paillier同态加密方案实现的两方SM2数字签名的生成方法;假设d是双方的公共私钥,满足d≡nd1d2-1,其中是第一方知道的秘密参数(第一方的私钥);是第二方知道的秘密参数(第二方的私钥);P=dG、P1=d1G、P2=d2G,均为双方所共知的公钥,双方通过以下步骤合作对消息m签出公钥P对应的签名:1)初始化;由可信的第三方生成参数其中均为安全质数,均为质数;随机生成阶为的参数h2:R表示随机生成;随机生成随机数计算对两方均公开h1、h2,销毁χ;2)进行签名;两方合作对消息m签出私钥d1d2-1对应的签名,且签名过程中两方都不会向对方泄露自己的私钥;具体执行如下操作:21)第一方生成临时私钥k1,并将消息m及(d1)-1、(d1)-1k1用pk加密后的值即<m,α,ζ>发给第二方;22)第二方对从第一方收到的数据进行一致性校验,并生成临时私钥k2,将Q2(k2G)发送给第一方;23)第一方收到Q2后计算出临时公钥Q,并将Q附带一个零知识证明∏发送给第二方,零知识证明∏可以使第二方确信第二方后续发送给第一方的消息不会泄露第二方的私钥;24)第二方收到<Q,∏>后,校验∏及Q,如果校验通过,利用步骤21)收到的α、ζ、m、Q及自己的临时私钥k2,私钥x2进行一系列的同态乘(×pk)及同态加(+pk)操作生成密文u,并将u,u′←Epk′((k2)-1)及一个零知识证明∏′发送给第一方;25)第一方收到<u,u′,∏′>后对u、u′及∏′进行校验,校验通过后解密u,然后经过一系列计算得到签名;3)验签:其他人可利用公钥P对第一方得到的签名进行验签;31)采用SM2标准的验签方法(如图2)进行验签。4)ProofΠ的生成及校验41)生成证明Proof∏;42)进行校验;5)ProofΠ′的生成及校验;41)生成证明ProofΠ′;42)进行校验;通过上述步骤,实现基于SM2的两方签名。与现有技术相比,本专利技术的有益效果:本专利技术提供一种两方SM2数字签名的生成方法,该方法允许不信任的双方在不泄露己方的私钥的情况下签出只有双方合作才可以签出的签名。本专利技术方法具有更小的计算量,更少的交互,双方所持有的秘密信息(私钥)不会泄露,密钥可以重复使用,且可以在两方完全不信任的情况下合作完成签名;本专利技术方法还附带零知识证明的构建方法,当签名失败时,通过零知识证明可以有效的鉴别出不合作的一方。附图说明图1是SM2签名方法的流程框图。图2是SM2验签方法的流程框图。图3是本专利技术实施例提供的两方SM2数字签名生成方法的流程框图。具体实施方式下面结合附图,通过实施例进一步描述本专利技术,但不以任何方式限制本专利技术的范围。本专利技术提供一种两方SM2数字签名生成方法,允许不信任的双方在不泄露自己的私钥的情况下签出只有双方合作才可以签出的签名。本专利技术中,假设d是双方(例如Alice和Bob)的公共私钥,满足d≡nd1d2-1,其中是Alice知道的秘密参数;是Bob知道的秘密参数;P=dG、P1=d1G、P2=d2G,均为Alice和Bob所共知的公钥,Alice和Bob要合作对消息m签出公钥P对应的签名。图3是本专利技术实施例两方SM2数字签名生成方法的流程框图。表示了第一方Alice和第二方Bob合作生成SM2数字签名的过程,具体实施流程包括:1)初始化由可信的第三方生成参数其中均为安全质数;随机生成阶为的参数h2:随机数计算对Alice和Bob公开h1、h2,销毁χ。2)进行签名假设d1、d2分别为Alice和Bob的私钥,Alice要跟Bob合作对消息m签出私钥d1d2-1对应的签名,且签名过程中Alice与Bob都不会向对方泄露自己的私钥。pk、pk′分别为Alice和Bob的Paillier加密公钥,sk、sk′为对应的私钥,n是椭圆曲线的阶,签名流程如下:21)Alice生成临时私钥k1,并将(d1)-1、(d1)-1k1用pk加密后发给Bob;具体执行如下操作:生成随机数:求私钥的逆:z1←(d1)-1modn;对私钥的逆进行加密:α=Epk(z1);将私钥的逆与随机数的乘积进行加密:ζ←Epk(k1z1);Alice将<m,α,ζ>发送给Bob。22)Bob对收到从Alice收到的数据做一致性校验,并生成临时私钥k2,将k2G发送给Alice;具体执行如下操作:如果则终止交互;生成随机数:求随机数与G的乘积:Q2←[k2]G;Bob将Q2发送给Alice。23)Alice收到Q2后计算出临时公钥Q,并将Q附带一个零知识证明∏发送给Bob,∏可以使Bob确信Bob后续发送给Alice的消息不会泄露自己的私钥。具体执行如下操作:如果则终止交互;求k1、本文档来自技高网...

【技术保护点】
1.一种两方SM2数字签名的生成方法,所述SM2为SM2椭圆曲线公钥密码算法的简称;所述方法基于Paillier同态加密方案实现;假设d是双方的公共私钥,满足d≡nd1d2‑1,其中

【技术特征摘要】
1.一种两方SM2数字签名的生成方法,所述SM2为SM2椭圆曲线公钥密码算法的简称;所述方法基于Paillier同态加密方案实现;假设d是双方的公共私钥,满足d≡nd1d2-1,其中是第一方的私钥;是第二方的私钥;表示阶为n的有限域;P、P1、P2均为双方所共知的公钥;P=dG、P1=d1G、P2=d2G;G为椭圆曲线的基点;通过以下步骤实现两方合作对消息m签出公钥P对应的SM2签名:1)初始化,执行如下操作:11)由可信的第三方生成参数其中均为安全质数;12)可信第三方随机生成阶为的参数h2:随机数13)可信第三方计算14)对两方均公开h1、h2,销毁χ;2)进行签名:两方合作对消息m签出私钥d1d2-1对应的签名,且签名过程中两方均不会向对方泄露自己的私钥;具体执行如下操作:21)第一方生成临时私钥k1,并将消息m及(d1)-1、(d1)-1k1用pk加密后的值即<m,α,ζ>发给第二方;pk为第一方的Paillier加密的公钥;22)第二方对从第一方收到的数据进行一致性校验,并生成临时私钥k2,将Q2=k2G发送给第一方;23)第一方收到Q2后计算出临时公钥Q;并将Q附带一个零知识证明П发送给第二方;П可使第二方确信第二方后续发送给第一方的消息不会泄露自己的私钥;24)第二方收到<Q,Π>后,校验П及Q;如果校验通过,利用步骤21)收到的α、ζ、m、Q及自己的临时私钥k2、私钥x2,进行一系列同态乘操作×pk及同态加操作+pk,生成密文u;第二方将u、u′←Epk′((k2)-1及零知识证明Π′即<u,u′,П′>发送给第一方;25)第一方收到<u,u′,П′>后对u、u′及П′进行校验,校验通过后解密u,经过计算得到签名;3)验签:其他人利用公钥P对第一方得到的签名进行验签;4)生成证明ProofП及进行校验;执行如下操作:ProofΠ满足:其中,pk=<N,g>为Paillier同态加密的公钥;sk=<N,g,λ(N)>为对应的私钥,满足N>n6;假设生成证明的一方知道η1,r1,使得[η1]P1≡G,[η2/η1]G≡Q1,及生成证明Proof∏的步骤包括:41)生成随机参数,包括:σ、β、γ、ρ1、δ、μ、v、ρ2、ρ3、∈;42)计算得到ProofΠ中的各项参数,包括:z1、U1、u2、u3、z2、Y、V1、V2、v3、v4、e、s1、s2、s3、t1、t2、t3、t4;43)生成Proof∏:П←<z1,U1,u2,u3,z2,Y,V1,V2,v3,v4,s1,s2,s3,t1,t2,t3,t4>;5)ProofП′的生成及校验;ProofП′构造为如下形式:其中,pk=<N,g>;sk=<N,g,λ(N)>及pk′=<N′,g′>、sk′=<N′,g′,λ(N′)>为两对Paillier加密的公私钥,且满足N>n8,N′>n6,n1,n2∈[-n4,n4],Dsk(m3)=n1,Dsk(m4)=n2,生成证明方已知:η1,r1,使得[η1]P2≡G、[η2/η1]G≡Q2、及ProofΠ′的构建过程包括:51)生成随机参数,包括:α、β、γ、ρ1、δ、μ、v、ρ2、ρ3、ρ4、∈、σ、τ;52)计算ProofΠ′中的各项参数,包括:z1、U1、u2、u3、z2、Y、V1、V2、v3、v4、z3、v5、e、s1、s2、s3、t1、t2、t3、t4、t5、t6;53)生成ProofΠ′:Π′←<z1,U1,u2,u3,z2,z3,Y,V1,V2,v3,v4,v5,s1,s2,s3,t1,t2,t3,t4,t5,t6>通过上述步骤,实现两方合作生成SM2数字签名。2.如权利要求1所述两方SM2数字签名的生成方法,其特征是,在步骤24)计算过程中,第二方加一个很大的随机数cn来混淆明文,使得第一方在解密得到明文后也很难获取Bob私钥的任何信息。3.如权利要求1所述两方SM2数字签名的生成方法,其特征是,步骤24)具体执行如下操作:241)如果则终止交互;242)如果verify(∏)=false则终止交互;243)计算m的Hash:e←hash(m);244)计算椭圆曲线上的点:(x′,y′)←Q;245)计算:r′←(e+x′)modn;246)计算逆:z2←(d2)-1modn;237)生成随机数:248)计算:u←(ζ×pkz2k2)+pk(α×pk(-r′z2))+pk(Epk(-r′))+pk(Epk(cn));用pk’加密:u′←Epk’(z2);249)生成零知识证明,表示为:然后,第二方将<u,...

【专利技术属性】
技术研发人员:关志王珂陈霄陈钟南湘浩
申请(专利权)人:北京大学
类型:发明
国别省市:北京,11

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

1