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

一种SM9数字签名的白盒实现方法与装置制造方法及图纸

技术编号:19186127 阅读:30 留言:0更新日期:2018-10-17 02:12
本发明专利技术公开了一种SM9数字签名的白盒实现方法与装置,该方法包括以下步骤:1)生成白盒密钥:由密钥生成中心KGC产生身份为IDA的用户User的签名私钥,用户生成白盒密钥;2)生成白盒签名:身份为IDA的用户User生成消息M对应白盒签名;3)验证白盒签名:验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行验证。本发明专利技术实现了白盒安全的SM9数字签名生成,可以在不泄漏签名私钥的情况下生成正确的SM9数字签名。

A white box implementation method and device for SM9 digital signature

The invention discloses a white-box implementation method and device for SM9 digital signature. The method comprises the following steps: 1) generating a white-box key: generating a signature private key of a user User who is an IDA by the key generation center KGC, and generating a white-box key by the user; 2) generating a white-box signature: generating a message M corresponding to a white-box by the user User who is an IDA Signature; 3) Verify the white-box signature: Verifier receives the message M and the corresponding white-box signature (h, S'). The invention realizes the generation of SM9 digital signature with white box security, and can generate a correct SM9 digital signature without revealing the private key of the signature.

【技术实现步骤摘要】
一种SM9数字签名的白盒实现方法与装置
本专利技术涉及密码学技术,尤其涉及一种SM9数字签名的白盒实现方法与装置。
技术介绍
数字签名是伴随着信息网络技术的发展而出现的一种安全保障技术,目的就是通过技术手段实现传统的纸面签字或者盖章的功能,用于鉴定签名人的身份以及对一项电子数据内容的认可。它还能验证出文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。数字签名是公钥密码体系中重要的一部分,在很多场合有着重要的作用。SM9标识密码算法是一种基于双线性对的标识密码算法,它可以把用户的身份标识用以生成用户的公、私密钥对。SM9的应用与管理不需要数字证书、证书库或密钥库,主要用于数字签名、数据加密、密钥交换以及身份认证等。该算法于2015年发布为国家密码行业标准(GM/T0044-2016)。目前,绝大多数的签名方案都是基于黑盒攻击模型,在这种模型中,攻击者只能对方案机型黑盒访问,而不能知道程序运行时内部的状态。但是在现实中,存在白盒攻击,攻击者对运行程序的设备终端拥有完全的控制能力,攻击者可以对程序运行的二进制追踪、读取内存中的密钥、观察程序执行的中间结果、任意的静态分析以及改变计算结果等。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中的缺陷,提供一种SM9数字签名的白盒实现方法与装置,本专利技术方法由密钥生成中心KGC和用户User共同完成,既能保证签名的正确性,又能确保用户签名私钥的白盒安全性。本专利技术解决其技术问题所采用的技术方案是:一种SM9数字签名的白盒实现方法,包括以下步骤:1)生成白盒密钥1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数其中,ks是系统主私钥;n为循环群和的阶;1.2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;1.3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β1,β2,…,β256}作为公开参数被公开;1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α1,α2,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β1,β2,…,β256};2)生成白盒签名身份为IDA的用户User生成消息M对应白盒签名的步骤如下:2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算和2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算令S′=S1+S2;2.3)输出签名(h,S′),即为消息M对应白盒签名;3)验证白盒签名验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群中,如果不是则验证不通过,否则进入下一步;3.2)将h二进制表示为h256r255…h2h1,计算3.3)计算u2=e(S′,P),计算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,第二个临时数其中,ks是系统主私钥;n为循环群和的阶;1.2)由密钥生成中心KGC产生均匀分布的随机数{x1,x2,…,xk},并计算元组和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;1.3)密钥生成中心KGC从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β1,β2,…,β256}作为公开参数被公开;1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α1,α2,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β1,β2,…,β256};2)生成白盒签名身份为IDA的用户User生成消息M对应白盒签名的步骤如下:2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算和2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算令S′=S1+S2;2.3)输出签名(h,S′),即为消息M对应白盒签名;3)验证白盒签名验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群中,如果不是则验证不通过,否则进入下一步;3.2)将h二进制表示为h256r255…h2h1,计算3.3)计算u2=e(S′,P),计算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保存元组{α1,α2,…,αk}和{X1,X2,…,Xk},P2保存元组{Y1,Y2,…,Y256},签名过程中如下:2.1)在设备P1中生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算和h=H2(M||w′,n),然后P1将h发送给P2;2.2)设h的二进制表示为h256r255…h2h1,在设备P2中计算并将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,第二个临时数其中,ks是系统主私钥;n为循环群和的阶;2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组和元组{X1=[x1]本文档来自技高网...

【技术保护点】
1.一种SM9数字签名的白盒实现方法,其特征在于,包括以下步骤:1)生成白盒密钥1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数

【技术特征摘要】
1.一种SM9数字签名的白盒实现方法,其特征在于,包括以下步骤:1)生成白盒密钥1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]P1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数其中,ks是系统主私钥;n为循环群和的阶;1.2)用户User从{1,2,…,n-1}选择k个均匀分布的随机数{x1,x2,…,xk},并计算元组和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;1.3)用户User从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β1,β2,…,β256}作为公开参数被公开;1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α1,α2,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β1,β2,…,β256};2)生成白盒签名身份为IDA的用户User生成消息M对应白盒签名的步骤如下:2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算和2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算令S′=S1+S2;2.3)输出签名(h,S′),即为消息M对应白盒签名;3)验证白盒签名验证者Verifier收到消息M以及对应的白盒签名(h,S′)后执行如下验证步骤:3.1)检查h是否属于集合{1,2,…,n-1}中,如果不是则验证不通过,否则检查S′是否属于群中,如果不是则验证不通过,否则进入下一步;3.2)将h二进制表示为h256r255…h2h1,计算3.3)计算u2=e(S′,P),计算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则验证通过。2.一种SM9数字签名的白盒实现方法,其特征在于,包括以下步骤:1)生成白盒密钥1.1)由密钥生成中心KGC产生身份为IDA的用户User的签名私钥DA,DA=[t2]p1;设定第一个临时数t1=H1(IDA||hid,n)+ks,第二个临时数其中,ks是系统主私钥;n为循环群和的阶;1.2)由密钥生成中心KGC产生均匀分布的随机数{x1,x2,…,xk},并计算元组和元组{X1=[x1]DA,X2=[x2]DA,…,Xk=[xk]DA};其中,k≥256;1.3)密钥生成中心KGC从{1,2,…,n-1}选择256个均匀分布的随机数{y1,y2,…,yi,…,y256},并计算元组和元组{Y1=-DA+[y1]DA,Y2=-[2]DA+[y2]DA,…,Y256=-[2255]DA+[y256]DA},其中元组{β1,β2,…,β256}作为公开参数被公开;1.4)删除随机数组{x1,x2,…,xk}和{y1,y2,…,yi,…,y256},保留元组{α1,α2,…,αk}、{X1,X2,…,Xk}和{Y1,Y2,…,Y256}为白盒密钥,公开元组{β1,β2,…,β256};2)生成白盒签名身份为IDA的用户User生成消息M对应白盒签名的步骤如下:2.1)生成一个k比特的随机串r,设其二进制表示为rk…r2r1,并计算和2.2)计算h=H2(M||w′,n),设其二进制表示为h256r255…h2h1,计算令S′=S1+S2;2.3)输出签名(h,S′),即为消息M对应白盒签名;...

【专利技术属性】
技术研发人员:何德彪张语荻张宇波陈泌文
申请(专利权)人:武汉大学
类型:发明
国别省市:湖北,42

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

1