基于零知识证明的神经网络输出结果产权证明方法及装置

文档序号:36420717发布日期:2023-12-20 09:50阅读:52来源:国知局
基于零知识证明的神经网络输出结果产权证明方法及装置

本发明属于密码学、神经网络的,具体涉及一种基于零知识证明的神经网络输出结果产权证明方法及装置。


背景技术:

1、零知识证明是运行在证明者和验证者之间的一种两方密码协议,它可以使证明者(prover,缩写为 p)说服验证者(verifier,缩写为 v)相信某一命题的正确性而不泄露除正确性之外的任何信息。

2、零知识证明首先是交互式证明,即证明者与验证者双方需要同时在线、共同协作完成协议的交互过程,然后验证者才能决定是否信任证明者所陈述的命题。零知识证明协议的主要性能指标有三项:证明复杂度、验证复杂度、证明大小。其中,与业务的时间限制相关的是证明复杂度和验证复杂度,与业务的通信量限制相关的是证明大小。目前,这三项指标之间的关系有点像一个不可能三角——基于不同技术路线实现的零知识证明协议,只能在其中的一个或两个方面优于其他对比方案。

3、在交互式证明的基础上,零知识证明可以通过fiat-shamir变换修改为非交互式证明。转变成非交互式协议之后,证明者可以独立完成全部证明过程,然后将生成的证明发送给验证者,而验证者可以在任意时刻独立检查证明的有效性,从而决定信任与否。

4、另外,数字签名(又称公钥数字签名)是一种用于验证和保证电子文档或数据的真实性、完整性和不可抵赖性的技术手段。它使用了非对称加密算法,结合了公钥密钥对和哈希算法。它是一种类似物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。

5、对于利用生成式神经网络进行ai创作,在当前的如此高速发展的社会中已形成一种趋势。虽然在结合零知识证明和数字签名的加密方式该应用领域中发挥着不小的作用,在一定的限度内能够提供比较好的保密效果,但是原本用于神经网络可验证计算场景的zkcnn协议应用到神经网络输出结果的产权证明场景当中,并且要解决如下两个问题:第一,在产权证明场景中会出现的“证明盗用”问题;第二,zkcnn协议目前支持的神经网络类型有限,仅支持输出结果为单个数值的神经网络模型,例如各种分类模型,而无法支持输出结果为向量的神经网络模型,例如各种生成式网络。


技术实现思路

1、本发明的主要目的在于克服现有技术的缺点与不足,提供一种基于零知识证明的神经网络输出结果产权证明方法及装置,提出一种基于零知识证明的神经网络输出结果产权证明方案,能够在保证不泄露神经网络输入数值和神经网络权重参数的同时,生成一份安全可靠且持久有效的证明 π,以证明某个数值或向量确实是由该神经网络计算出来的,从而为神经网络输出结果的产权证明提供一种新的思路、为版权保护场景提供一种新的工具。

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

3、第一方面,本发明提供了一种基于零知识证明的神经网络输出结果产权证明方法,包括下述步骤:

4、包括验证零知识证明 π步骤和验证签名步骤:

5、所述验证零知识证明 π步骤,具体为:

6、s11、基于深度神经网络构建算术电路,拼接输入参数形成向量 t;所述输入参数包括秘密参数和密钥字段;

7、s12、证明者选取随机数 r,使用零知识承诺协议 zkpc和随机数 r对向量 t做承诺, zkpc( t, r)获得承诺多项式 com;利用算术电路对向量 t运算得到输出向量 e;

8、s13、对输出向量 e经过电路函数定义形成输出层的定义函数,而后逐层执行zk-sumcheck协议;执行过程中,将定义函数的正确性归约到靠近输出层一侧的相邻层的同一组点的正确性,即生成深度神经网络各层的正确性参数、、和,然后生成随机数 α与 β作为权,利用第一求和等式对和进行加权求和,求得组点q值;再利用组点q值根据深度学习网络的层数循环执行zk-sumcheck协议;继续调用zk-sumcheck协议,计算第二求和等式将正确性参数和的正确性归约到输入层;其中, x和 y则分别表示运算门的第一条输入导线和第二条输入导线在其来源层的导线序数, in表示输入层, i表示深度神经网络的层数;

9、s14、生成设定长度的随机数向量,然后将该随机数向量裁剪,获取较短的随机数向量;基于零知识承诺协议 zkpc,证明者与验证者合作,利用随机数向量和随机数 r打开承诺多项式 com,验证者获得秘密参数和密钥字段的映射值,然后计算第一验证等式;验证者根据第一验证等式完成最终检查,如果第一验证等式成立,则零知识证明 π有效;

10、所述步骤s11-s14均在zkcnn协议下进行;

11、所述验证签名步骤:具体为:

12、s21、在算术电路中,令秘密群元素 w、生成元和被签名的消息 m拼接形成向量 t的密钥字段,然后将该新向量输入电路中,得到新的输出向量;证明者计算新的输出向量中的签名的随机数;验证者根据第二验证等式检验新的输出向量中的签名的随机数,然后利用公钥和签名验证第三验证等式,如果第二验证等式和第三验证等式均成立,则签名有效。

13、作为优选的技术方案,所述基于深度神经网络构建算术电路,具体为:

14、所述基于深度神经网络构建算术电路,具体为:

15、设定算术电路共有 d层;设置运算门,包括加法门和乘法门,加法门设置输出导线 z和输入导线 x,乘法门设置输出导线 z和输入导线 x与 y;所述运算门的任意一条输入导线的来源均分为两种情况:第一是相邻层的某条导线的值,第二是来自输入层的输入向量里的某个值;

16、运算门的运算等式如下:

17、;

18、;

19、;

20、;

21、;

22、;

23、其中, xadd表示加法门, xmult表示乘法门, v i( z)表示第 i层电路的第 z条导线, s in表示输入层的电路门总数, s i表示第 i层的电路门总数,表示某函数的多变量线性拓展。

24、作为优选的技术方案,所述拼接输入参数形成向量 t,具体为:

25、将输入层的全体参数通过量化等式或定点表示法转化为整数;

26、统计输入样本 x、权重参数 w、辅助参数 aur、密钥字段 sk四个字段各自的长度,得到其中最长的字段的长度为n;用0将四个字段的长度均补足为n,然后将四个字段拼接在一起,形成一个长度为4n的向量。

27、作为优选的技术方案,步骤s13,还包括以下步骤:

28、设电路输出层的输出向量为,则根据电路函数的定义等式,分别为其各个分量定义函数,其中且;然后对此 n个函数分别利用第一求和等式执行zk-sumcheck协议,并且要求这 n组zk-sumcheck协议并行执行;

29、第一次执行完毕后,输出层输出 n个函数值,并且该 n个函数值的正确性被归约至相邻层的同一组点的正确性,即四个值:、、和,然后,生成随机数 α与 β,计算组点;

30、根据深度学习网络的层数 i,循环执行以下步骤:首先对组点q值基于第一求和等式zk-sumcheck协议,从而将其正确性归约到以下四个值的正确性上、、和,然后,生成随机数 α与 β,得到新的组点q值;当输出层执行完毕后终止;

31、继续调用zk-sumcheck协议,将来自各层的正确性参数和的正确性归约到输入层,如下式:

32、;

33、;

34、其中, z i表示运算门的输出导线是第 i层的第 z条导线, c i表示一种输出0或1的匹配函数。

35、作为优选的技术方案,步骤s14中所述生成设定长度的随机数向量,然后将该随机数向量裁剪,获取较短的随机数向量,具体为:

36、生成随机数向量 r a=( r1 , r2 ,…, rlogn, r1+logn, r2+logn),该向量的长度为2+logn,然后,裁剪掉向量 r a的最后2个分量,从而获得一个较短的随机数向量 r b=( r1 , r2 ,…, rlogn),该向量的长度为logn。

37、作为优选的技术方案,步骤s14还包括以下步骤:

38、证明者与验证者合作,利用随机数向量 r b和随机数 r打开承诺多项式 com,即 zkpc.open( com,r,r b)从而使验证者获得随机点 r b的多变量线性值、、及;

39、验证者获得秘密参数和密钥字段的映射值,然后计算第一验证等式,如下式:

40、;

41、其中表示由神经网络的输入样本x转化形成的秘密参数,表示由神经网络的内部权重参数转化秘密参数,表示神经网络的池化运算形成的秘密参数,表示证明者的私钥;

42、如果第一验证等式成立,则零知识证明 π有效,输出。

43、作为优选的技术方案,步骤s21还包括以下步骤:

44、令电路输入层的输入向量 t=(x, w, aux, sk),经过算术电路运算后得到输出向量( y,z),且 z=( a, e,z),其中, y是一个长度为 n的输出向量,表示输入样本x经过神经网络w所得到的输出产物,也是需要进行产权证明的核心对象; z表示签名向量,字段,表示拼接, w表示秘密群元素,表示生成元, m表示被签名的消息, a表示证明者计算出的随机数, e表示验证者选取的随机数, z表示隐蔽携带着秘密信息的一个值;

45、证明者代替验证者计算随机数 e计算,如下式:

46、;

47、验证者分两步验证签名 z的有效性,具体为:

48、s211、检验随机数的有效性,即是否成立;

49、s212、用证明者的公钥 h和输出向量中的签名向量 z=( a, e,z)去验证是否成立;

50、如果s211至s212均成立,则签名有效,输出。

51、第二方面,本发明还提供了一种基于零知识证明的神经网络输出结果产权证明系统,应用于所述的基于零知识证明的神经网络输出结果产权证明方法,包括验证零知识模块和验证签名模块;所述验证零知识模块包括电路准备模块、承诺输入模块、逐层证明模块和最终验证模块;

52、所述验证零知识模块在zkcnn协议下进行;

53、所述电路准备模块用于基于深度神经网络构建算术电路,拼接输入参数形成向量 t;所述输入参数包括秘密参数和密钥字段;

54、所述承诺输入模块用于证明者选取随机数 r,使用零知识承诺协议 zkpc和随机数 r对向量 t做承诺, zkpc( t, r)获得承诺多项式 com;利用算术电路对向量 t运算得到输出向量 e;

55、所述逐层证明模块用于对输出向量 e经过电路函数定义形成输出层的定义函数,而后逐层执行zk-sumcheck协议;执行过程中,将定义函数的正确性归约到靠近输出层一侧的相邻层的同一组点的正确性,即生成深度神经网络各层的正确性参数、、和,然后生成随机数 α与 β作为权,利用第一求和等式对和进行加权求和,求得组点q值;再利用组点q值根据深度学习网络的层数循环执行zk-sumcheck协议;继续调用zk-sumcheck协议,计算第二求和等式将正确性参数和的正确性归约到输入层;其中, x和 y则分别表示运算门的第一条输入导线和第二条输入导线在其来源层的导线序数, in表示输入层, i表示深度神经网络的层数;

56、所述最终验证模块生成设定长度的随机数向量,然后将该随机数向量裁剪,获取较短的随机数向量;基于零知识承诺协议 zkpc,证明者与验证者合作,利用随机数向量和随机数 r打开承诺多项式 com,验证者获得秘密参数和密钥字段的映射值,然后计算第一验证等式;验证者根据第一验证等式完成最终检查,如果第一验证等式成立,则零知识证明 π有效;

57、所述验证签名模块用于在算术电路中,令秘密群元素 w、生成元和被签名的消息 m拼接形成向量 t的密钥字段,然后将该新向量输入电路中,得到新的输出向量;证明者计算新的输出向量中的签名的随机数;验证者根据第二验证等式检验新的输出向量中的签名的随机数,然后利用公钥和签名验证第三验证等式,如果第二验证等式和第三验证等式均成立,则签名有效。

58、第三方面,本发明提供了一种电子设备,所述电子设备包括:

59、至少一个处理器;以及,

60、与所述至少一个处理器通信连接的存储器;其中,

61、所述存储器存储有可被所述至少一个处理器执行的计算机程序指令,所述计算机程序指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述的基于零知识证明的神经网络输出结果产权证明方法。

62、第四方面,本发明提供了一种计算机可读存储介质,存储有程序,所述程序被处理器执行时,实现所述的基于零知识证明的神经网络输出结果产权证明方法。

63、本发明与现有技术相比,具有如下优点和有益效果:

64、(1)本发明以并行执行n组zk-sumcheck协议的方式,将zkcnn协议改造为能够用于针对向量进行证明,使得整体证明协议的执行次数与向量长度无关,仅仅是部分子协议的执行次数与向量长度成正比,从而有效控制了整体证明开销。

65、(2)本发明将神经网络可验证计算方案嵌入数字签名,修改后的协议则可以让原本公开的要求神经网络的输入x具备保密性,保证证明的不可盗用性,从而使其能在实际场景当中支持非交互式证明,这样不但降低了成本,而且不需要引入可信第三方或者区块链。

66、(3)本发明通过使用fiat-shamir转换,将交互式证明协议转变为非交互式证明协议,使得任何需要由验证者选取的随机数可以由证明者利用哈希函数进行代替计算,从而让证明者可以在没有第二方参与的情况下独立完成证明,并且依此法生成的证明对后来的任意一方验证者均保持有效性。

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