CN108667619B - 一种sm9数字签名的白盒实现方法与装置 - Google Patents

一种sm9数字签名的白盒实现方法与装置 Download PDF

Info

Publication number
CN108667619B
CN108667619B CN201810445236.4A CN201810445236A CN108667619B CN 108667619 B CN108667619 B CN 108667619B CN 201810445236 A CN201810445236 A CN 201810445236A CN 108667619 B CN108667619 B CN 108667619B
Authority
CN
China
Prior art keywords
white
box
signature
calculating
generating
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.)
Active
Application number
CN201810445236.4A
Other languages
English (en)
Other versions
CN108667619A (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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 WHU filed Critical Wuhan University WHU
Priority to CN201810445236.4A priority Critical patent/CN108667619B/zh
Publication of CN108667619A publication Critical patent/CN108667619A/zh
Application granted granted Critical
Publication of CN108667619B publication Critical patent/CN108667619B/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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/083Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving central third party, e.g. key distribution center [KDC] or trusted third party [TTP]
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种SM9数字签名的白盒实现方法与装置,该方法包括以下步骤:1)生成白盒密钥:由密钥生成中心KGC产生身份为IDA的用户User的签名私钥,用户生成白盒密钥;2)生成白盒签名:身份为IDA的用户User生成消息M对应白盒签名;3)验证白盒签名:验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行验证。本发明实现了白盒安全的SM9数字签名生成,可以在不泄漏签名私钥的情况下生成正确的SM9数字签名。

Description

一种SM9数字签名的白盒实现方法与装置
技术领域
本发明涉及密码学技术,尤其涉及一种SM9数字签名的白盒实现方法与装置。
背景技术
数字签名是伴随着信息网络技术的发展而出现的一种安全保障技术,目的就是通过技术手段实现传统的纸面签字或者盖章的功能,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。数字签名是公钥密码体系中重要的一部分,在很多场合有着重要的作用。
SM9标识密码算法是一种基于双线性对的标识密码算法,它可以把用户的身份标识用以生成用户的公、私密钥对。SM9的应用与管理不需要数字证书、证书库或密钥库,主要用于数字签名、数据加密、密钥交换以及身份认证等。该算法于2015年发布为国家密码行业标准(GM/T 0044-2016)。
目前,绝大多数的签名方案都是基于黑盒攻击模型,在这种模型中,攻击者只能对方案机型黑盒访问,而不能知道程序运行时内部的状态。但是在现实中,存在白盒攻击,攻击者对运行程序的设备终端拥有完全的控制能力,攻击者可以对程序运行的二进制追踪、读取内存中的密钥、观察程序执行的中间结果、任意的静态分析以及改变计算结果等。
发明内容
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种SM9数字签名的白盒实现方法与装置,本发明方法由密钥生成中心KGC和用户User共同完成,既能保证签名的正确性,又能确保用户签名私钥的白盒安全性。
本发明解决其技术问题所采用的技术方案是:一种SM9数字签名的白盒实现方法,包括以下步骤:
1)生成白盒密钥
1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure BDA0001657025390000021
其中,ks是系统主私钥;n为循环群
Figure BDA0001657025390000024
Figure BDA0001657025390000025
的阶;
1.2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure BDA0001657025390000022
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
1.3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure BDA0001657025390000023
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
2)生成白盒签名
身份为IDA的用户User生成消息M对应白盒签名的步骤如下:
2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000031
Figure BDA0001657025390000032
2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000033
令S′=S1+S2
2.3)输出签名(h,S′),即为消息M对应白盒签名;
3)验证白盒签名
验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:
3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure BDA0001657025390000034
中,如果不是则验证不通过,否则进入下一步;
3.2)将h二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000041
3.3)计算u2=e(S′,P),计算
Figure BDA0001657025390000042
3.4)计算g=e(P1,Ppub-s),t=gh
3.5)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s,w=u·t;
3.6)计算h2=H2(M||w,n),若h2=h则验证通过。
一种SM9数字签名的白盒实现方法,包括以下步骤:
1)生成白盒密钥
1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure BDA0001657025390000043
其中,ks是系统主私钥;n为循环群
Figure BDA0001657025390000044
Figure BDA0001657025390000045
的阶;
1.2)由密钥生成中心KGC产生均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure BDA0001657025390000046
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
1.3)密钥生成中心KGC从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure BDA0001657025390000047
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
2)生成白盒签名
身份为IDA的用户User生成消息M对应白盒签名的步骤如下:
2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000051
Figure BDA0001657025390000052
2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000053
令S′=S1+S2
2.3)输出签名(h,S′),即为消息M对应白盒签名;
3)验证白盒签名
验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:
3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure BDA0001657025390000054
中,如果不是则验证不通过,否则进入下一步;
3.2)将h二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000055
3.3)计算u2=e(S′,P),计算
Figure BDA0001657025390000056
3.4)计算g=e(P1,Ppub-s),t=gh;其中,Ppub-s为系统主公钥;
3.5)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s,w=u·t;
3.6)计算h2=H2(M||w,n),若h2=h则验证通过。
按上述方案,所述步骤2)中,生成白盒签名的具体步骤如下:
身份为IDA的用户User使用两个设备P1和P2协同产生SM9数字签名,其中,设备P1保存元组{α12,…,αk}和{X1,X2,…,Xk},P2保存元组{Y1,Y2,…,Y256},签名过程中如下:
2.1)在设备P1中生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000061
和h=H2(M||w′,n),然后P1将h发送给P2
2.2)设h的二进制表示为h256r255…h2h1,在设备P2中计算
Figure BDA0001657025390000062
并将S2发送给P1
2.3)在设备P1中计算S′=S1+S2并输出签名(h,S′)。
一种SM9数字签名的白盒实现装置,包括:
白盒密钥生成模块,用于身份为IDA的用户User根据密钥生成中心KGC产生的签名私钥,生成白盒密钥;具体如下:
1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure BDA0001657025390000063
Figure BDA0001657025390000071
其中,ks是系统主私钥;n为循环群
Figure BDA0001657025390000072
Figure BDA0001657025390000073
的阶;
2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure BDA0001657025390000074
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure BDA0001657025390000075
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y255=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
4)用户User删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
白盒签名生成模块,用于身份为IDA的用户User生成消息M对应白盒签名;具体如下:以下步骤由用户User执行:
1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000076
Figure BDA0001657025390000077
2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000078
令S′=S1+S2
3)输出签名(h,S′),即为消息M对应白盒签名;
白盒签名验证模块,用于验证者Verifier对收到的消息M以及对应的白盒签名(h,S′)进行验证,具体如下:以下步骤由验证者Verifier执行:
1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure BDA0001657025390000081
中,如果不是则验证不通过,否则进入下一步;
2)将h二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000082
3)计算u2=e(S′,P),计算
Figure BDA0001657025390000083
4)计算g=e(P1,Ppub-s),t=gh;Ppub-s为系统主公钥;
5)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s,w=u·t;
6)计算h2=H2(M||w,n),若h2=h则验证通过。
本发明产生的有益效果是:
1.目前现有的签名方案都是基于黑盒安全的,一旦攻击者对方案进行白盒攻击,攻击者可以直接得到用户的私钥。本发明实现了白盒安全的SM9数字签名生成,可以在不泄漏签名私钥的情况下生成正确的SM9数字签名;
2.本发明方案通过KGC和用户的预计算,大大提高了签名方案的效率。
3.根据本发明方案的特性,本发明可以用作协同生成SM9数字签名,用户IDA可以使用两个设备P1和P2协同产生SM9数字签名,提高签名的安全度。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明公开了一种SM9数字签名的白盒实现方法,SM9是由国家密码管理局颁布的一种基于双线性映射(配对运算)的标识密码算法,其中的双线性映射(配对运算)为:
e:
Figure BDA0001657025390000091
时,其中
Figure BDA0001657025390000092
是加法循环群,
Figure BDA0001657025390000093
是一个乘法循环群,
Figure BDA0001657025390000094
Figure BDA0001657025390000095
的阶是素数n(注:本发明使用的参数参考SM9标准的参数,在SM9规范中,
Figure BDA0001657025390000096
的阶用的是大写字母N,本专利申请采用小写n)
本发明通过以下技术方案实现:密钥生成中心KGC和用户User参加算法生成,User使用盲化过的随机数和签名私钥对消息进行签名,最后User输出盲化过的的签名(h,S′)。
一、符号及定义
KGC:密钥生成中心
User:用户。
Figure BDA0001657025390000101
阶为素数n的加法循环群。
Figure BDA0001657025390000102
阶为素数n的乘法循环群。
e:从
Figure BDA0001657025390000103
Figure BDA0001657025390000104
的双线性对。
gu:乘法群
Figure BDA0001657025390000105
中g的u次幂。
H1(·),H2(·):由{0,1}*
Figure BDA0001657025390000106
的密码杂凑函数。
IDA:用户的标识,可以唯一确定用户的公钥。
DA:用户IDA的签名私钥。
mod n:模n运算。例如27mod 5≡2。
n:循环群
Figure BDA0001657025390000107
Figure BDA0001657025390000108
的阶,且n>2191为素数。
P1,P2:分别是群
Figure BDA0001657025390000109
Figure BDA00016570253900001010
的生成元。
[u]P:加法群
Figure BDA00016570253900001011
中元素P的u倍。
x||y:x与y的拼接,其中x和y是比特串或字节串。
[x,y]:不小于x且不大于y的整数的集合。
hid:签名私钥是用户在产生数字签名时需要用到的一个秘密值,不可泄露。
Π:连乘运算。例如
Figure BDA0001657025390000111
表示
Figure BDA0001657025390000112
Σ:连加运算。例如∑i=1,3,5[ui]P表示[u1]P+[u3]P+[u5]P。
本发明方法包括:生成白盒密钥、生成白盒签名和验证白盒签名3个步骤。其过程如下:
1)身份为IDA的用户User从KCG获得私钥DA=[t2]P1后,User执行如下步骤生成白盒密钥,这里第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure BDA0001657025390000113
ks是系统主私钥。
n为循环群
Figure BDA0001657025390000114
Figure BDA0001657025390000115
的阶,g=e(P1,Ppub-s),e为双线性对运算,P1
Figure BDA0001657025390000116
的生成元,Ppub-s为系统主公钥;
1.1)从{1,2,…,n-1}选择k(k≥256)个均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure BDA0001657025390000117
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};
1.2)从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure BDA0001657025390000118
和元组{Y1=-DA+[y1]DA,Y=-[2]DA+[y2]DA,…,Y255=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
1.3)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256}。
2)身份为IDA的用户User生成消息M对应白盒签名的步骤如下:
2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000121
Figure BDA0001657025390000122
2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000123
令S′=S1+S2
2.3)输出签名(h,S′)。
3)验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:
3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure BDA0001657025390000124
中,如果不是则验证不通过,否则进入下一步;
3.2)将h二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000125
3.3)计算u2=e(S′,P),计算
Figure BDA0001657025390000126
3.4)计算g=e(P1,Ppub-s),t=gh
3.5)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s,w=u·t;
3.6)计算h2=H2(M||w,n),若h2=h则验证通过。
进一步的,根据本方案的特性,本方案可以用作协同生成SM9数字签名。用户IDA可以使用两个设备P1和P2协同产生SM9数字签名,P1保存元组{α12,…,αk}和{X1,X2,…,Xk},P1保存元组{Y1,Y2,…,Y256},签名过程中如下:
(1)P1生成一个k比特的随机串r,假其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000131
和h=H2(M||w′,n)。P1将h发送给P2
(2)设h的二进制表示为h256r255…h2h1,P2计算
Figure BDA0001657025390000132
并将S2发送给P1
(3)P1计算S′=S1+S2并输出签名(h,S′)。
在本方案中,为了减少用户User的计算量和通讯开销,可由KGC选择白盒随机数{x1,x2,…,xi,…,xk}和{y1,y2,…,yi,…,y256}作为系统部分主私钥,使得所有用户产生白盒密钥时使用相同的主私钥。KGC计算元组
Figure BDA0001657025390000133
Figure BDA0001657025390000134
元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA}、元组
Figure BDA0001657025390000135
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA}。将元组{β12,…,β256}作为系统参数,保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥。
相应的,基于本发明的方法,还提供了一种SM9数字签名的白盒实现装置,包括:
白盒密钥生成模块,用于身份为IDA的用户User根据密钥生成中心KGC产生的签名私钥,生成白盒密钥;具体如下:
1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure BDA0001657025390000141
Figure BDA0001657025390000142
其中,ks是系统主私钥;n为循环群
Figure BDA0001657025390000143
Figure BDA0001657025390000144
的阶;
2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure BDA0001657025390000145
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure BDA0001657025390000146
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y255=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
4)用户User删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
白盒签名生成模块,用于身份为IDA的用户User生成消息M对应白盒签名;具体如下:以下步骤由用户User执行:
1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure BDA0001657025390000151
Figure BDA0001657025390000152
2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000153
令S′=S1+S2
3)输出签名(h,S′),即为消息M对应白盒签名;
白盒签名验证模块,用于验证者Verifier对收到的消息M以及对应的白盒签名(h,S′)进行验证,具体如下:以下步骤由验证者Verifier执行:
1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure BDA0001657025390000154
中,如果不是则验证不通过,否则进入下一步;
2)将h二进制表示为h256r255…h2h1,计算
Figure BDA0001657025390000155
3)计算u2=e(S′,P),计算
Figure BDA0001657025390000156
4)计算g=e(P1,Ppub-s),t=gh;Ppub-s为系统主公钥;
5)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s,w=u·t;
6)计算h2=H2(M||w,n),若h2=h则验证通过。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (4)

1.一种SM9数字签名的白盒实现方法,其特征在于,包括以下步骤:
1)生成白盒密钥
1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure FDA0002680751550000011
其中,ks是系统主私钥;n为循环群
Figure FDA0002680751550000012
Figure FDA0002680751550000013
的阶;P1、P2分别是群
Figure FDA0002680751550000014
的生成元;hid为签名私钥时用户在产生数字签名时用到的一个秘密值;H1(·)为由{0,1}*
Figure FDA0002680751550000015
的密码杂凑函数;
1.2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure FDA0002680751550000016
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
1.3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure FDA0002680751550000017
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
2)生成白盒签名
身份为IDA的用户User生成消息M对应白盒签名的步骤如下:
2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure FDA0002680751550000021
Figure FDA0002680751550000022
2.2)计算h=H2(M||w′,n),设其二进制表示为h256h255…h2h1,计算
Figure FDA0002680751550000023
令S′=S1+S2;H2(·)为由{0,1}*
Figure FDA0002680751550000024
的密码杂凑函数;
2.3)输出签名(h,S′),即为消息M对应白盒签名;
3)验证白盒签名
验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:
3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure FDA0002680751550000025
中,如果不是则验证不通过,否则进入下一步;
3.2)将h二进制表示为h256h255…h2h1,计算
Figure FDA0002680751550000026
3.3)计算g=e(P1,Ppub-s),t=gh;Ppub-s为系统主公钥;
3.4)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s
3.5)计算u2=e(S′,P),计算
Figure FDA0002680751550000027
w=u·t;
3.6)计算h2=H2(M||w,n),若h2=h则验证通过。
2.一种SM9数字签名的白盒实现方法,其特征在于,包括以下步骤:
1)生成白盒密钥
1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure FDA0002680751550000031
其中,ks是系统主私钥;n为循环群
Figure FDA0002680751550000032
Figure FDA0002680751550000033
的阶;P1、P2分别是群
Figure FDA0002680751550000034
的生成元;hid为签名私钥时用户在产生数字签名时用到的一个秘密值;H1(·)为由{0,1}*
Figure FDA0002680751550000035
的密码杂凑函数;
1.2)由密钥生成中心KGC产生均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure FDA0002680751550000036
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
1.3)密钥生成中心KGC从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure FDA0002680751550000037
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
2)生成白盒签名
身份为IDA的用户User生成消息M对应白盒签名的步骤如下:
2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure FDA0002680751550000041
Figure FDA0002680751550000042
2.2)计算h=H2(M||w′,n),设其二进制表示为h256h255…h2h1,计算
Figure FDA0002680751550000043
令S′=S1+S2;H2(·)为由{0,1}*
Figure FDA0002680751550000044
的密码杂凑函数;
2.3)输出签名(h,S′),即为消息M对应白盒签名;
3)验证白盒签名
验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:
3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure FDA0002680751550000045
中,如果不是则验证不通过,否则进入下一步;
3.2)将h二进制表示为h256h255…h2h1,计算
Figure FDA0002680751550000046
3.3)计算g=e(P1,Ppub-s),t=gh;其中,Ppub-s为系统主公钥;
3.4)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s
3.5)计算u2=e(S′,P),计算
Figure FDA0002680751550000047
w=u·t;
3.6)计算h2=H2(M||w,n),若h2=h则验证通过。
3.根据权利要求1或2所述的方法,其特征在于,所述步骤2)中,生成白盒签名的具体步骤如下:
身份为IDA的用户User使用两个设备P1和P2协同产生SM9数字签名,其中,设备P1保存元组{α12,…,αk}和{X1,X2,…,Xk},P2保存元组{Y1,Y2,…,Y256},签名过程中如下:
2.1)在设备P1中生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure FDA0002680751550000051
和h=H2(M||w′,n),然后P1将h发送给P2
2.2)设h的二进制表示为h256h255…h2h1,在设备P2中计算
Figure FDA0002680751550000052
并将S2发送给P1
2.3)在设备P1中计算S′=S1+S2并输出签名(h,S′)。
4.一种SM9数字签名的白盒实现装置,包括:
白盒密钥生成模块,用于身份为IDA的用户User根据密钥生成中心KGC产生的签名私钥,生成白盒密钥;具体如下:
1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数
Figure FDA0002680751550000053
Figure FDA0002680751550000054
其中,ks是系统主私钥;n为循环群
Figure FDA0002680751550000055
Figure FDA0002680751550000056
的阶;P1、P2分别是群
Figure FDA0002680751550000057
的生成元;hid为签名私钥时用户在产生数字签名时用到的一个秘密值;H1(·)为由{0,1}*
Figure FDA0002680751550000061
的密码杂凑函数;
2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组
Figure FDA0002680751550000062
和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;
3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组
Figure FDA0002680751550000063
和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y255=-[2255]DA+[y256]DA},其中元组{β12,…,β256}作为公开参数被公开;
4)用户User删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α12,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β12,…,β256};
白盒签名生成模块,用于身份为IDA的用户User生成消息M对应白盒签名;具体如下:以下步骤由用户User执行:
1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算
Figure FDA0002680751550000064
Figure FDA0002680751550000065
2)计算h=H2(M||w′,n),设其二进制表示为h256h255…h2h1,计算
Figure FDA0002680751550000066
令S′=S1+S2;H2(·)为由{0,1}*
Figure FDA0002680751550000067
的密码杂凑函数;
3)输出签名(h,S′),即为消息M对应白盒签名;
白盒签名验证模块,用于验证者Verifier对收到的消息M以及对应的白盒签名(h,S′)进行验证,具体如下:以下步骤由验证者Verifier执行:
1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群
Figure FDA0002680751550000071
中,如果不是则验证不通过,否则进入下一步;
2)将h二进制表示为h256h255…h2h1,计算
Figure FDA0002680751550000072
3)计算g=e(P1,Ppub-s),t=gh;其中,Ppub-s为系统主公钥;
4)计算h1=H1(IDA||hid,n),P=[h1]P2+Ppub-s
5)计算u2=e(S′,P),计算
Figure FDA0002680751550000073
w=u·t;
6)计算h2=H2(M||w,n),若h2=h则验证通过。
CN201810445236.4A 2018-05-10 2018-05-10 一种sm9数字签名的白盒实现方法与装置 Active CN108667619B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810445236.4A CN108667619B (zh) 2018-05-10 2018-05-10 一种sm9数字签名的白盒实现方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810445236.4A CN108667619B (zh) 2018-05-10 2018-05-10 一种sm9数字签名的白盒实现方法与装置

Publications (2)

Publication Number Publication Date
CN108667619A CN108667619A (zh) 2018-10-16
CN108667619B true CN108667619B (zh) 2020-11-24

Family

ID=63779024

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810445236.4A Active CN108667619B (zh) 2018-05-10 2018-05-10 一种sm9数字签名的白盒实现方法与装置

Country Status (1)

Country Link
CN (1) CN108667619B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109962783B (zh) * 2019-03-20 2020-08-25 武汉理工大学 基于递进计算的sm9数字签名协同生成方法及系统
CN110299998B (zh) * 2019-07-04 2020-09-04 武汉理工大学 借助中间参数的sm9数字签名协同生成方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104184588A (zh) * 2014-08-15 2014-12-03 同济大学 基于身份的不可拆分数字签名方法
WO2016155565A1 (en) * 2015-03-30 2016-10-06 Jintai Ding Improvements on multivariate digital signature schemes based on hfev- and new applications of multivariate digital signature schemes for white-box encryption
CN106612182A (zh) * 2016-12-22 2017-05-03 中国电子科技集团公司第三十研究所 一种基于余数系统的sm2白盒数字签名实现方法
CN107566128A (zh) * 2017-10-10 2018-01-09 武汉大学 一种两方分布式sm9数字签名生成方法与系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104184588A (zh) * 2014-08-15 2014-12-03 同济大学 基于身份的不可拆分数字签名方法
WO2016155565A1 (en) * 2015-03-30 2016-10-06 Jintai Ding Improvements on multivariate digital signature schemes based on hfev- and new applications of multivariate digital signature schemes for white-box encryption
CN106612182A (zh) * 2016-12-22 2017-05-03 中国电子科技集团公司第三十研究所 一种基于余数系统的sm2白盒数字签名实现方法
CN107566128A (zh) * 2017-10-10 2018-01-09 武汉大学 一种两方分布式sm9数字签名生成方法与系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
White-Box Implementation of the Identity-Based Signature Scheme in the IEEE P1363 Standard for Public Key Cryptography;Zhang Yudi 等;《IEICE TRANS. INF. & SYST.》;20200229;全文 *

Also Published As

Publication number Publication date
CN108667619A (zh) 2018-10-16

Similar Documents

Publication Publication Date Title
CN108809658B (zh) 一种基于sm2的身份基的数字签名方法与系统
CN108551392B (zh) 一种基于sm9数字签名的盲签名生成方法及系统
CN107579819B (zh) 一种sm9数字签名生成方法及系统
CN110912708B (zh) 一种基于sm9数字签名算法的环签名生成方法
CN109639439B (zh) 一种基于两方协同的ecdsa数字签名方法
CN107171788B (zh) 一种基于身份且签名长度恒定的在线离线聚合签名方法
CN112446052B (zh) 一种适用于涉密信息系统的聚合签名方法及系统
CN110880977A (zh) 一种安全高效的sm9环签名生成与验证方法
CN111147245A (zh) 一种区块链中使用国家密码进行加密的算法
CN114448641A (zh) 一种隐私加密方法、电子设备、存储介质以及芯片
CN108667619B (zh) 一种sm9数字签名的白盒实现方法与装置
CN112152813A (zh) 一种支持隐私保护的无证书内容提取签密方法
CN115664675A (zh) 基于sm2算法的可追踪环签名方法、系统、设备及介质
CN110034936B (zh) 一种可刺穿的数字签名方法
CN110932865A (zh) 一种基于sm2数字签名算法的可链接环签名生成方法
CN113014398B (zh) 基于sm9数字签名算法的聚合签名生成方法
CN108847933B (zh) 基于sm9密码算法的标识签发方法
CN114117547A (zh) 一种基于预计算表的sm9数字签名加速生成方法以及数字签名加速验证方法
CN114095162A (zh) 一种无证书用电信息采集系统连接验证方法及装置
CN111917550A (zh) 基于无证书聚类签名无双线性对的认证方法及系统
CN115174056B (zh) 一种基于sm9签名的变色龙签名生成方法及装置
CN113556233B (zh) 一种支持批验证的sm9数字签名方法
CN110932866B (zh) 一种基于sm2数字签名算法的环签名生成方法
CN114065233A (zh) 一种面向大数据和区块链应用的数字签名聚合方法
CN112243011A (zh) 一种签名验证方法、系统、电子设备及存储介质

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
GR01 Patent grant
GR01 Patent grant