虚拟存储管理中页面置换算法模拟_零知识,模拟与归约:一个个人化的视角

本文探讨了零知识证明的发展历程和技术细节,从经典协议到现代突破,涵盖了Feige-Shamir协议、Barak非黑盒模拟技术及个体化归约方法等。通过深入分析,揭示了零知识证明在密码学和社会变革中的重要作用。
摘要由CSDN通过智能技术生成

你或许已经坐在了历史上最好的观景台上。眼下的密码算法与协议--如零知识证明与多方安全计算等--正在深刻地改变社会个体/组织之间信任的来源和它的成本。密码技术可能会远远超出一个技术的范畴,最终对社会变革产生深远的影响。或许,我们将要看到的景象要远比Michael Lewis "在金融业即将迎来变革的戏剧性时刻坐在位置最好的观景台前" 所看到的更加波澜壮阔。

0.

我开始研究密码学和零知识证明的时候当然完全想象不到它们今天所产生的影响。那时只是觉得密码概念和构造新鲜而有趣,当然还很重要,就像你的基金申请书上所说的一样。

念博士第一年(2004)是基于pairing的IBE/signature进入井喷的前期。我也开始读一个超级腕的论文,他会在每篇论文后面留一个公开问题。那时每看到一个公开问题都会很兴奋,不管理不理解,总算有个问题可以思考了。不过只读过他三篇论文。我刚花了两周时间拼命弄懂他第一篇论文留下的问题后,他的第二篇论文出现了,声称解决了他的第一篇文章中的问题,但是文末还是留下一个看起来有点难的公开问题;我又花了两周去弄懂这个新问题,很不幸的是他的第三篇论文如期而至,声称已经解决了第二个问题。当然,在文末他又留下了第三个公开问题。

我怀着礼貌读完了他的第三篇论文,但再没有心思去琢磨他的第三个问题了。那时开始对这个圈子和对自己都产生了失望。迷茫中拾起了Goldreich写的密码学基础。这本书对于几乎没有任何基础的我非常困难,每次重读它都会觉得上一次读的时候有点什么误会。但不知什么原因它使我平静了一点,不是那么急切地去找一个题目了。读到最后零知识章节时,我留意了一下当时的一些主流会议这一领域的论文,通常都有但一年也只有几篇。那时便觉得自己可以尝试一下这个看起来很有趣竞争又不太激烈的领域。

第二年我读到Barak非黑盒模拟技术与分布式并发零知识时,对当时的一个重要问题--是否存在常数轮的完全并发的零知识协议--产生了很大的兴趣。读了Barak文章大概一个月后,我感觉到自己能够通过扩展Barak的技术构造这样的协议了。当时非常兴奋,给Barak写了一封邮件,详细描述了自己的想法。第二天一大早便收到了Barak的邮件(他当时应该在IAS做博后,现在应该不会有空及时给读者回信了),他花了很长的篇幅给我解释了为什么我的想法是错误的。

这个问题也便一直困扰我至今。虽然十五年后依然没有答案,但我对密码学和它的核心技术--安全性归约/模拟--的认识几乎都来自对它的研究。事实上,密码学中许多独立于具体安全模型的安全性归约/模拟的创新都诞生于对这个(或紧密相关的)问题的研究之中。

安全性归约,模拟,知识与知识的抽取. 几乎所有密码算法/协议的安全性(如可信/可靠性,隐私等)都源于底层问题(假定中的)计算困难性[1]。密码算法/协议的安全性证明通常指如下安全性"归约": 给定一个(声称成功地攻破该算法/协议安全性的)敌手算法,我们构造一个高效的归约算法通过调用该敌手算法来打破底层困难性假设,从而在逻辑上完成了“如果底层困难性假设成立那么目标系统是安全的”这一命题。

下面我们经常会等同看待归约,模拟与知识/秘密的抽取。在归约算法调用敌手算法过程中,它需要模拟敌手在真实世界中看到的视图(view,为什么?)。因此模拟是整个归约最为关键的一环,这是为什么通常将它俩等同起来的原因。

假设给定一个涉及两方的构造(A,B)和一个扮演角色A的敌手

. 在模拟
(在真实攻击中)所观察到的景象时,模拟算法(模拟器)通常需要在没有诚实方B的私有输入的情况下扮演B(以及其他可能的setup)的角色。这通常有两种途径(大多是两种途径的混合):
  1. 利用底层困难性/不可区分性假设本身模拟。这在非交互密码算法中常见,如证明ElGamal 加密的CPA安全性时,模拟算法通过给敌手
    输入可能无效的密文来利用它打破底层的DDH假设。这里的模拟简单而直接,底层DDH的不可区分性本身就假定了无论密文是否正常,
    的表现几乎都一样。
  2. 通过从
    身上抽取(extract)到某些秘密/知识,或,在有setup的场景下,模拟器自身扮演其他可信/诚实方来生成对模拟有利的(公共)输入,进而模拟诚实的B。这在交互密码协议的安全性证明中非常普遍,如下面将提到的经典Feige-Shamir零知识协议。

第二种模拟方法中的关键就是秘密/知识的抽取。我们很多时候在谈论安全性归约时,它的核心就是模拟,或者知识的抽取。事实上,第二种模拟方法给一般性的密码协议设计提供了一个原则:我们设计一个诚实方B的算法时,要使得在拥有诚实方的私有输入或对方和/或公共输入的某些秘密的前提下,我们均能顺利执行诚实方算法。

什么是“知识”?或者,怎么定义一个算法“知道”某个秘密/知识呢?Goldwasser 他们在其开创性论文[GMR,STOC 85]中对知识的定义就是“the output of an unfeasible computation”,即,我们自己无法计算出来的东西。“output”在这里极为关键:敌手如果“知道”某个秘密那么它(或者一个调用它的新算法)能够输出这个秘密。这一概念在算法的世界里非常清晰,但它也是严谨安全性证明的噩梦:有时候一个算法 “明明”应该知道某个秘密才能成功,可我们无法通过它或改编后的新算法来输出这个秘密。这里一个经典的例子就是Damgard的指数知识(knowledge of exponent)猜测,我们目前还无法将它建立在更为牢固的标准困难性假设上。

免责声明. 这篇文章将描述一部分零知识证明研究所带来的模拟/归约的技术。由于时间和篇幅的原因,我们完全忽略了基于代数技巧的和各种依赖具体模型的模拟/归约技术。也由于个人的兴趣和十分有限的见识,偏见与不完整就难免了。

1. 零知识证明与重置模拟(rewinding):为什么简单的策略会失败

先回顾图同构的零知识证明。如果两个图

的顶点之间存在着边保持的置换映射
我们则称俩图是同构的。对图同构的一个传统的数学证明就是同构映射
本身,我们有时也称它为一个证据。

b85cbe4c8d5cc31dac29f6089476ad0f.png

如果证明者P拥有这两图之间的置换映射

,它可以向一个验证者V进行如下的交互式证明:P随机选者一个置换
计算一个新图
,发送一个
给V, V接到新图后向P随机地索要 0)
之间,或者,1)
之间的同构映射;P根据V的问题 i (0或1)发送
给V。V最后验证接收到的映射是否是它所想要的同构,如果是,便输出“接受”,否则输出“拒绝”。

和传统的数学证明一样,这一交互证明也满足完备性,即如果断言为真那么V最终会接受; 以及某种程度的可靠性:如果给定的俩图不同构,那么无论证明者使用什么策略有多强的计算能力,它无法以高于1/2的概率使得V接受。

观察到P发送的消息在外界看起来都无关它所拥有的关键证据

,这也是交互证明与传统数学证明相比它的威力所在:交互能实现零知识地证明,即P在整个过程中无需泄露关键证据(传统的数学证明)也能够使得验证者接受该断言。

GMR通过引入模范式给出了零知识严格的定义。粗略地讲,如果对于任意的多项式验证者策略V*, 如果存在一个多项式时间的模拟器S,它在没有证明者所拥有的关键证据(如上面提到的

)前提下也能够产生一个与真实交互不可区分的副本(transcript 或 验证者的视图,包括验证者的随机带和它所接收到的所有消息),那么我们说一个协议(P,V)是零知识的。给定一个任意的V*
上述图同构证明协议的零知识可以由下面的模拟器S 来证明(它扮演证明者的角色与V*交互,与真实世界的证明者不同的是,S拥有V*的代码):1)S为V*选择一条随机带;2)S猜测V*即将问到的问题k,k为0或1,随机选择置换
,发送
给V*; 3) 当收到V*发送过来的问题i(0或1)时,如果k=i(猜测正确),则发送
给V*,输出整个交互副本;否则,将V*重置到最开始的状态,重新回到步骤1)直到猜中i为止。容易证明,S运行的循环期望次数为2(故为期望多项式时间),并且它最终输出的副本与真实的交互服从同一分布。

一些观察:

  • 代码,随机带与黑盒模拟. 上述模拟器S为V*选择随机带(我们假定知道V*随机带分布)仅仅是为了让V*运行起来,有时候我们也省略这一步。在大多数情况下,尽管模拟器知道V*的完整代码(包括它的随机带),它仍然很难直接利用这些信息来模拟。注意到V*是一个任意的函数,我们不知道它将怎么利用自身的随机带和S发送的图H来生成一比特的挑战i。如上面所描述的S,它直接忽略了V*的代码本身而将它看成一个黑盒,采用随机猜测i的策略进行模拟。
  • 模拟器的输出分布. 注意到上面提到的三个算法P,V,V*和S均为随机算法。我们说模拟器的输出与真实世界中P与V*之间的交互不可区分,是指模拟器的输出分布[2](由模拟器所使用的随机数决定)和P与V*之间交互所产生的分布(由P和V*所使用的随机决定)对于任意的多项式时间算法而言是不可区分的。
  • 重置:人与代码. 上述模拟器S所采用的重置策略有两种方式来实现。一种是将V*的状态重置/回复(如将当前的memory擦掉等)到初始状态,另一种是想象模拟初始时我们拥有V*多个克隆,当模拟器猜错时就换一个copy重头开始。对于后者,读者可以想象同一代码的不同copy活在“平行世界“中,但他们计算的是同一个函数:给定相同的输入,它们的输出相同。 这或许是人跟代码之间的根本区别:人能够被重置吗?

为什么简单的重置策略会失败. 我们希望图同构证明系统的可靠性错误非常小,而不是上面的1/2。上述协议可以通过顺序执行多次(验证者接受当且仅当所有的完整执行都接受)来降低这一可靠性错误(同时保持零知识性),但这会大幅增加交互的次数(轮复杂性,我们通常称发送一次消息为一轮)。 另一种方式就是并行执行多次协议来降低可靠性错误,这样可以保持交互轮数(3轮)不变。但它导致的一个问题就是上述简单的重置策略无法使得我们能够在多项式时间内完成模拟:假设进行n次并行,这时V的挑战问题变成了n个 (可有一个n长的比特串表示),模拟器S同时猜中这n个问题的概率此时就变成

, 这会导致S的猜中为止的期望循环次数为
,进而需要指数时间来完成模拟。3-轮零知识的存在性目前仍是一个巨大的公开问题。最近Canetti和Chen等人在Fiat-Shamir启发式(将公开掷币的交互协议转化为非交互协议的一种方法)方面的突破性工作[CCH+, STOC 19]中,给出了这一问题的强有力负面证据。

信任, 隐私,针对NP断言与一般性计算的零知识证明. 零知识证明的可靠性让诚实验证者信任 被证明断言的正确性,同时,它的零知识性最大程度地保护了诚实证明者的隐私,即它所知道的传统数学证明/证据。我们接下来将针对一般NP断言构造零知识证明。所谓一般性NP断言指的是那些在给定数学证明/证据的条件下我们能够快速验证(虽然找到证明/证据可能非常困难)的断言,这包括有关一般性(高效算法)计算正确性的断言,比如,给定公开的多项式时间算法M,和一个y值,断言“存在x,使得输入x时M将输出y,M(x)=y”。当给定这一断言的证据x时,任何人都可以快速验证它(这说明它也构成一个NP断言):输入x然后自己运行算法M,检查M是否输出y。在许多密码场景下,M通常代表某实体的诚实算法,x代表这一方的私有输入,在不知x的情况下他人无法判断是否存在x使得M(x)=y。这样,针对此类断言的零知识证明就发挥了不可思议的功能:这一证明既保护M所代表实体的隐私(证明结束时他人仍然不知道有关x的信息),又能使得其他相关方能确认M所代表的实体诚实地执行了算法M并输出y。我们能够对一般性高效算法的正确性 构造零知识证明是它能够被广泛应用的根本原因。

2. Feige-Shamir: 优雅的证据不可区分与常数轮零知识证明

尽管并行上述图同构协议后我们不知道怎么证明新协议的零知识性,但这一并行版本有个非常好的性质:

  1. 证据不可区分性 (witness indistinguishability) .即,如果给定的断言有两个或以上的证据(如, 两个不同的置换
    同时使得
    ),那么无论验证者采用什么策略,它都无法区分证明者在证明中使用的是哪个证据。
  2. 可忽略的可靠性错误与知识的证明(proof of knowledge). 前面提到了并行可以将可靠性错误降至指数级的小。此外,这个协议(无论是否并行)还具有知识的证明的性质,这一性质本质上是可靠性的升级:对任意给定的断言,任意的证明者策略P*,只要P*使得V接受的概率显著地超过合理性错误,我们便能构造一个知识的抽取器E,它通过调用P*输出该断言的一个证据。例如,在图同构证明协议当中,如果P*能以超过1/2的概率使得V接受,那么我们能够构造算法E,它扮演V的角色和P*交互,通过 重置 的策略 (发送挑战i=0并得到相应的回答后,重置P*至它刚刚发送完第一条消息H时的状态,重新发送挑战i=1得到一个新的回答),它能将证明者使用的证据
    之间的同构)计算出来。并行后的协议依然保持知识的证明这一性质。

针对NP断言的3-轮证据不可区分证明协议. 我们希望能够对一般性的NP断言构造零知识或证据不可区分证明系统。幸运的是,对于任意的NP断言“x是正确的" (如“

是同构的”,“图
中存在一个简单的圈经过所有的顶点”等), 或者,任何有关多项式时间算法正确性的断言,我们都有一个3-轮的证明协议同时具有上述两个性质:证据不可区分与(具有可忽略可靠性错误)知识的证明性质。Blum在1986年的国际数学家大会上[Blum, ICM 86]报告了一个对汉密尔顿图(上述带有一个经过所有点的简单圈的图)的3-轮可靠性错误为1/2的零知识证明。由于汉密尔顿图集合为NP-完全集合,任何其他NP问题都可以归约到一个汉密尔顿图的问题,Blum的构造实际给出了对任意NP断言的零知识证明。通过并行Blum协议后我们得到了针对任意NP断言的3-轮(具有可忽略可靠性错误和知识的证明性质)证据不可区分证明协议。Goldreich等人[GMW, FOCS 86]针对另一个NP-断言(图的三着色问题)给出了另一个类似的构造。

Feige-Shamir 的构造. 目前为止, 我们通过并行牺牲了零知识性,但得到了可忽略的可靠性错误和证据不可区分的性质。我们能够构造一个具有可忽略可靠性错误的常数轮零知识证明协议吗?答案是肯定的。Feige和Shamir[FS, STOC 90]给出了一个有着广泛影响的优雅构造[3]。给定一个NP断言 “x是正确的“,P持有这一断言的证据(如图同构中的

)向V进行如下两阶段的证明:
  • 在第一阶段,V生成单向函数
    的两个随机的像,
    (这里原像
    都是随机选取的),随机选择一个原像作为证据,利用一个3-轮证据不可区分的(具有可忽略的可靠性错误)证明协议向P证明"我知道
    其中一个的原像"
    [4]
  • 在第二阶段,如果上述V的证明是可接受的,那么P紧接着利用同一个3-轮证据不可区分(具有可忽略的可靠性错误)证明协议向V证明“x是正确的 我知道
    其中一个的原像”。如果该3-轮交互证明是可接受的,则V最终输出“接受”。

利用第一阶段的证据不可区分性(为什么V需要生成两个原像?)和第二阶段的知识的证明的性质,我们可以证明,如果函数

是单向的,那么Feige-Shamir协议的(可抗多项式时间恶意证明者的)可靠性错误仍是可忽略的;利用第一阶段的知识的证明性质(模拟器可以通过调用上述抽取器,通过重置验证者来抽取到一个原像)和第二阶段的证据不可区分性,我们可以证明Feige-Shamir协议是零知识的。此外,通过合理安排两阶段的消息顺序,我们可以得到一个4-轮的具有可忽略可靠性错误的零知识协议。

注意到Feige-Shamir协议需要假定存在单向函数,这与无需任何假设的图同构的零知识证明有着本质的区别。事实上,只有很少的断言具有像图同构那样的完美零知识证明[Fortnow, CCC 87]。

3. 黑盒模拟/归约的局限性.

计算理论/复杂性中许多早期的经典结果都是相对化的:在证明过程中所有的图灵机都被当成oracle(黑盒)来看待,其结果相对于任何的oracle(给所有图灵机提供该oracle接口)都成立。Baker,Gill和 Solovay[BGR, SIAMCOMP 75]发现这种证明方法无法解决NP vs P问题:存在着oracle A和B,使得

同时成立。注意到如果相对化的证明技巧如果能解决NP vs P问题,那么相对于任意的oracle结论都应该一致。BGR 意味着我们无法仅仅利用相对化证明技术来证明或否定NP=P。在研究交互证明的威力过程中,Nissan发现的非相对化的证明技术--算术化(arithmetization)-- 打破了之前相对化技术的壁垒,导致了一系列像IP=PSPAC和PCP定理这样影响深远的非相对化结果。然而,对于这些非相对化结果的解读依然存在着分歧。感兴趣的读者可以参考Fortnow 和Arora, Impagliazzo, Vazirani 写的一些未发表的文章
[5]

绝大多数密码学中归约(安全性证明)都是相对化的,也就是我们常说的黑盒归约。Impagliazzo和Rudich [IR, STOC 89]发现了第一个黑盒归约的分离(我们有时也称黑盒下界)结果:我们无法将公钥加密通过黑盒归约的方时建立在抽象的单向函数上。通常,欲证明一个密码原语P无法通过黑盒归约的方式建立在困难假设Q上,我们只需去构造一个oracle,在提供这个oracle接口的世界里,存在着高效的算法打破P的安全性,但不存在高效的算法打破Q的困难性。Impagliazzo和Rudich提供的证明黑盒分离/下界的范式对密码学影响巨大,后来研究人员发现了许许多多这样的负面的结果。Reingold, Trevisan和 Vadhan [RTV, TCC 04]对于这些黑盒分离/下界提供了一些较为清晰的解读。

零知识证明中的黑盒下界通常指黑盒模拟(模拟器只允许以黑盒方式调用验证者,对应的零知识称为黑盒零知识)下的轮复杂度下界。注意到像前面提到的IP=PSPACE一样,零知识证明中许多结果也是非相对化的,我们在证明它的黑盒轮复杂度下界时通常用到一个不同的证明策略:低轮复杂度的零知识证明所带有的黑盒模拟器通常可以用来直接判定被证明断言的真伪,这表明被证明断言本身就是平凡的。Goldreich和Krawczyk [GK, SIAMCOMP 96] 证明了不存在针对非平凡断言的3-轮黑盒零知识证明(这说明Feige-Shamir协议是轮数最优的黑盒零知识证明协议),也不存在针对非平凡断言的(任意)常数轮公开掷币(public-coin)的黑盒零知识证明,这里公开掷币指的是每个来自诚实验证者的消息都是通过随机掷币生成的真随机数,如上面的图同构协议。公开掷币的协议通常有着更为广泛的应用。

4. 分布式环境下的并发性:嵌套难题与递归的Feige-Shamir模拟器

在互联网这种异步的分布式环境下,一个协议可能被成千上万的彼此都不知道对方存在的用户在执行。Dwork,Naor和Sahai[DNS, STOC 98]针对这种环境定义了并发零知识这一概念。在这一定义中,一个恶意的V*被允许控制许多个独立的验证者,每个验证者与一个独立的诚实证明者交互执行一次协议,但所有的这些协议的执行进度被V*统一控制和调度。并发零知识性就是指协议在这种环境下被并发执行时,对任意的恶意并发验证者V*,存在模拟器S能够输出一个与真实并发交互中V*的视图不可区分的副本。

前面提到的Feige-Shamir协议在这种环境下被并发多次执行时,它的零知识性受到了巨大的挑战。模拟器在重置每个会话(即,协议的单次执行)的第一阶段时,这一重置动作会导致后续已经解决了的会话(即,模拟器拿到了该会话中某个y的一个原像)作废,需要通过进一步重置来解决它。这就是所谓的嵌套效应(nest effect)。

a01736144e8d05b4a6ef7ac4b1dc3190.png

在上图中,一个黑盒模拟器将在第n个会话的第三步时第一次尝试重置V*至这个会话第二步时的状态,进而期望得到一个新的第一阶段3-轮子协议副本来抽取某个y的原像。注意到第n个会话完全嵌套在第n-1个会话的第二步和第三步之间,所以当模拟器去重置第n-1个会话修改第二步的消息时,整个第n个会话都受到影响,需要进一步重置才能成功模拟,这将最终导致模拟器需要指数时间才能完成模拟。

这一模拟器时间呈指数膨胀的问题在随后的一年被Richardson和Kilian [RK, Eurocrypt 99]解决了。他们提出的构造--Richardson-Kilian协议--本质上就是一个带有多个slot(一个slot对模拟器而言可以看成一个重置的机会)的Feige-Shamir协议[6]

  • 初始阶段:V准备好k对随机的像
    以及k个3-轮证据不可区分证明协议的第一个轮消息 一次性发送给P;
  • 在第一阶段,V按顺序执行k个3-轮证据不可区分证明协议剩余的两轮,在第i个执行中,V向P证明“我知道
    的一个原像”;
  • 在第二阶段,P执行一个3-轮证明不可区分证明协议向V证明“x是正确的 对于某个i,我知道某个
    其中一个的原像”.

注意到对于上述协议,我们称第一阶段的单个3-轮子协议[7]为一个重置机会(slot)。模拟器这时有了k个重置的机会,只要在第一阶段k个3-轮子协议中通过重置验证者成功抽取到一个原像,它便可以模拟整个会话。Richardson和Kilian开发了一种非常聪明的递归模拟方法。在模拟中,模拟器递归地“look-ahead”策略,看看当前会话第一阶段的当前3-轮子协议中第二个消息和第三个消息之间是否覆盖“太多”的新的会话(即,在这之间出现了很多会话的初始阶段出现了),如果是,则放弃重置当前3-轮子协议;如果不是,则重置当前子协议来获取一个原像。如果k比较大,这一模拟器运行时间则为多项式,因为对于单个会话不可能所有k都覆盖“太多”的新会话。

随后的Kilian和Rosen等人先后[KP, STOC 01; PRS, FOCS 02]改进了这个递归模拟器,最终上述协议中k值为安全参数的对数级别时模拟器的运行时间可以保证在多项式时间内。几乎同一时间,Canetti [CKPR, STOC 01]等人也证明,如果想取得并发的黑盒零知识,k至少为安全参数的对数级,这表明Rosen等人的并发黑盒零知识协议在轮数上是最优的。

5. Hada-Tanaka 与 Barak: 利用计算路径突破黑盒下界

每次在讲到Barak的突破之前,我总习惯性地提到Hada,他在2000年左右在零知识和程序混淆方面都做出了非常具有启发性的工作。这些工作都不幸地被淹没在后面更大的突破当中而被忽略了(至少从引用上来看是这样),我个人觉得并没有得到他应得的credit。

Hada和Tanaka在1998年发表了一篇3-轮零知识协议的文章[HT, Crypto 98],这看起来直接与上面提到的不存在3-轮黑盒零知识这一下界冲突。Hada-Tanaka协议当然不是黑盒零知识,它的模拟器也非构造性,而是存在性的。此外,这个模拟器的存在性本质上来自一个不太合理的假设(用Naor的话来说,不可证伪假设,这跟我们惯用的标准假设有着很大区别):Damgard的指数知识猜测。这一猜测假定,给定一对随机的输入

, 对于任意能计算出
的多项式时间算法
, 都存在一个多项式时间算法E,给定同一个输入
, E输出 c。换句话,对于任意的多项式时间算法,从输入
到输出
的唯一计算路径(图灵机一条连续的配置(configuration)变化路径),就是通过选择(因此算法自身“知道”)
然后计算
。Hada-Tanaka协议聪明利用这个假设,其对应的模拟器本质上就是这个假定中的抽取器E,它利用假定中的唯一计算路径来模拟,进而突破黑盒轮复杂性下界。

从目前的一些信息来看,Hada-Tanaka应该在当时(尤其在魏茨曼)引起了较大的反响。Barak在随后的一年跟随Goldreich念博士,应该也受到了Hada和Tanaka的想法的影响和启发,两年后诞生了一个巨大的突破。我这里说的启发是比较广义的启发,它并不见得是技术技巧上的影响与启发,有时它可能是一个单比特的启发。当大家都拥挤在一条路上踌躇不前时,如果有个oracle告诉你“还有另一条路”,虽然它没有指出路在哪里,但这个单比特信息会强烈刺激一些人去找。这是我为什么认为尽管Hada-Tanaka的构造建立在一个不可证伪的假设之上,它仍是一个非常具有启发性的构造。

Barak在2001[B, FOCS 01]取得的一个突破性的构造就是基于标准假设的常数轮公开掷币的零知识协议,它同时还可以具有有界的并发安全性。此外,他的构造对应的模拟器是严格多项式时间的。这同时突破了之前有关黑盒零知识的几个下界。从外形上看,它基本上遵循了Feige-Shamir框架:在协议的第一阶段,证明者P与验证者V共同产生一个困难问题实例;在第二阶段,P向V证明“给定的断言x是正确的 我知道第一阶段产生的问题实例的答案”。在上面的Feige-Shamir协议里,第一阶段的困难问题实例由V独自生成,然后V向P证明它知道这一问题实例的答案。这一阶段通常需要保证两点:

  1. 真实世界中的P无法获取该问题实例的答案;
  2. 模拟器在拥有验证者完整代码(包括它使用的随机数)的情况下能够抽取到该实例的答案。

Barak协议的第一阶段也需要满足这两点。与Feige-Shamir不同的是,Barak协议的第一阶段是公开掷币的,即验证者发送的消息都是随机数。这是Barak协议最令人惊讶的地方。Barak协议的第一阶段协议的核心(并不正确)由如下简单的两步组成:P首先向V发送一个承诺

;接受到
后,V发送一个随机串
给P。

由这两条消息我们可以定义一个困难问题集合

当且仅当存在
使得
并且给定输入
程序
多项式时间内输出
. 根据这一定义,上述两步协议看起来符合上面提到第一阶段协议的两个要求:1)真实世界中的P和V无法产生两个消息
,因为当P产生一个
时,
已确定因此
的输出已确定,而接下来V发送的消息是一个独立的随机数
,故
的概率可以忽略(这里
不能过短);2)给定任意一个验证者
当模拟器拥有
的完整代码
(这里
的随机带),它可以在第一步对
(将
看成一个二进制串)进行承诺
, 当收到来自V的消息
时,这两条消息一定满足
。这是因为
发送的消息
就是
接收到消息
产生的,即

2c8be31b2961ee4baca3f68f7e86b27d.png

看起来完成了第一阶段的设计,但这里还存在一些问题。首先我们需要指定

的具体值和
的长度。对于后者,设定
的长度为安全参数n的线性或某个固定的多项式(在考虑协议并发运行时需要适当拉长)都可以。对于
,由于在协议设计时需要指定一个承诺方案和被承诺值的长度,但问题是,模拟器在计算对敌手算法
的承诺时,这一算法的二进制长度有可能超过协议中承诺方案指定的长度。这一问题也不难解决:我们可以让模拟器先哈希这个代码然后对哈希值进行承诺。

真正的麻烦在于我们在定义集合

时需要指定程序
的具体时间,而非一个抽象的多项式。但是在设计协议的时候我们很难指定一个具体的多项式。比如,如果我们指定为
, 即给定输入
程序
时间内输出
,那么可能 存在一个恶意验证者,它需要时间
才能输出
,这时我们的模拟器就失效了。为了能够应付所有的多项式时间验证者,我们只能指定一个超多项式,比如
,并对集合
作出相应的修改。

根据上面的修改,定义集合

:
当且仅当存在
使得
并且给定输入
程序
内输出
. 注意到这一集合不再属于NP,前面我们对NP断言构造的3-轮证据不可区分协议无法用来证明这类型断言。Barak(和Goldreich)利用Babai, Levin,Fortnow和Szegedy[BLFS, STOC 91]在1991年提出的PCP机制(后来被Kilian[K, STOC 92]和Micali[M, SIAMCOMP 00]等人应用到密码领域),构造了一个证据不可区分的普适论证系统(witness indistinguishable universal argument, WIUA)。由底层PCP的可以scale down的特性,这一协议可以用来证明NP之外的一般性断言,同时具有一个优异的性质:证明者的运行时间不依赖于上面定义的集合
,而只依赖于集合中具体的实例
。如果被承诺在
中的程序
的具体运行时间为某个特定的多项式,那么模拟器(在获得该实例的证据情况下)执行WIUA对这个实例进行证明所需的时间为这个特定程序
(即,恶意验证者的代码)具体运行时间的一个多项式。

根据这些改动,给定一个NP断言“x是正确的”,Barak协议的最终版本如下:

  1. 第一阶段(困难问题实例生成):验证者V先发送一个随机选择的哈希函数
    ;证明者P随即发送一个对0串的承诺值
    ;验证者接着发送一个随机串
  2. 第二阶段(WIUA):证明者利用WIUA向验证者证明“x是正确的
    ”。

对于真实世界的证明者而言,它可以在第一阶段承诺一个0串,而在第二阶段利用x的证据执行WIUA; 对于模拟器,它需要在第一阶段对给定的验证者代码进行承诺,然后在第二阶段利用

,以及一条
计算出
计算路径 作为证据来执行WIUA。

如果在并发环境中可以预先固定Barak协议被执行的次数,我们可以让诚实验证者选择一个充分长的

来实现这种有界的并发零知识性。但取得完全的并发安全性,我们需要重复第一阶段多项式次,这极大地增加了轮复杂度;或者,如果底层的PCP证明可以变得更短更轻(或假设存在这样的PCP),我们或许不用增加轮复杂度来取得完全的并发安全性。是否存在在标准的假设下针对非平凡NP语言的完全并发零知识协议目前还不清楚。

理论研究往往充满了意外。PCP定理的诞生于对交互证明的研究之中,后来它给予了密码学巨大的回馈。我们可以通过递归调用PCP机制,将Barak协议改造成为一个具有可重置(resettable)的零知识协议;Micali基于PCP构造的cs proof在威力强大的可抽取单向函数[BCPR, STOC 14]构造上扮演了关键的角色;此外,PCP证明以及它的递归版本也间接或直接影响了今天非交互简洁零知识证明的构造。

6. 代码,它所计算的函数以及结构

当年看到Barak协议后便有了递归调用模拟器(本质上是递归调用PCP)来取得并发安全性的想法。虽然不久便发现这一幼稚的想法受制于PCP的长度和计算时间,递归深度非常受限而无法成功,但几年后还是利用了它(和一些其他的工具)构造一个轮复杂度非常高的可重置的零知识协议。

这一构造比较复杂,2009年投完稿我才慢慢从许多技术细节的泥沼中恢复过来。后面有一段完全放空的时间,开始纠结于一个简单问题:为什么每次新的模拟/归约技术(虽然在某些方面取得了进展)都会带来更为复杂的构造?对于一些密码学早期的经典而简单密码构造,如Schnorr身份认证和上面的Feige-Shamir协议等,当考虑它们是否具有后来定义的(更强的)安全性--如证据隐藏性,并发零知识性--时,你会发现一个非常混乱现状:

  1. 好消息(the good):没有发现有效的攻击;
  2. 坏消息(the bad): 没有找到安全性证明;
  3. 难以解读的消息(the ugly):已经证明 "目前的黑盒归约无法证明它们的安全性".

这一现状翻译过来就是:我们无法排除 "将来能够找到新的归约方法来证明它们的安全性" 这一可能。这些观察使我渐渐意识到了目前已知的归约/模拟方法与证明安全性所要求的归约/模拟之间的巨大鸿沟:

  • 已知的: 普适归约/模拟(universal reduction/simulation(
    )). 对于一个密码构造,我们构造一个普适的安全性归约/模拟算法R, 对于任意的敌手
    打破底层的困难性假设或成功模拟
    的视图。普适归约/模拟几乎是目前唯一已知的安全性归约/模拟技术,它包括了经典的黑盒归约和Barak的非黑盒模拟。
  • 安全性要求:个体化的归约/模拟(individual reduction/simulation(
    )). 注意到对于绝大多数安全性定义,通常只要求对任意给定的
    存在 一个(可能依赖给定的敌手
    的)归约/模拟算法R使得它能够打破底层的困难性假设或成功模拟
    的视图。这里只要求归约算法的存在性是合理的,毕竟安全性证明/归约旨在给人们以信心,在实际中我们不需要用到归约算法。

在字面上,个体化归约的强大之处在于,给定的敌手

对于归约/模拟算法而言是完全透明的:它的代码,所使用的随机数,代码所计算的函数(functionality)以及这一函数可能具有的结构/特征(如果有比较短的描述的话)等等,都可以被一个存在性的归约/模拟算法利用,或者,我们可以直接假定这些特征/结构信息被直接嵌入(hardwired)到了存在性的归约算法中。这是普适归约/模拟所无法做到的,因为单个普适归约/模拟算法需要应付所有可能的敌手,它被给定的只有敌手的代码,而一个多项式时间的算法是没有办法从(可能被混淆的)敌手代码中解构出有意义的(即使存在)特征或结构的,它最多只能观察代码的一些计算路径。因此,即使一个给定的敌手代码所计算的函数非常简单和具有特定的结构,普适归约/模拟算法也只能通过观察它的输入输出(如黑盒归约)或它的具体计算路径(如Barak的非黑盒归约)来进行归约/模拟。

Canetti等人在证明并发零知识轮复杂性下界时所构造的一个恶意验证者

就是一个很好的例子:如果将这一恶意验证者
看成黑盒,那么模拟器无法模拟
的视图;如果知道
的具体计算结构和随机带,那么一个个体化的模拟器很容易模拟它的视图。如果我们从一个密码归约的观点去看待1978年 Adleman的“BPP属于P/poly”的证明,这也是一个归约算法利用“敌手" 随机带结构的很好的例子。

实现个体化归约看起来第一步就需要去证明对任意一个成功攻击给定密码构造的敌手都(在合理的假设下)具有某种很好的“结构”。这当然无比困难。在我脑子里有限的几个例子中,对于其中一些我们似乎可以取得双赢:如果敌手算法有很好的结构,我们固然可以对它进行归约/模拟;如果没有的话,我们似乎也有另一种更为简单的策略对它进行归约/模拟。当时脑子里从CPA到CCA的构造就属于这一种,但这一切都非常抽象而模糊不清。当年去UCL时,Jens Groth给我的第一个题目就是从单比特CCA安全的加密构造多比特CCA安全的加密,不巧(幸运?)的是讨论没几天后,这个题目便出现在当年FOCS09接受论文列表里了。后来我给他讲了一下我脑子里有关CPA到CCA构造的模糊想法,当然,那时后不可能给他讲清楚我自己都不理解的东西。

现在想起来有些后悔的是在接下来的几年几乎很少去读文章了。如果那时候接触到CDS(conditional disclosure of secrets)或者认真琢磨一下那些需要很强假设的证据加密(witness encryption)的话,或许会更早启发我写一些东西。直到7年后,才对Feige-Shamir协议的并发安全性和个体化归约有了稍微清晰一点的认识,获得一个win-win的结果[D, Eurocrypt 17]:要么Feige-Shamir协议具有并发安全性,要么可以将公钥加密建立在抽象的单向函数上(即,Impagliazzo[I, CCC 95]的第四个世界Minicryp不存在)。注意到无论是Feige-Shamir协议的并发零知识性,还是建立在抽象单向函数上的公钥加密,都已被证明在黑盒归约下是不可能实现的。这至少表明确实存在着能够突破黑盒下界的新归约方法。

7. 依赖区分器的归约/模拟

在通常的模拟安全性定义中,我们需要证明,对于任意的敌手,都存在一个模拟器使得对于任何多项式时间区分器都无法区分真实世界与模拟世界。2017年Jain等人[JKKR, Eurocrypt 17]提出了一个区分器依赖的模拟方法,他们本质上是将模拟器和区分器前面的量词调换了:如果先给定一个区分器,那么我们可以构造一个模拟器(将此区分器作为子程序调用)使得预先给定的区分器无法区分它的输出与真实的交互。依赖区分器的模拟方法本质上依然是黑盒模拟:所有的子程序都被模拟器当成黑盒来调用。在这种模拟方式下,他们给出了3-轮弱零知识构造(下面我们笼统地称为区分器依赖的零知识证明)。 两年后Bitansky等人[BPK, STOC 19]利用这个依赖区分器模拟的想法,引入了同态模拟的技术,对Jain等人构造的3-轮弱零知识证明有了非常大的改进。虽然[BPK, STOC 19]中的构造仍然不是一个正常定义下(模拟仍需依赖具体的区分器)的零知识证明,这也是目前标准假设下的最好的构造了。

[BPK, STOC 19]中的同态模拟非常巧妙和复杂,在这里我们不打算来详细介绍它,但仍有两方面值得注意:

  • Chung,Lui和Pass[CLP,TCC13]证明了这种区分器依赖的模拟器可以提升到只依赖区分器运行时间的模拟器(允许某个很小的区分优势),这离标准定义下的零知识更近了一步;
  • 如果一个零知识带有一个依赖区分器的模拟器(即使仍存在某个很小的区分优势),那么该零知识协议通常会是标准定义下证据隐藏的。在我看来,[JKKR, Eurocrypt 17]和[BPK, STOC 19]一个很大的贡献就是实现了标准定义下的3-轮证据隐藏协议,在他们结果之前,针对一般NP断言的3-轮证据隐藏协议很多时候被认为和3-轮零知识协议一样难以实现。

8. 个体化归约/模拟

在写上面提到的有关Feige-Shamir协议并发安全性结果的同时,一个偶然的机会我注意到了基于整数分解的Rabin加密的一个优良性质,感觉可以用它来实现个体化归约,构造一个非常简单的3-轮弱零知识协议。但写作和投稿出人意外的漫长,期间受到了一些有趣和有益的评论,也被发现了一些错误,结果也几经改动。这个想法的核心相对比较简单,但对于某些要求合成环境下安全的协议(如选择打开安全的承诺,并发零知识证明等),它在具体实现上(参见[D, Asiacrypt 20])要比下面的描述稍微复杂一点。

个体化(几乎最优)抽取器. 考虑一个浓缩的2-轮协议(A,B),其中第一轮消息中B向A发送一个NP困难问题实例

,并且这个协议具有如下两个性质:
  1. 即使实例
    由某个恶意的
    生成,如果模拟器知道
    的一个证据,那么模拟器可以顺利模拟
    的视图;
  2. 区分诚实方A发送的消息与一个(容易计算的)垃圾消息等价于找到
    的一个证据。

(在不考虑协议的轮复杂度情况下,如果把敌手算法和区分器算法看成一个实体(虽然严格说起来不正确,但对于模拟器而言它们都是需要对付的敌人),那么许多MPC和零知识证明协议--包括经典的Feige-Shamir协议和上面提到的依赖区分器的零知识证明等--都(勉强)可以在上面这种框架下去解释。)

对于这样的协议,有两种情况模拟器可以成功地模拟

的视图:a)模拟器成功抽取到
的一个证据;b) 没有任何高效的算法能抽取到
的一个证据。后面一种情况下模拟器可以通过发送一个垃圾消息来模拟,协议(A,B)的第二个性质确保没有高效的区分其能够区分模拟与真实世界中A的消息。

如前面提到的,在一般的安全性定义中,模拟器和区分器一样都允许依赖敌手算法

的任何信息(包括它生成
所使用的随机数)与特征/结构。

注意到

的输出形成了一个由它的随机带决定的实例
的分布。对于这个分布,是否存在一个在抽取证据的成功概率上最优的抽取器呢?如果存在,我们似乎可以直接让模拟器运行这个抽取器进行模拟。然而,这个答案可能是否定的。如果抽取器成功抽取证据的概率随着运行时间的增加而增大,我们将无法固定抽取器的运行时间。

我们退而考虑[CLP, TCC 13]中定义的比较弱的模拟安全性:

-安全性,即只要求对于任意运行时间为
的区分器无法以大于
的优势区分模拟与真实的世界。这里
可以是任意的多项式,
可以是任意多项式的倒数。在这个定义下,我们可以考虑一个
-(最优)-抽取器E:E抽取证据失败的前提条件下,任何运行时间为T的算法成功的概率小于
.

这里有一种简单的构造上述

-最优抽取器E的方法。我们可以从一个垃圾算法(比如,它总是输出”失败“)开始
, 从0到
迭代执行以下步骤
[8]:假设当前的抽取器为
,我们问如下问题:是否存在一个抽取器C,使得”C成功抽取证据但
失败“的概率大于
(这一概率定义在
,C和
的随机带上)?如果是,我们把C添加到当前抽取器中构造一个新的抽取器
(它先运行
,如果失败再运行C ,如果都失败就输出失败);如果答案是否定的,整个构造过程终止最终返回当前的抽取器。

读者可以验证这一过程最终输出的抽取器一定是

-最优的。可以证明,如果协议(A,B)满足上面两个条件,那么它是
-安全的:对应的模拟器可以在第一步直接应用上述(最优)抽取器来抽取一个
的证据,如果成功,那么模拟器将成功;如果失败,那么模拟器可以发送一个垃圾消息给
来完成模拟。由协议的第二个性质和抽取器的最优性可以保证任意的运行时间为
的区分器区分模拟与真实的世界的概率都小于

个体化抽取器/模拟器:依赖

的结构?
上面的抽取器(和模拟器)均依赖具体敌手算法
的结构。这里我们给出两个例子。假设
是某个单向置换的像。如果算法
仅仅利用它自身的随机带来随机选择一个像,那么对应的最优抽取器可以是一个垃圾算法(因为单向性,所以不存在好的抽取原像的算法,这个垃圾算法也是最优了);如果
利用它自身的随机带来随机选择一个原像,然后通过该原像来计算它对应的像
,那么对应的最优抽取器可以直接利用
的随机带来计算
对应的原像,它的成功概率就是1,所以是最优的抽取算法。这两个例子可以看出抽取器对算法
结构上的依赖。

接下来的任务就是怎么去构造具有上面那两条性质的协议(A,B)。结合Rabin的加密方案的一个变形[9](该方案一个优良性质就是区分密文等价于抽取私钥), 我们能够构造2-轮的选择打开安全的承诺方案,BPK模型下的3-轮并发零知识协议和一个简单的2-轮零知识证明,这些协议的模拟安全性都是上面定义的

-安全性。注意到虽然相比正常定义下的模拟安全性要弱,但这些协议本身已经突破了之前已知的黑盒轮复杂度下界(注意到如果要求模拟器是黑盒模拟器,那么之前已知的黑盒轮复杂度下界对于
-安全性也是成立的)。

尽管它可能不是一个理论上很好的定义,在实践中

-安全性可能已经足够:观察到一个
-安全的算法/协议本身的构造并不依赖参数
, 因而对这个给定的构造我们可以通过取不同的
来实现任意的具体(concrete)安全性。

我们还不知道能否利用个体化模拟/归约获得更好的安全性和更好的构造。期待未来能看到更有趣的想法。

参考

  1. ^或许人们会怀疑随着计算技术(量子计算?)的进步,所有密码系统所依赖的数学难题在计算上都会变得容易。我觉得这是不可能的,因为实在无法想象一个没有密码的恐怖世界。
  2. ^更准确一点应该是分布簇。
  3. ^注意到Feige-Shamir协议是一个论证系统(argument, 具有只能抵抗多项式恶意证明者的可靠性)。我们同样可以构造常数轮零知识证明(proof, 具有可以抵抗任意恶意证明者的可靠性)系统。
  4. ^这里准确的断言为“存在b和x_b, 使得y_b=f(x_b)”。由于3-轮证据不可区分协议通常具有知识的证明性质,这里我们可以将此断言写成上面这种形式。
  5. ^The Role of Relativization in Complexity Theory,以及Relativizing versus Nonrelativizing Techniques: The Role of Local Checkability。
  6. ^RK协议原始版本是一个证明系统,而非这里所描述的论证系统。
  7. ^实际上为两轮消息,第一轮放到了初始阶段。
  8. ^这一过程并非构造性的。
  9. ^目前我们发现也可以基于另外一些标准假设,如LWE。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值