一种基于SM2的可验证随机函数构造方法和装置

文档序号:35666153发布日期:2023-10-06 21:41阅读:97来源:国知局
一种基于SM2的可验证随机函数构造方法和装置

本发明属于计算机技术与信息安全,旨在基于sm2椭圆曲线公钥密码算法,增强可验证随机函数的安全性,保证可验证随机函数的密钥对自行生成时,函数输出的不可预测性。具体表现为一种基于sm2的可验证随机函数构造方法和装置。


背景技术:

1、可验证随机数函数(verifiable random function,vrf)是一种公钥密码算法,它可以生成一个随机的、固定长度的函数值,同时生成一个可验证的证据。该证据可以用来证明该函数值是由特定的私钥和输入所生成的,任何节点都可以利用该证据验证输出的函数值的合法性。vrf在密码学货币、随机选举、身份验证、分布式系统等很多方面具有广泛的应用。特别的,vrf是用于实现隐私保护的选举机制的一项重要技术,在基于委员会的区块链共识等分布式系统中,vrf可用于节点本地判断选举结果,实现选举结果发布前的机密性、选举结果发布后的公开可验证性,以增强系统对适应性腐化攻击的抵御能力,提升系统的健壮性。

2、在分布式系统中,难以存在可信的第三方为每个节点正确的生成合法的密钥对,一种更贴合分布式特点的方法是令节点独立创建自己的密钥对。然而,现有大多数vrf构造无法保证节点使用恶意创建的密钥对作为输入时,输出的函数值仍满足不可预测性,即节点可以提前预知函数值,无法保证该值发布前的机密性,因此不适用于分布式系统中来构造安全选举等机制。sm2椭圆曲线公钥密码算法是国家密码管理局发布的国家标准密码算法,其安全性基于求解有限域上椭圆曲线离散对数问题的困难性,在包括金融领域在内的商用密码体系中发挥着重要的作用。本发明给出一种基于sm2构造可验证随机数函数的方法,并能够在恶意创建的密钥对场景下满足输出的函数值具备不可预测性。


技术实现思路

1、本发明的目的在于提出一种基于sm2的可验证随机函数构造方法,实现在使用恶意创建密钥对时输出的函数值的不可预测性。

2、为实现上述目的,本发明采用以下技术方案:

3、一种基于sm2的可验证随机函数构造方法,包括以下步骤:

4、初始化步骤:根据初始的安全参数lvrf,生成公开的系统参数pp;

5、密钥创建步骤:输入公开的系统参数pp,输出密钥对(d,p),其中d为私钥,p为公钥;

6、求值步骤:对于输入值m和私钥d,生成函数值y=h(m,[d]h'(m))和证据π,其中h为密码杂凑算法,h'为散列到椭圆曲线算法;

7、验证步骤:任意节点利用证据π'、输入值m'、以及对应的公钥p',验证函数值y'确由p'对应的私钥对输入值m'进行求值操作得到。

8、进一步地,所述系统参数pp表示为pp:=(g,n,h,h',hv),其中h'为散列到椭圆曲线算法h':{0,1}*→e(fq),将任意长度的字节串映射到椭圆曲线群e(fq)的元素;其他参数的生成与sm2椭圆曲线公钥密码算法gm/t 0003.1-2012国家标准第5章的规定保持一致,其中密码杂凑算法hv:{0,1}*→{0,1}v,椭圆曲线群e(fq)的基点g=(xg,yg)∈e(fq),g≠o,g的阶为n,o为对应椭圆曲线的无穷远点。

9、进一步地,密钥创建步骤与gm/t 0003.1-2012国家标准第6章的规定保持一致。

10、进一步地,节点执行求值步骤后,当要验证输出的函数值时,节点将函数值y、证据π、与d对应的公钥p、输入值m公开或传递给验证者,验证者执行验证步骤来验证节点对输入值m下求值的合法性。

11、进一步地,验证步骤中的输入值m'、公钥p'、函数值y'、证据π',可以与输入值m、公钥p、函数值y、证据π相同或不同。当后者为诚实地执行求值函数所生成,且在传递给验证者过程中没有被篡改时,m'、p'、y'、π'与m、p、y、π相同;否则,m'、p'、y'、π'与m、p、y、π不同。

12、一种基于sm2的可验证随机函数构造装置,其为一种计算机设备(计算机、服务器、智能手机等),包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。

13、和现有技术相比,本发明的主要优势体现在:

14、①在考虑节点任意恶意的生成可验证随机函数的公私钥对时,即节点不遵循密钥创建子算法,利用该构造的求值子算法输出的函数值y仍满足不可预测性,即任何节点在没有执行求值子算法时,无法提前预知输出的函数值;本发明能够取得这样的效果,是因为函数值y由执行密码杂凑函数h而生成,由于密码杂凑函数可视作随机预言机,即函数值只有在调用函数后才固定,否则函数值可能会是任意的随机值,这使得执行h之前无法预测所生成的函数值y。此外,求值子算法输出的证据用于向验证者证明,生成函数值y的过程一定有公钥p所对应的私钥作为密码杂凑函数h的输入,以此保证了节点不遵循密钥创建子算法而恶意生成公私钥对时,求值子算法输出的函数值y仍满足不可预测性。

15、②所提可验证随机函数的构造基于国家标准密码算法——sm2椭圆曲线公钥密码算法,除额外引入的散列到椭圆曲线算法外,其他参数和所有操作均可直接使用sm2算法支持的参数和操作,易于部署在支持sm2算法的密码产品和系统。

16、③所提可验证随机函数为非交互式,函数值的生成无需节点间的交互,适合在节点可能离线的环境下使用,如分布式系统等。此外,可保证函数值发布前的机密性,适用于有强安全需求的应用场景,如隐私保护的选举机制、投票系统、抗适应性腐化的区块链共识、密码学货币等。本发明能够保证函数值发布前的机密性,是因为函数值由密码杂凑函数h通过输入私钥d计算得到。由于密码杂凑函数具有抗碰撞性质,即难以找到拥有相同函数输出值的两个不同的输入值,因此不持有私钥d的节点无法在函数值发布前计算得到此结果,因此保证了函数值发布前的机密性。



技术特征:

1.一种基于sm2的可验证随机函数构造方法,其特征在于,包括如下步骤:

2.如权利要求1所述的方法,其特征在于,所述系统参数pp表示为pp:=(g,n,h,h',hv),其中h'为散列到椭圆曲线算法h':{0,1}*→e(fq),将任意长度的字节串映射到椭圆曲线群e(fq)的元素;其他参数的生成与sm2椭圆曲线公钥密码算法gm/t 0003.1-2012国家标准第5章的规定保持一致,其中密码杂凑算法hv:{0,1}*→{0,1}v,椭圆曲线群e(fq)的基点g=(xg,yg)∈e(fq),g≠o,g的阶为n,o为对应椭圆曲线的无穷远点。

3.如权利要求1所述的方法,其特征在于,所述密钥创建步骤与gm/t 0003.1-2012国家标准第6章的规定保持一致。

4.如权利要求1所述的方法,其特征在于,所述求值步骤的操作如下:

5.如权利要求1所述的方法,其特征在于,所述求值步骤的操作为非交互式。

6.如权利要求1所述的方法,其特征在于,所述验证步骤的操作如下:

7.一种隐私保护的选举方法,其特征在于,基于权利要求1~6中任一项所述基于sm2的可验证随机函数构造方法实现,所述基于sm2的可验证随机函数构造方法中的密钥创建步骤、求值步骤、验证步骤分别称为密钥创建子算法、求值子算法、验证子算法;该隐私保护的选举方法包括:

8.如权利要求7所述的方法,其特征在于,步骤3.2)包括:将节点公开的函数值、证据对、节点公钥和选举阶段服务器公开的随机数作为验证子算法输入,若验证子算法输出验证通过,并且节点公开的函数值小于系统阈值t,则该节点被选中;反之该节点没有被选中。

9.一种基于sm2的可验证随机函数构造装置,其特征在于,包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行权利要求1~6中任一项所述方法的指令。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现权利要求1~6中任一项所述的方法。


技术总结
本发明提出一种基于SM2的可验证随机函数构造方法和装置,属于计算机技术与信息安全技术领域,旨在基于SM2椭圆曲线公钥密码算法,增强可验证随机函数的安全性,解决现有可验证随机函数难以保证节点使用恶意创建的密钥对时,所生成的函数值仍满足不可预测性。该方法包括初始化、密钥创建、求值、验证四个步骤,构造方法为非交互式,即函数值的生成无需其他节点的参与,适合在节点可能离线的分布式环境下使用。该方法满足恶意密钥创建下的不可预测性,适用于分布式环境下有强安全需求的应用场景,如隐私保护的随机选举、投票系统、抗适应性腐化的区块链共识、密码学货币等。

技术研发人员:胡可欣,张振峰
受保护的技术使用者:中国科学院软件研究所
技术研发日:
技术公布日:2024/1/15
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1