签名制作数据安全受控的SM9数字签名生成方法及系统技术方案

技术编号:35135817 阅读:28 留言:0更新日期:2022-10-05 10:10
本发明专利技术涉及SM9数字签名生成方法:签名装置有非秘密P

【技术实现步骤摘要】
签名制作数据安全受控的SM9数字签名生成方法及系统


[0001]本专利技术属于信息安全
,特别是签名制作数据安全受控的SM9数字签名生成方法及系统。

技术介绍

[0002]SM9是由国家密码管理局颁布的一种基于双线性映射(配对运算)的标识密码算法,其中的双线性映射(配对运算)为:
[0003]e:G1×
G2→
G
T
,其中G1、G2是加法循环群,G
T
是一个乘法循环群,G1、G2、G
T
的阶是素数n(注:在SM9规范中,G1、G2、G
T
的阶用的是大写字母N,本专利申请采用小写字母n),即若P、Q、R分别为G1、G2中的元,则e(P,Q)为G
T
中的元,且:
[0004]e(P+R,Q)=e(P,Q)e(R,Q),
[0005]e(P,Q+R)=e(P,Q)e(P,R),
[0006]e(aP,bQ)=e(P,Q)
ab

[0007]基于SM9密码算法能实现基于标识的数字签名、密钥交换及数据加密。在SM9密码算法中,使用用户的SM9私钥d
A
针对消息M生成数字签名的过程如下:
[0008]计算得到w=g^r,这里符号^表示幂运算(g的r次幂),r是在[1,n

1]区间内随机选择的整数,n是SM9密码算法的群G1、G2、G
T
的阶,g=e(P1,P
pub
),P1为G1中的生成元,P
pub
为主公钥(即P
pub
=[s]P2,s为主私钥或主密钥,P2为G2中的生成元,参见SM9规范;注意,这里的主私钥或主密钥,主公钥,用户标识私钥,以及群的阶使用的符号与SM9规范略有不同);
[0009]然后,计算h=H2(M||w,n),其中H2为SM9中规定的杂凑函数(散列函数、哈希函数),M||w表示M和w的字串合并,n为G1、G2、G
T
的阶(参见SM9规范);
[0010]若r≠h,计算l=(r

h)mod n,S=[l]d
A
,则(h,S)为生成的数字签名;若r=h,则重新选择r,重新计算w、h,直到r≠h(这里l为字母L的小写)。
[0011]给定一个消息M的数字签名(h,S),验证签名有效性的方法如下(参加SM9规范,注意,SM9规范中签名验证过程描述使用的符号为M'、(h',S'))。
[0012]B1:检验h∈[1,n

1]是否成立,若不成立则验证不通过;
[0013]B2:检验S∈G1是否成立,若不成立则验证不通过;
[0014]B3:计算群G
T
中的元素g=e(P1,P
pub
);
[0015]B4:计算群G
T
中的元素t=g
h

[0016]B5:计算整数h1=H1(ID
A
||hid,n)(这里是ID
A
用户的标识,hid是用一个字节表示的签名私钥生成函数识别符,H1()是SM9规范中定义的杂凑或散列或哈希函数);
[0017]B6:计算群G2中的元素P=[h1]P2+P
pub

[0018]B7:计算群G
T
中的元素u=e(S,P);
[0019]B8:计算群G
T
中的元素w'=u
·
t;
[0020]B9:计算整数h2=H2(M||w',n),检验h2=h是否成立,若成立则验证通过;否则验证不通过(H2()是SM9规范中定义的杂凑或散列或哈希函数)。
[0021]在数字签名中,用户的签名私钥的安全极其重要,因此,通常出于安全考虑,应该在专门的密码硬件中生成、存储和使用私钥。但是,出于各种原因,人们常常会或需要采用纯软件的方式实施SM9数字签名算法,这时的用户私钥不是在专门的密码硬件中生成、存储和使用私钥,而是存储在计算装置的永久存储介质中,私钥在计算装置的内存中生成、使用,这样就存在私钥被窃取、盗用的风险。针对采用纯软件方式实施SM9数字签名算法存在的签名私钥被窃取、盗用的风险,人们提出了一系例基于秘密共享的SM9数字签名协同生成方法,在这些方法中用户的SM9签名私钥或签名私钥的秘密被分割成两份或多份,称为秘密份额,分别在两个或多个装置中存储、使用,其中一份秘密份额在用户计算装置中存储、使用,其他的一份或多份秘密份额在安全保护级别很高的计算装置(如密码服务器)中存储、使用;当需要使用用户SM9私钥对消息M进行数字签名时,两个或多个计算装置使用各自的秘密份额通过安全协同计算得到针对消息M的数字签名,所谓安全协同计算即在这个计算过程中每个装置各自的秘密份额不会被泄露、破解。
[0022]《中华人民共和国电子签名法》要求电子签名制作数据仅由签名者控制,而将私钥或私钥的相关秘密分成多份分别由多个装置保存,并在数字签名时使用并不完全符合此要求,因为用户之外的其他实体掌握了用户私钥的部分秘密即部分签名制作数据,即生成数字签名时签名制作数据不是仅由签名者控制,因此,对于采用非硬件方式实施SM9数字签名,既要做到进行数字签名生成时数字签名制作数据仅由签名者掌控,又要保证数字签名生成过程的安全,防止用户签名私钥被泄露、被破解是一个有待地解决的问题。

技术实现思路

[0023]本专利技术的目的是针对用户端在非密码硬件环境中实施SM9数字签名算法存在的问题,提出一种签名者有效掌控签名制作数据的安全的SM9数字签名生成技术方案,以克服现有技术的不足。
[0024]针对本专利技术的目的,本专利技术提出的技术方案包括一种签名制作数据安全受控的SM9数字签名生成方法以及相应的系统。
[0025]在以下对本专利技术技术方案的描述中,若P、Q是加法群G1、G2中的元,则P+Q表示P、Q在加法群上的加,P

Q表示P加上Q的逆元(加法逆元),[k]P表示k个P在加法群上的加,即P+P+...+P(共有k个P)(若k是负数,则[k]是|k|个P相加后的结果的加法逆元);省略号“...”,表示多个同样(类型)的数据项或多个同样的运算;
[0026]若a、b是乘法群G
T
中的元,则ab或a
·
b表示a、b在乘法群G
T
上的乘(只要不产生无二义性,“·”可以省略),a
‑1表示a在乘法群G
T
中的逆元(乘法逆元),a
t
表示t个a在乘法群G
T
上相乘(t是负数,则是|t|个a相乘的结果的乘法逆元),即幂运算,a
t
的另一种表达方式是a^t;
[0027]若c为整数,则c
‑1表示整数c的模n乘法逆(即cc
‑1mod n=1);如无特本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种签名制作数据安全受控的SM9数字签名生成方法,其特征是:签名装置有非秘密P
A
=[c
‑1]d
A
,有秘密c
A
=E(c),其中d
A
为用户的SM9签名私钥,c为[1,n

1]内的签名装置未保存的秘密,c
‑1为c的模n乘法逆,n为SM9双线性映射群G1、G2、G
T
的阶,n为素数,E(
·
)是采用同态加密算法的加密运算;签名装置有非秘密g
c
=g^(c
‑1),其中,^表示幂运算,g=e(P1,P
pub
),P1为G1中的生成元,P
pub
为主公钥;所述签名装置是签名者即SM9签名私钥d
A
的拥有者的计算装置;所述同态加密算法为加法同态加密算法或全同态加密算法;签名辅助系统有与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥,或者与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥被签名辅助系统的密钥加密,其中签名辅助系统的密钥包括对称密钥或公钥;所述签名辅助系统是辅助、协助签名装置完成数字签名生成的计算装置或系统;若与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥被签名辅助系统的密钥加密,则签名装置还有被加密的与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥的密文d
E
;当需要使用用户的SM9签名私钥d
A
针对消息M进行数字签名时,签名装置和签名辅助系统按如下方式生成数字签名:签名装置在[1,n

1]区间内随机选择一个整数r1;签名辅助系统在[1,n

1]区间内随机选择一个整数r2;签名装置和签名辅助系统在不暴露各自秘密r1、r2的情况下完成如下计算:签名装置在确保签名辅助系统不重新选择r2的情况下,利用g、g
c
,通过与签名辅助系统交互计算得到w=g^(b1r1+b2r2),其中b1=1或c
‑1,b2=1或c
‑1,而b2=1仅在E(
·
)对应的同态加密算法是全同态加密算法时适用,b1、b2用于选择w的计算式;签名辅助系统在确保签名装置不重新选择r1的情况下,利用g、g
c
,通过与签名装置交互计算得到w
f
=g^(b1r1+b2r2);签名装置、签名辅助系统分别检查w、w
f
是否为单位元,若w和/或w
f
为单位元,则签名装置、签名辅助系统重新选择r1、r2,重新计算w、w
f
,直到w和w
f
为非单位元;或者,签名装置和签名辅助系统在不暴露各自秘密r1、r2的情况下完成如下计算:签名装置在确保签名辅助系统不重新选择r2的情况下,利用g、g
c
,通过与签名辅助系统交互计算得到w=g^(br1r2),其中b=1或c
‑1,b用于选择w的计算式;签名辅助系统在确保签名装置不重新选择r1的情况下,利用g、g
c
,通过与签名装置交互计算得到w
f
=g^(br1r2);若b=1,则按w=g^(br1r2)、w
f
=g^(br1r2)方式计算w、w
f
仅在E(
·
)对应的同态加密算法是全同态加密算法时适用;签名装置利用消息M计算得到h=H2(M||w,n),其中H2为SM9中规定的杂凑函数,M||w表示将w转化成字串后与M的字串合并,n为SM9密码算法中群G1、G2、G
T
的阶;签名装置检查w与g^h是否相等,若w=g^h,则签名装置和签名辅助系统重新选择r1、r2,重新计算w、w
f
,直到w≠g^h;签名装置按如下方式之一计算s1:
s1计算方式一:w按计算式w=g^(b1r1+b2r2)计算得到且b2=c
‑1;签名装置利用h、c
A
、r1通过同态加密算法计算得到s1=E(r1b1c

hc(mod n));s1计算方式二:w按计算式w=g^(b1r1+b2r2)计算得到,且b2=1时E(
·
)对应的同态加密算法是全同态加密算法;签名辅助系统计算c2=E(r2),将c2发送给签名装置;签名装置利用h、c
A
、r1、c2通过同态加密算法计算得到s1=E(r1b1c+r2b2c

hc(mod n));s1计算方式三:w按计算式w=g^(br1r2)计算得到,且b=1时E(
·
)对应的同态加密算法是全同态加密算法;签名辅助系统计算c2=E(r2),将c2发送给签名装置;签名装置利用r、c
A
、r1、c2通过同态加密算法计算得到s1=E(r1r2bc

hc(mod n));签名装置将h、P
A
、s1、ID
A
或h
ID
发送给签名辅助系统,其中,ID
A
是用户的标识,h
ID
=H1(ID
A
||hid,n);若与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥被签名辅助系统的密钥加密,则签名装置还将d
E
发送给签名辅助系统,而签名辅助系统解密d
E
得到与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥;对于s1计算方式一,签名装置和签名辅助系统按如下方式计算s:签名辅助系统解密得到s1的明文s
12
,计算s2=(s
12
+r2)mod n,S=[s2]P
A
,然后签名辅助系统利用w
f
验证S是否是使用r1、r2、h、以及ID
A
或h
ID
对应的私钥d
A
按SM9数字签名的计算方式计算得到,若验证失败,则转入出错处理,若验证通过,则签名辅助系统将S返回给签名装置;对于s1计算方式二、方式三,签名装置和签名辅助系统按如下方式计算s:签名辅助系统解密得到s1的明文s
12
,计算s2=s
12 mod n,S=[s2]P
A
,然后签名辅助系统利用w
f
验证S是否是使用r1、r2、h、以及ID
A
或h
ID
对应的私钥d
A
按SM9数字签名的计算方式计算得到,若验证失败,则转入出错处理,若验证通过,则签名辅助系统将S返回给签名装置;签名装置利用w验证S是否是使用r1、r2、h、以及ID
A
或h
ID
对应的私钥d
A
按SM9数字签名的计算方式计算得到,若验证通过,则(h,S)为消息M的数字签名,否则,转入出错处理;在以上计算式中,a(mod n),其中a为一个整数,表示与a模n同余的数;所述签名辅助系统在辅助、协助签名装置完成数字签名的生成之前,先鉴别确认使用签名装置的用户即签名者是否是ID
A
或h
ID
的拥有者;所述签名装置即签名者拥有的计算装置是具有计算能力、包含软硬件的装置;所述签名装置通过其内实施的密码模块、密码程序实施以上所述数字签名计算步骤,实施SM9数字签名功能。2.根据权利要求1所述的签名制作数据安全受控的SM9数字签名生成方法,其特征是:对于以上所述签名制作数据安全受控的SM9数字签名生成方法,签名装置和签名辅助系统在不暴露自己的秘密r1、r2和确保对方不重新选择r1、r2的情况下,通过交互计算得到w=g^(b1r1+b2r2),w
f
=g^(b1r1+b2r2)的一种方法如下:
F(
·
)定义为:F(1)=g,F(c
‑1)=g
c
;签名装置计算g1=F(b1)^r1,其中b1=1...

【专利技术属性】
技术研发人员:龙毅宏
申请(专利权)人:武汉理工大学
类型:发明
国别省市:

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

1