【技术实现步骤摘要】
一种ECDSA签名私钥的安全可控使用方法及系统
[0001]本专利技术属于密码
,特别是一种ECDSA签名私钥的安全可控使用方法及系统。
技术介绍
[0002]对于没有密码硬件存放签名私钥、使用签名私钥进行密码运算的用户终端计算环境(如个人电脑、手机、平板电脑等移动终端),常常采用基于秘密共享的数字签名协同生成方案来保证签名私钥以及生成的数字签名的安全性。ECDSA(Elliptic Curve Digital Signature Algorithm)是目前国际上广泛采用的一种基于椭圆曲线点群的数字签名算法,简单说明如下(详细参见“Standards for Efficient Cryptography,SEC 1:Elliptic Curve Cryptography”,Certicom Research,May 21,2009Version 2.0中的“4.1Elliptic Curve Digital Signature Algorithm”):
[0003]ECDSA的椭圆曲线点群(子群)的阶或基点G的阶为素数n,用户的签名私钥d
U
为[1,n
‑
1]内随机选择的一个整数,公钥为Q
U
=d
U
G;针对消息M签名时,先利用散列函数计算得到消息M的散列值e(实际上,e是从消息M的散列值H=H(M)转化、导出的整数,但通常简单地说e为消息M的散列值,本专利技术描述也如此);在[1,n
‑
1]内随机选择一个整数k, ...
【技术保护点】
【技术特征摘要】
1.一种ECDSA签名私钥的安全可控使用方法,其特征是:用户终端有Q
U
=d
U
G,有秘密d
B
=(bd
U
)mod n,有或能得到S
B
=E(b),其中d
U
为用户的ECDSA签名私钥,G为ECDSA椭圆曲线点群的基点,Q
U
为用户的ECDSA签名私钥d
U
对应的公钥,b为[1,n
‑
1]内的整数秘密,n为基点G的阶,n为素数,E(
·
)是采用同态加密算法的加密运算;所述同态加密算法为加法同态加密算法或全同态加密算法;签名辅助装置或系统有与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1,或者与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1经采用签名辅助装置或系统的密钥加密为密文T
sk1
,其中对私钥SK1加密所采用的签名辅助装置或系统的密钥包括对称密钥或公钥,而用户终端还保存有与加密运算E(
·
)所采用的公钥对应的进行解密运算的私钥SK1的密文T
sk1
;用户终端没有且无法得到b;签名辅助装置或系统没有b且无法得到b,或者签名辅助装置或系统有或能得到b;用户终端能得到S
B
=E(b)的情形包括在数字签名时,签名辅助装置或系统将S
B
提交给用户终端;签名辅助装置或系统能得到b的情形包括在数字签名时,用户终端将S
B
提交给签名辅助装置或系统,由签名辅助装置或系统解密S
B
得到b;用户终端和签名辅助装置或系统之外的装置、系统没有b;若签名辅助装置或系统没有b且无法得到b,则S
B
作为秘密在用户终端安全存储,并受到安全保护;若签名辅助装置或系统没有b且无法得到b,则取G
b
=b
‑1G,b
‑1为b的模n乘法逆,且用户终端和签名辅助装置或系统中至少有一个有G
b
,G
b
为二者之间的非秘密;若签名辅助装置或系统有或能得到b,则取G
b
=G;所述用户终端是用户的计算装置;所述签名辅助装置或系统是辅助、协助用户终端完成数字签名生成、计算的计算装置或系统;当需要使用用户的ECDSA签名私钥d
U
针对消息M进行数字签名时,用户终端和签名辅助装置或系统按如下方式生成针对消息M的数字签名:用户终端利用消息M和散列函数计算得到用于数字签名计算的消息M的散列值e,将e发送给签名辅助装置或系统,或者,签名辅助装置或系统利用消息M和散列函数计算得到用于数字签名计算的消息M的散列值e,将e发送给用户终端;用户终端在[1,n
‑
1]区间内随机选择一个整数k1,其中n为基点G的阶;签名辅助装置或系统在[1,n
‑
1]区间内随机选择一个整数k2;用户终端和签名辅助装置或系统在不暴露各自秘密k1、k2的情况下完成如下计算:用户终端在确保签名辅助装置或系统不重新选择k2的情况下,通过与签名辅助装置或系统交互计算得到R=k1k2G
b
;签名辅助装置或系统在确保用户终端不重新选择k1的情况下,通过与用户终端交互计算得到R
f
=k1k2G
b
;或者,用户终端在确保签名辅助装置或系统不重新选择k2的情况下,通过与签名辅助装置或系统交互计算得到R=(k1+k2)G
b
;
签名辅助装置或系统在确保用户终端不重新选择k1的情况下,通过与用户终端交互计算得到R
f
=(k1+k2)G
b
;若R和/或R
f
为零元,则用户终端、签名辅助装置或系统重新选择k1、k2,重新计算R、R
f
,直到R和R
f
不为零元;用户终端计算r=x
R mod n,其中x
R
取自(x
R
,y
R
)=R;签名辅助装置或系统计算r
f
=x
Rf mod n,其中x
Rf
取自(x
Rf
,y
Rf
)=R
f
;用户终端和签名辅助装置或系统检查r和/或r
f
是否为0,若是,则用户终端和签名辅助装置或系统重新选择k1、k2,重新计算R、R
f
,重新计算r、r
f
,直到r和r
f
都不为0;用户终端和签名辅助装置或系统分别检查是否会出现(e+rd
U
)mod n=0和/或(e+r
f
d
U
)mod n=0的情况,即是否会出现s=0的情况,其中s是将要计算生成的数字签名(r,s)中的参数s;若是,则用户终端和签名辅助装置或系统重新选择k1、k2,重新计算R、R
f
,重新计算r、r
f
,直到不会出现(e+rd
U
)mod n=0和/或(e+r
f
d
U
)mod n=0的情况,或者,转入出错处理;若不会出现(e+rd
U
)mod n=0和/或(e+r
f
d
U
)mod n=0的情况,则进行后续计算处理;用户终端按如下方式之一计算s1:s1计算方式一:R、R
f
采用的计算式为R=k1k2G
b
、R
f
=k1k2G
b
;用户终端在[1,n
‑
1]内随机选择一个整数q,利用q、e、r、S
B
、d
B
、k1通过同态加密算法计算得到:s
10
=E(((k1)
‑1eb+q)(mod n)),s
11
=((k1)
‑1rd
B
‑
q)mod n,或者,s
10
=E(((k1)
‑1(eb+q))(mod n)),s
11
=((k1)
‑1(rd
B
‑
q))mod n,或者,s
10
=E(((k1)
‑1e(b+q))(mod n)),s
11
=((k1)
‑1(rd
B
‑
eq))mod n,其中(k1)
‑1为k1的模n乘法逆;s
10
、s
11
数值对(s
10
,s
11
)构成s1;s1计算方式二:R、R
f
采用的计算式为R=k1k2G
b
、R
f
=k1k2G
b
;用户终端利用e、r、S
B
、d
B
、k1通过同态加密算法计算得到:s1=E(((k1)
‑1(eb+rd
B
))(mod n));s1计算方式三:R、R
f
采用的计算式为R=k1k2G
b
、R
f
=k1k2G
b
;E(
·
)对应的同态加密算法是全同态加密算法;签名辅助装置或系统计算c2=E((k2)
‑1),其中(k2)
‑1为k2的模n乘法逆,将c2发送给用户终端;用户终端利用e、r、S
B
、d
B
、k1、c2通过同态加密算法计算得到:s1=E(((k1k2)
‑1(eb+rd
B
))(mod n)),其中(k1k2)
‑1为k1k2的模n乘法逆;s1计算方式四:R、R
f
采用的计算式为R=(k1+k2)G
b
、R
f
=(k1+k2)G
b
;签名辅助装置或系统计算c2=E(k2),将c2发送给用户终端;用户终端在[1,n
‑
1]内随机选择一个整数q,利用q、e、r、S
B
、d
B
、k1、c2通过同态加密算法
计算得到:s
10
=E((q(k1+k2))(mod n)),s
11
=E(q(eb+rd
B
)(mod n));s
10
、s
11
数值对(s
10
,s
11
)构成s1;计算得到s1后,用户终端将s1发送给签名辅助装置或系统;若与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1经采用签名辅助装置或系统的密钥加密为密文T
sk1
保存在用户终端,则用户终端还将T
sk1
发送给签名辅助装置或系统,而签名辅助装置或系统解密T
sk1
得到与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1;若签名辅助装置或系统没有b且无法得到b,即G
b
=b
‑1G,则:对于s1计算方式一,签名辅助装置或系统使用私钥SK1解密数值对s1中的s
10
,得到s
10
的明文s
12
,计算s=((k2)
‑1(s
11
+s
12
))mod n;对于s1计算方式二,签名辅助装置或系统使用私钥SK1解密s1,得到s1的明文s
12
,计算s=((k2)
‑1s
12
)mod n;对于s1计算方式三,签名辅助装置或系统使用私钥SK1解密s1,得到s1的明文s
12
,计算s=s
12 mod n;对于s1计算方式四,签名辅助装置或系统使用私钥SK1解密数值对s1中的s
10
、s
11
,分别得到s
10
的明文s
12
,s
11
的明文s
13
,计算s=((s
12
)
‑1s
13
)mod n,其中(s
12
)
‑1为s
12
的模n乘法逆;若签名辅助装置或系统有或能得到b,即G
b
=G,则:对于s1计算方式一,签名辅助装置或系统使用私钥SK1解密数值对s1中的s
10
,得到s
10
的明文s
12
,计算s=((bk2)
‑1(s
11
+s
12
))mod n,其中(bk2)
‑1为bk2的模n乘法逆;对于s1计算方式二,签名辅助装置或系统使用私钥SK1解密s1,得到s1的明文s
12
,计算s=((bk2)
‑1s
12
)mod n;对于s1计算方式三,签名辅助装置或系统使用私钥SK1解密s1,得到s1的明文s
12
,计算s=b
‑1s
12 mod n;对于s1计算方式四,签名辅助装置或系统使用私钥SK1解密数值对s1中的s
10
、s
11
,分别得到s
10
的明文s
12
,s
11
的明文s
13
,计算s=((bs
12
)
‑1s
13
)mod n,其中(bs
12
)
‑1为bs
12
的模n乘法逆;签名辅助装置或系统将s返回给用户终端;在将s返回给用户终端之前,签名辅助装置或系统验证s是否是使用e、k1、k2、r
f
和公钥Q
U
对应的私钥d
U
按ECDSA的计算方式计算得到,若是,则继续,否则,转入出错处理;用户终端验证s是否是使用e、k1、k2、r和公钥Q
U
对应的私钥d
U
按ECDSA数字签名的计算方式计算得到,若验证通过,则(r,s)为消息M的数字签名,否则,转入出错处理;在以上采用同态加密算法的加密运算E(
·
)的计算式中,a(mod n),其中a为一个整数,表示与a模n同余的整数;所述签名辅助装置或系统在辅助、协助用户终端完成数字签名的生成之前鉴别确认使用用户终端的用户即签名者是公钥Q
U
的拥有者,或者依赖调用签名辅助装置或系统的系统先鉴别确认使用用户终端的用户即签名者是公钥Q
U
的拥有者;所述用户终端通过其内实施密码功能的密码程序或密码模块或密码组件实施以上所述数字签名计算、生成步骤,实施ECDSA数字签名功能。2.根据权利要求1所述的ECDSA签名私钥的安全可控使用方法,其特征是:
用户终端和签名辅助装置或系统分别检查是否会出现(e+rd
U
)mod n=0和/或(e+r
f
d
U
)mod n=0的情况的一种方法如下:用户终端检查eG+rQ
U
是否是零元,若是,则会出现(e+rd
U
)mod n=0的情况,否则不会;签名辅助装置或系统检查eG+r
f
Q
U
是否是零元,若是,则会出现(e+r
f
d
U
)mod n=0的情况,否则不会。3.根据权利要求1所述的ECDSA签名私钥的安全可控使用方法,其特征是:签名辅助装置或系统验证s是否是使用e、k1、k2、r
f
和公钥Q
U
对应的私钥d
U
按ECDSA的计算方式计算得到的方法包括:签名辅助装置或系统检查验证(r
f
,s)是否是消息M的数字签名,若是,则验证通过,否则,验证不通过;或者,签名辅助装置或系统检查检查sR
f
的值是否与eG+r
f
Q
U
相同,若是,则验证通过,否则,验证不通过;用户终端验证s是否是使用e、k1、k2、r和公钥Q
U
对应的私钥d
U
按ECDSA的计算方式计算得到的方法包括:用户终端检查验证(r,s)是否是消息M的数字签名,若是,则验证通过,否则,验证失败;或者,用户终端检查验证sR的值是否与eG+rQ
U
相同,若是,则验证通过,否则,验证失败。4.根据权利要求1所述的ECDSA签名私钥的安全可控使用方法,其特征是:一种防止d
B
和/或S
B
被盗用的ECDSA签名私钥的安全可控使用方法如下:当用户访问应用服务系统需要使用用户的ECDSA签名私钥针对消息M进行数字签名时,应用服务系统为用户签发安全令牌;所述安全令牌是请求签名辅助装置或系统辅助、协同生成或/和计算数字签名的授权凭证;应用服务系统将安全令牌或安全令牌的获取信息传递给用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件;所述安全令牌的获取信息是用于获取应用服务系统签发的安全令牌的信息;用户终端将安全令牌或安全令牌的获取信息以及T
sk2
提交给签名辅助装置或系统;若提交给签名辅助装置或系统的是安全令牌的获取信息,则签名辅助装置或系统利用此获取信息获得应用服务系统签发的安全令牌;签名辅助装置或系统验证安全令牌的有效性,之后,用户终端和签名辅助装置或系统按前面所述ECDSA签名私钥的安全可控使用方法,利用d
B
、S
B
生成针对消息M的数字签名。5.根据权利要求4所述的ECDSA签名私钥的安全可控使用方法,其特征是:应用服务系统将安全令牌或安全令牌的获取信息传递给用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件的方式包括:若用户访问应用服务系统使用的客户端程序与实施ECDSA数字签名功能的密码程序或密码模块或密码组件位于同一个用户终端,则应用服务系统通过客户端程序向用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件传递安全令牌或安全令牌的获取信息;或者,若用户访问应用服务系统使用的客户端程序与实施ECDSA数字签名功能的密码程序或密码模块或密码组件位于不同的用户终端,则应用服务系统通过用户使用的客户端程序显示条码,然后通过用户使用用户终端扫码的方式,将安全令牌或安全令牌的获取信
息传递给用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件;或者,若用户终端是移动通信终端,应用服务系统通过用户的移动通信终端发送短信,通过短信中包含的信息启动用户移动通信终端中的实施ECDSA数字签名功能的密码程序,并通过启动信息自动或通过用户输入短信中的信息的方式将安全令牌或安全令牌的获取信息传递给用户移动通信终端中的实施ECDSA数字签名功能的密码程序。6.根据权利要求5所述的ECDSA签名私钥的安全可控使用方法,其特征是:在以上所述防止d
B
和/或S
B
被盗用的ECDSA签名私钥的安全可控使用方法的基础上的一种安全增强方案如下:同态加密运算E(
·
)对应的同态加密算法为全同态加密算法;应用服务系统向用户签发安全令牌的同时,在[1,n
‑
1]内随机选择一个整数k0,计算R0=k0G
b
,采用同态加密计算得到c0=E((k0)
‑1)或c0=E(k0),其中(k0)
‑1为k0的模n乘法逆,然后将R0连同安全令牌一起通过用户终端传递给签名辅助装置或系统,R0受到安全令牌的保护,将c0或c0的获取信息传递给用户终端;签名辅助装置或系统在验证接收到的安全令牌的有效性后,通过安全令牌确定R0的有效性;若用户终端接收到的是c0的获取信息,则用户终端利用此获取信息获得c0;在利用消息M计算得到消息M的散列值e后,用户终端在[1,n
‑
1]区间内随机选择一...
【专利技术属性】
技术研发人员:龙毅宏,许明,陈韶光,
申请(专利权)人:北京天威诚信电子商务服务有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。