基于SM2数字签名算法的白盒协同签名方法
未命名
10-21
阅读:64
评论:0
基于sm2数字签名算法的白盒协同签名方法
技术领域
1.本发明涉及的是一种信息安全领域的技术,具体是一种基于sm2数字签名算法的白盒协同签名方法。
背景技术:
2.在当前的密码应用环境下,白盒攻击者可以对算法运行的终端进行高度控制,通过搜索内存、控制内存状态等手段来轻易地获取密钥。现有的sm2数字签名算法的白盒实现无法适用标准的sm2签名验证算法,在实际应用过程中带来诸多不便;已有的协同签名方案中,协同方部分或全部知晓签名方的私钥信息,容易造成用户隐私的泄露。
技术实现要素:
3.本发明针对现有技术没有进行签名私钥的分解,无法针对签名方私钥丢失的情况作出保护的不足,提出一种基于sm2数字签名算法的白盒协同签名方法,将sm2数字签名算法的白盒实现与协同签名相结合,不仅具备抵抗白盒攻击的安全能力,同时具备协同签名在私钥保护方面的优势。
4.本发明是通过以下技术方案实现的:
5.本发明涉及一种基于sm2数字签名算法的白盒协同签名方法,在注册阶段,签名方生成双私钥,并基于双私钥计算得到公钥和五个签名查找表,之后签名方将公钥向所有验证方发布、将第三、第四和第五签名查找表发送给进行协同计算的协同方,协同方储存三个签名查找表,签名方本地储存第一和第二签名查找表,最后签名方将发送给协同方的查找表以及双私钥删除;在应用阶段,签名方与协同方分别通过各自储存的签名查找表进行协同签名以生成签名结果,之后签名方将签名结果与所签名的消息发送给验证方,验证方使用标准的sm2数字签名验证算法进行验证。
6.所述的sm2数字签名算法为国家密码管理局颁布的《sm2椭圆曲线公钥密码算法》第2部分中所介绍的签名算法,其规定了sm2椭圆曲线系统参数,包括有限域fq、椭圆曲线方程e(a,b)、椭圆曲线的基点g、基点g的阶数n。
7.所述的双私钥为d1和d2,d1,d2∈[1,n-1],其中:n为椭圆曲线基点g的阶数。
[0008]
所述的五个签名查找表为t1,t2,t3,t4,t5,其中:t1,t2,t3,t4的大小为λ
×
1,λ取大于2log2nn的整数,n为椭圆曲线中基点g的阶数,n为私钥在使用周期内可能签名的最多的消息数;t5的大小为l
×
1,l为n的比特长度。
[0009]
所述的签名查找表使用查找表生成算法得到,其具体包括:
[0010]
1)生成随机数ui∈[1,n-1],其中:i=0,1,
…
λ-1;
[0011]
2)计算第一签名查找表t1的表项,其第i行值为[ui·
(1+d2)]
·
g,i=0,1,
…
λ-1,其中:[x]=xmodn,
·
为椭圆曲线群上的点乘运算;
[0012]
3)计算第二签名查找表t2的表项,其第i行值为[(1+d1)-1
·
ui],i=0,1,
…
λ-1;
[0013]
4)生成随机数vi∈[1,n-1],其中:i=0,1,
…
λ-1;
[0014]
5)计算第三签名查找表t3的表项,其第i行值为[vi]
·
g,其中:i=0,1,
…
λ-1;
[0015]
6)计算第四签名查找表t4的表项,其第i行值为[(1+d1)-1
·
(1+d2)-1
·
vi],其中:i=0,1,
…
λ-1;
[0016]
7)计算第五签名查找表t5的表项,其第i行值为[(1+d1)-1
·
(1+d2)-1
·2i-1
],其中:i=0,1,
…
l-1;
[0017]
8)删除计算过程中生成的所有随机数ui和vi以及原始双私钥d1和d2。
[0018]
所述的公钥为pa,其满足pa=[(1+d1)
·
(1+d2)-1]
·
g,其中:g为椭圆曲线的基点。
[0019]
所述的协同签名结果使用签名生成算法进行计算得到,其具体包括以下计算过程:
[0020]
a)签名方按文档《sm2椭圆曲线公钥密码算法》定义生成za,计算其中hv为sm3杂凑算法,m为待签名的消息;
[0021]
所述的za由用户的可辨识标识、部分椭圆曲线系统参数、用户公钥组成。
[0022]
b)签名方均匀随机生成λ比特的0-1序列k=k
λ-1kλ-2
…
k1k0,对所有满足ki=1的i值,将第一签名查找表t1中对应的i行值相加,得到并将(x1,y1)和a)计算得到的e发送给协同方;
[0023]
c)协同方均匀随机生成λ比特的0-1序列k
′
=k
′
λ-1k′
λ-2
…k′1k
′0,对所有满足k
′i=1的i值,将第三签名查找表t3中对应的i行值相加,得到
[0024]
d)协同方判断当[r]
·
g+(x2,y2)=o时,返回步骤c)并重新均匀随机生成λ比特的0-1序列k
′
;否则执行步骤e),其中o为椭圆曲线群中的零元;
[0025]
e)协同方将签名方传送的(x1,y1)与步骤c)得到的(x2,y2)相加,得到)相加,得到后,计算r=(e+x1)mod n,当r=0时,返回步骤c)并重新均匀随机生成λ比特的0-1序列k
′
;否则执行步骤f);
[0026]
f)协同方对所有满足k
′i=1的i值,将第四签名查找表t4中对应的i行值相加,得到令r=r
l-1rl-2
…
r1r0,对所有满足ri=1的i值,将第五签名查找表t5中对应的i行值相加,得到计算s0=[s1+s
2-r],将r和s0发送给签名方。
[0027]
g)签名方对所有满足ki=1的i值,将第二签名查找表t2中对应的i行值相加,并与协同方传送的s3相加,得到当s=0或s+r=n成立时,返回步骤b)并重新均匀随机生成λ比特的0-1序列k;否则输出签名结果(r,s)。
[0028]
本发明涉及一种实现上述方法的系统,包括:签名终端、协同终端与验证终端,其中:在注册阶段,签名终端生成双私钥,并基于双私钥计算得到公钥和五个签名查找表,然后签名终端将公钥发送给验证终端,将第三、第四和第五签名查找表发送给协同终端,协同终端储存三个签名查找表,签名终端储存第一和第二签名查找表,最后签名终端将发送给协同终端的查找表以及双私钥删除;在应用阶段,签名终端与协同终端分别根据各自储存的签名查找表,使用签名生成算法进行协同签名计算以生成签名结果,之后签名终端将签名结果与所签名的消息发送给验证终端,验证终端使用标准的sm2数字签名验证算法进行
soar through the clear blue sky,their melodies filling the air.flowers bloom,painting the meadow with vibrant colors.nature's beauty is a source of endless inspiration."
[0044]
计算得到
[0045]
e=45377f32b6fe11591a6b2818794b2d7925edda410174789713fd0247b2a8cf9f
[0046]
步骤四:签名方和协同方根据签名查找表,使用签名生成算法进行协同计算得到最终的签名结果(r,s)。
[0047]
其中:签名过程中使用到的随机数为:
[0048]
k=775f5c732865701ae9349ea8729cde0bbade38204e63359a46e672a8d0a2fd5300692ab48f9ef732f5c3fa212b90c98229bbb79bece734a622154c904dce9a0f53d4a88b3e55
[0049]
k’=499b8a186c8ee6196954170eb8068593f0d764150a6d2e5d3fea7d9d0d33ac553eecd5c3f27a310115d283e49377820195c8e67781b6f112a625b14b747fa4cc13d06eba0917
[0050]
最终的签名结果为:
[0051]
r=45a79a854313e9c5c241157b822473e40005a93b0f9359c7205affe66775a8f9
[0052]
s=62df9e40d1b2aaaf208c61557cf37ef90edb0256f5ea8e54fa425e51a2a5e1e6
[0053]
步骤五:签名方将签名结果发送给验证方,验证方使用标准sm2签名验证算法进行验证,在本实施例中验证通过。
[0054]
可见,五张查找表在计算过程中完成了对双私钥d1和d2的代替,同时五张查找表自身也不存在泄露私钥相关信息的风险。
[0055]
t1和t3用于辅助计算(x1,y1)=k1·
[1+d2]
·
g+k2·
g,t1计算k1·
[1+d2]
·
g部分,t3计算k2·
g部分。t1的每一个表项都是[1+d2]
·
g与一个随机数相点乘的结果,t3的每一个表项都是g与一个随机数相点乘的结果,根据椭圆曲线离散对数问题,通过表项来计算得到其中的随机数是不可行的。在具体的计算过程中,通过一个随机数的指导,直接将t1和t3表项中的点乘结果各自相加,从而得到k1·
[1+d2]
·
g和k2·
g,这个过程中,k1和k2不存在泄露的风险。
[0056]
t2,t4,t5用于辅助计算s=(1+d1)-1
·
k1+(1+d1)-1
·
(1+d2)-1
·
k2+(1+d1)-1
·
(1+d2)-1
·
r-r,t2计算(1+da)-1
k1部分,t4计算(1+d1)-1
·
(1+d2)-1
·
k2部分,t5计算(1+d1)-1
·
(1+d2)-1
·
r部分。t2的每一个表项都是(1+d1)-1
与一个随机数相乘的结果,且随机数与t1中使用到的随机数按行对应相等;t4的每一个表项都是(1+d1)-1
·
(1+d2)-1
与一个随机数相乘的结果,且随机数与t3中使用到的随机数按行对应相等,由于攻击者无法知晓随机数的具体值,所以攻击者无法通过t2和t4的表项计算得到d1或d2的值。t5通过幂次分解的方法,将(1+d1)-1
·
(1+d2)-1
与2的各次幂相乘的结果按序存入t5的各行中,对于攻击者而言,其可以获取(1+d1)-1
·
(1+d2)-1
乘积结果的整体值,却无法分析得到d1和d2的具体值,这对于其攻击过程是没有帮助的。
[0057]
综上,本发明签名结果可以由签名方和协同方经过协同计算得到,任何一方都无法单独生成签名结果,因而即使有一方泄露私钥也不会导致安全风险。同时双方签名过程中使用的都是签名查找表,查找表能够对私钥进行隐藏和保护,任何一方即便运行在不安全的终端环境中,也可以抵抗白盒攻击。
[0058]
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同
的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
技术特征:
1.一种基于sm2数字签名算法的白盒协同签名方法,其特征在于,在注册阶段,签名方生成双私钥,并基于双私钥计算得到公钥和五个签名查找表,之后签名方将公钥向所有验证方发布、将第三、第四和第五签名查找表发送给进行协同计算的协同方,协同方储存三个签名查找表,签名方本地储存第一和第二签名查找表,最后签名方将发送给协同方的查找表以及双私钥删除;在应用阶段,签名方与协同方分别通过各自储存的签名查找表进行协同签名以生成签名结果,之后签名方将签名结果与所签名的消息发送给验证方,验证方使用标准的sm2数字签名验证算法进行验证;所述的双私钥为d1和d2,d1,d2∈[1,n-1],其中:n为椭圆曲线基点g的阶数;所述的五个签名查找表为t1,t2,t3,t4,t5,其中:t1,t2,t3,t4的大小为λ
×
1,λ取大于2log2nn的整数,n为椭圆曲线中基点g的阶数,n为私钥在使用周期内可能签名的最多的消息数;t5的大小为l
×
1,l为n的比特长度;所述的公钥为p
a
,其满足p
a
=[(1+d1)
·
(1+d2)-1]
·
g,其中:g为椭圆曲线的基点。2.根据权利要求1所述的基于sm2数字签名算法的白盒协同签名方法,其特征是,所述的签名查找表使用查找表生成算法得到,其具体包括:1)生成随机数u
i
∈[1,n-1],其中:i=0,1,
…
λ-1;2)计算第一签名查找表t1的表项,其第i行值为[u
i
·
(1+d2)]
·
g,i=0,1,
…
λ-1,其中:[x]=x mod n,
·
为椭圆曲线群上的点乘运算;3)计算第二签名查找表t2的表项,其第i行值为[(1+d1)-1
·
u
i
],i=0,1,
…
λ-1;4)生成随机数v
i
∈[1,n-1],其中:i=0,1,
…
λ-1;5)计算第三签名查找表t3的表项,其第i行值为[v
i
]
·
g,其中:i=0,1,
…
λ-1;6)计算第四签名查找表t4的表项,其第i行值为[(1+d1)-1
·
(1+d2)-1
·
v
i
],其中:i=0,1,
…
λ-1;7)计算第五签名查找表t5的表项,其第i行值为[(1+d1)-1
·
(1+d2)-1
·2i-1
],其中:i=0,1,
…
l-1;8)删除计算过程中生成的所有随机数u
i
和v
i
以及原始双私钥d1和d2。3.根据权利要求1所述的基于sm2数字签名算法的白盒协同签名方法,其特征是,所述的协同签名结果使用签名生成算法进行计算得到,其具体包括以下计算过程:a)签名方按文档《sm2椭圆曲线公钥密码算法》定义生成z
a
,计算其中其中h
v
为sm3杂凑算法,m为待签名的消息;所述的z
a
由用户的可辨识标识、部分椭圆曲线系统参数、用户公钥组成;b)签名方均匀随机生成λ比特的0-1序列k=k
λ-1
k
λ-2
…
k1k0,对所有满足k
i
=1的i值,将第一签名查找表t1中对应的i行值相加,得到并将(x1,y1)和a)计算得到的e发送给协同方;c)协同方均匀随机生成λ比特的0-1序列k
′
=k
′
λ-1
k
′
λ-2
…
k
′1k
′0,对所有满足k
′
i
=1的i值,将第三签名查找表t3中对应的i行值相加,得到d)协同方判断当[r]
·
g+(x2,y2)=o时,返回步骤c)并重新均匀随机生成λ比特的0-1序列k
′
;否则执行步骤e),其中o为椭圆曲线群中的零元;e)协同方将签名方传送的(x1,y1)与步骤c)得到的(x2,y2)相加,得到
后,计算r=(e+x1)mod n,当r=0时,返回步骤c)并重新均匀随机生成λ比特的0-1序列k
′
;否则执行步骤f);f)协同方对所有满足k
′
i
=1的i值,将第四签名查找表t4中对应的i行值相加,得到中对应的i行值相加,得到令r=r
l-1
r
l-2
…
r1r0,对所有满足r
i
=1的i值,将第五签名查找表t5中对应的i行值相加,得到计算s0=[s1+s
2-r],将r和s0发送给签名方;g)签名方对所有满足k
i
=1的i值,将第二签名查找表t2中对应的i行值相加,并与协同方传送的s3相加,得到当s=0或s+r=n成立时,返回步骤b)并重新均匀随机生成λ比特的0-1序列k;否则输出签名结果(r,s)。4.一种实现权利要求1-3中任一所述方法的基于sm2数字签名算法的白盒协同签名系统,其特征在于,包括:签名终端、协同终端与验证终端,其中:在注册阶段,签名终端生成双私钥,并基于双私钥计算得到公钥和五个签名查找表,然后签名终端将公钥发送给验证终端,将第三、第四和第五签名查找表发送给协同终端,协同终端储存三个签名查找表,签名终端储存第一和第二签名查找表,最后签名终端将发送给协同终端的查找表以及双私钥删除;在应用阶段,签名终端与协同终端分别根据各自储存的签名查找表,使用签名生成算法进行协同签名计算以生成签名结果,之后签名终端将签名结果与所签名的消息发送给验证终端,验证终端使用标准的sm2数字签名验证算法进行验证。
技术总结
一种基于SM2数字签名算法的白盒协同签名方法,在注册阶段,签名方生成双私钥,并基于双私钥计算得到公钥和五个签名查找表,之后签名方将公钥向所有验证方发布、将第三、第四和第五签名查找表发送给进行协同计算的协同方,协同方储存三个签名查找表,签名方本地储存第一和第二签名查找表,最后签名方将发送给协同方的查找表以及双私钥删除;在应用阶段,签名方与协同方分别通过各自储存的签名查找表进行协同签名以生成签名结果,之后签名方将签名结果与所签名的消息发送给验证方,验证方使用标准的SM2数字签名验证算法进行验证。本发明将SM2数字签名算法的白盒实现与协同签名相结合,不仅具备抵抗白盒攻击的安全能力,同时具备协同签名在私钥保护方面的优势。备协同签名在私钥保护方面的优势。备协同签名在私钥保护方面的优势。
技术研发人员:石一鹏 谷大武 张驰 陆海宁
受保护的技术使用者:上海交通大学
技术研发日:2023.08.21
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/