System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,特别涉及一种基于sm2的可验证随机函数构造方法、装置、设备及存储介质。
技术介绍
1、目前国际上已经有ietf机构提出的vrf(verifiable random function,可验证随机函数)标准草案,其中,可验证随机函数是一种加密函数,基于数据输入生成伪随机数并附上一份证明,任何人都可以对其进行验证,vrf的数据输入通常包含一对公钥和私钥,也称为verification key和secret key,以及一个seed,公钥和私钥是生成的,而seed则是选择的,然后将这些数值一起输入vrf,用私钥和seed来生成随机数,也即vrf会生成一个随机数以及一份证明,其中最关键的是生成证明,因为用户可以通过证明来验证函数,而将私钥保密则可以确保随机数无法被预测,并且vrf被广泛应用在数字签名、密钥封装、区块链共识等领域,vrf可用于选择出块节点,已经成为了非交互模式下区块链共识节点随机选择的重要工具,然而,当前并没有一种基于国产密码算法的vrf,无法满足国家对可验证随机函数自主可控的安全需求。
技术实现思路
1、有鉴于此,本专利技术的目的在于提供一种基于sm2的可验证随机函数构造方法、装置、设备及存储介质,既能够保证散列结果的正确性,又能够保证对散列结果的可验证性,并满足国家对可验证随机函数自主可控的安全需求。其具体方案如下:
2、第一方面,本专利技术公开了一种基于sm2的可验证随机函数构造方法,包括:
3、构建系统参数集;所述系统参数集
4、利用随机选取到的用户私钥和所述系统参数集中的所述生成元计算相应的公钥;
5、利用所述第一哈希函数对当前消息进行哈希计算得到相应的杂凑值;
6、利用所述第二哈希函数,并基于随机选取到的中间值、所述生成元和所述杂凑值进行哈希计算得到相应的第一部分证明值;
7、利用所述私钥、所述中间值、所述第一部分证明值、以及所述生成元的阶确定相应的第二部分证明值;
8、利用所述私钥和所述杂凑值确定相应的第三部分证明值;
9、利用第三哈希函数对所述第三部分证明值进行哈希计算得到相应的可验证随机数,并基于所述第一部分证明值、所述第二部分证明值和所述第三部分证明值构建相应的证明值集合。
10、可选的,所述利用随机选取到的用户私钥和所述系统参数集中的所述生成元计算相应的公钥,包括:
11、将随机选取到的用户私钥和所述系统参数集中的所述生成元进行点乘得到相应公钥。
12、可选的,所述利用所述第二哈希函数,并基于随机选取到的中间值、所述生成元和所述杂凑值进行哈希计算得到相应的第一部分证明值,包括:
13、将随机选取到的中间值和所述生成元进行点乘得到相应的第一点乘结果,并将所述中间值和所述杂凑值进行点乘得到相应的第二点乘结果;
14、利用所述第二哈希函数对所述第一点乘结果和所述第二点乘结果进行哈希计算得到相应的第一部分证明值。
15、可选的,所述利用所述私钥、所述中间值、所述第一部分证明值、以及所述生成元的阶确定相应的第二部分证明值,包括:
16、利用第一预设公式对所述私钥、所述中间值、所述第一部分证明值、以及所述生成元的阶进行计算得到相应的第二部分证明值;所述预设公式为s=((1+d)-1·(k-r·d))modq:
17、其中,s表示所述第二部分证明值,d表示所述私钥,k表示所述中间值,r表示所述第一部分证明值,q表示所述生成元的阶。
18、可选的,所述利用所述私钥和所述杂凑值确定相应的第三部分证明值,包括:
19、将所述私钥和所述杂凑值进行点乘得到相应的第三部分证明值。
20、可选的,所述的基于sm2的可验证随机函数构造方法,还包括:
21、判断利用所述第三哈希函数对所述证明值集合中的所述第三部分证明值进行哈希计算得到所述可验证随机数的过程是否成立;
22、如果成立,则重新利用所述第一哈希函数对所述消息进行哈希计算得到相应的用于验证的目标杂凑值;
23、利用第二预设公式对所述证明值集合中的所述第一部分证明值和所述第二部分证明值、所述生成元以及所述公钥进行计算得到相应的第一验证值;其中,所述第二预设公式为u1=s·g+(r+s)·p,并且u1表示所述第一验证值,r表示所述证明值集合中的所述第一部分证明值,s表示所述证明值集合中的所述第二部分证明值,g表示所述生成元,p表示所述公钥;
24、利用第三预设公式对所述证明值集合中的所述第一部分证明值、所述第二部分证明值和所述第三部分证明值以及所述目标杂凑值进行计算得到相应的第二验证值;其中,所述第三预设公式为u2=s·q′+(r+s)·v,并且u2表示所述第二验证值,q′表示所述目标杂凑值,r表示所述证明值集合中的所述第一部分证明值,s表示所述证明值集合中的所述第二部分证明值,v表示所述证明值集合中的所述第三部分证明值;
25、利用所述第二哈希函数对所述第一验证值和所述第二验证值进行哈希计算得到相应的目标部分证明值;
26、判断所述目标部分证明值与所述证明值集合中的所述第一部分证明值是否一致得到相应的判断结果;
27、基于所述判断结果确定所述可验证随机数是否有效。
28、可选的,所述基于所述判断结果确定所述可验证随机数是否有效,包括:
29、如果所述判断结果表明所述目标部分证明值与所述证明值集合中的所述第一部分证明值一致,则判定所述可验证随机数有效,且验证通过;
30、如果所述判断结果表明所述目标部分证明值与所述证明值集合中的所述第一部分证明值不一致,则判定所述可验证随机数无效,且验证不通过。
31、第二方面,本专利技术公开了一种基于sm2的可验证随机函数构造装置,包括:
32、构建模块,用于构建系统参数集;所述系统参数集包含有限域、所述有限域中的元素个数、椭圆曲线参数、阿尔法群、阿尔法群中的任意生成元、所述生成元的阶、第一哈希函数、第二哈希函数以及第三哈希函数;
33、第一计算模块,用于利用随机选取到的用户私钥和所述系统参数集中的所述生成元计算相应的公钥;
34、第二计算模块,用于利用所述第一哈希函数对当前消息进行哈希计算得到相应的杂凑值;
35、第一证明值确定模块,用于利用所述第二哈希函数,并基于随机选取到的中间值、所述生成元和所述杂凑值进行哈希计算得到相应的第一部分证明值;
36、第二证明值确定模块,用于利用所述私钥、所述中间值、所述第一部分证明值、以及所述生成元的阶确定相应的第二部分证明值;
37、第三证明值确定模块,用于利用所述私钥和所述杂凑值确定相应的第三部分证明值;
本文档来自技高网...【技术保护点】
1.一种基于SM2的可验证随机函数构造方法,其特征在于,包括:
2.根据权利要求1所述的基于SM2的可验证随机函数构造方法,其特征在于,所述利用随机选取到的用户私钥和所述系统参数集中的所述生成元计算相应的公钥,包括:
3.根据权利要求1所述的基于SM2的可验证随机函数构造方法,其特征在于,所述利用所述第二哈希函数,并基于随机选取到的中间值、所述生成元和所述杂凑值进行哈希计算得到相应的第一部分证明值,包括:
4.根据权利要求1所述的基于SM2的可验证随机函数构造方法,其特征在于,所述利用所述私钥、所述中间值、所述第一部分证明值、以及所述生成元的阶确定相应的第二部分证明值,包括:
5.根据权利要求1所述的基于SM2的可验证随机函数构造方法,其特征在于,所述利用所述私钥和所述杂凑值确定相应的第三部分证明值,包括:
6.根据权利要求1至5任一项所述的基于SM2的可验证随机函数构造方法,其特征在于,还包括:
7.根据权利要求6所述的基于SM2的可验证随机函数构造方法,其特征在于,所述基于所述判断结果确定所述可验证随机数
8.一种基于SM2的可验证随机函数构造装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括:
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于SM2的可验证随机函数构造方法的步骤。
...【技术特征摘要】
1.一种基于sm2的可验证随机函数构造方法,其特征在于,包括:
2.根据权利要求1所述的基于sm2的可验证随机函数构造方法,其特征在于,所述利用随机选取到的用户私钥和所述系统参数集中的所述生成元计算相应的公钥,包括:
3.根据权利要求1所述的基于sm2的可验证随机函数构造方法,其特征在于,所述利用所述第二哈希函数,并基于随机选取到的中间值、所述生成元和所述杂凑值进行哈希计算得到相应的第一部分证明值,包括:
4.根据权利要求1所述的基于sm2的可验证随机函数构造方法,其特征在于,所述利用所述私钥、所述中间值、所述第一部分证明值、以及所述生成元的阶确定相应的第二部分证明值,包括:
5.根据权利要求1所述的基于...
【专利技术属性】
技术研发人员:杨嘉诚,张永欣,徐响,包子健,雷虹,
申请(专利权)人:云海链控股股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。