一种基于密文私钥的ECDSA数字签名生成方法及系统技术方案

技术编号:36802810 阅读:19 留言:0更新日期:2023-03-08 23:56
基于密文私钥的ECDSA数字签名生成方法:用户终端有Q

【技术实现步骤摘要】
一种基于密文私钥的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,计算R=kG;计算r=x
R mod n,其中x
R
取自(x
R
,y
R
)=R(实际计算是先按规定的方式将x
R
转化整数,然后取其模n余数,但通常这么描述);若r=0,则重新选择k,重新计算R、r直到r不为0;计算s=k
‑1(e+rd
U
);若s=0,则重新选择k,重新计算s,直到s不为0;则(r,s)为针对消息M的数字签名。
[0004]需指出的是基于椭圆曲线点群的数字签名算法有多种,它们属于不同的数字签名算法,本专利技术的ECDSA是专指目前国际上广泛采用的一种特定的椭圆曲线数字签名算法,其名称就是ECDSA(国际上普遍接受的名称,见上文献)。
[0005]目前的针对ECDSA的基于秘密共享的数字签名存在的一个问题是,用户之外的其他数字签名协同生成参与方,共享有用户的签名私钥即有用户签名私钥的秘密份额(secret share),这与《中华人民共和国电子签名法》不完全符合,《电子签名法》要求生成电子签名时的签名制作数据由签名者专有和控制,而对于数字签名,签名制作数据也即是签名私钥,因此,如何在不对ECDSA签名私钥进行共享的情况下,即如何在用户之外的其他数字签名协同生成参与方没有签名私钥的秘密份额的情况下,在用户终端安全存储、使用用户的ECDSA签名私钥,保证生成的数字签名的有效性、安全性,是一个需要解决的技术问题,而且在不采用签名私钥秘密共享的情况下,如何保证存储在用户终端中的签名私钥(签名制作数据)的安全存储、使用显得特别重要,因为用户终端中存储的签名私钥(签名制作数据)的失窃,将会导致签名私钥泄露或盗用。

技术实现思路

[0006]本专利技术的目的是针对目前基于秘密共享的ECDSA数字签名协同生成技术方案存在的问题,提出相应的技术方案以克服现有技术的不足。
[0007]针对本专利技术的目的,本专利技术提出的技术方案包一种基于密文私钥的ECDSA数字签名生成方法及相应的系统。
[0008]在以下对本专利技术技术方案的描述中,若P、Q是椭圆曲线点群中的元素(点),则P+Q表示P、Q的点加,P

Q表示P加上Q的逆元,kP表示k个椭圆曲线点P的点加,即P+P+...+P(共有k个P,若k为负数,则kP是|k|个椭圆曲线点P的点加后的结果的加法逆元);c
‑1表示整数c的模n乘法逆(即cc
‑1mod n=1);如无特别说明,本专利申请中的乘法逆都是针对ECDSA椭圆曲线点群的阶n(即基点G的阶n)的模n乘法逆;多个整数相乘(包括整数符号参量、变量相乘、常数与整数符号参量、变量相乘),在不产生二义性的情况下,省略掉乘号“·”,如k1·
k2简化为k1k2,3
·
c简化为3c;mod n表示模n运算(modulo operation),模n运算的算子mod n的优先级是最低的,如a+b mod n等同于(a+b)mod n,a

b mod n等同于(a

b)mod n,ab mod n等同于(ab)mod n。
[0009]本专利技术提出的基于密文私钥的ECDSA数字签名生成方法具体如下。
[0010]用户终端有Q
U
=d
U
G,有秘密S
U
=E(d
U
),其中d
U
为用户的ECDSA签名私钥,G为ECDSA椭圆曲线点群(子群)的基点,Q
U
为用户的ECDSA签名私钥d
U
对应的公钥,E(
·
)是采用同态加密算法的加密运算;
[0011]所述用户终端是用户的计算装置(如个人电脑、手机、平板电脑);所述同态加密算法为加法同态加密算法或全同态加密算法;签名辅助装置或系统有与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1(同态加密算法的私钥),或者与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1经采用签名辅助装置或系统的密钥加密为密文T
sk1
,其中对SK1加密所采用的签名辅助装置或系统的密钥包括对称密钥或公钥(其中公钥又包括普通公钥,如RSA、SM2等普通公钥密码算法的公钥,或面向群组的加密算法的群组公钥),而用户终端保存有与加密运算E(
·
)所采用的公钥对应的进行解密运算的私钥SK1的密文T
sk1
(T
sk1
对签名辅助装置或系统不是秘密,但对签名辅助装置或系统之外的计算装置、系统可以作为秘密);所述签名辅助装置或系统是辅助、协助用户终端完成数字签名生成、计算的计算装置或系统;
[0012]当需要使用用户的ECDSA签名私钥d
U
针对消息M进行数字签名时,用户终端和签名辅助装置或系统按如下方式生成针对消息M的数字签名(需要使用用户的ECDSA签名私钥d
U
、针对消息M进行数字签名的主体可以是用户终端内或外的需要调用用户终端中的数字签名功能的应用程序、系统):
[0013]用户终端利用消息M和散列函数(hash function)计算得到消息M的散列值e,将e发送给签名辅助装置或系统,或者,签名辅助装置或系统利用消息M和散列函数(hash fu本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于密文私钥的ECDSA数字签名生成方法,其特征是:用户终端有Q
U
=d
U
G,有秘密S
U
=E(d
U
),其中d
U
为用户的ECDSA签名私钥,G为ECDSA椭圆曲线点群的基点,Q
U
为用户的ECDSA签名私钥d
U
对应的公钥,E(
·
)是采用同态加密算法的加密运算;所述用户终端是用户的计算装置;所述同态加密算法为加法同态加密算法或全同态加密算法;签名辅助装置或系统有与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1,或者,与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1经采用签名辅助装置或系统的密钥加密为密文T
sk1
,其中对SK1加密所采用的签名辅助装置或系统的密钥包括对称密钥或公钥,而用户终端保存有与加密运算E(
·
)所采用的公钥对应的进行解密运算的私钥SK1的密文T
sk1
;所述签名辅助装置或系统是辅助、协助用户终端完成数字签名生成、计算的计算装置或系统;当需要使用用户的ECDSA签名私钥d
U
针对消息M进行数字签名时,用户终端和签名辅助装置或系统按如下方式生成针对消息M的数字签名:用户终端利用消息M和散列函数计算得到消息M的散列值e,将e发送给签名辅助装置或系统,或者,签名辅助装置或系统利用消息M和散列函数计算得到消息M的散列值e,将e发送给用户终端;用户终端在[1,n

1]区间内随机选择一个整数k1,其中n为基点G的阶,n为素数;签名辅助装置或系统在[1,n

1]区间内随机选择一个整数k2;用户终端和签名辅助装置或系统在不暴露各自秘密k1、k2的情况下完成如下计算:用户终端在确保签名辅助装置或系统不重新选择k2的情况下,通过与签名辅助装置或系统交互计算得到R=k1k2G;签名辅助装置或系统在确保用户终端不重新选择k1的情况下,通过与用户终端交互计算得到R
f
=k1k2G;或者,用户终端在确保签名辅助装置或系统不重新选择k2的情况下,通过与签名辅助装置或系统交互计算得到R=(k1+k2)G;签名辅助装置或系统在确保用户终端不重新选择k1的情况下,通过与用户终端交互计算得到R
f
=(k1+k2)G;若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、R
f
=k1k2G;用户终端在[1,n

1]内随机选择一个整数b,利用b、e、r、S
U
、k1通过同态加密算法计算得到:s
10
=((k1)
‑1e

b)mod n,s
11
=E(b+(k1)
‑1rd
U
(mod n)),或者,s
10
=((k1)
‑1(e

b))mod n,s
11
=E((k1)
‑1(b+rd
U
)(mod n)),或者,s
10
=((k1)
‑1(e

rb))mod n,s
11
=E((k1)
‑1(r(d
U
+b))(mod n)),其中(k1)
‑1为k1的模n乘法逆;s
10
、s
11
数值对(s
10
,s
11
)构成s1;s1计算方式二:R、R
f
采用的计算式为R=k1k2G、R
f
=k1k2G;用户终端利用e、r、S
U
、k1通过同态加密算法计算得到:s1=E((k1)
‑1(e+rd
U
)(mod n)),其中(k1)
‑1为k1的模n乘法逆;s1计算方式三:R、R
f
采用的计算式为R=k1k2G、R
f
=k1k2G;E(
·
)对应的同态加密算法是全同态加密算法;签名辅助装置或系统计算c2=E((k2)
‑1),其中(k2)
‑1为k2的模n乘法逆,将c2发送给用户终端;用户终端利用e、r、S
U
、k1、c2通过同态加密算法计算得到:s1=E((k1k2)
‑1(e+rd
U
)(mod n)),其中(k1k2)
‑1为k1k2的模n乘法逆;s1计算方式四:R、R
f
采用的计算式为R=(k1+k2)G、R
f
=(k1+k2)G;签名辅助装置或系统计算c2=E(k2),将c2发送给用户终端;用户终端在[1,n

1]内随机选择一个整数b,利用b、e、r、S
U
、k1、c2通过同态加密算法计算得到:s
10
=E(b(k1+k2)(mod n)),s
11
=E(b(e+rd
U
)(mod n));s
10
、s
11
数值对(s
10
,s
11
)构成s1;计算得到s1后,用户终端将s1发送给签名辅助装置或系统;若与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1经采用签名辅助装置或系统的密钥加密为密文T
sk1
保存在用户终端,则用户终端还将T
sk1
发送给签名辅助装置或系统,而签名辅助装置或系统解密T
sk1
得到与同态加密算法的加密运算E(
·
)所采用的公钥对应的解密运算的私钥SK1;对于s1计算方式一,签名辅助装置或系统使用私钥SK1解密数值对s1中的s
11
,得到s
11
的明文s
12
,计算s=((k2)
‑1(s
10
+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乘法逆;签名辅助装置或系统将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数字签名生成方法,其特征是:在前面所述基于密文私钥的ECDSA数字签名生成方法的基础上的一种防止S
U
被盗用的基于密文私钥的ECDSA数字签名生成方法:当用户访问应用服务系统需要使用用户的ECDSA签名私钥针对消息M进行数字签名时,应用服务系统为用户签发安全令牌;所述安全令牌是请求签名辅助装置或系统辅助、协同生成或/和计算数字签名的授权凭证;应用服务系统将安全令牌或安全令牌的获取信息传递给用户终端中的实施ECDSA数字
签名功能的密码程序或密码模块或密码组件;所述安全令牌的获取信息是用于获取应用服务系统签发的安全令牌的信息;用户终端将安全令牌或安全令牌的获取信息提交给签名辅助装置或系统;若提交给签名辅助装置或系统的是安全令牌的获取信息,则签名辅助装置或系统利用此获取信息获得应用服务系统签发的安全令牌;签名辅助装置或系统验证安全令牌的有效性,之后,用户终端和签名辅助装置或系统按前面所述基于密文私钥的ECDSA数字签名生成方法,利用S
U
生成针对消息M的数字签名。5.根据权利要求4所述的基于密文私钥的ECDSA数字签名生成方法,其特征是:应用服务系统将安全令牌或安全令牌的获取信息传递给用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件的方式包括:若用户访问应用服务系统使用的客户端程序与实施ECDSA数字签名功能的密码程序或密码模块或密码组件位于同一个用户终端,则应用服务系统通过客户端程序向用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件传递安全令牌或安全令牌的获取信息;或者,若用户访问应用服务系统使用的客户端程序与实施ECDSA数字签名功能的密码程序或密码模块或密码组件位于不同的用户终端,则应用服务系统通过用户使用的客户端程序显示条码,然后通过用户使用用户终端扫码的方式,将安全令牌或安全令牌的获取信息传递给用户终端中的实施ECDSA数字签名功能的密码程序或密码模块或密码组件;或者,若用户终端是移动通信终端,应用服务系统通过用户的移动通信终端发送短信,通过短信中包含的信息启动用户移动通信终端中的实施ECDSA数字签名功能的密码程序,并通过启动信息自动或通过用户输入短信中的信息的方式将安全令牌或安全令牌的获取信息传递给用户移动通信终端中的实施ECDSA数字签名功能的密码程序。6.根据权利要求4所述的基于密文私钥的ECDSA数字签名生成方法,其特征是:针对前面所述防止S
U
被盗用的基于密文私钥的ECDSA数字签名生成方法的一种安全增强方案如下:同态加密运算E(
·
)对应的同态加密算法为全同态加密算法;应用服务系统向用户签发安全令牌的同时,在[1,n

1]内随机选择一个整数k0,计算R0=k0G,c0=E((k0)
‑1)或c0=E(k0),其中(k0)
‑1为k0的模n乘法逆,然后将R0连同安全令牌一起通过用户终端传递给签名辅助装置或系统,R0受到安全令牌的安全保护,将c0或c0的获取信息传递给用户终端;若用户终端接收到的是c0的获取信息,则用户终端利用此获取信息获得c0;签名辅助装置或系统在验证接收到的安全令牌的有效性后,通过安全令牌确定R0的有效性;用户终端或签名辅助装置或系统计算得到消息M的散列值e;用户终端...

【专利技术属性】
技术研发人员:龙毅宏许明陈韶光
申请(专利权)人:北京天威诚信电子商务服务有限公司
类型:发明
国别省市:

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

1