消息签名方法、装置、设备及可读存储介质与流程

未命名 07-23 阅读:84 评论:0


1.本技术涉及信息安全技术领域,尤其涉及一种消息签名方法、装置、设备及可读存储介质。


背景技术:

2.随着区块链技术的兴起,其对金融、智能制造、供应链、物流等领域带来了深入的影响,并驱动新一轮技术变革和应用变革。出于安全性与私密性的考虑用户在区块链网络中提交交易时,需采用签名算法对交易内容进行签名。椭圆曲线数字签名算法作为一种常见的签名算法,也是目前主流区块链中使用到的签名算法。
3.椭圆曲线数字签名算法中有一个步骤涉及到选取一个随机数。目前常用的方式是通过prng(pseudo random number generator,伪随机数生成器)直接生成一个随机数,该随机数本身具有较高的随机性和秘密性以保证安全性。
4.虽然椭圆曲线数字签名算法本身的安全性非常高,但由于该随机数终究是由prng通过特定方式生成的伪随机数,因此依旧存在prng生成伪随机数的特定方式而导致随机数出现相关性的情况。随机数相关这种情况出现的可能性虽然很低,但由于其在区块链网络中大量高频使用的情况,其安全风险不可小觑。此时,随机数相关这种情况出现将可能导致签名者的私钥被泄露,从而产生数据的安全风险。


技术实现要素:

5.本技术的主要目的在于提供一种消息签名方法,旨在解决现有方法中椭圆曲线数字签名算法的随机数出现相关的情况,导致私钥泄露造成数据的安全风险的技术问题。
6.为实现上述目的,第一方面,本技术提供一种消息签名方法,所述消息签名方法包括:
7.获取待签名消息、伪随机数和所述待签名消息的私钥;
8.根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;
9.根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。
10.根据第一方面,所述根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数的步骤,包括:
11.将所述待签名消息、所述伪随机数和所述私钥按照预设拼接规则进行拼接,生成对应的字节序列;
12.对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。
13.根据第一方面,或者以上第一方面的任意一种实现方式,所述根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息的步骤,包括:
14.根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
15.基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值;
16.对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值;
17.将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
18.根据第一方面,或者以上第一方面的任意一种实现方式,所述根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值的步骤,包括:
19.对所述第一哈希值按照预设固定长度进行截取,获得第二整数值;
20.基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。
21.根据第一方面,或者以上第一方面的任意一种实现方式,在所述基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值的步骤之后,包括:
22.判断所述第一签名值是否为零;
23.若所述第一签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
24.若所述第一签名值不为零,则执行步骤:对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。
25.根据第一方面,或者以上第一方面的任意一种实现方式,在所述对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值的步骤之后,包括:
26.判断所述第二签名值是否为零;
27.若所述第二签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
28.若所述第二签名值不为零,则执行步骤:将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
29.根据第一方面,或者以上第一方面的任意一种实现方式,在所述根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息的步骤之后,所述消息签名方法还包括:
30.获取第二整数值和所述私钥对应的公钥,其中所述第二整数值为对所述待签名消息做哈希运算得到的第一哈希值按照预设固定长度进行截取确定的整数值;
31.将所述第二整数值、所述公钥和所述签名信息发送至验证端,以使所述验证端对所述签名信息进行验证。
32.第二方面,本技术提供了一种消息签名装置,所述消息签名装置包括:
33.获取模块,用于获取待签名消息、伪随机数和所述待签名消息的私钥;
34.生成模块,用于根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;
35.签名模块,用于根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签
名,生成所述待签名消息的签名信息。
36.根据第二方面,生成模块,还用于:
37.将所述待签名消息、所述伪随机数和所述私钥按照预设拼接规则进行拼接,生成对应的字节序列;
38.对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。
39.根据第二方面,或者以上第二方面的任意一种实现方式,签名模块,还用于:
40.根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
41.基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值;
42.对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值;
43.将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
44.根据第二方面,或者以上第二方面的任意一种实现方式,签名模块,还用于:
45.对所述第一哈希值按照预设固定长度进行截取,获得第二整数值;
46.基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。
47.根据第二方面,或者以上第二方面的任意一种实现方式,签名模块,还用于:
48.判断所述第一签名值是否为零;
49.若所述第一签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
50.若所述第一签名值不为零,则执行步骤:对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。
51.根据第二方面,或者以上第二方面的任意一种实现方式,签名模块,还用于:
52.判断所述第二签名值是否为零;
53.若所述第二签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
54.若所述第二签名值不为零,则执行步骤:将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
55.根据第二方面,或者以上第二方面的任意一种实现方式,消息签名装置还包括发送模块;发送模块,用于:
56.获取第二整数值和所述私钥对应的公钥,其中所述第二整数值为对所述待签名消息做哈希运算得到的第一哈希值按照预设固定长度进行截取确定的整数值;
57.将所述第二整数值、所述公钥和所述签名信息发送至验证端,以使所述验证端对所述签名信息进行验证。
58.第三方面,本技术提供了一种消息签名设备,所述消息签名设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序配置为实现如上所述的消息签名方法的步骤。
59.第三方面以及第三方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第三方面以及第三方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
60.第四方面,本技术提供了一种计算机可读存储介质,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行如上述第一方面或第一方面的可能的实现方式中任一项所述的消息签名方法。
61.第四方面以及第四方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第四方面以及第四方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
62.第五方面,本技术实施例提供了一种计算机程序,该计算机程序包括用于执行第一方面以及第一方面的任意可能的实现方式中的消息签名方法的操作指令。
63.第五方面以及第五方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第五方面以及第五方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
64.本技术提供了一种消息签名方法、装置、设备及可读存储介质,通过获取待签名消息、伪随机数和所述待签名消息的私钥;根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。本技术通过待签名消息、伪随机数和所述待签名消息的私钥,生成第一随机数作为随机数用于椭圆曲线签名算法对待签名消息进行签名,由于私钥以及待签名消息本身也具备一定的私密性和随机性,从而通过伪随机数结合了待签名消息和私钥生成随机数的方式减轻了常规椭圆曲线签名算法选用的随机数之间的相关性,降低了数据的安全风险。
附图说明
65.图1为本技术消息签名方法第一实施例的流程示意图;
66.图2为本技术消息签名方法第二实施例的流程示意图;
67.图3为本技术消息签名方法第三实施例的流程示意图;
68.图4为本技术实施例方案涉及的消息签名装置的结构示意图;
69.图5为本技术实施例方案涉及的消息签名设备的结构示意图。
70.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
71.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
72.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
73.本技术实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不
同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
74.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
75.应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
76.随着区块链技术的兴起,其对金融、智能制造、供应链、物流等领域带来了深入的影响,并驱动新一轮技术变革和应用变革。出于安全性与私密性的考虑用户在区块链网络中提交交易时,需采用签名算法对交易内容进行签名。椭圆曲线数字签名算法作为一种常见的签名算法,也是目前主流区块链中使用到的签名算法。
77.椭圆曲线数字签名算法是使用椭圆曲线密码对数字签名算法(dsa,digital signature algorithm)的模拟。数字签名算法在联邦信息处理标准(fips,federal information processing standards)中有详细论述,称为数字签名标准。它的安全性基于素域上的离散对数问题。椭圆曲线数字签名算法可以看作是椭圆曲线对先前离散对数问题(dlp,discrete logarithm problem)的密码系统的模拟,只是群元素由素域中的元素数换为有限域上的椭圆曲线上的点。与普通的离散对数问题和大数分解问题(ifp,integer factoring problem)不同,椭圆曲线离散对数问题没有亚指数时间的解决方法,因此椭圆曲线密码的单位比特强度要高于其他基于传统的离散对数系统的公钥体制。在使用较短的密钥的情况下,椭圆曲线数字签名算法可以达到与基于离散对数的系统相同的安全级别。这带来的好处就是椭圆曲线数字签名算法计算参数更小,密钥更短,运算速度更快,签名也更加短小。
78.椭圆曲线数字签名算法中有一个步骤涉及到选取一个随机数。目前常用的方式是通过prng(pseudo random number generator,伪随机数生成器)直接生成一个随机数,该随机数本身具有较高的随机性和秘密性以保证安全性。
79.假设,两个用户使用prng采用了相同的设置来产生两个随机数a和b,并且随机数b相较于随机数a来说,其起始位置推迟了8位。如此两个随机数a和随机数b之间将会存在如下关联:
80.b+c
·2256-8
=256
·
a+d
81.进而这两个不同的用户各自使用上述a和b两个随机数分别通过椭圆曲线数字签名算法对各自的待签名消息签出两个签名,两个用户对应的待签名消息和签名对分别为m1,(r1,s1)和m2,(r2,s2),并且还会公开被截取的待签名消息的哈希值z1和z2。在所述椭圆曲线数字签名算法的椭圆曲线上有:
82.r2+c
·2256-8
·
g=256
·
r1+d
·g83.其中,c和d是两个8位数的整数,在有限次的运算下即可得到这两个值。事实上,只需2
16
次椭圆曲线上的运算就可以计算出c和d。
84.由此,以使用了随机数b的这一方用户为例,由于b+c
·2256-8
=256
·
a+d这一式中b,c和d都已知,就可以计算出另一方用户使用的随机数a。再根据椭圆曲线数字签名算法的原理,就可以按如下公式计算出另一方用户的私钥:
85.d1=(s1a-z1)/r
1 mod n
86.因此,在这两个用户之间相互推算出对方的随机数后,则可计算出对方的私钥。
87.随机数相关这种情况出现的可能性虽然很低,但由于其在区块链网络中大量高频使用的情况,其安全风险不可小觑。此时,随机数相关这种情况出现将可能导致签名者的私钥被泄露,从而产生安全风险。
88.下面结合部分实施例对本技术消息签名方法进行说明:
89.本技术的消息签名方法的执行主体可以是消息签名设备,所述消息签名设备可以是pc(personal computer,个人计算机)、平板电脑、便携式计算机或者服务器等设备。
90.本技术的一实施例中,通过获取待签名消息、伪随机数和所述待签名消息的私钥;根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。本技术通过待签名消息、伪随机数和所述待签名消息的私钥,生成第一随机数作为随机数用于椭圆曲线签名算法对待签名消息进行签名,由于私钥以及待签名消息本身也具备一定的私密性和随机性,从而通过伪随机数结合了待签名消息和私钥生成随机数的方式减轻了常规椭圆曲线签名算法选用的随机数之间的相关性,降低了数据的安全风险。
91.请参照图1,图1为本技术消息签名方法第一实施例的流程示意图。需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
92.本技术第一实施例提供一种消息签名方法,所述消息签名方法包括以下步骤:
93.步骤s100,获取待签名消息、伪随机数和所述待签名消息的私钥;
94.本实施例中,需要说明的是,所述伪随机数可以是通过prng(pseudo random number generator,伪随机数生成器)、prf(pseudo-random function,伪随机函数)等伪随机数生成算法进行生成的。
95.此外,还需要说明的是,签名端都要生成一对公钥和私钥,所述私钥用于对消息进行加密,所述公钥用于验证端对加密后的消息进行验证。示例性地,获取一个第二随机数d作为私钥,d∈[1,n-1]。其中n为预设椭圆曲线上预设基点的阶次。可以理解的是,所述私钥可以是真随机数或伪随机数。进而根据所述预设椭圆曲线上的基点和所述私钥,基于预设计算公式q=dag,计算得到所述私钥在所述预设椭圆曲线上的对应的公钥。其中,g为所述预设椭圆曲线上的基点,da为私钥,q为所述私钥对应的公钥。其中,所述预设椭圆曲线为用于对待签名消息进行签名的椭圆曲线,如p-256曲线、sm2、secp256r1和secp256k1等椭圆曲线,可以根据具体需求进行选取。
[0096]
步骤s200,根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;
[0097]
本实施例中,由于所述待签名消息和所述私钥均与待签名消息相关,且具备较高的随机性和私密性。因此,通过根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数,所述第一随机数则可以尽可能地规避单纯采用prng、prf等伪随机数生成算法进行随机数生成,而导致随机数之间产生相关性,造成在区块链等高频次使用下产生数据的安全风险。
[0098]
作为一种示例,可以通过将所述待签名消息、所述伪随机数和所述私钥对应的字
符串按照预设拼接规则进行拼接,生成对应的字节序列。然后再对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。
[0099]
作为另一种示例,可以按照预设截取规则截取所述待签名消息中的部分字符串,然后再按照预设拼接规则对所述部分字符串、所述伪随机数和所述私钥进行拼接,生成对应的字节序列。然后再对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。
[0100]
其中,步骤s200中所述根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数的步骤,包括:
[0101]
步骤s210,将所述待签名消息、所述伪随机数和所述私钥按照预设拼接规则进行拼接,生成对应的字节序列;
[0102]
步骤s220,对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。
[0103]
本实施例中,需要说明的是,所述预设拼接规则为预先设置用于所述待签名消息、所述伪随机数和所述私钥进行拼接的规则。所述预设拼接规则可以根据具体需求进行设置,示例性地,所述预设拼接规则可以规定所述待签名消息、所述伪随机数和所述私钥之间的拼接顺序,如待签名消息—伪随机数—私钥、待签名消息—私钥—伪随机数等,或者是规定所述伪随机数和所述私钥插入所述待签名消息的指定位置,如伪随机数插入待签名消息的第一指定位置和私钥插入待签名消息的第二指定位置。
[0104]
此外,还需要说明的是,做哈希运算采用的哈希函数为安全哈希函数,如md(message-digest algorithm,信息摘要算法)系列的哈希函数(md4、md5,haval,ripemd)、sha(secure hash algorithm,安全散列算法)系列的哈希函数(sha-1、sha-256)等。
[0105]
本实施例通过将所述待签名消息、所述伪随机数和所述私钥按照预设拼接规则进行拼接,生成对应的字节序列,进而对所述字节序列做哈希运算,则可以获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。可以理解的是,所述第一随机数为小于所述预设椭圆曲线上预设基点的阶次的非零正整数值,即第一随机数∈[1,n-1]。
[0106]
步骤s300,根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。
[0107]
本实施例中,在确定第一随机数后,则可以根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标。示例性地,预设椭圆曲线的等式为y2=x3+ax+b,则所述预设基点为所述预设椭圆曲线上满足该等式的一基点,预设基点g=(x,y)。进而,基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值。然后则可以对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。从而可以将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
[0108]
其中,步骤s300中所述根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息的步骤,包括:
[0109]
步骤s310,根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
[0110]
步骤s320,基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得
到第一签名值;
[0111]
步骤s330,对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值;
[0112]
步骤s340,将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
[0113]
本实施例中,可以根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标。其中,所述第一解点坐标为所述第一随机数与所述预设基点的乘积。示例性地,第一解点坐标p=kg,其中k为第一随机数,g为所述预设椭圆曲线上预设基点。然后再基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值。其中,所述第一签名值为所述阶次的模与所述第一解点坐标的横坐标的乘积。示例性地,第一签名值r=x
p mod n,其中x
p
为第一解点坐标的横坐标,n为预设基点的阶次,mod n为阶次的模。对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。示例性地,在对所述第一哈希值按照预设固定长度进行截取,获得第二整数值后,可以基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。然后则可以将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。示例性地,所述签名信息为二元组(r,s),其中r为第一签名值,s为第二签名值。
[0114]
其中,步骤s330中所述根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值的步骤,包括:
[0115]
步骤s331,对所述第一哈希值按照预设固定长度进行截取,获得第二整数值;
[0116]
步骤s332,基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。
[0117]
本实施例中,需要说明的是,所述预设固定长度为所述阶次的二进制位数。
[0118]
本实施例在对待签名消息做哈希运算后,将所述对所述第一哈希值按照预设固定长度进行截取,获得第二整数值。然后则可以基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。其中所述预设运算规则为s=k-1
(z+rda)mod n,s为第二签名值,z为第二整数值,r为第一签名值,da为私钥,k-1
为第一随机数k在阶次n的模下的乘法逆元。
[0119]
此外,在步骤s300根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息之后,所述消息签名方法还包括:
[0120]
步骤s400,获取第二整数值和所述私钥对应的公钥,其中所述第二整数值为对所述待签名消息做哈希运算得到的第一哈希值按照预设固定长度进行截取确定的整数值;
[0121]
步骤s410,将所述第二整数值、所述公钥和所述签名信息发送至验证端,以使所述验证端对所述签名信息进行验证。
[0122]
本实施例中,需要说明的是,所述验证端为对所述签名信息进行验证的一端,可以是pc(personal computer,个人计算机)、平板电脑、便携式计算机或者服务器等设备。
[0123]
为了验证签名,验证端需要的参数包括:所述签名信息、所述私钥对应的公钥以及对所述待签名消息做哈希运算得到的第一哈希值按照预设固定长度进行截取确定的第二整数值,在获取第二整数值和所述私钥对应的公钥之后,则可以将所述第二整数值、所述公
钥和所述签名信息发送至验证端,以使所述验证端对所述签名信息进行验证。
[0124]
在本技术第一实施例中,通过获取待签名消息、伪随机数和所述待签名消息的私钥;根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。本技术通过待签名消息、伪随机数和所述待签名消息的私钥,生成第一随机数作为随机数用于椭圆曲线签名算法对待签名消息进行签名,由于私钥以及待签名消息本身也具备一定的私密性和随机性,从而通过伪随机数结合了待签名消息和私钥生成随机数的方式减轻了常规椭圆曲线签名算法选用的随机数之间的相关性,降低了数据的安全风险。
[0125]
参照图2,图2为本技术消息签名方法的第二实施例的流程示意图。
[0126]
本技术第二实施例提供一种消息签名方法,在步骤s320中所述基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值的步骤之后,包括:
[0127]
步骤a10,判断所述第一签名值是否为零;
[0128]
步骤a20,若所述第一签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
[0129]
步骤a30,若所述第一签名值不为零,则执行步骤:对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。
[0130]
本实施例中,通过判断所述第一签名值是否为零,可以确定所述私钥是否具备较高的泄露风险。若所述第一签名值为零,说明私钥泄露的可能性较大,则可以对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;若所述第一签名值不为零,说明私钥泄露的可能性较小,则可以执行步骤:对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。
[0131]
在本技术第二实施例中,在获得第一签名值之后,通过判断所述第一签名值是否为零,确定所述私钥是否具备较高的泄露风险,在所述第一签名值为零的情况下对所述第一随机数做哈希运算得到新的第一随机数,由于所述第一随机数与常规随机数生成方式相比,随机数之间基本不再存在相关性。因此,在所述第一随机数的基础上做哈希运算重新获得新的第一随机数,也可以保障新的随机数之间基本不再存在相关性,同时也降低了私钥的泄露风险。
[0132]
参照图3,图3为本技术消息签名方法的第二实施例的流程示意图。
[0133]
本技术第三实施例提供一种消息签名方法,在步骤s320中所述对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值的步骤之后,包括:
[0134]
步骤b10,判断所述第二签名值是否为零;
[0135]
步骤b20,若所述第二签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
[0136]
步骤b30,若所述第二签名值不为零,则执行步骤:将所述第一签名值和所述第二
签名值构成所述待签名消息的签名信息。
[0137]
类似地,本实施例中,通过判断所述第二签名值是否为零,可以确定所述私钥是否具备较高的泄露风险。若所述第二签名值为零,说明私钥泄露的可能性较大,则可以对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标。若所述第二签名值不为零,说明私钥泄露的可能性较小,则可以执行步骤:将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
[0138]
在本技术第三实施例中,在获得第二签名值之后,通过判断所述第二签名值是否为零,确定所述私钥是否具备较高的泄露风险,在所述第二签名值为零的情况下对所述第一随机数做哈希运算得到新的第一随机数,由于所述第一随机数与常规随机数生成方式相比,随机数之间基本不再存在相关性。因此,在所述第一随机数的基础上做哈希运算重新获得新的第一随机数,也可以保障新的随机数之间基本不再存在相关性,同时也降低了私钥的泄露风险。
[0139]
此外,本技术还提供一种消息签名装置,所述消息签名装置包括:
[0140]
获取模块10,用于获取待签名消息、伪随机数和所述待签名消息的私钥;
[0141]
生成模块20,用于根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;
[0142]
签名模块30,用于根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。
[0143]
可选地,生成模块20,还用于:
[0144]
将所述待签名消息、所述伪随机数和所述私钥按照预设拼接规则进行拼接,生成对应的字节序列;
[0145]
对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。
[0146]
可选地,签名模块30,还用于:
[0147]
根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
[0148]
基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值;
[0149]
对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值;
[0150]
将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
[0151]
可选地,签名模块30,还用于:
[0152]
对所述第一哈希值按照预设固定长度进行截取,获得第二整数值;
[0153]
基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。
[0154]
可选地,签名模块30,还用于:
[0155]
判断所述第一签名值是否为零;
[0156]
若所述第一签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
[0157]
若所述第一签名值不为零,则执行步骤:对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。
[0158]
可选地,签名模块30,还用于:
[0159]
判断所述第二签名值是否为零;
[0160]
若所述第二签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;
[0161]
若所述第二签名值不为零,则执行步骤:将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
[0162]
可选地,消息签名装置还包括发送模块;发送模块,用于:
[0163]
获取第二整数值和所述私钥对应的公钥,其中所述第二整数值为对所述待签名消息做哈希运算得到的第一哈希值按照预设固定长度进行截取确定的整数值;
[0164]
将所述第二整数值、所述公钥和所述签名信息发送至验证端,以使所述验证端对所述签名信息进行验证。
[0165]
如图5所示,图5为本技术实施例方案涉及的消息签名设备的结构示意图。
[0166]
具体地,所述消息签名设备可以是pc(personal computer,个人计算机)、平板电脑、便携式计算机或者服务器等设备。
[0167]
如图5所示,所述消息签名设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0168]
本领域技术人员可以理解,图5中示出的设备结构并不构成对所述消息签名设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0169]
如图5所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及消息签名应用程序。
[0170]
在图5所示的设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端,与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的消息签名程序,实现上述实施例提供的消息签名方法中的操作。
[0171]
此外,本技术实施例还提出一种计算机存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例提供的消息签名方法中的操作,具体步骤此处不再过多赘述。
[0172]
此外,对于验证端,本实施例还提出一种签名验证方法,所述签名验证方法包括:
[0173]
获取待验证消息对应的校验签名信息、公钥以及截取整数值,其中所述校验签名信息为按照上述实施例所述的消息签名方法处理所述待验证消息所得到的,所述截取整数
值为对所述待验证消息做哈希运算得到的第三哈希值按照预设固定长度进行截取确定的整数值,所述校验签名信息由第一校验签名值和第二校验签名值构成。在所述第一校验签名值和所述第二校验签名值满足预设前置条件的情况下,对所述第二校验签名值做逆运算处理,获得所述第二校验签名值对应的逆运算值,其中所述逆运算值为所述第二校验签名值在预设椭圆曲线上预设基点的阶次的模下的乘法逆元。其中所述预设前置条件为第一校验签名值和第二校验签名值均为小于所述预设椭圆曲线上预设基点的阶次的非零正整数值。若所述第一校验签名值和所述第二校验签名值满足预设前置条件,则判定所述校验签名信息不通过验证。基于所述阶次对所述逆运算值、所述截取整数值做取余处理,得到第一校验整数值。示例性地,第一校验整数值u1=s-1
z mod n,其中s-1
为第二校验签名值对应的逆运算值,z为截取整数值,n为预设基点的阶次,mod n为阶次的模。再基于所述阶次对所述逆运算值、所述第一校验签名值做取余处理,得到第二校验整数值。示例性地,第一校验整数值。示例性地,第二校验整数值u2=s-1
r mod n,其中s-1
为第二校验签名值对应的逆运算值,r为第一校验签名值,n为预设基点的阶次,mod n为阶次的模。再根据所述预设基点、所述公钥、所述第一校验整数值和所述第二校验整数值,确定对应的验证解点坐标,其中所述验证解点坐标为预设基点和第一校验整数值的乘积与所述公钥和所述第二校验整数值的乘积之和。示例性地,验证解点坐标=u1g+u2ha,其中u1为第一校验整数值,u2为第二校验整数值,g为预设基点,ha为公钥。再基于所述预设基点的阶次对所述验证解点坐标的横坐标做取余处理,得到验证取余值。示例性地,验证取余值v=x1mod n,其中x1为验证解点坐标的横坐标,n为预设基点的阶次,mod n为阶次的模。当所述验证取余值与所述第一校验签名值一致时,说明签名才有效,则判定所述校验签名信息通过验证。当所述验证取余值与所述第一校验签名值不一致时,则判定所述校验签名信息不通过验证。
[0174]
此外,对于验证端,本实施例还提出一种签名验证设备,所述签名验证设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的签名验证方法的步骤。
[0175]
此外,对于验证端,本实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有签名验证程序,所述签名验证程序被处理器执行时实现如上所述的签名验证方法的步骤。
[0176]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序;术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0177]
对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0178]
上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0179]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,车辆,或者网络设备等)执行本技术各个实施例所述的方法。
[0180]
以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。

技术特征:
1.一种消息签名方法,其特征在于,所述消息签名方法包括以下步骤:获取待签名消息、伪随机数和所述待签名消息的私钥;根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。2.如权利要求1所述的消息签名方法,其特征在于,所述根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数的步骤,包括:将所述待签名消息、所述伪随机数和所述私钥按照预设拼接规则进行拼接,生成对应的字节序列;对所述字节序列做哈希运算,获得所述字节序列对应的第一整数值,并将所述第一整数值作为第一随机数。3.如权利要求1所述的消息签名方法,其特征在于,所述根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息的步骤,包括:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值;对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值;将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。4.如权利要求3所述的消息签名方法,其特征在于,所述根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值的步骤,包括:对所述第一哈希值按照预设固定长度进行截取,获得第二整数值;基于预设运算规则对所述第一随机数、所述第二整数值、所述私钥和所述第一签名值进行运算得到第二签名值。5.如权利要求3所述的消息签名方法,其特征在于,在所述基于所述预设基点的阶次对所述第一解点坐标的横坐标做取余处理得到第一签名值的步骤之后,包括:判断所述第一签名值是否为零;若所述第一签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;若所述第一签名值不为零,则执行步骤:对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值。6.如权利要求3所述的消息签名方法,其特征在于,在所述对所述待签名消息做哈希运算得到第一哈希值,并根据所述第一哈希值、所述第一随机数、所述私钥和所述第一签名值,确定对应的第二签名值的步骤之后,包括:判断所述第二签名值是否为零;若所述第二签名值为零,则对所述第一随机数做哈希运算得到新的第一随机数,并执行步骤:根据所述第一随机数和所述预设椭圆曲线上预设基点,确定第一解点坐标;若所述第二签名值不为零,则执行步骤:将所述第一签名值和所述第二签名值构成所述待签名消息的签名信息。
7.如权利要求1至6中任一项所述的消息签名方法,其特征在于,在所述根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息的步骤之后,所述消息签名方法还包括:获取第二整数值和所述私钥对应的公钥,其中所述第二整数值为对所述待签名消息做哈希运算得到的第一哈希值按照预设固定长度进行截取确定的整数值;将所述第二整数值、所述公钥和所述签名信息发送至验证端,以使所述验证端对所述签名信息进行验证。8.一种消息签名装置,其特征在于,所述消息签名装置包括:获取模块,用于获取待签名消息、伪随机数和所述待签名消息的私钥;生成模块,用于根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;签名模块,用于根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。9.一种消息签名设备,其特征在于,所述消息签名设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的消息签名方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有消息签名程序,所述消息签名程序被处理器执行时实现如权利要求1至7中任一项所述的消息签名方法的步骤。

技术总结
本申请公开了一种消息签名方法、装置、设备及可读存储介质,涉及信息安全技术领域。所述消息签名方法包括以下步骤:获取待签名消息、伪随机数和所述待签名消息的私钥;根据所述待签名消息、所述伪随机数和所述私钥,生成对应的第一随机数;根据所述第一随机数和预设椭圆曲线对所述待签名消息进行签名,生成所述待签名消息的签名信息。本申请通过待签名消息、伪随机数和所述待签名消息的私钥,生成对应的第一随机数作为随机数用于椭圆曲线签名算法进行签名,从而减轻了随机数之间的相关性,降低了数据安全风险。降低了数据安全风险。降低了数据安全风险。


技术研发人员:简海波 桂宏昱 王恩凯 田翔 许强 沈书航 张骁 商松 庞同庆
受保护的技术使用者:无锡吉利区块链科技有限公司
技术研发日:2023.04.07
技术公布日:2023/7/21
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐