The present invention relates to a method of generating collaborative digital signature: the secret C2 device 1, C1 and 2 C secret device satisfies a relationship: cc1c2mod = n (1+dA)
【技术实现步骤摘要】
基于同态加密的数字签名协同生成方法及系统
本专利技术属于信息安全
,特别是基于同态加密并采用乘积参数K的数字签名协同生成方法及系统。
技术介绍
SM2是由国家密码管理局颁布的一种椭圆曲线公钥密码算法(参见《SM2椭圆曲线公钥密码算法》规范,国家密码管理局,2010年12月),基于此算法能实现数字签名、密钥交换及数据加密。但是,由于SM2算法独特的数字签名运算方式,通常的秘密共享(分割)方式及对应的基于秘密共享的密码运算方式,无法适合于使用SM2私钥进行数字签名的情形。针对此问题,人们提出了一些相应的技术方案,简单的说明如下。使用用户的SM2私钥dA针对一个消息M进行数字签名时需要计算得到r、s,其中r=(e+x1)modn,其中n是SM2椭圆曲线的基点G的阶,e是从用户标识和消息M导出的杂凑值(即散列值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范),x1取自(x1,y1)=Q,而Q=[k]G,这里G是SM2椭圆曲线的基点;s=((1+dA)-1(k+r)-r)modn,这里k是[1,n-1]区间内随机选择的一个整数,在此申请中,k被称为参数K或K参数。当采用秘密共享(分割)方式进行数字签名生成时,通常的做法是将秘密(1+dA)-1分割后,将分割后的秘密给多个装置,分割后的每份秘密称为秘密份额;当需要使用用户的SM2私钥dA针对一个消息M进行数字签名时,每个装置使用自己的秘密份额以及独立选择的参数K,在不暴露各自的秘密份额的情况下,通过协同计算生成针对消息M的数字签名(不暴露各自的秘密份额这点 ...
【技术保护点】
一种基于同态加密的数字签名协同生成方法,其特征是:所述方法涉及两个装置,其中第一装置有[1,n‑1]区间内的整数c、c1,且c、c1中至少c是秘密,第二装置有[1,n‑1]区间内的整数秘密c2,两个装置的秘密满足如下关系:c=((c1c2)
【技术特征摘要】
1.一种基于同态加密的数字签名协同生成方法,其特征是:所述方法涉及两个装置,其中第一装置有[1,n-1]区间内的整数c、c1,且c、c1中至少c是秘密,第二装置有[1,n-1]区间内的整数秘密c2,两个装置的秘密满足如下关系:c=((c1c2)-1(1+dA)-1)modn,其中,dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;在初始化阶段预先计算得到dA对应的公钥P,P=[dA]G;将公钥P公开发布;当需要使用用户的SM2私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成:第一装置在[1,n-1]区间内随机选择一个整数k1;第二装置在[1,n-1]区间内随机选择一个整数k2;两个装置在不暴露各自的k1、k2及秘密的情况下,通过交互计算得到Q=[(c2c1)-1k2k1]G;在计算得到Q后,由两个装置中的一个装置或者由两个装置之外的一个装置计算r=(e+x1)modn,其中x1取自(x1,y1)=Q,e是从用户标识和消息M导出的杂凑值;若得到的r、Q满足:r≠0且[r]G+Q不是SM2椭圆曲线点群的零元,则继续计算数字签名,否则,重新计算Q和r,直到r≠0且[r]G+Q不是SM2椭圆曲线点群的零元;完成r的计算后,两个装置按如下方式进行s的计算:第一装置计算s0=((k1)-1c1r)modn或s0=((k1)-1c1)modn,s1=E(s0),其中,E(·)是使用第一装置的公钥的加法同态加密的加密运算;第一装置将s1发送给第二装置;第二装置接收到s1后,检查s1是否为零的加密结果,若s1为零的加密结果,则向第一装置返回出错提示;若s1不为零的加密结果,则第二装置利用s1、k2、c2,并使用第一装置的公钥进行加法同态加密的加密运算,计算得到一个密文数s2,且使得s2对应的明文数与(k2+(k1)-1c2c1r)modn模n同余;第二装置计算s2的方式包括:若计算s0采用公式s0=((k1)-1c1r)modn,则:s2=E(k2+z2n)⊕(c2⊙(s1⊕E(z1n))),或s2=E(k2+z2n)⊕((c2+z1n)⊙s1);若计算s0采用公式s0=((k1)-1c1)modn,则:s2=E(k2+z2n)⊕(((c2r)modn)⊙(s1⊕E(z1n))),或s2=E(k2+z2n)⊕((((c2r)modn)+z1n)⊙s1);以上算式中,E(·)表示使用第一装置的公钥的加法同态加密的加密运算,⊕表示同态加密的密文数的加运算,⊙表示同态加密中的明文数与密文数的乘运算,z1、z2是只有第二装置知道的整数,z1、z2的取值范围不限于[1,n-1];第二装置将s2发送给第一装置;第一装置接收到s2后,计算s3=D(s2)modn,s=(ck1s3-r)modn,其中D(·)是使用第一装置的私钥的加法同态加密的解密运算;则(r,s)是生成的针对消息M的数字签名;若上述计算过程中,在计算得到Q、r后,仅检查r是否为零,不检查[r]G+Q是否是SM2椭圆曲线点群的零元,且仅在r=0时重新进行Q、r的计算,则:在计算得到s后,若检查发现(s+r)modn=0,则放弃计算得到的s,重新计算Q、r,重新计算s,重复此过程,直到(s+r)modn≠0。2.根据权利要求1所述的基于同态加密的数字签名协同生成方法,其特征是:完成r的计算后,两个装置计算s的另一种方式如下:第一装置计算s0=E((cc1r)modn)或s0=E(cc1),s1=E(ck1);第一装置将s0、s1发送给第二装置;第二装置接收到s0、s1后,检查s0、s1是否为零的加密结果,若s0和s1中有一个为零的加密结果,则向第一装置返回出错提示;若s0和s1都不为零的加密结果,则第二装置利用s1、s0、k2、c2,使用第一装置的公钥进行加法同态加密的加密,计算得到一个密文数s2,且使得s2对应的明文数与(ck2k1+cc2c1r)modn模n同余,第二装置计算s2的方式包括:若计算s0采用公式s0=E((cc1r)modn),则:s2=E(z3n)⊕(k2⊙(s1⊕E(z2n)))⊕(c2⊙(s0⊕E(z1n))),或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕(c2⊙(s0⊕E(z1n))),或s2=E(z3n)⊕(k2⊙(s1⊕E(z2n)))⊕((c2+z1n)⊙s0),或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕((c2+z1n)⊙s0);若计算s0采用公式s0=E(cc1),则:s2=E(z3n)⊕(k2⊙(s1⊕E(z2n))⊕(((c2r)modn)⊙(s0⊕E(z1n))),或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕(((c2r)modn)⊙(s0⊕E(z1n))),或s2=E(z3n)⊕(k2⊙(s1⊕E(z2n))⊕((((c2r)modn)+z1n)⊙s0);或s2=E(z3n)⊕((k2+z2n)⊙s1)⊕((((c2r)modn)+z1n)⊙s0);以上算式中z1、z2、z3是只有第二装置知道的整数,z1、z2、z3的取值范围不限于[1,n-1];第二装置将s2发送给第一装置;第一装置接收到s2后,计算s3=D(s2)modn,s=(s3-r)modn。3.根据权利要求2所述的基于同态加密的数字签名协同生成方法,其特征是:第二装置检查si,i=0,1,是否为零的加密结果的一种方法如下:第二装置在加法同态加密允许的范围内任选非零整数ui和qi,所述在加法同态加密允许的范围内是指当D(si)在[1,n-1]范围内时,选择的ui和qi使得qiD(si)+ui或qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围;若选择的ui和qi使得qiD(si)+ui不超出加法同态加密表示无符号数或补码的范围,则第二装置计算hi=(qi⊙si)⊕E(ui);若选择的ui和qi使得qi(D(si)+ui)不超出加法同态加密表示无符号数或补码的范围,则第二装置hi=qi⊙(si⊕E(ui));第二装置将hi发送给第一装置;第一装置接收到hi后,解密hi,计算得到qi,然后将qi返回第二装置;第二装置接收到第一装置返回的qi后,检查第一装置返回的qi与自己之前选择的qi是否相同,若相同,则确定si不为零的加密结果;若第一装置无法返回通过解密获得的qi,或者返回的qi与第二装置之前选择的qi不同,则确定si为零的加密结果。4.根据权利要求1或2所述的基于同态加密的数字签名协同生成方法,其特征是:若dA是预先知道的,则在初始化阶段,预选知道dA的装置在[1,n-1]中随机选取c1、c2,计算得到c=((c1c2)-1(1+dA)-1)modn,P=[dA]G,将c、c1交由第一装置保存,将c2交由第二装置保存,将公钥P发布,将dA销毁;所述预先知道dA的装置是所述两个装置中的一个装置或者是所述两个装置之外的一个装置;若dA不是预先知道的,则在初始化阶段,两个装置按如下方式选取c、c1、c2,计算得到用户私钥dA对应的公钥P:第一装置在[1,n-1]区间内随机选择一个整数c,固定或随机选择一个整数c1;第二装置在[1,n-1]区间内随机选择整数c2;第一装置计算P1=[(cc1)-1]G,将P1发送给第二装置;第二装置计算P=[(c2)-1]P1-G;则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)modn;或者,第二装置计算P2=[(c2)-1]G,将P2发送给第二装置;第一装置计算P=[(cc1)-1]P2-G;则计算得到的P=[dA],且c、c1、c2满足关系c=((c1c2)-1(1+dA)-1)modn。5.一种基于权利要求1或2或3的数字签名协同生成系统,其特征是:所述系统包括两个装置,两个装置分别作为所述数字签名协同生成方法中的第一装置和第二装置,所述两个装置按所述数字签名协同生成方法生成使用用户私钥dA针对消息M的SM2数字签名。6.一种基于同态加密的数字签名协同生成方法,其特征是:所述方法涉及两个装置,其中第一装置有[1,n-1]区间内的整数秘密c1,第二装置有[1,n-1]区间内的整数秘密c2、c3、c,两个装置的秘密满足如下关系:c=((c1c2+c3)-1(1+dA)-1)modn,其中dA是用户的SM2私钥,n是SM2密码运算所使用的椭圆曲线点群的阶,也即SM2密码运算所使用的椭圆曲线点群的基点G的阶;在初始化阶段预先计算得到:Gc=[(c1c2+c3)-1]G,P=[dA]G,其中,P是dA对应的公钥;将Gc交由第一装置和第二装置中需要使用Gc的装置保存,将公钥P公开发布;当需要使用用户的SM2私钥dA针对消息M进行数字签名时,两个装置按如下方式进行数字签名的生成:第一装置在[1,n-1]区间内随机选择一个整数k1;第二装置在[1,n-1]区间内随机选择一个整数k2;两个装置在不暴露各自的k1、k2的情况下,通过交互计算得到Q=[k2k...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。