某某机械设备有限公司欢迎您!

云中「秘密」:构建非交互式零知识证明“【明升体育】vip会员”

时间:2020-10-17
平到这里的读者毕竟无意零科学知识证明有了一个大约的了解。你否想要过这个问题:零科学知识证明为何不切实际?这里请求大家思维一下(比如系列一(初识「零科学知识」与「证明」) 中的地图三染色问题的流程) …… (此处逗留三分钟)下面两个要素 或许 必不可少:「交互」:检验者通过多次重复挑战,把证明者作弊概率减少到一个大于的值「隐蔽随机性」:检验者产生让证明者无法预测的随机数展开挑战然而对于非交互式零科学知识证明—— NIZK 来说,如何构建上面两点?在系列四(亚瑟王的「随机」挑战:从交互到非交互式零科学知识证明) 我们讲解了如何使用「随机应验机」来扮演着一个虚拟世界的「第三方」角色,构建虚拟世界的「交互」与「随机挑战」。本文将了解描写另一种方法,如何通过一段分享的字符串除去「交互」与「隐蔽随机性」。这个字符串必需事前由「第三方」来随机产生,这就是传说中的「公共参照串」(Common Reference String,全称 CRS)。CRS 的前世今生假如我们不利用任何其它手段,限定版证明者 Prover 和检验者 Verifier 不能展开「一次交互」来构建「零科学知识证明」,那么他们不能证明「憧憬」问题,也就是计算出来简单类 BPP(Bounded-error Probabilistic Polynomial time),而这个复杂度类大家一般庞加莱有可能等价于 P(但还悬而未决,没被证明!BPP 可以解读为 P + Randomness)。录:如果 Prover 与 Verifier 只做到一次交互,在这样的 NIZK 系统中,我们很更容易能结构一个 Decision Procedure —— Verify(x, Sim(x)),来证明和证伪定理,因此不能证明憧憬问题 BPP。憧憬问题虽然也可以零科学知识证明,但没意义!怎么解读呢?因为检验者必要可以在多项式时间内根据「输入」解法出有「秘密输出」,虽然检验者需要解法,但是「证明」本身并没额外为检验者获取更好的「科学知识」。换句话说,不必须证明者索取证明,检验者就告诉命题为真为,于是证明过程也是零科学知识的。因此,当我们辩论「零科学知识证明」时,要考虑到带上「秘密科学知识」的 NP 类问题。大家都告诉,P 问题是「确定性图灵机」多项式时间内可以解法的简单类,它的继续执行路径对于输出 x是一个线性的状态移往。而 NP 问题是「不确定性图灵机」多项式时间可以解法的问题类。所谓的不确定性图灵机,就是它每次走一步是不确认的,有很多个自由选择,只要任何一个继续执行路径能抵达中止状态,就回应它解决问题了该问题 x。换句话说,它的继续执行轨迹是一棵树。那么如果我们把不确定性图灵机每一步的路径自由选择记录下来(这个继续执行路径的记录叫作 witness,也就是我们重复提及的「科学知识」),那么把(x, witness)转交一个确定性图灵机,那么它也能在多项式时间内解决问题掉 x 问题。再行特别强调一下,「科学知识」能提升图灵机的解决问题的能力。NP 问题中不存在着想「泄漏」给检验者的科学知识 witness,这时,在一个交互式证明系统中,证明者和检验者在「科学知识」的掌控程度上是不对等的。为了确保证明过程的「零科学知识」,我们必须确保:模拟器与检验者的不对等。

云中「秘密」:构建非交互式零知识证明

可是,模拟器没 witness啊,怎么能让他们不对等呢?上一篇我们讲解了「随机应验机」,我们通过容许让模拟器可以杀害「随机应验精灵」的方式生产不公平。本篇将描写如何利用 CRS 来生产不公平。CRS 是一个在证明之前就早已公开发表的,并且在证明者与检验者之间分享的,随机字符串。我们怎么来用于 CRS 呢?直觉上,一串双方都「告诉」的信息,并会减少「科学知识」不对等的情况。首先大家不会想要,能无法必要用 CRS 作为随机挑战数呢?可不可以让 CRS 来替换「随机应验精灵」的角色?答案是敢!为什么?这是因为 CRS 是在证明之前就早已产生了,如果证明者 Prover 提早告诉了所有的随机挑战数,那么很似乎这个随机挑战也就丧失了意义。录:请求大家回忆【明升体育】vip会员起下「随机应验机」是如何确保证明者无法提早预测「随机挑战数」的?没有想要明白的你,请求轻声系列(四)。CRS 的愿景就是让「模拟器」与「检验者」不公平。怎么做呢?隐蔽一些「秘密」进来。如果更进一步质问,隐蔽了「秘密」有什么用呢?当然简单啦,在「理想世界」中,模拟器与提取器才能很快乐地嬉戏一起(提供某些超能力) ……1988年,Manuel Blum,Paul Feldman 和 Silvio Micali 三位先驱公开发表的论文 「Non-Interactive Zero-Knowledge and Its Applications」(『非交互式零科学知识证明及其应用于』[BFM88])展出了「交互」与「隐蔽随机性」的不必要性。他们得出了一个地图三染色问题的 NIZK 证明系统,在一段分享的随机产生的字符串(即CRS)的协助下。不过,……,我会告诉他你这个方案必须分享大约 n^4 超长的 CRS,其中 n是要证明的「命题」的长度。1990 年,Uriel Feige,Dror Lapidot 与 Adi Shamir 三人明确提出了另一种结构 NP 语言的 NIZK 方案 [FLS90]。与 [BFM88] 不一样的是,这个 NIZK 方案仍然基于特定的数论假设,而是基于一个密码学工具 Trapdoor Permutation。在这个方案中,FLS 明确提出了「隐蔽比特」(Hidden Bits)的概念,然后把 Hidden Bits 都成功了 CRS。对于模拟器而言,就可以通过改动 CRS 中的 Hidden Bits 来超过仿真的效果,从而反映出对检验者 Verifier 的优越性。不过,这个方案必须分享更长的 CRS,多达 k * n^5,这里 k 是安全性参数。此后,Hidden Bits 的思路被很多人使用,值得一提的是,Kilian 与 Petrank 使用了一种更加精妙的方法来用于 Hidden Bits [KP98](这里空间太小,写出不出:),顺利地把 CRS 的长度缩减到了 k * n^2。后来 J. Groth 之后优化 ,把 CRS 的长度增大到了约 k*n[Groth10a]。除了 Hidden Bits,J. Groth,R. Ostrovsky 与 A. Sahai [GOS06] 用于了同态加密方案 Boneh-Goh-Nissim [BGN05] 或 Boneh-Boyen-Shacham 来构建 NIZK,他们把加密方案的「公钥」当作是 CRS,同时 Prover 加密作为证明,然后利用同态性质来证明另一个 NP-Complete 问题——布尔电路的可符合性问题。这个方案的仅次于优点,就是 CRS 长度是相同的,因为只是一个密钥而已,长度只有 k。对于模拟器而言,它可以通过超能力,获得这个公钥所对应的陷门,从而需要构建密封任何信息,但获得完全相同的密文;对于提取器而言,它可以用超能力获得公钥对应的私钥,从而需要解密证明获得「科学知识」。Jens Groth 在 2010 年基于 KEA(Knowledge of Exponent Assumption) 假设与 Pairing 明确提出了一种新的 NIZK Arguments 方案[Gorth10b],这也是先前许许多多 zkSNARKs 方案的起点。这里的 CRS 由一对对的 (g^x^n, g^⍺x^n) 包含,被用来构建「科学知识允诺」。其中 x 与 ⍺ 是两个随机数,在产生完了 CRS 之后,必需被「消逝」。有些人把这部分必须消逝的随机数叫作「Toxic Wastes」,这更容易误导读者。他们不仅有毒有害,而且十分简单。他们是被都成功 CRS 的「秘密」,是模拟器的武器。如果模拟器获得了 x 与 ⍺,就能假造证明,从而确保证明的零科学知识。而对于提取器,他能必要通过 KEA 假设内建的提取函数来提取科学知识。近期的 Sonic 方案[MBK+19]又在 [Groth10b] 的基础上构建了 Updateable CRS。如果任何人担忧 CRS 中的秘密早已被泄漏了,他就可以在原先 CRS 基础上打一个补丁,之后往里藏一个秘密,这样就能确保 CRS 的安全性。这里的 CRS 还是「Universal 全局」 的,即 CRS 只必须分解一次,就可以应付所有的命题证明。这个方案先前被近期的 Plonk[GWC19],Marlin[CHMMVW19] 等方案使用。接下来,我们就从一个非常简单的例子开始,解读如何基于 CRS 来结构 NIZK。在这之前,我们必须讲解一个 NP-Complete 问题——哈密尔顿环路问题。哈密尔顿环路问题想象出有一个地图中有若干个城市,城市与城市间可以有公路。假如给你一副地图,让你找到一条路径,不反复地踏遍所有的公路(假设每条公路都是风景美如明信片的 Parkway,也许你想要不反复地不吃遍每条公路边上的麦当劳,出于某种情怀)。坚信你不会立刻激动一起,这不就是小时候习过的「一笔画」么?辨别一个地图能否一笔画,这是小学生做到的数学题,我们可以计算出来每个城市相连的公路个数,根据奇偶性分为「奇点」与「偶点」。如果一个地图中不存在两个奇点城市,那么你不能从一个奇点城市抵达,迭代所有的公路,并且最后抵达另一个奇点城市。这条路径就被称作「欧拉路径」(Euler's Path)。如果一个地图中所有的城市都是偶点,那么你可以从给定一个城市抵达,精彩地找到一条路径,不反复地迭代所有的公路,并且返回起点。这个环路被称作「欧拉环路」(Euler's Circuit)。而如果地图不存在多达2个以上的奇点,那么就不不存在欧拉电路,比如知名的哥德斯堡七桥问题。知名的哥德斯堡七桥问题就是这么叙述,如果不反复地穿越下面七座桥。