一种区块链场景下的基于SNARK的非交互式公开可验证系统及计算方法

文档序号:35056253发布日期:2023-08-06 13:53阅读:20来源:国知局
一种区块链场景下的基于SNARK的非交互式公开可验证系统及计算方法

本发明涉及可验证计算领域,具体地涉及一种区块链场景下的基于snark的非交互式公开可验证系统及计算方法。


背景技术:

1、随着数据的爆发式增长,数据处理已成为一种非常复杂繁重的工作,单个用户无法支撑大量的计算,于是催生了分布式计算和云计算等计算服务的快速发展,它们可为用户提供分包计算以及外包计算。但是第三方服务器一般是不可信的,他们可能为了节约自己的计算资源或者其他目的而返回给用户一个错误的计算结果。为了构建可信外包计算过程,可验证计算(verifiable computing,vc)的概念被提出,可以将计算任务外包给第三方算力提供者,不受信任的第三方算力提供者需要在完成计算任务的同时,提交一份关于计算结果的正确性证明。

2、简明的非交互式知识论正系统sanrk因其非交互的性质引发众多研究者围绕其展开工作,但是snark非交互性质的关键crs模型依赖随机预言机假设和可信设置。在实际生产中,随机预言机假设无法被实现,只能用伪随机数代替,这导致存在随机数提前泄露的风险,威胁系统安全。同样地,可信设置假设也对系统的安全造成威胁。因此研究如何选取随机数和去除可信设置具有重要意义。

3、区块链作为分布式网络,链上计算的本质是将计算任务(同时的)执行多次,资源开销十分昂贵;因此,链上不适合承载过多的计算任务,它更适合“审计要求”,计算相对更轻量级,且侧重于对业务数据的全局状态更新的计算任务。但是对于各种商业应用场景,区块链有时需要承载较重的计算任务来确保系统的可信性,可验证计算恰好可以解决这个矛盾,它将过重的计算任务可信地外包到链下,而只需在链上执行轻量级的验证计算,使区块链支持含有较重计算任务的应用场景。


技术实现思路

1、本发明实施例的目的是提供一种区块链场景下的基于snark的非交互式公开可验证系统及计算方法,该区块链场景下的基于snark的非交互式公开可验证系统及计算方法可以验证计算初始化存在的随机数泄露风险和依赖可信设置的问题。

2、为了实现上述目的,本发明实施例提供一种区块链场景下的基于snark的非交互式公开可验证系统,所述区块链场景下的基于snark的非交互式公开可验证系统包括:

3、委托用户,设置有自己的公私钥对,所委托计算任务的输入数据和计算结果均为密文,在计算结果通过验证的情况下对计算结果进行解密以获得最终结果;

4、计算服务器,在所述密文上完成计算任务,得到计算结果密文,并对委托函数进行预处理以得到r1cs程序矩阵,最后将计算结果密文和r1cs程序矩阵上传至区块链;

5、证明服务器,对r1cs程序矩阵和区块链提供的随机数r进行进一步处理,生成crs的两组参数sp、sv;其中,区块链产生随机数r,且所述随机数r是一个区块的哈希值,此区块包含计算服务器上传的计算结果密文。

6、优选地,使用上述的区块链场景下的基于snark的非交互式公开可验证系统,所述计算方法包括:

7、步骤1,委托用户生成公私钥对,并将委托函数f、输入数据密文[[x]]和公钥pk上传到区块链;

8、步骤2,计算服务器从区块链上获取委托函数f、公钥pk,在密文上执行计算得到计算结果密文,并对委托函数进行预处理以得到r1cs程序矩阵,最后将计算结果密文和r1cs程序矩阵上传至区块链;

9、步骤3,证明服务器利用r1cs程序矩阵和区块链提供的随机数生成crs,其中sv可作为验证方执行验证计算的部分信息,sv可被证明服务器生成证明信息;

10、步骤4,根据委托用户的输入、证明服务器生成的证明信息π和crs中的sv进行信息的验证;

11、步骤5,根据作恶检查策略判断是否执行作恶检查算法;

12、步骤6,委托用户获取结果密文[[ω]],用私钥解密后等到结果明文:

13、优选地,步骤1中,

14、步骤1.1,委托用户构造线性加密系统:选定域拥有pairing配对属性的循环群g,生成元g∈g,执行生成算法随机生成一对公私钥对gen(1λ)→(pk,sk),所述线性加密系统具备加法同态和配对属性,为验证计算在密文下执行提供技术支持;

15、步骤1.2,将委托函数f、输入信息密文[[x]]和公钥pk上传到区块链。

16、优选地,步骤2中,

17、步骤2.1,计算服务器在密文上执行计算,然后通过同态加密特有的密钥轮换将结果重加密为密钥对pk,sk下的计算结果密文[[ω]];

18、步骤2.2,对委托函数进行预处理,将函数对应数学运算电路c转化为r1cs(rank-1constraint system)程序会生成三个矩阵其中,m是逻辑门电路的个数,n是(x,ω)的长度;根据随机选取的m个组成的范德蒙矩阵v和其逆矩阵v-1。

19、优选地,步骤3中,

20、步骤3.1,生成crs与区块链提供的随机数r和有关,其中三个矩阵之间可以找到一组解其中x为委托用户输入的明文,ω为结果明文,利用三个矩阵和这特定的解组成的范德蒙矩阵v和逆矩阵v-1,可生成三个时间多项式算法p(x)、l(x)、r(x)对应于三个矩阵a,b,c;这里3个时间多项式算法就构成一个snarg系统,记为π=(p(x)、l(x)、r(x));先将多项式做如下变形:

21、

22、其中pi(i∈[0,m-1])是多项式的系数,p(i)(i∈[0,m-1])是多项式在i点的取值;运用lpcp定理带入r,继续将多项式进行变形:

23、p(r)=[1r2...rm-1]v-1(a·z)

24、整个表达式分为两个部分:

25、p(r)=([1r2...rm-1]v-1a)·z=<q1,z>

26、q1=[1r2...rm-1]v-1a

27、因为向量z中1、x都是公共已知的所以可以将q1分成两部分:

28、

29、同理可得:

30、

31、

32、输出验证方crs:

33、生成的验证方crs应是加密后的数据:

34、

35、输出证明方crs:

36、

37、步骤3.2,证明服务器执行证明算法prove(sp,[[x]],[[ω]])→π,由于计算服务器已经将加密后的结果[[ω]]上传至区块链,所以证明信息可由证明服务器生成π=[[a]],[[b]],[[c]]

38、

39、

40、

41、步骤3.3,将验证方crs:证明信息π=[[a]],[[b]],[[c]]和作恶检查参数上传至区块链。

42、优选地,步骤4中,

43、验证方根据crs得到然后结合证明服务器生成的证明信息π=[[a]],[[b]],[[c]],利用线性加密系统中的加法同态运算和配对操作,检查验证等式是否相等:

44、

45、

46、若上式成立,验证通过,反之验证不通过。

47、优选地,步骤5中,

48、步骤5.1,根据步骤4的执行结果判断是否执行作恶检查算法,若验证不通过,则执行作恶检查算法;若验证通过,则执行随机检查算法;

49、步骤5.2,随机检查算法:判断随机数r是否小于阙值(阙值的大小可根据安全等级设置,安全等级越高,阙值越大),若小于阙值则对上一次可验证计算执行作恶检查算法,若大于或等于阙值则认为验证通过。目的是防止证明服务器作弊,用这次的随机数r来决定是否对上一次可验证计算执行作恶检查算法能有效实现检查的随机性;

50、步骤5.3,作恶检查算法:获取加密后执行证明证明信息生成过程,判断是否和证明服务器生成的π相等,若相等算法结果为真,若不相等,算法结果为假。

51、另外,本发明还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述的基于区块链场景下的基于snark的非交互式公开可验证系统的计算方法。

52、另外,本发明还提供一种处理器,用于运行程序,其中,所述程序被运行时用于执行:如上述的基于区块链场景下的基于snark的非交互式公开可验证系统的计算方法。

53、通过上述技术方案,所述方法利用区块链中特定区块的哈希作为生成crs的随机数,避免使用现实中不可实现的随机预言机,因此可以有效防范随机数提前泄露带来的风险;所述方法还基于双服务器模型,从而构造出无需可信设置的snark,并提供简单有效的作恶检查机制,进一步增强系统的安全性。所述方法借助线性加密系统使所有包含隐私信息的计算均在密文上执行,实现了隐私保护。

54、本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1