当前位置:首页区块链当深层神经网络满足零知识证明时

当深层神经网络满足零知识证明时

本文共享摘要:

1什么是零知识证明

2隐私保护、区块链和零知识证明

3如何证明深层神经网络的推理过程

4大数据零知识证明的应用前景

当深层神经网络满足零知识证明时

今天,我们来谈谈“当深层神经网络遇到零知识证明时”

零知识证明

当深层神经网络满足零知识证明时1

“零知识证明”的概念在区块链的底层技术架构中并不陌生。它是由戈德瓦瑟、米卡利和拉科夫在1985年提出的(如图所示)。虽然“零知识证明”长期以来局限于计算理论的一个小领域,但其影响是深远的。

零知识证明中有一个词“证明”这一概念在整个人类文明史上经历了许多范式的变化。在古希腊,“证明”是一种巧妙的数学技巧;20世纪初,在第三次数学危机中,数学证明被重新解释,形式逻辑被引入并形式化,于是计算理论和计算机诞生了。

20世纪70年代,程序与证明之间的奇妙关系被发现,现代函数编程和自动定理证明的许多概念被引入;80年代,“证明”的概念被扩展到交互式系统。20世纪80年代以后,交互式证明制度在哲学上、理论上和技术上都带来了革命性的新见解。

当我第一次看到零知识证明的概念时,我的第一反应是它非常违反直觉。为什么是“反直觉”?我先简单介绍一下零知识证明的基本框架。

当深层神经网络满足零知识证明时2

在零知识证明中,右边一定有这样的人。我们叫他鲍勃。在左边,可能有一个不可信的机器。此时,假设Bob有一个计算任务要交给左边的机器,但是机器本身可能由一个人控制。Bob需要将一个“f()”函数作为计算任务,将输入的“X”交给左边的机器来完成计算任务。因为这个计算过程发生在左边的机器上,而Bob没有见证整个计算过程,为什么Bob认为公式y=f(x,w)可以成立。另外,在计算过程中加入了一些只有左机知道的秘密数据(W),而Bob没有W,因此Bob无法通过再现计算过程来知道计算结果是否正确。在这种情况下,Bob还能相信计算结果是正确的吗?

总之,零知识证明可以神奇地说服Bob计算是正确的。这听起来有点不可思议。信任计算y的结果是基于对左机的不信任,即零知识证明它凭空产生了一些信任,这是反直觉。想象两个人在完全不信任对方的时候可以通过某种方式建立信任,这是非常非常有趣的。

反直觉零知识证明,我想总结一下,可以理解为:它可以保证远程计算过程的完整性和机密性。

1正直。虽然我没有看到远程计算的过程,虽然我没有亲眼目睹它的过程,但我知道计算过程一定是实时发生的,而且计算结果是正确的,也就是说计算过程没有被恶意修改或伪造。

2保密。虽然我看不到计算过程,但我不知道计算过程中的一些中间结果,也不知道一些内部信息。因此,整个计算过程,包括一些秘密输入,对我来说都是保密的。

这就是反直觉零知识证明的效果。零知识证明有什么用?我觉得最直接的用途就是所谓的“数据隐私保护”我列出了一些,如个人资料:健康资料、银行流量、旅行安排、通讯记录。事实上,我们不想让任何人知道我们的健康状况,包括我们的心率,医疗记录,或者我们每天花了多少钱。但我们也想享受第三方服务。例如,我们想让一些人知道他们在哪里,但是我们不想让其他人知道,或者我们只是想让他们知道一个大致的地方,但是我们不想让他们知道具体的位置。

企业数据:人事档案、仓储物流、财务账册、客户信息,这些都是传统意义上非常机密的数据,但为了**限度地发挥企业之间的合作效果,有必要对部分数据进行共享。零知识证明不仅保证了数据的隐私性,而且提供了数据共享的途径。所以零知识证明对我们未来生活和工作的**影响就是提供非常有效的数据隐私保护技术。

零知识证明在区块链的底层技术中有许多有趣的用途。自1985年提出以来,长期以来一直停留在理论成果的层面。直到区块链技术得到广泛应用,从2015年到2020年,零知识证明在区块链中得到了广泛的应用。它包括区块压缩、交易匿名性保护、身份隐私、共享数据、链外数据存储完整性等,区块链行业的技术朋友应该对此非常熟悉。

这里有两个基本概念。

NIZK(非交互式零知识)

非交互式零知识证明。

如前所述,当零知识证明被提出时,对“证明”范式进行了新的创新。过去,证据是写在纸上的。例如,老师做了一个测试,如果他想证明,他必须写出证明过程。零知识证明是一种交互式证明。通过和老师交谈,我们可以让老师相信我,而不必告诉老师任何证明过程。

为什么会有非交互式零知识证明?非交互式零知识证明是利用一些特殊的技巧,将交互式证明过程转化为非交互式零知识证明。非交互式零知识证明在区块链领域的应用更为广泛。

zkSNARK公司

这也是一个很常见的词,当然,在学术界有很多不同的解释。松散地说,zksnark是一个特殊的NIZK,即一个特殊的非交互式零知识证明?

这里有三点:

1简洁的。它产生的证据有多小?它通常是KB,可以小到200字节。虽然只有几百个字节,但它可以表示的计算过程可能非常非常大,并且它可以保护的数据可以达到兆字节量级。

2、 论证。这是一种零知识证明,稍后将简要解释。

3Zksnark终于有了一个“K”,意思是知识。这意味着证明是关于“知识”的证明,知识有数学定义。

隐私保护、区块链和零知识证明

当深层神经网络满足零知识证明时3

在我们讨论这个概念之前,我们必须首先讨论密码学的一个非常重要的概念——承诺。如图所示,您可以看到左侧有一个数据库。这个数据库非常非常大,可能超过1TB。你可以用加密技术把它变成一个非常小的字节,大约不到100个字节。不管数据库有多大,**的承诺是它可以压缩成不超过100字节的数据。

虽然它只有100多个字节,但它可以与数据库建立唯一的绑定关系。如果数据库中有任何更改,则承诺必须随之更改。承诺就像一把“锁”只要有人写下承诺,只要数据库有任何变化,承诺就会发生巨大变化。

承诺有两个属性

属性1:绑定,绑定原始数据集的承诺(不能被篡改)。这个数据集可以非常大,但是它可以与非常小的承诺绑定。

属性2:隐藏,它承诺不泄露原始数据的信息。因为只有大约100个字节,所以没有泄露任何原始数据信息,因为信息量已经大大丢失。

如果有多个数据库,如旅行记录和银行各有一个数据库,则可以生成两个承付款并链接到链上。当承诺放在区块链上时,会有一个效果,就是你永远不能回去修改数据库,但是承诺放到链上之后,你可以通过承诺访问数据库,这当然是选择性的,或者经过一些处理后打开数据库。但因为这个承诺是锁在锁链上的,所以不可能作弊。在将数据交给另一个人之前,您可以进行非常复杂的处理。你可以删除里面的敏感数据。这必须是非常诚实的,没有欺诈,因为承诺是链上的。

承诺听起来很神奇,但它是一种非常传统和常用的加密工具,但非专业人士对此知之甚少。事实上,实现承诺的方法很多。最简单的方法是使用hash之类的操作。有Merkle树,Pedersen承诺,或复数承诺或ElGamal加密,所有这些都可以实现承诺。

从密码学的角度分析了两种关键的承诺类:第一类:计算绑定和完全隐藏。第二类:完美绑定和计算隐藏。

所谓完美隐藏就是承诺**不可能泄露任何东西,并完美地隐藏原始数据。但是,它的绑定关系是计算的。如果你想象100年后有人会拥有一台超级量子计算机,它将比现在的算力强大得多。当时,它可以用来伪造与原始数据无关的虚假承诺。

另一个则相反。它的约束关系是完美的约束。假造超级量子计算机是不可能的,但它的隐藏是计算的。也就是说,如果一台超级量子计算机在100年后问世,它可以打破承诺,从中提取一些有用的信息。

事实证明,在绑定和隐藏中不可能存在完美的承诺方案。然而,对于隐私保护的零知识证明,我们通常使用第一种承诺,即完美隐藏,但承诺是计算绑定。因为我们要把承诺放在链条上,也就是说,100年后,所有人还是看得见的,但不必担心这些信息100年后会被别人破解。另外,这种承诺可以产生一个非常简洁的零知识证明,这就是我前面提到的论点。

Zksnark原理

如何使用100字节提交到数据库,同时证明这些数据符合某些属性,这听起来非常不可思议。

当深层神经网络满足零知识证明时4

首先,什么是“零知识证明”?右边的Bob说他想做一个计算,然后把计算结果给一个他不相信的远程机器。这台机器可能已经被黑客控制,或者这个人可能会制造麻烦,但这无关紧要。给它函数,输入x,然后给我一个Y。虽然我不相信那台机器,但我对y有怀疑,因为我看到了y,但我相信它是因为我检查了额外的零知识证明,它告诉我这个y是真的。如何做到这一点?

让我们回到最简单的想法。如果一台机器运行我的程序,我看不到。最简单的方法是用摄像机全程记录计算过程。每一步的计算你都能查出来。这是愚蠢的,但理论上可能有用。

但显然,这个方案是非常不切实际的,因为当机器运行时,机器的内存状态非常大,比如4G内存。录制整个过程,视频文件会很大,无法验证。

有什么办法可以改进吗?我们用计算电路的计算模代替了CPU加内存的计算模。算法电路计算模与计算机CPU运行程序的表达能力大致相同,基本上可以表达一般的计算。

运算电路由若干互连门组成,包括乘法门和加法门。输入从电路左侧输入,运算后在右侧输出线上产生运算结果。整个过程是计算“+”和“×”不要小看这两种操作,它们可以表达绝大多数的操作。

运算电路的优点是计算过程可以被拍摄下来。此时,只要相机按下快门拍摄电路的全景图,就相当于记录了所有的计算过程。这样,验证计算就不再是验证视频了。视频是逐帧观看的,但照片只是一张照片,只要照片的每个细节都经过验证。

如何验证电路计算?为了验证每个门的操作,对于每个加法门,验证左输入和右输入之和不等于输出。对于乘法门,验证左输入和右输入的乘法不等于输出。只要你耐心地逐一检查每个门,就没有问题。

如果有上百亿个关口,可能需要一年多的时间来验证。有没有办法简化这么多闸门的验证过程?这可以用数学工具“多项式编码”来实现。

例如,有一些数字:Y0,Y1,Y2。我们把它们放在XY轴平面上,把它们变成点,然后找到一条刚好穿过这些点的曲线,这相当于用一条曲线来编码从Y0到yn的所有值。

编码成曲线有什么好处?优点是,如果我想改变其中一个值YK,即使我稍微改变一下,整个曲线也会受到明显的干扰。扰动曲线仅在n个点与原曲线相同,其余点有偏差。多项式编码可以放大任何微小的修改。因此,我们可以通过随机验证一个点来检查曲线编码点是否已被修改。

接下来,我们可以对算术电路中所有乘法门的左输入门、右输入门和输出门做三个不同的多项式编码,形成三条曲线。现在只要有三条曲线,就足以证明这三条曲线(三个多项式)满足乘法关系。为了验证乘法关系,只需要在x轴上随机抽取一个点,而不需要验证100亿个门。虽然这三条曲线都得到了验证,但很明显验证者看到了太多的秘密。零知识证明应确保计算过程的秘密不被泄露。你怎么做到的?多项式运算同态可以映射到椭圆曲线群。

将整数有限域的加法运算映射为椭圆曲线群上的二元运算。整数乘法可以同态映射到椭圆曲线群上的对运算。乘法只能是单次乘法,但它可以验证运算电路的运算关系。

这个过程看起来很简单,但zksnark的研究是基于许多密码学家的艰苦探索。这条路线可以追溯到iko07(2007年)。2010年,增长初见端倪,关键突破是2013年。groth16的改进方案是目前业界***的零知识证明算法。还有一些非常新的改进,如marlin、Aurora、Spartan和fractal,它们都是在ggpr13算法的不断改进中发展起来的。

2013年的ggpr13论文是一个很大的突破,许多精彩的想法来自它。这篇论文的四位作者是罗萨里奥·根纳罗、克雷格·根特里、布赖恩·帕诺和玛丽安娜·雷洛娃。

当深层神经网络满足零知识证明时5

看看ggpr13/Pinocchio/groth16框架。当我们要表达任何计算时,我们首先用**语言编写代码,然后通过编译器编译成算术电路,然后通过矩阵表示生成r1cs矩阵,通过多项式编码生成QAP,**生成:通过可信设置生成密钥和验证密钥。使用产生密钥可以证明计算过程,而验证密钥可以用来证明π是正确的。

零知识证明+深层神经网络

通过零知识证明,我们可以计算出对数据库的承诺并将其发布到链中。在通过承诺将数据库放到链上之后,我们可以做很多事情。我们可以利用数据库生成很多有用的信息。我们可以在不暴露个人隐私的情况下与朋友、企业和整个社会共享信息。接下来,让我们介绍一下我们团队在深度网络方面取得的阶段性成果。

图像识别是非常有用的。这是一个标准的图像设计模。标准的有224架飞机、224架飞机等。下一步是做隐私保护+机器学习(零知识证明+深层神经网络)。

当深层神经网络满足零知识证明时6

左边有一个数据库。数据库中有很多隐私信息。经过机器学习(训练),生成人工智能模。爱丽丝不想曝光这个模。毕竟,这种模式可以反映个人隐私。

但Alice认为该模可以为Bob提供有价值的信息。鲍勃会提供一张照片给爱丽丝,并说你可以帮我识别照片,但我不知道你的训练装备的细节。Alice可以拍摄照片并将其放入模中进行识别并生成结果,并且附带零知识证明。如果模的结果是识别一只猫,但我也告诉你零知识证明,证明结果确实是由一个秘密模识别出来的。当然,猫和狗可以看到它没有证据,但对于一些机器学习场景,没有办法确定预测结果是否可信。

比如说,如果医学诊断拍的片子里有癌症的早期征兆,看电影看不出来结果,但模可以告诉你,这是非常健康的。如果你不相信也没关系,零知识证明可以告诉你这确实是一个非常可靠的X射线数据库的推论。

这个模特能保证上链,这使得爱丽丝**不可能欺骗鲍勃。关键是你不再需要相信爱丽丝是好人还是坏人。如果你能证明结果是正确的,你只关心结果,而不是谁提供的结果。

下一步是对ggv16神经网络模进行识别实验。它是一个16层的深层神经网络。它有大量的参数,包括14个卷积层,2个全连接层,relu激活函数和Max pooling。

当深层神经网络满足零知识证明时7

这是非常有挑战性的。首先,没有以前的工作可供我们参考。

挑战一:如何在算术电路中进行科学计算。

科学计算中有很多十进制和浮点运算。我们选择对有限域内的不动点数目进行编码,并对vgg16模的所有数据进行规范化处理,以确保所有不动点数目不超过256个。取6个十进制定点数,整数部分取8位,小数部分取6位,某个点数取24位。数字电路用于实现对定点数的各种运算(乘法、平方根、对数等)。

挑战二:r1cs矩阵巨大,需要Pb级内存。

一般的计算机内存是GB,服务器要几百克的内存计算得非常大。如果r1cs矩阵运算电路真的被编码出来,它需要Pb级内存。普通的机器受不了。我们计算出vgg16图像识别需要146亿个乘法门。据我们所知,这是世界上第一次进行如此大规模的实用算法零知识证明。乘法量分布以卷积层为主,在深度神经网络中占90%以上。

由于电路矩阵太大,我们不得不发明一种新的零知识证明方案clink来证明图像识别的过程。与其他零知识证明方案相比,clink在处理大规模电路时采用了一些特殊的技术。

技术一:在一个巨大的电路中有很多重复的电路。就图像识别而言,有许多卷积层。那么多个卷积层的电路部分是相似的,相似的部分可以合并。

技术二:可以将巨大的电路拆开,分成许多小电路,这样存储器就可以把小电路装配起来,一个接一个地做,完成后再连接起来。电路拆卸后,多个电路之间的连接部分需要保护。这些值仍然是秘密的,不能公开。我们仍然使用承诺来保护暴露在中间的所有子电路之间的连接。然后可以拆卸电路。

相同的子电路可以组合起来证明。**,对大电路生成多个零知识证明,并加入中间值承诺。**,形成了一个完全的零知识证明。在该过程中,生成子电路的零知识证明,中间值不作为公共输入/输入,并对结果进行压缩和重新压缩。

我们做了两个实验

方案1(并行):充分利用多核CPU的优点,并行计算vgg16,对16层电路进行并行证明,同时完成所有承诺层之间的链路证明。

方案二(串行):串行一层,先做第一层和Layer2,再做第一层和Layer2之间的链路证明。

我们要感谢qtum团队为我们提供了一个拥有1TB内存和高性能SSD的超级服务器。让我们使用第一个并行方案,因为并行方案仍然需要大量内存。虽然它不需要Pb级别,但运行并行方案需要大约5TB的内存,其中4tb在交换机分区上。由于SSD交换分区是在整个过程中使用的,因此性能会受到很大的影响。

并行方案:用25小时的时间证明图像可以识别224×224分辨率的猫。如果给一台内存为4tb的机器,可能只需要5个小时,但是很难找到一台内存为4tb的机器,验证时间需要一个小时。实验证明,该算法的长度为80Kb,峰值内存消耗为5TB。

串行方案:它看起来比较慢,但在机器上运行得更快。因此,它只使用500GB的内存,而不使用exchange分区。因此,总的来说速度更快。证明时间为20小时,验证时间为1小时,证明长度为110kb。

在我们的实验过程中,韩国学者也发表了论文草稿,正在与我们一起做类似的工作。知名的区别是他们对vgg16做了一些折衷的修改,特别是在电路中进行**池化时,所以他们使用平均法来进行池化。他们推出了一款非常大的83gb CRS。在我们的方案中,CRS是非常小和实用的。据我们所知,这是世界上新的研究成果。

大数据零知识证明的应用前景

零知识证明已从理论发展到工程实践,并逐步走向应用。将来它将能够处理更多的数据。我们在探索过程中开发的clink算法可以支持大数据的统计、查询等复杂操作,甚至包括深层神经网络的推理过程。未来,这些技术可用于:

1可验证的数据库。每个人都可以将数据放入数据库,但永远不需要告诉任何人有关数据库的信息。当别人向你要数据时,你可以对数据做一些处理,但它可以证明在处理过程中没有欺诈行为,并确保数据确实有价值。可验证数据库是未来互联网公司通过非常安全的手段共享数据的一个新的技术方向。

2可验证的隐私保护技术。个人数据,如健康数据和旅行记录,需要通过添加噪音来保护,然后交给第三方互联网公司,通过机器学习为我们提供更好的服务。但它也确保了数据的可用性和真实性。

在充分保护个人隐私的情况下,与商业公司共享更好的数据,让它们反过来为我们提供更好的服务,是未来数字经济的商业模式。

如果您对零知识证明、人工智能和机器学习感兴趣,可以与我们离线讨论。谢谢您。

在本文的**,如果您想更深入地了解区块链技术,请原文,报名参加第六届全球区块链峰会,聆听中国银行前行长李立辉和V神分享区块链技术,以太坊创始人/万向区块链实验室首席科学家。

温馨提示:

文章标题:当深层神经网络满足零知识证明时

文章链接:https://www.btchangqing.cn/110228.html

更新时间:2020年09月26日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

旱季就要来了。中国矿工要去哈萨克斯坦淘金?

2020-9-26 1:13:28

DEFI区块链

分权还是海市蜃楼?众所周知的defi协议,如compound,仍然有管理密钥

2020-9-26 1:29:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索