CN114978549A - 签名者掌控签名制作数据的sm2数字签名生成方法及*** - Google Patents

签名者掌控签名制作数据的sm2数字签名生成方法及*** Download PDF

Info

Publication number
CN114978549A
CN114978549A CN202210577362.1A CN202210577362A CN114978549A CN 114978549 A CN114978549 A CN 114978549A CN 202210577362 A CN202210577362 A CN 202210577362A CN 114978549 A CN114978549 A CN 114978549A
Authority
CN
China
Prior art keywords
signature
public key
key
encrypted
authentication information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202210577362.1A
Other languages
English (en)
Other versions
CN114978549B (zh
Inventor
龙毅宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Itruschina Co ltd
Original Assignee
Wuhan University of Technology WUT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University of Technology WUT filed Critical Wuhan University of Technology WUT
Priority to CN202210577362.1A priority Critical patent/CN114978549B/zh
Publication of CN114978549A publication Critical patent/CN114978549A/zh
Application granted granted Critical
Publication of CN114978549B publication Critical patent/CN114978549B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及SM2数字签名生成方法:签名装置有PA=[dA]G,有秘密cA=E((1+dA)‑1),其中dA为SM2签名私钥,E(·)为同态加密运算,签名辅助***有解密运算的私钥;对消息M签名时,签名装置、签名辅助***在[1,n‑1]内随机选择整数k1、k2,计算Q=[b1k1+b2k2]G或Q=[bk1k2]G,其中b1、b2、b为1或1+dA,n为基点G的阶;利用消息M和Q计算r=(e+x1)mod n;利用同态加密运算计算得到s=((k1b1+k2b2+r)(1+dA)‑1‑r)mod n或s=((bk1k2+r)(1+dA)‑1‑r)mod n,则(r,s)为生成的数字签名。

Description

签名者掌控签名制作数据的SM2数字签名生成方法及***
技术领域
本发明属于信息安全技术领域,特别是一种签名者掌控签名制作数据的SM2数字签名生成方法及***。
背景技术
SM2是由国家密码管理局组织制定、颁布的一类椭圆曲线公钥密码算法,现已成为国家标准(参见GB/T 32918.2-2016《信息安全技术SM2椭圆曲线公钥密码算法第2部分:数字签名算法》)。基于此算法能实现数字签名、密钥交换及数据加密,其中的数字签名简述如下:
使用用户的SM2私钥dA针对一个消息M进行数字签名时需要计算得到r、s,其中r=(e+x1)mod n,其中n是SM2椭圆曲线点群的基点G的阶,e是从用户标识和消息M导出的杂凑值(即散列值、哈希值)(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范),x1取自(x1,y1)=Q,而Q=[k]G,这里G是SM2椭圆曲线点群的基点;计算s=((1+dA)-1k-r(1+dA)-1dA)mod n,这里k是[1,n-1]区间内随机选择的一个整数,则(r,s)为针对消息M的数字签名(注意,在SM2规范中mod n使用的符号为modn)。
在数字签名中用户的签名私钥的安全极其重要,因此,通常出于安全考虑,应该在专门的密码硬件中生成、存储和使用私钥。但是,出于各种原因,人们常常会或需要采用纯软件的方式实施SM2数字签名算法,这时的用户私钥不是在专门的密码硬件中生成、存储和使用私钥,而是存储在个人计算装置(如个人计算机、手机)的永久存储介质中,私钥在计算装置的内存中生成、使用,这样就存在私钥被窃取、盗用的风险。针对采用纯软件方式实施SM2数字签名算法存在的签名私钥被窃取、盗用的风险,人们提出了一系例基于秘密共享的SM2数字签名协同生成方法,在这些方法中用户的SM2签名私钥或签名私钥的秘密被分割成两份或多份,称为秘密份额,分别在两个或多个计算装置中存储、使用,其中,一份秘密份额在用户计算装置中存储、使用,其他的一份或多份秘密份额在安全保护级别很高的计算装置(如密码服务器)中存储、使用;当需要使用用户的SM2私钥对消息M进行数字签名时,两个或多个计算装置使用各自的秘密份额通过安全协同计算,得到针对消息M的数字签名,所谓安全协同计算即在这个计算过程中每个装置各自的秘密份额不会被泄露、破解。
《中华人民共和国电子签名法》要求生成电子签名时电子签名制作数据仅由签名者控制,而将私钥或私钥的秘密分成多份分别由多个计算装置保存,并在生成数字签名时使用,这并不完全符合此要求,因为用户之外的其他实体掌握了用户私钥的部分秘密即部分签名制作数据,即生成数字签名时签名制作数据不是仅由签名者控制,因此,对于采用非硬件方式(如纯软件)实施SM2数字签名,既要做到进行数字签名生成时数字签名制作数据仅由签名者掌控,又要保证数字签名生成过程的安全性,防止用户签名私钥被泄露、被破解是一个有待地解决的问题。
发明内容
本发明的目的是针对用户端在非密码硬件环境中实施SM2数字签名算法存在的问题,提出一种签名者有效掌控签名制作数据的、安全的SM2数字签名生成技术方案,以克服现有技术的不足。
针对本发明的目的,本发明提出的技术方案包括一种签名者掌控签名制作数据的SM2数字签名生成方法以及相应的***。
在以下对本发明技术方案的描述中,若P、Q是椭圆曲线点群中的元素(点),则P+Q表示P、Q的点加,P-Q表示P加上Q的逆元,[k]P表示k个椭圆曲线点P的点加,即P+P+...+P(共有k个P,若k为负数,则[k]是|k|个椭圆曲线点P的点加后的结果的加法逆元);省略号“...”,表示多个同样(类型)的数据项或多个同样的运算;c-1表示整数c的模n乘法逆(即cc-1mod n=1);如无特别说明,本专利申请中的乘法逆都是针对SM2椭圆曲线点群的阶n(即基点G的阶n)的模n乘法逆;多个整数相乘(包括整数符号参量、变量相乘、常数与整数符号参量、变量相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·k2简化为k1k2,3·c简化为3c;mod n表示模n运算(modulo operation),对应于GB/T 32918.2-2016《信息安全技术SM2椭圆曲线公钥密码算法第2部分:数字签名算法》中的modn;还有,模n运算的算子mod n的优先级是最低的,如a+b mod n等同于(a+b)mod n,a-b mod n等同于(a-b)mod n,ab modn等同于(ab)mod n。
在本发明的方案中,将计算s=((1+dA)-1k-r(1+dA)-1dA)mod n,转化为计算s=((1+dA)-1(k+r)-r)mod n。
本发明的签名者掌控签名制作数据的SM2数字签名生成方法具体如下。
签名装置有PA=[dA]G,有秘密cA=E((1+dA)-1),其中dA为用户的SM2签名私钥,G为SM2椭圆曲线点群的基点,PA为用户的SM2签名私钥dA对应的公钥,(1+dA)-1为(1+dA)的模n乘法逆(即((1+dA)(1+dA)-1)mod n=1),n为基点G的阶(也即SM2椭圆曲线点群的阶),n为素数,E(·)是采用同态加密算法的加密运算;
所述签名装置是签名者即SM2签名私钥dA的拥有者的计算装置;所述同态加密算法为加法同态加密算法或全同态加密算法;签名辅助***有与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥(同态加密算法的私钥),或者与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥被签名辅助***的密钥加密,其中,签名辅助***的密钥包括对称密钥或公钥(其中公钥又包括普通公钥如RSA、SM2等普通公钥密码算法的公钥,或群(组)密码算法的群组公钥);所述签名辅助***是辅助、协助签名装置完成数字签名生成的计算装置或***;
若与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥被签名辅助***的密钥加密,则签名装置还有解密运算的私钥的密文dE(采用签名辅助***的对称密钥或公钥加密,dE不是秘密,但对签名辅助***之外的计算装置、***可以作为秘密);
当需要使用用户的SM2签名私钥dA针对消息M进行数字签名时,签名装置和签名辅助***按如下方式生成针对消息M的数字签名(需要使用用户的SM2签名私钥dA、针对消息M进行数字签名的主体可以是签名装置内或外的调用签名装置的密码功能的应用程序、***):
签名装置利用消息M计算得到用于计算r=(e+x1)mod n的杂凑值e(按SM2算法,e是从用户标识IDA等参数导出的杂凑值ZA同消息M合并后的数据的杂凑值,参见SM2规范);
签名装置将e发送给签名辅助***;
签名装置在[1,n-1]区间内随机选择一个整数k1
签名辅助***在[1,n-1]区间内随机选择一个整数k2
签名装置和签名辅助***在不暴露各自秘密k1、k2的情况下完成如下计算:
签名装置在确保签名辅助***不重新选择k2的情况下,通过与签名辅助***交互计算得到Q=[b1k1+b2k2]G,其中b1=1或(1+dA),b2=1或(1+dA),其中b2=1仅在E(·)对应的同态加密算法是全同态加密算法时适用(否则,后面计算s1时签名装置无法完成E(k2(1+dA)-1)运算或计算);
签名辅助***在确保签名装置不重新选择k1的情况下,通过与签名装置交互计算得到Qf=[b1k1+b2k2]G;
签名装置、签名辅助***分别检查Q、Qf是否为零元(椭圆曲线点群的无穷远点),若Q和/或Qf为零元,则重新选择k1、k2,重新计算Q、Qf,直到Q和Qf为非零元;
或者,
签名装置和签名辅助***在不暴露各自秘密k1、k2的情况下完成如下计算:
签名装置在确保签名辅助***不重新选择k2的情况下,通过与签名辅助***交互计算得到Q=[bk1k2]G,其中b=1或(1+dA);
签名辅助***在确保签名装置不重新选择k1的情况下,通过与签名装置交互计算得到Qf=[bk1k2]G;
若b=1,则按Q=[bk1k2]G、Qf=[bk1k2]G方式计算Q、Qf仅在E(·)对应的同态加密算法是全同态加密算法时适用(否则,后面计算s1时签名装置无法完成E(k1k2b(1+dA)-1)运算或计算);
签名装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Q;
签名辅助***计算rf=(e+x1f)mod n,其中x1f取自(x1f,y1f)=Qf
签名装置和签名辅助***分别检查是否会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况(即检查是否会出现(k+r)mod n=0和/或(k+rf)mod n=0的情况),其中s是将要计算生成的数字签名(r,s)中的参数s,若是,则重新选择k1、k2,重新计算Q、Qf,重新计算r、rf,直到不会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况;若不会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况,则进行后续计算处理;
签名装置按如下方式之一计算s1
s1计算方式一:
Q按计算式Q=[b1k1+b2k2]G计算得到且b2=(1+dA)(s1计算方式一仅适合此情形);
签名装置利用r、cA、k1通过同态加密算法计算得到
s1=E(k1b1(1+dA)-1+r(1+dA)-1(mod n));
(注意b1(1+dA)-1的取值或为1或为(1+dA)-1,根据b1取值可优化计算式)
s1计算方式二:
Q按计算式Q=[b1k1+b2k2]G计算得到;
若b2=1,则E(·)对应的同态加密算法是全同态加密算法;
签名辅助***计算c2=E(k2),将c2发送给签名装置;
签名装置利用r、cA、k1、c2通过同态加密算法计算得到
s1=E(k1b1(1+dA)-1+k2b2(1+dA)-1+r(1+dA)-1(mod n));
(注意b1(1+dA)-1、b2(1+dA)-1的取值或为1或为(1+dA)-1,根据b1、b2取值可优化计算式)
s1计算方式三:
Q按计算式Q=[bk1k2]G计算得到;
若b=1,则E(·)对应的同态加密算法是全同态加密算法;
签名辅助***计算c2=E(k2),将c2发送给签名装置;
签名装置利用r、cA、k1、c2通过同态加密算法计算得到
s1=E(k1k2b(1+dA)-1+r(1+dA)-1(mod n));
(注意b(1+dA)-1的取值或为1或为(1+dA)-1,根据b取值可优化计算式)
计算得到s1后,签名装置将s1、PA发送给签名辅助***;
若与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥被签名辅助***的密钥加密,其密文为dE,则签名装置还将dE发送给签名辅助***,而签名辅助***解密dE得到与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥(同态加密算法的私钥,即进行同态加密算法的解密运算的私钥);
对于s1计算方式一,签名辅助***按如下方式计算s:
签名辅助***解密s1得到s1的明文s12,计算s2=(s12+k2)mod n,s=(s2-rf)mod n,将s返回给签名装置;在将s返回给签名装置之前,签名辅助***验证s12是否是使用k1、rf和公钥PA对应的私钥dA计算得到,或者验证s2是否是使用k1、k2、rf和公钥PA对应的私钥dA计算得到,若是,则继续,若验证失败,则转入出错处理;
对于s1计算方式二、方式三,签名辅助***按如下方式计算s:
签名辅助***解密s1得到s1的明文s12,计算s2=s12 mod n,s=(s2-rf)mod n,将s返回给签名装置;在将s返回给签名装置之前,签名辅助***验证s2是否是使用k1、k2、rf和公钥PA对应的私钥dA计算得到,若是,则继续,若验证失败,则转入出错处理;
签名装置验证s是否是使用k1、k2、r和公钥PA对应的私钥dA按SM2数字签名的计算方式计算得到,若验证通过,则(r,s)为消息M的数字签名,否则,转入出错处理;
(s=((k1b1+k2b2+r)(1+dA)-1-r)mod n或s=((bk1k2+r)(1+dA)-1-r)mod n)
在以上采用同态加密算法的加密运算E(·)的计算式中,a(mod n),其中a为一个整数,表示与a模n同余的整数(两个整数a、b模n同余即a mod n=b mod n表示为a≡b(modn),(mod n)算子优先级最低);
所述签名辅助***在辅助、协助签名装置完成数字签名的生成之前(比如解密s1之前或计算s2之前),先鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者(注意,这里不是鉴别确认用户即签名者是否是公钥PA对应的私钥dA的拥有者);
所述签名装置即签名者拥有的计算装置是具有计算能力、包含软硬件的装置(如个人电脑、手机等移动终端);所述签名装置通过其内实施的密码模块、密码程序实施以上所述数字签名计算、生成步骤,实施SM2数字签名功能。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名装置和签名辅助***在不暴露自己的秘密k1、k2和确保对方不重新选择k1、k2的情况下,通过交互计算得到Q=[b1k1+b2k2]G、Qf=[b1k1+b2k2]G的一种方法如下:
F(·)定义为:F(1)=G,F(1+dA)=(G+PA);
签名装置计算Q1=[k1]F(b1),其中b1=1或(1+dA),计算Q1的杂凑值h1(采用任何一种合适的杂凑算法),将h1发送给签名辅助***;
签名辅助***计算Q2=[k2]F(b2),其中b2=1或(1+dA),计算Q2的杂凑值h2,将h2发送给签名装置;
签名装置接收到签名辅助***的h2后,将Q1发送给签名辅助***;
签名辅助***接收到签名装置的h1后,将Q2发送给签名装置;
签名装置接收到Q2后,计算、检查接收的Q2的杂凑值是否是h2,若不是,则转入出错处理,若是,则计算得到Q=Q1+Q2
签名辅助***接收到Q1后,计算、检查接收的Q1的杂凑值是否是h1,若不是,则转入出错处理,若是,则计算得到Qf=Q1+Q2
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名装置和签名辅助***在不暴露自己的秘密k1、k2和确保对方不重新选择k1、k2的情况下,通过交互计算得到Q=[bk1k2]G、Qf=[bk1k2]G的一种方法如下:
F(·)定义为:F(1)=G,F(1+dA)=(G+PA);
b=1或(1+dA);
签名装置计算Q1=[k1]F(b),计算Q1的杂凑值h1(采用任何一种合适的杂凑算法),将h1发送给签名辅助***;
签名辅助***计算Q2=[k2]F(b),计算Q2的杂凑值h2,将h2发送给签名装置;
签名装置接收到签名辅助***的h2后,将Q1发送给签名辅助***;
签名辅助***接收到签名装置的h1后,将Q2发送给签名装置;
签名装置接收到Q2后,计算、检查接收的Q2的杂凑值是否是h2,若不是,则转入出错处理,若是,则计算得到Q=[k1]Q2
签名辅助***接收到Q1后,计算、检查接收的Q1的杂凑值是否是h1,若不是,则转入出错处理,若是,则计算得到Qf=[k2]Q1
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名装置和签名辅助***检查是否会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况(即检查是否会出现(k+r)mod n=0和/或(k+rf)mod n=0的情况)的一种方法如下:
签名装置检查Q+[r]G是否是零元(SM2椭圆曲线点群的无穷远点),若是,则会出现(s+r)mod n=0的情况,否则不会;
签名辅助***检查Qf+[rf]G是否是零元(SM2椭圆曲线点群的无穷远点),若是,则会出现(s+rf)mod n=0的情况,否则不会。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名辅助***验证s12是否是使用k1、rf和公钥PA对应的私钥dA计算得到,或者验证s2是否是使用k1、k2、rf和公钥PA对应的私钥dA计算得到的一种方法如下:
签名辅助***检查验证Q1+[rf]G与[(s12)mod n](G+PA)是否相等,若相等,则验证通过(即s12是使用k1、rf和公钥PA对应的私钥dA计算得到),否则,验证失败;
或者,
签名辅助***检查验证Qf+[rf]G与[s2](G+PA)是否相等,若相等,则验证通过(即s2是使用k1、k2、rf和公钥PA对应的私钥dA计算得到),否则,验证失败。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名装置验证s是否是使用k1、k2、r和公钥PA对应的私钥dA按SM2数字签名的计算方式计算得到的一种方式如下:
签名装置检查验证Q+[r]G与[(s+r)mod n](G+PA)是否相等,若相等,则验证通过(即s是使用k1、k2、r和公钥PA对应的私钥dA按SM2数字签名的计算方式计算得到),否则,验证失败。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名辅助***维护有公钥黑名单,对于出现在黑名单上的公钥PA,签名辅助***不为对应的私钥生成数字签名。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名辅助***鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者有很多种方法,比如,用户的公钥PA与用户在签名辅助***的帐户绑定,用户使用签名辅助***要先利用帐户名在签名辅助***完成登录(身份鉴别)。实际上,还有其他的不用将用户在签名辅助***的帐户与公钥PA绑定的方案,用户甚至可以匿名方式登录签名辅助***,但仍然可以实现有关的鉴别确认,比如,以下方案支持匿名方式下的鉴别确认。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,签名辅助***鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者的一种方法如下:
在公钥PA生成后,包含公钥PA、针对用户(即签名者)的身份鉴别信息的数据组合形成公钥鉴别信息(用户身份鉴别信息是只有公钥、私钥拥有者知道的或拥有的私密数据,如口令、动态口令的种子密钥、生物特征验证信息,或者是用于鉴别验证的手机号、电子邮箱地址等,用户身份鉴别信息严格说来是公钥拥有鉴别信息,不是身份鉴别信息,因为鉴别确认不需要用户的名字或帐户名,可以是匿名方式),公钥鉴别信息经采用签名辅助***的对称密钥和对称密钥密码算法加密后得到加密的公钥鉴别信息,或者公钥鉴别信息经采用公钥密码算法签名加密后得到签名加密的公钥鉴别信息,所述签名加密包括先签名后加密,或者先加密后签名,其中签名使用的是公钥注册***的私钥(私钥包括普通的RSA、SM2等私钥,以及群组密码算法的群组私钥),加密使用的是签名辅助***的公钥(公钥包括普通的RSA、SM2公钥,以及群组密码算法的群组公钥);采用对称密钥加密的公钥鉴别信息和采用公钥密码算法签名加密的公钥鉴别信息统称为加密的公钥鉴别信息(公钥加密可采用随机对称密钥加密数据,公钥加密随机对称密钥的方式);加密的公钥鉴别信息保存在签名装置;所述公钥注册***是对用户公钥进行注册管理的***;
当签名辅助***需要鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者时,签名装置将加密的公钥鉴别信息提交到签名辅助***;
签名辅助***解密加密的公钥鉴别信息,获得公钥鉴别信息的明文,其中对于签名加密的公钥鉴别信息,签名辅助***还要验证数字签名的有效性,验证通过后再继续;
签名辅助***检查解密获得的公钥鉴别信息中包含的公钥PA是否是当前用于数字签名生成验证的公钥PA(比如,验证s12或s2),若不是,则转入出错处理,若是,则继续;
签名辅助***从解密得到的公钥鉴别信息中获取用户身份鉴别信息,然后利用用户身份鉴别信息对签名装置的用户即签名者进行身份鉴别,若用户身份鉴别通过,则确认使用签名装置的用户即签名者是公钥PA的拥有者,否则鉴别确认失败。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,所述对称密钥加密的公钥鉴别信息或签名加密的公钥鉴别信息的一种生成方法如下:
在生成得到PA,cA后,签名装置(可以匿名方式)向公钥注册***提交PA,申请注册PA
公钥注册***检查PA是否已注册(对已注册的PA,公钥注册***进行记录),若已注册,则提示已注册,若未注册,则继续;
签名装置在不暴露自己秘密的情况下向公钥注册***证明拥有PA对应的签名私钥dA(即证明签名装置的用户是私钥dA的拥有者,即证明签名装置有按约定方式计算得到的cA,即证明签名装置拥有的cA是E((1+dA)-1)且PA=[dA]G,注意cA、dA都是签名装置的秘密),证明通过后进行后续操作,否则转入出错处理;
签名装置向公钥注册***提交用于用户身份鉴别的身份鉴别信息(如用于用户身份鉴别的私密数据,如口令、动态口令种子密钥、生物特征验证信息,或者用于发送验证确认信息的电子通信地址,如电子邮箱地址、手机号),然后公钥注册***使用签名辅助***的对称密钥、采用对称密钥密码算法对包含PA和用户身份鉴别信息的公钥鉴别信息进行加密,形成加密的公钥鉴别信息,或者公钥注册***利用自己的私钥对包含PA和用户身份鉴别信息的公钥鉴别信息进行签名,然后采用签名辅助***的公钥(包括普通公钥如RSA、SM2或群组公钥)对签名后的公钥鉴别信息进行加密,得到先签名后加密的公钥鉴别信息,或者公钥注册***采用签名辅助***的公钥对包含PA和用户身份鉴别信息的公钥鉴别信息进行加密,得到加密后的公钥鉴别信息,然后公钥注册***使用自己的私钥对加密后的公钥鉴别信息进行签名,得到先加密后签名的公钥鉴别信息。
对于以上所述对称密钥加密的公钥鉴别信息或签名加密的公钥鉴别信息的生成方法,所述签名装置定时对加密的公钥鉴别信息进行更新。
对于以上所述对称密钥加密的公钥鉴别信息或签名加密的公钥鉴别信息的生成方法,所述签名装置对加密的公钥鉴别信息进行更新的一种方法如下:
签名装置(如以匿名方式)向公钥注册***提交加密的公钥鉴别信息,公钥注册***解密加密的公钥鉴别信息,其中若加密的公钥鉴别信息是签名加密的公钥鉴别信息,则公钥注册***还验证签名加密的公钥鉴别信息中包含的数字签名的有效性,验证通过后再继续;
公钥注册***利用解密得到的公钥鉴别信息中的用户身份鉴别信息对签名装置的用户进行身份鉴别,若鉴别不同通过,则转入出错处理,若鉴别通过,则继续;
签名装置在不暴露自己秘密的情况下向公钥注册***证明拥有PA对应的签名私钥dA(比如按照公钥PA注册时同样的方式或不同的方式);
签名装置向公钥注册***证明拥有PA对应的签名私钥dA后,签名装置和公钥注册***按照注册PA时生成加密的公钥鉴别信息的同样方式,生成新的加密的公钥鉴别信息(通常是更新用户身份鉴别信息,PA不变,但这里的更新方法允许更新PA,即实际上允许用一个公钥鉴别信息去生成另一个新的公钥鉴别信息),所述新的加密的公钥鉴别信息包括采用对称密钥加密的公钥鉴别信息和采用公钥密码算法签名加密的公钥鉴别信息。
若公钥鉴别信息中的用户身份鉴别信息是口令,则公钥注册***在确认口令满足安全要求后,才对公钥鉴别信息进行加密或者签名加密。
若公钥鉴别信息中的用户身份鉴别信息是口令且公钥鉴别信息包含有用户电子通信地址(如邮箱、手机号等),则公钥注册***通过公钥鉴别信息中包含的用户电子通信地址向用户提供重置或恢复公钥鉴别信息中的口令的功能(除了向电子通信地址发送验证信息这点外,口令重置或恢复过程类似于公钥鉴别信息的更新过程)。
对于以上所述签名者掌控签名制作数据的SM2数字签名生成方法,PA=[dA]G,cA=E((1+dA)-1)的生成方式包括:
PA、cA生成方式一:
(比如签名者、初始化操作者使用)签名装置生成dA,计算PA=[dA]G,cA=E((1+dA)-1),然后销毁dA(此方式适用于签名装置有可信计算或执行环境,或者安全要求不高的场合);
PA、cA生成方式二:
(比如签名者、初始化操作者使用)签名装置之外的一个计算装置生成dA,计算PA=[dA]G,cA=E((1+dA)-1),然后销毁dA,将PA、cA导出,之后,(通过一定的安全方式)将PA、cA导入到签名装置;
PA、cA生成方式三:
(比如签名者、初始化操作者使用)签名装置之外的一个计算装置(中的私钥辅助生成程序)在[1,n-1]内随机选择一个整数d2,计算G2=[(d2)-1]G,t2=E(d2),其中(d2)-1为d2的模n乘法逆(即((d2)-1d2)mod n=1),然后将d2销毁,将G2、t2导出,然后将G2、t2导入到签名装置;
(比如签名者、初始化操作者使用)签名装置在[1,n-1]内随机选择一个整数d1,计算PA=[(d1)-1]G2-G,利用t2计算得到cA=E(d1d2),其中(d1)-1为d1的模n乘法逆(即((d1)-1d1)mod n=1),然后将d1、G2、t2销毁,则d1d2≡(1+dA)-1(mod n)(d1d2与某个dA存在模n同余关系),PA=[dA]G;
对于以上所述PA、cA生成方式一、二、三,加密运算E(·)采用签名辅助***的同态加密算法的公钥,签名辅助***有与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥(此时进行同态加密运算的公钥是众所周知的),或者,加密运算E(·)采用(第一个执行加密运算E(·)操作的实体)临时生成的同态加密算法的公私钥对(密钥对)中的公钥,而临时生成的同态加密算法的公私钥对(密钥对)中的私钥被签名辅助***的公钥加密,形成加密后的私钥的密文dE(签名辅助***的公钥包括普通公钥如RSA、SM2公钥,以及群组密码算法的群组公钥);
PA、cA生成方式四:
SM2签名私钥的用户(即签名者)使用签名装置(比如以匿名方式)与密钥协同生成***交互,在不暴露各自秘密的情况下利用同态加密算法,协同计算得到PA=[dA]G,cA=E((1+dA)-1),然后销毁计算过程中的使用的秘密;
所述密钥协同生成***是提供SM2公私钥对协同生成服务的***;
对于以上所述PA、cA生成方式四,加密运算E(·)采用签名辅助***的同态加密算法的公钥,签名辅助***有与加密运算E(·)所采用的公钥对应的解密运算的私钥(此时同态加密运算的公钥是众所周知的),或者,加密运算E(·)采用密钥协同生成***临时生成的同态加密算法的公私钥对中的公钥,临时生成的同态加密算法的公私钥对中的私钥被签名辅助***的密钥加密,形成加密后的私钥的密文dE,其中签名辅助***的密钥包括对称密钥或公钥(公钥包括普通公钥如RSA、SM2公钥,以及群组密码算法的群组公钥)。
对于以上所述PA、cA生成方式四,SM2签名私钥的用户(即签名者)使用签名装置(比如以匿名方式)与密钥协同生成***通过交互,在不暴露各自秘密的情况下利用同态加密算法,协同计算得到PA=[dA]G,cA=E((1+dA)-1)的一种方式如下(不是全部可能的方式):
SM2签名私钥的用户(即签名者)使用签名装置(比如以匿名方式)向密钥协同生成***发出SM2密钥对协同生成请求;
密钥协同生成***在[1,n-1]内随机选择一个整数d2,计算G2=[(d2)-1]G,t2=E(d2),其中(d2)-1为d2的模n乘法逆(即((d2)-1d2)mod n=1),然后将d2销毁,将G2、t2发送给签名装置,其中,t2=E(d2)加密运算采用的公钥是签名辅助***的同态加密算法的公钥(此时,签名辅助***有与加密运算E(·)所采用的公钥对应的解密运算的私钥),或者是密钥协同生成***临时生成的同态加密算法的公私钥对中的公钥,对于后者,密钥协同生成***利用签名辅助***的密钥,对临时生成的同态加密算法的公私钥对中的私钥进行加密,形成加密后的私钥的密文dE,然后将dE同G2、t2一起发送给签名装置,其中签名辅助***的密钥包括对称密钥和公钥(如果使用的是签名辅助装置的对称密钥,则密钥协同生成***能使用此密钥);
签名装置在[1,n-1]内随机选择一个整数d1,计算PA=[(d1)-1]G2-G,利用t2计算得到cA=E(d1d2),其中(d1)-1为d1的模n乘法逆(即((d1)-1d1)mod n=1),然后将d1、G2、t2销毁;
签名装置在不暴露cA及dA的情况下,通过与密钥协同生成***交互,验证确认cA对应的明文cAm有d1d2≡(1+dA)-1(mod n)(即cAm也即d1d2与某个dA存在模n同余关系)且PA为[dA]G,若验证通过,则d1d2≡(1+dA)-1(mod n),PA=[dA]G,否则,转入出错处理。
以上PA、cA生成方式三、四通过间接方式生成了用户的SM2签名私钥dA
基于以上所述签名者掌控签名制作数据的SM2数字签名生成方法可以构建签名者掌控签名制作数据的SM2数字签名生成***,***包括所述签名装置、签名辅助***,当需要使用用户的SM2签名私钥dA对消息M进行数字签名时,所述名装置和签名辅助***按所述签名者掌控签名制作数据的SM2数字签名生成方法生成针对消息M的数字签名。
基于本发明的方法,签名者(用户)用于SM2数字签名生成的签名制作数据(1+dA)-1完全由签名者掌控,以密文形式存储在其计算装置中,且在数字签名生成过程中也是以密文的形式使用,这样就有效地防止了的签名制作数据(1+dA)-1被泄露;同时,从签名装置、签名辅助***之外的实体角度,生成的SM2数字签名的安全性与直接使用(1+dA)-1或dA生成的SM2数字签名的安全性是一样的;从签名装置、签名辅助***之外的实体角度,签名辅助***是否使用k2参与数字签名的计算、生成不影响所生成的SM2数字签名的安全性;但是,从SM2签名私钥拥有者的角度,使用k2可以防止(1+dA)-1的密文cA被窃取后,攻击者利用cA破解SM2签名私钥dA,因此,从SM2签名私钥拥有者的角度,本发明的方法提高了用户SM2签名私钥使用的安全性,而且,签名辅助***可以在计算s前,通过公钥鉴别信息增强对签名装置或签名装置使用者的身份鉴别,比如,通过向签名装置之外的用户计算装置发送验证信息,对签名装置使用者以人脸识别方式进行身份鉴别等,从而确保用户的签名制作数据不被盗用。
附图说明
图1为本发明的***示意图。
图2为本发明的分布式部署示意图。
具体实施方式
下面结合实施例对本发明作进一步的描述。以下实施方式、实施例仅是本发明列举的几个可能的实施方式、实施例,不代表全部可能的实施方式、实施例,不作为对本发明的限定。
本发明的实施需要采用同态加密算法,其中包括加法同态加密算法和全同态加密算法(全同态加密算法即同时支持加法同态、乘法同态的同态加密算法)。本发明对具体采用的加法同态加密算法和全同态加密算法没有限制,只要能支持整数的同态加密运算就行,比如,对于加法同态加密算法,可以采用Paillier算法,对于全同态加密算法,可以采用Gentry算法。
在以下描述中,
Figure BDA0003660873110000171
表示同态加密的两个密文数的相乘,结果对应两个相应的明文数相乘的乘积的密文数;
Figure BDA0003660873110000172
表示同态加密的两个密文数的相加,结果对应两个相应的明文数的相加的和的密文数;⊙表示同态加密中的一个明文数与一个密文数的相乘,结果对应两个相应的明文数相乘的乘积的密文数。
在本发明的同态加密运算中经常出现E(a(mod n)),其中a为整数,而a(mod n)表示与a模n同余的数。本发明中使用与a模n同余的数,而不是直接使用a,这是为了避免当a是两个或多个秘密数(保密数)的运算结果时(比如乘积),秘密被通过直接分解a的方式破解,比如,a=pq,由于p、q的位数比较少(相对而言,不是很大的数),从a分解出p、q比较容易,会导致p、q被破解,但是,如果采用一个与a模n同余数,这将使得对p、q的直接破解难度增大或者在计算上不可能。
具体实施E(a(mod n))的一种方案如下(当然不是全部可能):
将计算E(a(mod n))变为计算
Figure BDA0003660873110000173
其中z为计算过程中(比如签名装置)随机选择的整数(不限于在[1,n-1]n内选择的整数),或者从(比如签名装置)随机选择的整数计算得到的整数(z可正,可负,可为零),z的选取原则是:使得运算过程中被加密的明文数即a+zn不超出同态加密算法的加密运算E(·)针对被加密的整数的表示范围,或者超出同态加密算法的加密运算E(·)针对被加密的整数的表示范围的概率极小(超出的概率在规定的范围内)(同态加密算法的加密运算E(·)用补数表示正、负、零,假如E(·)针对被加密的整数的模是m,则将m分为两部分,其中的低一半部分表示正整数和零,高一半部分表示负整数,类似于二进制数中的补码)。
在具体实施中,签名辅助***有与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥(此时,解密运算的私钥通常存放在专门的密码装置中,如图1所示),或者,与同态加密算法的加密运算E(·)所采用的(临时生成的)公钥对应的解密运算的私钥被签名辅助***的密钥加密,形成加密的私钥的密文dE,其中签名辅助***的密钥包括对称密钥或公钥,其中公钥又包括普通公钥如RSA、SM2等公钥,或群组密码算法的群组公钥,此时,用于解密dE的对称密钥或私钥通常存放在专门的密码装置中(如图1所示);当需要进行与加密运算E(·)对应的解密运算D(·)时,(签名辅助***)先用密码装置解密dE得到进行解密运算D(·)的私钥,然后再进行同态加密算法的解密运算(解密运算也通常在密码装置中进行)。
与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥具体是采用哪种方式,与SM2私钥dA的生成方式有关,与发明的***的部署方式有关(比如集中还是分布部署),参见后面的说明。
在针对消息M生成数字签名时,Q、Qf有不同的计算方式,不同的Q、Qf计算方式不但影响后面计算数字签名所采用的计算方式(实施方式),而且与所选择的同态加密算法有关,下面给出具体的实施说明。
Q、Qf实施例1、
Q、Qf计算采用Q=[b1k1+b2k2]G、Qf=[b1k1+b2k2]G,b1=1,b2=1,此时仅在E(·)对应的同态加密算法是全同态加密算法时适用;此时,s1的计算只能采用s1计算方式二,签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000181
其中cA=E((1+dA)-1),c2=E(k2);
此时对应s1=E((k1+r)(1+dA)-1+k2(1+dA)-1(mod n)),s=((k1+k2+r)(1+dA)-1-r)mod n。
Q、Qf实施例2、
Q、Qf计算采用Q=[b1k1+b2k2]G、Qf=[b1k1+b2k2]G,b1=(1+dA),b2=1,此时仅在E(·)对应的同态加密算法是全同态加密算法时适用;此时,s1的计算只能采用s1计算方式二,这时b1(1+dA)-1取值1,签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000191
其中cA=E((1+dA)-1),c2=E(k2);
此时对应s1=E(k1+k2(1+dA)-1+r(1+dA)-1(mod n)),
s=((k1(1+dA)+k2+r)(1+dA)-1-r)mod n。
Q、Qf实施例3、
Q、Qf计算采用Q=[b1k1+b2k2]G、Qf=[b1k1+b2k2]G,b1=1,b2=(1+dA),此时E(·)对应的同态加密算法既可以是加法同态加密算法,也可以是全同态加密算法;此时,s1的计算可以采用s1计算方式一或二,这时b2(1+dA)-1取值1;
若s1的计算采用s1计算方式一,则签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000192
其中cA=E((1+dA)-1);
此时对应s1=E((k1+r)(1+dA)-1(mod n)),s=((k1+k2(1+dA)+r)(1+dA)-1-r)mod n。
若s1的计算采用s1计算方式二,则签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000193
其中cA=E((1+dA)-1),c2=E(k2);
此时对应s1=E((k1+r)(1+dA)-1+k2(mod n)),
s=((k1+k2(1+dA)+r)(1+dA)-1-r)mod n。
Q、Qf实施例4、
Q、Qf计算采用Q=[b1k1+b2k2]G、Qf=[b1k1+b2k2]G,b1=(1+dA),b2=(1+dA),此时E(·)对应的同态加密算法既可以是加法同态加密算法,也可以是全同态加密算法;此时,s1的计算只能采用s1计算方式一或二,这时b1(1+dA)-1取值1、b2(1+dA)-1取值1;
若s1的计算采用s1计算方式一,则签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000194
其中cA=E((1+dA)-1);
此时对应s1=E(k1+r(1+dA)-1(mod n)),
s=((k1(1+dA)+k2(1+dA)+r)(1+dA)-1-r)mod n。
若s1的计算采用s1计算方式二,则签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000201
其中cA=E((1+dA)-1),c2=E(k2);
此时对应s1=E(k1+k2+r(1+dA)-1(mod n)),
s=((k1(1+dA)+k2(1+dA)+r)(1+dA)-1-r)mod n。
Q、Qf实施例5、
Q、Qf计算采用Q=[bk1k2]G、Qf=[bk1k2]G,b=1,此时仅在E(·)对应的同态加密算法是全同态加密算法时适用;此时,s1的计算只能采用s1计算方式三,签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000202
或者,
Figure BDA0003660873110000203
或者,
Figure BDA0003660873110000204
其中cA=E((1+dA)-1),c2=E(k2);
此时对应s1=E(k1k2(1+dA)-1+r(1+dA)-1(mod n)),s=((k1k2+r)(1+dA)-1-r))modn。
Q、Qf实施例6、
Q、Qf计算采用Q=[bk1k2]G、Qf=[bk1k2]G,b=(1+dA),此时E(·)对应的同态加密算法既可以是加法同态加密算法,也可以是全同态加密算法时适用;此时,b(1+dA)-1取值为1,s1的计算只能采用s1计算方式三,
若E(·)对应的同态加密算法是加法同态加密算法,签名装置可以通过如下方式计算得到s1
Figure BDA0003660873110000205
其中cA=E((1+dA)-1),c2=E(k2);
若E(·)对应的同态加密算法是全同态加密算法,签名装置还可以通过如下方式计算得到s1
Figure BDA0003660873110000206
其中cA=E((1+dA)-1),c2=E(k2);
此时对应s1=E(k1k2+r(1+dA)-1(mod n)),s=(((1+dA)k1k2+r)(1+dA)-1-r))。
在具体实施中,可以选择Q、Qf计算方式中的一种,以及相应的s1计算方式,以及之后的相应的s的计算方式(采用s1计算方式一,之后的s计算方式,与采用s1计算方式二、三,之后的s计算方式有所不同)。
对于本发明,在针对消息M生成数字签名时,签名辅助***鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者是必须的(注意,这里不是鉴别确认用户即签名者是否是公钥PA对应的私钥dA的拥有者),是为了防止签名制作数据即秘密cA被盗用。在具体实施时,鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者有很多种方法,比如,用户的公钥PA与用户在签名辅助***的帐户绑定,比如,签名辅助***的用户帐户数据库中的帐户信息中有用户的公钥PA,用户使用签名辅助***要先利用帐户名在签名辅助***完成登录(身份鉴别),比如,通过人脸识别、安全令牌等进行安全登录,签名辅助***在完成用户身份鉴别后从用户帐户数据库获得用户的公钥PA,或者用户提供的公钥数字证书的甄别名与用户帐户存在对应关系等,但这种方式不适合对隐私保护的匿名要求,这里的匿名要求即在数字签名的生成过程中不暴露签名装置的用户的真实身份,也不适合在分布式部署环境实施本发明(因为需要集中保存用户帐户信息),这里的分布式部署指多个签名辅助***被分别部署在不同的地方。
本发明引入的公钥鉴别信息及其注册、使用方式,不要求用户必须提供真实身份信息,可以通过匿名方式保护用户隐私(为了保护用户隐私,生物特征验证信息可以是经过转换后的信息)(注意支持匿名方式不意味着公钥鉴别信息的生成、使用必须采用匿名方式)。
对于本发明,在公钥鉴别信息的注册、生成过程中,签名装置需要在不暴露自己秘密的情况下向公钥注册***证明拥有PA对应的签名私钥dA,对此,有很多种可能的方法、实施方式,比如,签名装置可以通过以上所述签名者掌控签名制作数据的SM2数字签名生成方法,对公钥注册***提交的一个随机字串签名(签名时,公钥注册***或签名辅助***不验证PA是否由签名装置的使用者所拥有,因为现在是在进行PA注册、生成公钥鉴别信息,还没有公钥鉴别信息),此时,公钥注册***作为签名辅助***或借助签名辅助***,辅助、协助签名装置完成数字签名生成,或者,签名装置通过其他方式向公钥注册***证明拥有PA对应的签名私钥dA,如下是一种可能的方法、实施方式:
签名装置在[1,n-1]内随机选择一个整数b,利用cA通过同态加密运算计算得到sb1=E(b(1+dA)-1(mod n)),将sb1发送给公钥注册***;公钥注册***在[1,n-1]内随机选择一个整数t,公钥注册***作为签名辅助***或借助签名辅助***解密sb1,计算得到T2=[(D(sb1)t)mod n](G+PA),其中D(·)为与E(·)对应的同态加密算法的解密运算,将T2发送给签名装置;签名装置计算T1=[b-1]T2,其中b-1为b的模n乘法逆,签名装置将T1发送给公钥注册***;公钥注册***检验T1是否与[t]G相同,若相同,则证明通过,否则失败。
对于本发明的签名者掌控签名制作数据的SM2数字签名生成方法,本发明给出了四种PA=[dA]G,cA=E((1+dA)-1)的生成方式(但不意味着全部可能的生成方式),在具体实施中选择这四种方式中的哪一种,取决于具体的实施条件和安全要求。
本发明的PA、cA生成方式一适用于签名装置有可信计算或执行环境,比如签名装置(如移动终端)有TEE(Trusted Executive Environment),或者安全要求不高的场合。此时在签名装置中实施密钥(公钥、私钥)生成的程序组件。
本发明的PA、cA生成方式二适合于在签名装置没有可信计算或执行环境,而签名装置之外的一个计算装置不属于安全风险较高环境(比如本人的一个安装有安全防护软件的一个电脑),且安全要求不是非常高的场合。此时在签名装置之外的计算装置中实施密钥(公钥、私钥)生成的程序组件。
本发明的PA、cA生成方式三同样适合于在签名装置没有可信计算或执行环境,而签名装置之外的一个计算装置不属于安全风险较高环境(比如本人的一个安装有安全防护软件的一个电脑),且安全要求相对较高的场合。此时在签名装置以及签名装置之外的计算装置中实施相应的密钥(公钥、私钥)生成功能的程序组件。
对于本发明的PA、cA生成方式一、二、三,加密运算E(·)采用签名辅助***的同态加密算法的公钥,签名辅助***有与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥(此时进行同态加密运算的公钥是众所周知的),或者,加密运算E(·)采用(第一个执行加密运算E(·)操作的实体)临时生成的同态加密算法的公私钥对(密钥对)中的公钥,而临时生成的同态加密算法的公私钥对(密钥对)中的私钥被签名辅助***的公钥加密,形成加密后的私钥的密文dE(签名辅助***的公钥包括普通公钥如RSA、SM2公钥,以及群组密码算法的群组公钥)。
本发明的PA、cA生成方式四适合于在签名装置没有可信计算或执行环境,且安全要求高的场合。此时需要实施一个协同生成SM2签名私钥的密钥协同生成***,以及在签名装置中实施密钥生成的程序组件。
本发明的PA、cA生成方式三、四,签名装置利用t2计算cA=E(d1d2)的方式包括:
cA=d1⊙t2,或者
Figure BDA0003660873110000231
后者仅在E(·)是全同态加密算法的加密运算时适用。
对于本发明的PA、cA生成方式四,加密运算E(·)采用签名辅助***的同态加密算法的公钥,签名辅助***有与加密运算E(·)所采用的公钥对应的解密运算的私钥(此时同态加密运算的公钥是众所周知的),或者,加密运算E(·)采用密钥协同生成***临时生成的同态加密算法的公私钥对中的公钥,临时生成的同态加密算法的公私钥对中的私钥被签名辅助***的密钥加密,形成加密后的私钥的密文dE,其中签名辅助***的密钥包括对称密钥或公钥(公钥包括普通公钥如RSA、SM2公钥,以及群组密码算法的群组公钥)。
对于本发明的PA、cA生成方式四,签名装置在不暴露cA及dA的情况下,通过与密钥协同生成***交互,验证确认cA对应的明文cAm有d1d2≡(1+dA)-1(mod n)(即cAm与某个dA的(1+dA)-1模n同余)且PA为[dA]G的方法很多,比如,签名装置自己生成一个随机字串,然后按前面所述所述签名者掌控签名制作数据的SM2数字签名生成方法对随机字串进行签名及签名验证(但b1=1,b2=1,或b=1的情形除外,这种情形下密钥协同生成***可以作弊)(此时密钥协同***作为签名辅助***,或者借助签名辅助***),或者,通过其他方式,比如:
签名装置在[1,n-1]内随机选择一个整数b、q、t,利用b、q、cA、t计算sb1=E(qcAm+b(mod n)),T1=[t](G+PA),其中cAm为cA对应的明文即d1d2;签名装置将sb1、T1发送给密钥协同生成***;密钥协同生成***自己作为签名辅助***,或借助签名辅助***,解密sb1得到明文sb2=D(sb1)mod n,计算T2=[sb2]T1,将T2返回给签名装置;签名装置计算T3=[t-1]T2,t-1为t的模n乘法逆,检查T3与[q]G+[b](G+PA)是否相同,若相同,则确认d1d2≡(1+dA)-1(modn)且PA为[dA]G;
或者,
签名装置在[1,n-1]内随机选择一个整数b、q,利用b、q、cA计算sb1=E(qcAm+b(modn)),其中cAm为cA对应的明文即d1d2;签名装置将sb1发送给密钥协同生成***;密钥协同生成***自己作为签名辅助***或借助签名辅助***,解密sb1得到明文sb2=D(sb1)mod n,计算T2=[sb2](G+PA),将T2返回给签名装置;签名装置检查T2与[q]G+[b](G+PA)是否相同,若相同,则确认d1d2≡(1+dA)-1(mod n)且PA为[dA]G。
本发明给出的四种PA、cA生成方式中无论哪一种,同态加密算法的加密、解密运算的公私钥对(密钥对)或者是固定的,或者是临时生成的;对于临时生成的公私钥对,其中私钥被签名辅助装置的其他公钥加密(适合PA、cA生成方式一、二、三、四),或者私钥被签名辅助装置的对称密钥加密(仅适合PA、cA生成方式四),得到与同态加密算法的加密运算E(·)对应的解密运算的私钥的密文dE,其中签名辅助装置的其他公钥包括普通公开密钥密码算法如RSA、SM2、SM9等公钥,也可以是群组密码算法的公钥。
无论同态加密算法的加密、解密运算的公私钥对(密钥对)是固定的还是临时生成的,无论对临时生成的私钥的加密是采用签名辅助装置的对称密钥还是公钥,从得到数字签名结果及其安全性的角度,都是等价的,没有很大差别,但它们可适合、针对不同的部署、实施要求,比如,进行同态加密算法的加密解密的公私钥对(公开密钥对)是固定的或临时生成的,且临时生成的密钥对中的私钥被签名辅助装置的对称密钥加密的方式适合于签名辅助***、密钥协同生成***、公钥注册***集中部署的情形,而同态加密算法的加密解密的公私钥对(公开密钥对)是临时生成的,且临时生成的密钥对中的私钥被签名辅助装置的公钥加密的方式适合于签名辅助***是分布部署的情形,即签名辅助***被分布部署在不同地方(如图2所示),且这时对临时生成的密钥对中的私钥加密的签名辅助装置的公钥是群组公钥更好,这样部署在不同位置的签名辅助装置都能进行辅助、协助数字签名的生成。使用群组公钥加密涉及群(组)加密算法算法,所谓群(组)加密,即使用群(组)公钥加密的数据,群(组)成员可以使用自己的私钥解密加密的数据。
对于签名辅助***采用分布式部署的情形,公钥鉴别信息最好采用签名加密的方式,这时对公钥鉴别信息加密的公钥可以是如RSA、SM2、SM9等普通公钥,也可以是群组公钥,采用群组公钥的方式更好(但不是必须的),这时属于群组一员的每个签名辅助***可以进行数字签名的辅助生成(注意,适合于分布式部署不意味着必须用于分布式部署)。
基于以上所述签名者掌控签名制作数据的SM2数字签名生成方法可以构建签名者掌控签名制作数据的SM2数字签名生成***,***包括所述签名装置、签名辅助***,其中,签名装置可以是如个人电脑、手机移动终端等包含软硬件、具有计算能力装置,而签名辅助***通常是安全性较高、计算能力强的专门***;若还要实施本发明的公钥鉴别信息的生成、使用方案,则构建的签名者掌控签名制作数据的SM2数字签名生成***还包括公钥注册***;若还要实施本发明的PA、cA生成方式四,则构建的签名者掌控签名制作数据的SM2数字签名生成***还包括密钥协同生成***;签名装置在与签名辅助***、密钥协同生成***、公钥注册***交互过程中作为客户端;签名辅助***、密钥协同生成***、公钥注册***是提供相应服务功能的***,它们在与签名装置交互过程中作为服务端;当需要使用用户的SM2签名私钥dA对消息M进行数字签名时,所述名装置和签名辅助***按所述签名者掌控签名制作数据的SM2数字签名生成方法生成针对消息M的数字签名。
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

Claims (15)

1.一种签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名装置有PA=[dA]G,有秘密cA=E((1+dA)-1),其中dA为用户的SM2签名私钥,G为SM2椭圆曲线点群的基点,PA为用户的SM2签名私钥dA对应的公钥,(1+dA)-1为(1+dA)的模n乘法逆,n为基点G的阶,n为素数,E(·)是采用同态加密算法的加密运算;
所述签名装置是签名者即SM2签名私钥dA的拥有者的计算装置;所述同态加密算法为加法同态加密算法或全同态加密算法;签名辅助***有与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥,或者与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥被签名辅助***的密钥加密,其中,签名辅助***的密钥包括对称密钥或公钥;所述签名辅助***是辅助、协助签名装置完成数字签名生成的计算装置或***;
若与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥被签名辅助***的密钥加密,则签名装置还有解密运算的私钥的密文dE
当需要使用用户的SM2签名私钥dA针对消息M进行数字签名时,签名装置和签名辅助***按如下方式生成针对消息M的数字签名:
签名装置利用消息M计算得到用于计算r=(e+x1)mod n的杂凑值e,其中,r为数字签名的组成部分,x1为后续计算得到的椭圆曲线点Q的横坐标;
签名装置将e发送给签名辅助***;
签名装置在[1,n-1]区间内随机选择一个整数k1
签名辅助***在[1,n-1]区间内随机选择一个整数k2
签名装置和签名辅助***在不暴露各自秘密k1、k2的情况下完成如下计算:
签名装置在确保签名辅助***不重新选择k2的情况下,通过与签名辅助***交互计算得到Q=[b1k1+b2k2]G,其中b1=1或(1+dA),b2=1或(1+dA),其中b2=1仅在E(·)对应的同态加密算法是全同态加密算法时适用,b1、b2的取值用于选择Q的计算式;
签名辅助***在确保签名装置不重新选择k1的情况下,通过与签名装置交互计算得到Qf=[b1k1+b2k2]G;
签名装置、签名辅助***分别检查Q、Qf是否为零元,若Q和/或Qf为零元,则重新选择k1、k2,重新计算Q、Qf,直到Q和Qf为非零元;
或者,
签名装置和签名辅助***在不暴露各自秘密k1、k2的情况下完成如下计算:
签名装置在确保签名辅助***不重新选择k2的情况下,通过与签名辅助***交互计算得到Q=[bk1k2]G,其中b=1或(1+dA);
签名辅助***在确保签名装置不重新选择k1的情况下,通过与签名装置交互计算得到Qf=[bk1k2]G;
若b=1,则按Q=[bk1k2]G、Qf=[bk1k2]G方式计算Q、Qf仅在E(·)对应的同态加密算法是全同态加密算法时适用;
签名装置计算r=(e+x1)mod n,其中x1取自(x1,y1)=Q;
签名辅助***计算rf=(e+x1f)mod n,其中x1f取自(x1f,y1f)=Qf
签名装置和签名辅助***分别检查是否会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况,其中s是将要计算生成的数字签名(r,s)中的参数s,若是,则重新选择k1、k2,重新计算Q、Qf,重新计算r、rf,直到不会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况;若不会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况,则进行后续计算处理;
签名装置按如下方式之一计算s1
s1计算方式一:
Q按计算式Q=[b1k1+b2k2]G计算得到且b2=(1+dA);
签名装置利用r、cA、k1通过同态加密算法计算得到s1=E(k1b1(1+dA)-1+r(1+dA)-1(modn));
s1计算方式二:
Q按计算式Q=[b1k1+b2k2]G计算得到;
若b2=1,则E(·)对应的同态加密算法是全同态加密算法;
签名辅助***计算c2=E(k2),将c2发送给签名装置;
签名装置利用r、cA、k1、c2通过同态加密算法计算得到s1=E(k1b1(1+dA)-1+k2b2(1+dA)-1+r(1+dA)-1(mod n));
s1计算方式三:
Q按计算式Q=[bk1k2]G计算得到;
若b=1,则E(·)对应的同态加密算法是全同态加密算法;
签名辅助***计算c2=E(k2),将c2发送给签名装置;
签名装置利用r、cA、k1、c2通过同态加密算法计算得到s1=E(k1k2b(1+dA)-1+r(1+dA)-1(mod n));
计算得到s1后,签名装置将s1、PA发送给签名辅助***;
若与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥被签名辅助***的密钥加密,其密文为dE,则签名装置还将dE发送给签名辅助***,而签名辅助***解密dE得到与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥;
对于s1计算方式一,签名辅助***按如下方式计算s:
签名辅助***解密s1得到s1的明文s12,计算s2=(s12+k2)mod n,s=(s2-rf)mod n,将s返回给签名装置;在将s返回给签名装置之前,签名辅助***验证s12是否是使用k1、rf和公钥PA对应的私钥dA计算得到,或者验证s2是否是使用k1、k2、rf和公钥PA对应的私钥dA计算得到,若是,则继续,若验证失败,则转入出错处理;
对于s1计算方式二、方式三,签名辅助***按如下方式计算s:
签名辅助***解密s1得到s1的明文s12,计算s2=s12mod n,s=(s2-rf)mod n,将s返回给签名装置;在将s返回给签名装置之前,签名辅助***验证s2是否是使用k1、k2、rf和公钥PA对应的私钥dA计算得到,若是,则继续,若验证失败,则转入出错处理;
签名装置验证s是否是使用k1、k2、r和公钥PA对应的私钥dA按SM2数字签名的计算方式计算得到,若验证通过,则(r,s)为消息M的数字签名,否则,转入出错处理;
在以上采用同态加密算法的加密运算E(·)的计算式中,a(mod n),其中a为一个整数,表示与a模n同余的整数;
所述签名辅助***在辅助、协助签名装置完成数字签名的生成之前,先鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者;
所述签名装置即签名者拥有的计算装置是具有计算能力、包含软硬件的装置;所述签名装置通过其内实施的密码模块、密码程序实施以上所述数字签名计算、生成步骤,实施SM2数字签名功能。
2.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名装置和签名辅助***在不暴露自己的秘密k1、k2和确保对方不重新选择k1、k2的情况下,通过交互计算得到Q=[b1k1+b2k2]G、Qf=[b1k1+b2k2]G的一种方法如下:
F(·)定义为:F(1)=G,F(1+dA)=(G+PA);
签名装置计算Q1=[k1]F(b1),其中b1=1或(1+dA),计算Q1的杂凑值h1,将h1发送给签名辅助***;
签名辅助***计算Q2=[k2]F(b2),其中b2=1或(1+dA),计算Q2的杂凑值h2,将h2发送给签名装置;
签名装置接收到签名辅助***的h2后,将Q1发送给签名辅助***;
签名辅助***接收到签名装置的h1后,将Q2发送给签名装置;
签名装置接收到Q2后,计算、检查接收的Q2的杂凑值是否是h2,若不是,则转入出错处理,若是,则计算得到Q=Q1+Q2
签名辅助***接收到Q1后,计算、检查接收的Q1的杂凑值是否是h1,若不是,则转入出错处理,若是,则计算得到Qf=Q1+Q2
3.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名装置和签名辅助***在不暴露自己的秘密k1、k2和确保对方不重新选择k1、k2的情况下,通过交互计算得到Q=[bk1k2]G、Qf=[bk1k2]G的一种方法如下:
F(·)定义为:F(1)=G,F(1+dA)=(G+PA);
b=1或(1+dA);
签名装置计算Q1=[k1]F(b),计算Q1的杂凑值h1,将h1发送给签名辅助***;
签名辅助***计算Q2=[k2]F(b),计算Q2的杂凑值h2,将h2发送给签名装置;
签名装置接收到签名辅助***的h2后,将Q1发送给签名辅助***;
签名辅助***接收到签名装置的h1后,将Q2发送给签名装置;
签名装置接收到Q2后,计算、检查接收的Q2的杂凑值是否是h2,若不是,则转入出错处理,若是,则计算得到Q=[k1]Q2
签名辅助***接收到Q1后,计算、检查接收的Q1的杂凑值是否是h1,若不是,则转入出错处理,若是,则计算得到Qf=[k2]Q1
4.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名装置和签名辅助***检查是否会出现(s+r)mod n=0和/或(s+rf)mod n=0的情况的一种方法如下:
签名装置检查Q+[r]G是否是零元,若是,则会出现(s+r)mod n=0的情况,否则不会;
签名辅助***检查Qf+[rf]G是否是零元,若是,则会出现(s+rf)mod n=0的情况,否则不会。
5.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名辅助***验证s12是否是使用k1、rf和公钥PA对应的私钥dA计算得到,或者验证s2是否是使用k1、k2、rf和公钥PA对应的私钥dA计算得到的一种方法如下:
签名辅助***检查验证Q1+[rf]G与[(s12)mod n](G+PA)是否相等,若相等,则验证通过,否则,验证失败;
或者,
签名辅助***检查验证Qf+[rf]G与[s2](G+PA)是否相等,若相等,则验证通过,否则,验证失败。
6.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名装置验证s是否是使用k1、k2、r和公钥PA对应的私钥dA按SM2数字签名的计算方式计算得到的一种方式如下:
签名装置检查验证Q+[r]G与[(s+r)mod n](G+PA)是否相等,若相等,则验证通过,否则,验证失败。
7.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名辅助***维护有公钥黑名单,对于出现在黑名单上的公钥PA,签名辅助***不为对应的私钥生成数字签名。
8.根据权利要求1所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
签名辅助***鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者的一种方法如下:
在公钥PA生成后,包含公钥PA、针对用户的身份鉴别信息的数据组合形成公钥鉴别信息,公钥鉴别信息经采用签名辅助***的对称密钥和对称密钥密码算法加密后得到加密的公钥鉴别信息,或者公钥鉴别信息经采用公钥密码算法签名加密后得到签名加密的公钥鉴别信息,所述签名加密包括先签名后加密,或者先加密后签名,其中签名使用的是公钥注册***的私钥,加密使用的是签名辅助***的公钥;采用对称密钥加密的公钥鉴别信息和采用公钥密码算法签名加密的公钥鉴别信息统称为加密的公钥鉴别信息;加密的公钥鉴别信息保存在签名装置;所述公钥注册***是对用户公钥进行注册管理的***;
当签名辅助***需要鉴别确认使用签名装置的用户即签名者是否是公钥PA的拥有者时,签名装置将加密的公钥鉴别信息提交到签名辅助***;
签名辅助***解密加密的公钥鉴别信息,获得公钥鉴别信息的明文,其中对于签名加密的公钥鉴别信息,签名辅助***还要验证数字签名的有效性,验证通过后再继续;
签名辅助***检查解密获得的公钥鉴别信息中包含的公钥PA是否是当前用于数字签名生成验证的公钥PA,若不是,则转入出错处理,若是,则继续;
签名辅助***从解密得到的公钥鉴别信息中获取用户身份鉴别信息,然后利用用户身份鉴别信息对签名装置的用户即签名者进行身份鉴别,若用户身份鉴别通过,则确认使用签名装置的用户即签名者是公钥PA的拥有者,否则鉴别确认失败。
9.根据权利要求8所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
所述对称密钥加密的公钥鉴别信息或签名加密的公钥鉴别信息的一种生成方法如下:
在生成得到PA,cA后,签名装置向公钥注册***提交PA,申请注册PA
公钥注册***检查PA是否已注册,若已注册,则提示已注册,若未注册,则继续;
签名装置在不暴露自己秘密的情况下向公钥注册***证明拥有PA对应的签名私钥dA,证明通过后进行后续操作,否则转入出错处理;
签名装置向公钥注册***提交用于用户身份鉴别的身份鉴别信息,然后公钥注册***使用签名辅助***的对称密钥、采用对称密钥密码算法对包含PA和用户身份鉴别信息的公钥鉴别信息进行加密,形成加密的公钥鉴别信息,或者公钥注册***利用自己的私钥对包含PA和用户身份鉴别信息的公钥鉴别信息进行签名,然后采用签名辅助***的公钥对签名后的公钥鉴别信息进行加密,得到先签名后加密的公钥鉴别信息,或者公钥注册***采用签名辅助***的公钥对包含PA和用户身份鉴别信息的公钥鉴别信息进行加密,得到加密后的公钥鉴别信息,然后公钥注册***使用自己的私钥对加密后的公钥鉴别信息进行签名,得到先加密后签名的公钥鉴别信息。
10.根据权利要求9所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
所述签名装置对加密的公钥鉴别信息进行更新的一种方法如下:
签名装置向公钥注册***提交加密的公钥鉴别信息,公钥注册***解密加密的公钥鉴别信息,其中若加密的公钥鉴别信息是签名加密的公钥鉴别信息,则公钥注册***还验证签名加密的公钥鉴别信息中包含的数字签名的有效性,验证通过后再继续;
公钥注册***利用解密得到的公钥鉴别信息中的用户身份鉴别信息对签名装置的用户进行身份鉴别,若鉴别不同通过,则转入出错处理,若鉴别通过,则继续;
签名装置在不暴露自己秘密的情况下向公钥注册***证明拥有PA对应的签名私钥dA
签名装置向公钥注册***证明拥有PA对应的签名私钥dA后,签名装置和公钥注册***按照注册PA时生成加密的公钥鉴别信息的同样方式,生成新的加密的公钥鉴别信息,所述新的加密的公钥鉴别信息包括采用对称密钥加密的公钥鉴别信息和采用公钥密码算法签名加密的公钥鉴别信息。
11.根据权利要求9所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
若公钥鉴别信息中的用户身份鉴别信息是口令,则公钥注册***在确认口令满足安全要求后,才对公钥鉴别信息进行加密或者签名加密。
12.根据权利要求9所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
若公钥鉴别信息中的用户身份鉴别信息是口令且公钥鉴别信息包含有用户电子通信地址,则公钥注册***通过公钥鉴别信息中包含的用户电子通信地址向用户提供重置或恢复公钥鉴别信息中的口令的功能。
13.根据权利要求1-12中任一项所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
PA=[dA]G,cA=E((1+dA)-1)的生成方式包括:
PA、cA生成方式一:
签名装置生成dA,计算PA=[dA]G,cA=E((1+dA)-1),然后销毁dA
PA、cA生成方式二:
签名装置之外的一个计算装置生成dA,计算PA=[dA]G,cA=E((1+dA)-1),然后销毁dA,将PA、cA导出,之后,将PA、cA导入到签名装置;
PA、cA生成方式三:
签名装置之外的一个计算装置在[1,n-1]内随机选择一个整数d2,计算G2=[(d2)-1]G,t2=E(d2),其中(d2)-1为d2的模n乘法逆,然后将d2销毁,将G2、t2导出,然后将G2、t2导入到签名装置;
签名装置在[1,n-1]内随机选择一个整数d1,计算PA=[(d1)-1]G2-G,利用t2计算得到cA=E(d1d2),其中(d1)-1为d1的模n乘法逆,然后将d1、G2、t2销毁,则d1d2≡(1+dA)-1(mod n),PA=[dA]G;
对于以上所述PA、cA生成方式一、二、三,加密运算E(·)采用签名辅助***的同态加密算法的公钥,签名辅助***有与同态加密算法的加密运算E(·)所采用的公钥对应的解密运算的私钥,或者,加密运算E(·)采用临时生成的同态加密算法的公私钥对中的公钥,而临时生成的同态加密算法的公私钥对中的私钥被签名辅助***的公钥加密,形成加密后的私钥的密文dE
PA、cA生成方式四:
SM2签名私钥的用户使用签名装置与密钥协同生成***交互,在不暴露各自秘密的情况下利用同态加密算法,协同计算得到PA=[dA]G,cA=E((1+dA)-1),然后销毁计算过程中的使用的秘密;
所述密钥协同生成***是提供SM2公私钥对协同生成服务的***;
对于以上所述PA、cA生成方式四,加密运算E(·)采用签名辅助***的同态加密算法的公钥,签名辅助***有与加密运算E(·)所采用的公钥对应的解密运算的私钥,或者,加密运算E(·)采用密钥协同生成***临时生成的同态加密算法的公私钥对中的公钥,临时生成的同态加密算法的公私钥对中的私钥被签名辅助***的密钥加密,形成加密后的私钥的密文dE,其中签名辅助***的密钥包括对称密钥或公钥。
14.根据权利要求13所述的签名者掌控签名制作数据的SM2数字签名生成方法,其特征是:
对于以上所述PA、cA生成方式四,SM2签名私钥的用户使用签名装置与密钥协同生成***通过交互,在不暴露各自秘密的情况下利用同态加密算法,协同计算得到PA=[dA]G,cA=E((1+dA)-1)的一种方式如下:
SM2签名私钥的用户使用签名装置向密钥协同生成***发出SM2密钥对协同生成请求;
密钥协同生成***在[1,n-1]内随机选择一个整数d2,计算G2=[(d2)-1]G,t2=E(d2),其中(d2)-1为d2的模n乘法逆,然后将d2销毁,将G2、t2发送给签名装置,其中,t2=E(d2)加密运算采用的公钥是签名辅助***的同态加密算法的公钥,或者是密钥协同生成***临时生成的同态加密算法的公私钥对中的公钥,对于后者,密钥协同生成***利用签名辅助***的密钥,对临时生成的同态加密算法的公私钥对中的私钥进行加密,形成加密后的私钥的密文dE,然后将dE同G2、t2一起发送给签名装置,其中签名辅助***的密钥包括对称密钥和公钥;
签名装置在[1,n-1]内随机选择一个整数d1,计算PA=[(d1)-1]G2-G,利用t2计算得到cA=E(d1d2),其中(d1)-1为d1的模n乘法逆,然后将d1、G2、t2销毁;
签名装置在不暴露cA及dA的情况下,通过与密钥协同生成***交互,验证确认cA对应的明文cAm有d1d2≡(1+dA)-1(mod n)且PA为[dA]G,若验证通过,则d1d2≡(1+dA)-1(mod n),PA=[dA]G,否则,转入出错处理。
15.一种权利要求1-12中任一项所述的签名者掌控签名制作数据的SM2数字签名生成方法的签名者掌控签名制作数据的SM2数字签名生成***,其特征是:
所述***包括所述签名装置、签名辅助***,当需要使用用户的SM2签名私钥dA对消息M进行数字签名时,所述名装置和签名辅助***按所述签名者掌控签名制作数据的SM2数字签名生成方法生成针对消息M的数字签名。
CN202210577362.1A 2022-05-25 2022-05-25 签名者掌控签名制作数据的sm2数字签名生成方法及*** Active CN114978549B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210577362.1A CN114978549B (zh) 2022-05-25 2022-05-25 签名者掌控签名制作数据的sm2数字签名生成方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210577362.1A CN114978549B (zh) 2022-05-25 2022-05-25 签名者掌控签名制作数据的sm2数字签名生成方法及***

Publications (2)

Publication Number Publication Date
CN114978549A true CN114978549A (zh) 2022-08-30
CN114978549B CN114978549B (zh) 2024-03-22

Family

ID=82956637

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210577362.1A Active CN114978549B (zh) 2022-05-25 2022-05-25 签名者掌控签名制作数据的sm2数字签名生成方法及***

Country Status (1)

Country Link
CN (1) CN114978549B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160344557A1 (en) * 2015-05-06 2016-11-24 Morpho Method for generating a message signature from a signature token encrypted by means of a homomorphic encryption function
CN106712942A (zh) * 2017-01-10 2017-05-24 武汉理工大学 基于秘密共享的sm2数字签名生成方法及***
CN106850198A (zh) * 2017-01-16 2017-06-13 武汉理工大学 基于多装置协同的sm2数字签名生成方法及***
CN107872322A (zh) * 2017-11-02 2018-04-03 武汉理工大学 基于同态加密的数字签名协同生成方法及***
CN110971411A (zh) * 2019-12-02 2020-04-07 南京壹证通信息科技有限公司 一种基于sotp技术对私钥乘加密的sm2同态签名方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160344557A1 (en) * 2015-05-06 2016-11-24 Morpho Method for generating a message signature from a signature token encrypted by means of a homomorphic encryption function
CN106712942A (zh) * 2017-01-10 2017-05-24 武汉理工大学 基于秘密共享的sm2数字签名生成方法及***
CN106850198A (zh) * 2017-01-16 2017-06-13 武汉理工大学 基于多装置协同的sm2数字签名生成方法及***
CN107872322A (zh) * 2017-11-02 2018-04-03 武汉理工大学 基于同态加密的数字签名协同生成方法及***
CN110971411A (zh) * 2019-12-02 2020-04-07 南京壹证通信息科技有限公司 一种基于sotp技术对私钥乘加密的sm2同态签名方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邓高宇;龙毅宏;: "基于iOS终端的SM2移动密码***", 软件, no. 02, 15 February 2018 (2018-02-15), pages 28 - 31 *

Also Published As

Publication number Publication date
CN114978549B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
US10211981B2 (en) System and method for generating a server-assisted strong password from a weak secret
US10530585B2 (en) Digital signing by utilizing multiple distinct signing keys, distributed between two parties
US11552792B2 (en) Systems and methods for generating signatures
WO2021042685A1 (zh) 一种区块链的交易方法、装置及***
US7634085B1 (en) Identity-based-encryption system with partial attribute matching
US9106410B2 (en) Identity based authenticated key agreement protocol
EP2807773A1 (en) System and method for securing private keys issued from distributed private key generator (d-pkg) nodes
US11374910B2 (en) Method and apparatus for effecting a data-based activity
JP2012253826A (ja) Idベース暗号化(ibe)に対して暗黙の証明証およびアプリケーションを生成する方法およびシステム
CN108551435B (zh) 一种具有匿名性的可验证加密群签名方法
CN114467280A (zh) 使用冷钱包生成数字签名
CN108494559B (zh) 一种基于半可信第三方的电子合同签订方法
CN114666032B (zh) 基于同态加密的区块链交易数据隐私保护方法
US11637817B2 (en) Method and apparatus for effecting a data-based activity
CN115314207A (zh) 一种sm2签名制作数据的安全可控使用方法及***
CN114389808A (zh) 一种基于SM9盲签名的OpenID协议设计方法
CN114978549B (zh) 签名者掌控签名制作数据的sm2数字签名生成方法及***
Kilciauskas et al. Authenticated key agreement protocol based on provable secure cryptographic functions
CN110572257B (zh) 基于身份的数据来源鉴别方法和***
CN115150062B (zh) 签名制作数据安全受控的sm9数字签名生成方法及***
CN115314208B (zh) 一种安全可控的sm9数字签名生成方法及***
CN115529140B (zh) 一种基于微信小程序的数字签名协同生成方法及***
CN115766019A (zh) 一种基于密文私钥的ecdsa数字签名生成方法及***
CN115865356A (zh) 一种ecdsa签名私钥的安全可控使用方法及***
Ekhtiarabadi et al. Verifiable identity-based mix network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20230628

Address after: Room 401a, building 4, yard 7, Shangdi 8th Street, Haidian District, Beijing 100085

Applicant after: ITRUSCHINA CO.,LTD.

Address before: 430070 Hubei Province, Wuhan city Hongshan District Luoshi Road No. 122

Applicant before: WUHAN University OF TECHNOLOGY

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant