一种基于余数系统的SM2白盒数字签名实现方法技术方案

技术编号:15280191 阅读:105 留言:0更新日期:2017-05-05 07:47
本发明专利技术提供了一种基于余数系统的SM2白盒数字签名实现方法。本方法针对于不可信环境中密钥运行不安全,恶意攻击者可通过白盒攻击手段获取系统密钥的问题展开研究,通过使用余数系统实现大数的拆分,从而降低密钥表的大小;通过使用置乱混淆确保中间结果对攻击者不可见;通过使用云端的随机因子确保终端密钥运算关系的未知性,实现了终端签名运算过程中的签名私钥安全,同时可使用标准的SM2验签算法进行验证。本发明专利技术所需存储空间小,计算效率高,安全性好,具有很强的实用性。

Method for realizing SM2 white box digital signature based on residue number system

The invention provides a method for realizing SM2 white box digital signature based on remainder system. The method for the key is not in the trusted environment safety, of a malicious attacker can obtain the system key through the white box attack means, split by using residue number systems to achieve large numbers, thereby reducing the size of the table key; through the use of scrambling to ensure the intermediate results for the attacker not confused by the random factor using cloud visible; to ensure that the unknown terminal key operation relations, realizes terminal signature operation in the process of signature private key security, also can use the standard SM2 signature verification algorithm is verified. The invention has the advantages of small storage space, high calculation efficiency, good safety and strong practicability.

【技术实现步骤摘要】

本专利技术涉及信息安全
,特别是涉及一种基于余数系统的SM2白盒数字签名实现方法
技术介绍
现有软件加密算法,密钥均是直接出现在计算平台的内存之中,攻击者可通过恶意软件等实现密钥的窃取,不能应对已有的白盒攻击手段;现有的硬件加密算法,能较好的保证密钥计算的安全性,但相对使用成本较高,通用性较差,对于部分安全性要求相对较低的应用场景无法使用;同时还有部分研究机构提出了基于云加端部分密钥和密钥分散存储策略的软件加密算法,但云加端的策略无法抵抗本地私钥的泄露,还存储云端与终端的鉴权问题,密钥分散存储策略在进行密钥运算时必须合成密钥,内存中同样存在密钥完整明文。
技术实现思路
为解决上述问题,本专利技术提供了一种基于余数系统的SM2白盒数字签名实现方法,所述方法适用的系统包括客户端和服务器,所述系统的系统模数为n,辅助模数为mr所选取椭圆曲线的基点为G,签名消息为M其特征在于,包括如下步骤:步骤一:客户端选取公钥d、私钥P。选定一个余数系统,素数基为β=(p1,p2,...,pt),基β的动态范围满足ω=p1p2p3…pt≥2768。步骤二:客户端生成第一私钥查找表、第二私钥查找表。具体方法为:步骤2.1:随机选取两个非线性密钥置换表,分别记为Sbox1、Sbox2,并通过服务器的公钥将自己的客户端ID和Sbox1发送给服务器进行保存。步骤2.2:使用余数系统将公钥P转化为Pi,其中i=1,…,t,r,并生成第一私钥查找表Table1,i(i=1,...,t,r),生成方法为:随机遍历产生两个随机数N1和N2,其中N2,N1∈[1,n-1],通过余数系统将其分别转化为N1i和N2i,计算ui=sbox2(N1,i×sbox1-1(sbox1(N2,i))modpi),将遍历产生的所有ui作为表Table1,i(i=1,...,t,r)的元素。步骤2.3:使用私钥d和余数系统生成第二私钥查找表Table2,i(i=1,...,t,r),生成方法为:随机遍历产生两个随机数L1和L2,其中L2,L1∈[1,n-1],通过余数系统将其分别转化为L1i和L2i,同时将私钥d转换为di,计算si=di×(sbox2-1(L1i)-L2i×di)modpi,将遍历产生的所有si作为表Table2,i(i=1,...,t,r)的元素;步骤三:客户端进行签名,具体方法为:步骤3.1:客户端计算M’=M||ZA;其中,M为签名消息,ZA为客户端的身份标识。步骤3.2:客户端用杂凑函数计算消息摘要e=Hv(M’)。步骤3.3:客户端产生第一随机数k1∈[1,n-1];步骤3.4:客户端计算椭圆曲线点Q1=[k1]*G,并将e和Q1发送给服务器;其中,步骤3.5:服务器产生第二随机数k2∈[1,n-1];步骤3.6:服务器计算椭圆曲线点(x1,y1)=[k2]*Q1;步骤3.7:服务器计算第一部分签名r=(x1+e)modn,将第二随机数k2基于基{β|pr本文档来自技高网...
一种基于余数系统的SM2白盒数字签名实现方法

【技术保护点】
一种基于余数系统的SM2白盒数字签名实现方法,所述方法适用的系统包括客户端和服务器,所述系统的系统模数为n,辅助模数为mr,所选取椭圆曲线的基点为G,签名消息为M,其特征在于,包括如下步骤:步骤一:客户端选取公钥d、私钥P;选定一个余数系统,素数基为β=(p1,p2,...,pt),基β的动态范围满足ω=p1p2p3…pt≥2768;步骤二:客户端生成第一私钥查找表、第二私钥查找表;具体方法为:步骤2.1:随机选取两个非线性密钥置换表,分别记为Sbox1、Sbox2,并通过服务器的公钥将自己的客户端ID和Sbox1发送给服务器进行保存;步骤2.2:使用余数系统将公钥P转化为Pi,其中i=1,…,t,r,并生成第一私钥查找表Table1,i(i=1,...,t,r),生成方法为:随机遍历产生两个随机数N1和N2,其中N2,N1∈[1,n‑1],通过余数系统将其分别转化为N1i和N2i,计算ui=sbox2(N1,i×sbox1‑1(sbox1(N2,i))modpi),将遍历产生的所有ui作为表Table1,i(i=1,...,t,r)的元素;步骤2.3:使用私钥d和余数系统生成第二私钥查找表Table2,i(i=1,...,t,r),生成方法为:随机遍历产生两个随机数L1和L2,其中L2,L1∈[1,n‑1],通过余数系统将其分别转化为L1i和L2i,同时将私钥d转换为di,计算si=di×(sbox2‑1(L1i)‑L2i×di)mod pi,将遍历产生的所有si作为表Table2,i(i=1,...,t,r)的元素;步骤三:客户端进行签名,具体方法为:步骤3.1:客户端计算M’=M||ZA;其中,M为签名消息,ZA为客户端的身份标识;步骤3.2:客户端用杂凑函数计算消息摘要e=Hv(M’);步骤3.3:客户端产生第一随机数k1∈[1,n‑1];步骤3.4:客户端计算椭圆曲线点Q1=[k1]*G,并将e和Q1发送给服务器;其中,步骤3.5:服务器产生第二随机数k2∈[1,n‑1];步骤3.6:服务器计算椭圆曲线点(x1,y1)=[k2]*Q1;步骤3.7:服务器计算第一部分签名r=(x1+e)mod n,将第二随机数k2基于基{β|pr}用余数系统表示为k2=(k2,1,...,k2,t|k2,r),通过Sbox1进行混淆,然后将r和Sbox1(k2)=[sbox1(k2,1),sbox1(k2,2),...,sbox1(k2,t)|sbox1(k2,r)]发送给客户端;步骤3.8:客户端将第一随机数K1和r基于基{β|pr}用余数系统表示为k1=(k1,1,k1,2,...,k1,t|k1,r)和r=(r1,r2,...,rt|rr);步骤3.9:客户端使用第一私钥查找表Table1,i(i=1,...,t,r)计算中间值ui=sbox2(k1,i×sbox1‑1(sbox1(k2,i))modpi);步骤4.0:客户端使用第二私钥查找表Table2,i(i=1,...,t,r)计算si=di×(sbox2‑1(ui)‑ri×dA,i)modpi,其中私钥dA隐藏在第二私钥查找表Table2,i中;步骤4.1:客户端利用中国剩余定理恢复出s;步骤4.3:客户端计算s′=s mod n,s′即为第二部分签名值;步骤五:输出消息M和签名。...

【技术特征摘要】
1.一种基于余数系统的SM2白盒数字签名实现方法,所述方法适用的系统包括客户端和服务器,所述系统的系统模数为n,辅助模数为mr,所选取椭圆曲线的基点为G,签名消息为M,其特征在于,包括如下步骤:步骤一:客户端选取公钥d、私钥P;选定一个余数系统,素数基为β=(p1,p2,...,pt),基β的动态范围满足ω=p1p2p3…pt≥2768;步骤二:客户端生成第一私钥查找表、第二私钥查找表;具体方法为:步骤2.1:随机选取两个非线性密钥置换表,分别记为Sbox1、Sbox2,并通过服务器的公钥将自己的客户端ID和Sbox1发送给服务器进行保存;步骤2.2:使用余数系统将公钥P转化为Pi,其中i=1,…,t,r,并生成第一私钥查找表Table1,i(i=1,...,t,r),生成方法为:随机遍历产生两个随机数N1和N2,其中N2,N1∈[1,n-1],通过余数系统将其分别转化为N1i和N2i,计算ui=sbox2(N1,i×sbox1-1(sbox1(N2,i))modpi),将遍历产生的所有ui作为表Table1,i(i=1...

【专利技术属性】
技术研发人员:白健周洁安红章
申请(专利权)人:中国电子科技集团公司第三十研究所
类型:发明
国别省市:四川;51

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

1