[零知识证明基础学习1]交互证明系统的知识复杂度

205 阅读38分钟

1.简介

在文章的第一部分我们介绍一种新的理论证明过程,它是交互证明的一种高效方法。该方法是一种证明的定义。我们的“证明”本质上是概率性的。在输入n位长的声明后,我们也许会被错误说服、以2n2^{-n}这样的极小概率,也许被正确的说服、以12n1-2^{-n}这样极高的概率。我们的证明是交互式的。为了高效验证声明的正确性,证明的接收方必须活跃地进行询问并且从证明者收到答案。

在本文的第二部分,我们强调了如下问题:

为了证明一个定理T,应该交流暴露多少知识?

可以足够确定T是正确的,但通常会沟通暴露更多知识。比如,为了证明一个图是哈密顿通路,展示一个哈密顿旅程已足够。这看起来,然而,包含了额外更多的知识,相比于一个单独的位"哈密顿图/非哈密顿图"。

我们给出了知识的计算复杂度和证明中额外知识量的度量方法。

我们提出了语言分类,依据是证明他们中的成员关系所揭露的额外知识量。

尤其有趣的是额外知识为0的时候,我们展示了:交互式地证明一个数是模m的二次非剩余时暴露0额外知识是可能的。这令人吃惊,因为没有高效的算法、在m的分解未知的时候决定一个数模m是否为二次剩余。更进一步,所有已知的、需要展示m的素数分解的NP证明也可以暴露0额外知识。这暗示,添加交互到证明过程中,可以减少用来证明定理而必须交流的知识量。

2.交互式证明系统

已经做了很多努力使得理论证明的定义更清晰。NP构成了这个定义成功的形式化。宽泛来讲,NP中的定理是可证明的,如果它的证明一旦被发现就容易被验证。让我们简单回忆Cook(和独立Levin)关于NP有影响力的定义。

NP证明系统由两个交互的图灵机A和B组成:也就是,证明者和验证者。证明者是指数时间的,验证者是多项式时间的。A和B都是决定性的,读公共输入并以一种基本的方式交互。输入属于一种NP语言的一个字符串x,A计算字符串y(其长度被x长度的多项式限制)并将y写入特别的磁带让B可以读取。B检查fL(y)=xf_L(y)=x,(fLf_L是关于语言L的多项式时间的计算函数),如果确实如此,停止并接受。

直觉上证明过程需要的是什么?首先,是证明一个真的定理是可行的。其次,证明一个错误的定理是不可能的。第三,证明的交互应该像下面场景一样高效。证明者在证明过程中花费了多少时间并没有关系,但是验证者所需的计算要简单是及其必要的。

定理证明的过程因依赖的证明定义而不同。证明的定义,像计算的定义一样是直观的。然而直观也许和应该被形式化。决定性图灵计算机的可计算性,是计算的直观原则形式化的一个合适的例子。然而,每个形式化,都不能完整抓住我们原始和直观的定义,恰恰是因为他们是直观的。下面我们直观的、概率性的算法是计算的方法,即使他们没有多样的形式化模型。相似的,NP是理论证明过程直观定义的合适的形式化。然而,NP仅仅是沟通证明的一种特殊方法。它处理的证明可以被“写进一本书里”。在这篇文章中我们介绍了交互式证明系统来获取沟通证明的一种更一般的方法。我们处理这些“可以被分类解释”的证明。非正式来说,在教室中,演讲者可以充分利用 与证明的接收者交互的优势。他们也可以在争论的关键点提问并回答问题。这让生活变得更简单。写下一个所有人不用交互就能检查的证明是一个困难的工作。从某种意义上,这是因为一个人必须提前回答所有可能的问题。让我们正式地建立一个合适的计算模型。

2.1 交互式图灵机和图灵机器的交互对

交互式图灵机器是带有一个只读输入磁带、一个工作磁带和一个随机磁带的图灵机。随机磁带包含无限的随机序列。随机磁带仅能被从左向右扫描。当我们说交互式机器抛硬币的时候,意味着它从自己的随机磁带读了下一位。这个磁带是机器唯一的随机来源。此外,一个交互式机器有一个只读的沟通磁带和一个只写的沟通磁带。写在后一个磁带的头只能从左向右移动,且只能在空白单元格写入,不能再没有写入操作时移动到右边。

来自一对图灵机器(A,B)的两个交互式图灵机A和B: 1.A和B共享相同的输入磁带 2.B的只写沟通磁带是A的只读沟通磁带,反之亦然

交互对(A,B)被排序,机器B开始计算。机器轮流活跃。当我们说机器A活跃的时候,它执行内部计算,再合适的磁带上读写,并通过在合适的磁带写入消息来给B发送消息。A的第i条消息是A在第i轮写入沟通磁带的写入磁带的整个字符串。第i条B的消息也是类似的定义。每个机器,都可以在自己的轮次里结束这对计算。考虑一个输入x的计算(A,B)。让计算由n轮组成,让aia_i表示A的第i个消息,bib_i表示B的第i个消息。然后,计算的文本被定义为b1,a1,...,bn,an{b_1,a_1,...,b_n,a_n}。(ana_n是空的如果B在(A,B)的第n轮计算中停止了计算)。输入x,A和B所有可能的计算文本将与我们的分析有关,并且用(A,B)[x]表示。这个集合有和自然方式相同的概率空间结构。(A,B)[x]中计算的概率被两台机器掷硬币接管。

2.2 交互证明系统

L{0,1}L\subseteq \{0,1\}^{*}是一种语言,(A,B)是图灵机器的交互对。如果A(证明者)有无穷的算力,B(验证者)是多项式时间的且他们满足下面列出的属性,我们就说(A,B)是语言L的一个交互式证明系统。

1.任意的xLx\in L被作为输入给到(A,B),B停止并接受的概率至少为1-nkn^{-k},对每个k和足够大的n。

2.任意一个交互图灵机器A‘和任意不属于语言L的x作为给到(A',B)的输入,B接受的概率最多为nkn^{-k}对每个k和足够大的n来说。

这里n表示输入的长度,并且可能性由B自己掷硬币接管。

条件1是必要地表明了,如果xLx\in L,这里存在一种方法可以简单向B证明以很大的概率成功。也就是说证明一个真的理论是可能的,因为证明容易被验证。如果xLx\notin L,不存在一种策略,能够以不可忽视的概览成功说服B这个相反的理论。换句话说,没有人可以证明一个错误的理论。事实上,B不需要相信或知道他在交互的机器。对B来说相信自己掷硬币的随机性就足够了。注意到,关于NP,重点在“正确事例”:如果一个字符串在这个语言中,我们想展示它;否则我们不在意。让我们考虑一个交互证明系统的例子。

例1:让ZmZ^*_m表示从1到m且与m互素的整数集合。如果,对一些xZmx\in Z^*_m,如果有a=x2modma= x^2 mod m,那么元素aZma\in Z^*_m是模m的二次剩余,否则是二次非剩余。现在,令L={(m,x)xZm是二次非剩余}L=\{(m,x)| x\in Z^*_m 是二次非剩余\}。注意到LNPL\in NP:证明者仅需要计算m的分解,并把它发给验证者而不用更多的交互。但是向前看到零知识证明系统,我们将考虑一种更有趣的关于L的交互证明系统。验证者B在ZmZ^*_m中选中n=mn=|m|个随机成员,{r1,r2,...,rn}\{r_1,r_2,...,r_n\}。对每个i,1ini,1\le i\le n,B掷硬币,如果是正面朝上,他计算ti=ri2t_i=r^2_i mod mm,如果背面朝上,计算ti=xri2t_i = x*r^2_i mod mm。然后B将t1,t2,...,tnt_1,t_2,...,t_n发送给A。证明者有不受限制的算力,会找出tit_i中的二次剩余,并用该信息告诉B他最近n次掷硬币的结果。如果这个消息是正确的,B会接受。

为什么这会工作呢?如果(m,x)L(m,x)\in L,那么A可以正确预测B可以接收的最近n个掷硬币的结果。如果(m,x)L(m,x)\notin L,那么tit_i是随机的二次剩余,证明者在计算的最后一部分应答正确的概率是2n2^{-n}。事实上,对于B最后投掷的n个硬币中的每一个,A有1/2的概率正确猜中。

一个更复杂的关于L的交互式证明系统,真正揭示了额外0的知识,在4.2小节中出现。

2.3 交互式复杂度分类

我们定义IP(交互式多项式时间)作为拥有交互式证明系统语言的一类。这种情况下我们可以说L是交互式可证明的。为了强调证明者有无穷的算力,我们可以写作IPIP_{\infty}。为了进一步分析证明者的角色,我们定义IPT(n)IP_{T(n)}是拥有交互式证明系统的语言,其证明者运行时间为T(n)T(n)。为了专注于交互的角色,我们让IP[f(n)]IP[f(n)]表示这类拥有证明系统的语言:输入长度为n的字符串x,在f(n)f(n)返回时间内停止。这里ff是一个从自然数到自然数的非递减函数。

交互式证明系统应该与Babai的“Arthur-Merlin”游戏对比。在那些游戏中,Merlin作为角色A而Arthur作为角色B。一个重大的不同点是Merlin看到了Arthur掷硬币的所有结果。这允许Babai证明,在他的框架中任意交互都不是必须的:允许Arthur与Merlin交谈并让Merlin回复就已足够;至少像他们交互固定的次数一样长。实际上Arthur发送至Merlin的消息恰恰由掷硬币的序列组成。

如果 L中的成员可以被Arthur-Merlin中的游戏证明(LAML\in AM),那么对任意随机的语言机OOLNPOL\in NP^{O}的概率是1.很显然AMIPAM \subset IP(实际上,AMIP[1]AM \subset IP[1]),而且我们相信这个结论是严格的。我们也相信我们的“交互式层级”并没有倒下,也就是说,IP[k]IP[k]被严格的包含在IP[k+1]IP[k+1]。在任何情况下,交互式证明系统是分析和减少语言的知识复杂度的正确证明模型。下一小节将专注于该更微妙的想法。让我们将Papadimitriou[P]作为"对抗自然的游戏"。这是PSPACE(能被确定性图灵机用多项式空间解决的判定问题的集合)一个优雅的特征,即使不是一个交流证明的高效方法。

3知识复杂度

交流是转化或交换知识的一种工具。知识在模型理论框架中引起了大量的注意。在本文的上下文中,简单来说

1所有的参与者被认为有无穷的算力(比如,每个参与者“知道”他手头信息的所有逻辑因果),而且

2他们尝试"了解更好"的事物并不是可用的公共输入。(相反,是由一些参与者而不是所有参与者见证或注意的一些事。下面给出一个具体的例子,一个参与者掷硬币,并且告诉一部分参与者,现在被告知的参与者就“知道”了。剩余的参与者仍然不“知道”掷硬币的结果是什么,并要在两个可能的结果中进行选中:正面朝上和反面朝上)。

这个场景也许在许多实用的上下文中并不实际。例如在物理中,科学家拥有有限的资源和事物,那些他们想更好了解的事物是一种公共输入:自然。在我们的视角,观点是

  1. 知识是是一种概念,与用特定计算资源进行计算的特定模型有关。
  2. 一个人可以学习和获取可获得的事物的知识。

在本文中我们测量的知识可以通过沟通获得。沟通中的参与者拥有多项式界限的资源,并且可以进行研究,要证明一个定理,交流多少知识是必须的。我们关于知识的计算复杂度的测量,由更广泛的应用。比如,在第6节中提到的,它构建了一个密码学协议发展数学理论的强力工具。下面的理念将对我们的分析至关重要。

3.1概率的不可区分度

让I是一个字符串的无限集合,c是一个正常量。对每个长度为n的xLx\in L,令x\prod_x是在ncn^c位字符串上的概率分布。然后,可以说{xxI}\{\prod_x \| x\in I\}是I-c-ensemble(整体/系统)。通过说\prod是ensemble或者I-ensemble,我们意味着存在I和c或仅存在c满足\prod是I-c-ensemble。

一个区分者是输入字符串s输出一位b的概率多项式时间算法D。让1={1,xxI}\prod_1=\{\prod_{1,x}| x\in I\}2={2,xxI}\prod_2=\{\prod_{2,x}| x\in I\}是两个I-censembles。让px,1Dp_{x,1}^D标记D在输入一个xc|x|^c位长的、选择于概率分布1,x\prod_{1,x}的字符串后输出1的概率。类似的,让px,2Dp_{x,2}^D标记D在输入一个xc|x|^c位长的、选择于概率分布2,x\prod_{2,x}的字符串后输出1的概率。让p:N[0,1]p:N\rightarrow [0,1]。(即函数p将N映射到区间[0,1]中)。我们说1\prod_12\prod_2最多具有p-区分度,如果对所有区分者D都有,px,1Dpx,2D<p(x)+xk|p_{x,1}^D - p_{x,2}^D| < p(|x|) + |x|^{-k}对所有k和足够长的x。

特殊的点在于最多0区分度(或者不可区分)的定义。在这个例子中,两个ensembles就任意多项式时间的计算而言是“平等的”。在4.2节中我们将展示不可区分ensemble的有趣例子。这个例子中,1,x2,x\prod_{1,x}和\prod_{2,x}是在一种更强语义下的不可区分。事实上,他们分配给每个xc|x|^c位的字符串的概率是相同的,除非有一些字符串集合的字符串的整体概率不超过2dx2^{-d|x|}对一些在0和1之间的常量d而言。这种强的不可区分性不总是容易得到的,并且在任何情况下,也不是有必要用其来发展我们的理论。

注意到我们的区分者每次都被喂给单独的xc|x|^c位的字符串。有的人也许会想同时给区分者提供更多的长度为xc|x|^c的字符串。在这种情况下,如果两个ensemble是0区分度的,他们将保持不可区分(只要“更”<poly(x)< poly(|x|))。如果两个ensemble是最多p区分度的,他们将保持最多p区分度的或者能以一种更高的概率区分他们。(这在一个密码学协议是否比使用相同的密钥更安全中发挥了作用)。

相关的不可区分度的定义,之前在[GM]概率加密的上下文中被提及,然后在[Y]和[GGM]的伪随机数生成上下文中被提及

3.2来自沟通中的知识计算

哪一种沟通表达知识?正式地说,那些不可行的计算输出的传输,那些计算对我们来说很难亲自执行。比如,如果A发送给Bnn个随机位,这就是n位的信息。我们会说这没有包含知识,因为B可以自己生成这n位随即穿。类似的,任何概率多项式时间的计算页不包含任何知识。注意这点,我们将会推导出一个B可以从沟通中提取的知识的数量的上界(用位表示)。

首先,注意到概率图灵机器M生成ensembleM[]={M[x]}xIM[\cdot]=\{M[x]\}_{x\in I},M[x]M[x]表示M可能的输出的集合(输入xIx\in I),输入满足M抛硬币引起的概率分布。相似的,我们将要用(A,B)[](A,B)[\cdot]表示 与交互式图灵机器对(A,B)有关的(A,B)有关的ensemble。我们现在准备介绍定义。

定义:令(A,B)(A,B)作为交互式图灵机器对,且令I作为它的输入。令B是多项式时间的,令f:NNf:N\rightarrow N并且是非递减的,我们可以认为,A与B沟通了最多f(n)f(n)位的知识,如果存在一个多项式时间的机器M满足I-ensembles M[][\cdot](A,B)[](A,B)[\cdot]最多有12f(n)1-2^{-f(n)}的区分度。我们也可以说A沟通了最多f(n)f(n)位知识,如果所有多项式时间的交互式图灵机器B',A都与B’沟通了最多f(n)f(n)位的知识。

标记1: 假设M的输入为x,尝选择一个与(A,B)[x](A,B)[x]中随机选择的计算“尽可能不可区分”的字符串。注意到在这次尝试中对M没有任何隐藏:A的程序,B的程序和x都是M的输入。M也许是建立在A的描述中。这点然而并不能起到很大的帮助,因为A的算法可能是十分不高效的。

一个非数学的讨论:让我们尝试阐述上面的定义:假设犯罪x发生了。B是记者,A是警察。A理解报社的权利,但是因为更明显的原因,尝试不去沟通更多的知识,记者B应该打电话给警察A了解更多的x吗?那取决于,如果他有接近等于1的概率在家里的打字机前,创作与A的、关于特定x的、"相同"的对话,他不应该打这个电话。A将要给他关于x的零知识。另一种情况,他可能以1/4的概率创作关于x的相同的对话(也就是说,与真的对话有至多3/4的区分),那么警察也许会告诉记者一些记者不知道的事情。这些知识,将不会超过2位、并且也不是有用的那种。这也许并不值得电话费。如果,最终,B在21002^100中选1的机会中生成了关于x的与警察的可能的对话,那么A是一个八卦者并且B应该跑向电话。假设B现在是一个新闻饥饿者并且准备在电话通话中不诚实,也就是说,他要让自己变成B'。尽管如此,警察是一个十分有技巧的沟通者。也就是说,不管B'问了多棘手的问题而且B’有多会骗人,警察都不会透露多于2位的知识。(这里我们假设一个骗子记者是多项式时间的)

例2: 考虑到例1中的交互式图灵机(A,B),限制它们的输入为L中的字符串。那么A和B沟通了最多0位的知识。事实上,存在一个概率多项式时间的机器M接收这些输入并产生(A,B)相同的ensembles。也就是,M可以模拟B,因为B是多项式时间的,并且可以通过看B的投掷硬币模拟A。当B发送的是计算出的rir_i的平方tit_i时,M将回答二次剩余。当B发送的tit_i是通过计算rir_i的平方再乘以xx时,M回答二次非剩余。

注意到,然而,如果判定二次剩余的问题不是多项式时间的,A将不会沟通到至多0位的知识。事实上,一些机器B',与A交互,也许会以另一种方式创建tit_i。例如,B可以发送一个整数序列ti=it_i=i并因此收到了它自己不能计算的关于二次剩余的答案。

一个有趣的交互图灵机器A至多沟通0位的知识可以在4.2小节中被发现。

3.3语言的知识复杂度

多少知识应该被沟通用于证明一个定理T?恰好足够验证T是正确的。但通常会更多。例如,为了证明aZma\in Z_m^*是一个二次剩余,沟通ax2modma \equiv x^2 \mod m已足够。这个沟通,然而包含了更多知识,除了a是二次剩余的事实。它与a的平方根沟通。我们将要测量在一个证明中证明者给验证者的额外知识,并调查额外的知识是否为0。

定义:让L是拥有交互证明系统(A,B)的语言。让f:NNf:N\rightarrow N是非递减的。我们说L有知识复杂度f(n)f(n),如果当限制(A,B)的输入为L中的字符串,并且沟通至多f(n)f(n)位的知识。我们用LKC(F(n))L\in KC(F(n))来表示这个事实。

一个非正式的讨论。让我们回忆我们具体的"正确-实例"。当字符串x没有在语言中证明者“放弃”而且我们没有测量知识。相反的当xLx\in L,在一个交互证明的末尾,验证者的视图是什么呢?首先,它是“信服”(如果正确,以极高的概率)xLx\in L的。这事证明系统第一阶段的目标。第二,它拥有证明者在输入x时完整的计算文本。这个文本被用来验证xLx\in L,但没有包含多于f(n)f(n)位的额外知识。事实上,输入xLx\in L,w我们保证能够轻松生成这样的文本,与“真实的”文本有最多12f(n)1-2^{-f(n)}区分度,而不管A与B的交互。特殊的例子LKC(0)L\in KC(0)是特殊情况。在这种情况下,通过与A的交互和来自计算的文本,B可以验证xLx\in L,但是,关于多项式时间的计算,文本与其它的目的不相关,不论B和A的交互。事实上,输入一个保证的xLx\in L,这样的文本能在没有A的情况下以正确的概率分布被轻易选出。

我们相信知识复杂度是语言的一个基础参数,或者是理论证明的一个过程。理论证明过程目的在于沟通知识、并且根据它们沟通的知识数量进行分类是很自然的。

注意到知识复杂度也在NP系统中被定义了,因为他们是一种特殊的交互式证明系统类型。然而,他们的知识复杂度倾向于很高。

知识复杂度的一个非常重要的应用是能使得密码协议的正确性证明变得模块化。

4.KC(0)中的语言

每个P或RP或BPP中的语言都有知识复杂度0.如果L不是概率多项式时间的,那没有适用于L的NP证明系统可以泄露0的额外知识。然而,也许存在一种L的交互式证明系统释放了0的额外知识。一个自然的问题出现了。存在一些KC(0)语言中有意义的例子吗或者KC(0)-BPP是定义空集合的巧妙方式吗?也有一种相似的问题可以被提问,RP-P是空集合的巧妙名字吗?关于后一个问题、可能消极答案的最好标志由如下事实组成:RP[ss][R]中的素数测试以及,几个世纪来确定素数问题引发了大量的关注,但没有多项式时间的算法被人所知。相似的,找到KC(0)中但不在BPP中的语言候选者也极为有趣。这是可以做到的最好的一个,给了我们当前的证明下界的知识。

我们知道两个有趣的语言拥有知识复杂度0。都是代数的。第一个是下面的BL语言,由Blum在[Bll]提出,他给出了所有的必须基础原料来证明BLKC(0)BL\in KC(0)。让n作为一个有着素数分解的整数n=p1k1pkPnkn=p_1^{k_1}\cdots p_k^P{n_k}。如果模4全等于3的不同的p的数量是偶数,那么nBLn\in BL。另一个被知道的属于KC(0)的语言是有名的二次非剩余语言。我们在本节给出该事实的一个证明。

yZmy\in Z_m^*,我们定义

Qm(y)={0如果y是模m的二次剩余1其余情况 Q_m(y)=\left\{ \begin{array}{ll} 0 如果y是模m的二次剩余\\ 1 其余情况 \end{array} \right.

L={(y,m)Qm(y)=1}L=\{(y,m)|Q_m(y)=1\}是二次非剩余语言。

我们的协议LKC(0)L\in KC(0)并不依赖于任何未证明的计算复杂度假设。我们首先回想,知道什么、与决定成员关系在语言中的复杂度相关。

4.1二次剩余问题

二次剩余问题带有参数mNm\in N而且xZmx\in Z_m^*,由计算Qm(x)Q_m(x)组成。如果m的分解被知道了,那么计算QmQ_m是轻易的。如果m的分解是未知的,那么没有一个高效的方法计算QmQ_m。这个决定性问题是Gauss在"算术研究"(1801)中讨论的四个主要问题之一(还有素数检验、整数分解,丢番图方程的可解性)。它的一个多项式时间的解决方案意味着整数理论中其它问题的多项式时间的解决方案,例如决定m是否是2或者3素数的乘积。

雅可比符号(xm)(\frac{x}{m})对于mNm\in NxZmx\in Z_m^*是多项式时间的计算函数,值为1或-1并为Qm(x)Q_m(x)提供信息。也就是,如果(xm)=1(\frac{x}{m})=-1,那么Qm(x)=1Q_m(x)=1。然而,当(xm)=1(\frac{x}{m})=1时,计算Qm(x)Q_m(x)是一个难题。事实上,如何在雅可比符号是1的情况下高效生成一个单独的模m的二次非剩余是未知的。

4.2 一个L语言的“0"知识交互系统

我们展示证明系统(A,B),因为(y,m)L(y,m)\in L证明者A仅被要求是一个能求值QmQ_m额外算力的、多项式时间的图灵机器。(当然,没有无限算力的A‘可以说服B、y是模m的二次非剩余、在事实并非如此的情况下)。

为了简化,我们仅考虑雅可比符号(xm)=1(\frac{x}{m})=1情况下的(y,m)L(y,m)\in L(xm)=1(\frac{x}{m})=-1的情况下是无趣的。我们通过给出A、B交互的每一步的具体程序来描述它们。

基础办法是B产生两种类型的数据:类型1:x=r2modmx = r^2 \mod m;类型2:x=yr2modmx = yr^2 \mod m,r是随机选择的,并进行对A的测试。如果(y,m)L(y,m)\in L为真,那么A确实可以告知这些数字的类型。如果(y,m)L(y,m)\notin L,那么这些数组对A是相同的,A将以极大的概率在测试中失败。风险产生在(y,m)L(y,m)\in L确实成立、A在回答测试时会泄露些(y,m)L(y,m)\in L以外的知识。(也就是说,特定的、其它的xZnx\in Z_n^*的二次剩余会被作弊者B’选择。)我们客服了这个危险,通过让A确信。他在沟通的机器知道测试A的数字的类型。

A和B的交互程序

输入:(y,m)L(y,m)\in L(ym)=1(\frac{y}{m})=1n=log2mn=log_2m

初始迭代值i = 0

步骤1:

B首先从Zm中选择随机数r0Z_m^*中选择随机数r_0,然后掷硬币CxC_x。如果Cx=0C_x=0,那么B设置x=r02modnx=r_0^2\mod n,否则,如果Cx=1C_x = 1,B设置x=yr02modnx=yr_0^2 \mod n。B将x发给A。然后,B选择两个随机的集合,每个集合所含元素的数量为n,T={t1,t2,...,tnti=ri2modm}T=\{t_1,t_2,...,t_n | t_i=r_i^2\mod m \},S={tn+1,tn+2,...,t2nti=yri2modm}S=\{t_{n+1},t_{n+2},...,t_{2n} | t_i = yr_i^2\mod m\}.B将TST \cup S中的元素以随机的顺序发送给A

步骤2:

A选择一个大小为n的随机子集合ZTSZ\subset T\cup S并发送给B。

步骤3:

对每个zZz\in Z,B将r发送给A,满足z=r2modmz=r^2\mod mz=yr2modmz=yr^2\mod m

假设TZT-ZSZS-Z的大小差距为d。然后,B从较大的集合中选择d个随机元素,ti1,...,tidt_{i_1},...,t_{i_d}并且将它们对应的ri1,...,ridr_{i_1},...,r_{i_d}发送给A。(也就是说tij=rij2t_{i_j}=r_{i_j}^2或者tij=yrij2modmt_{i_j}=yr_{i_j^2}\mod m,对1ij2n1\le i_j\le 2n)。B设置X=TZ{ti1,...,tid}X=T-Z-\{t_{i_1},...,t_{i_d}\}并且,Y=SZ{ti1,...,tid}Y = S - Z - \{t_{i_1},...,t_{i_d}\}

如果x=r02modmx=r_0^2 \mod m,B让:

X={r0ri=xtimodntiX}X'=\{r_0r_i=\sqrt{xt_i}\mod n | t_i \in X\}

Y={yr0ri=(yxti)modntiY}Y'=\{yr_0r_i = \sqrt(yxt_i)\mod n | t_i \in Y \}

否则,如果 x=yr02modmx = yr_0^2 \mod m,B让:

X={yr0ri=(yxti)modntiX}X' = \{yr_0r_i = \sqrt(yxt_i)\mod n | t_i \in X\}

Y={yr0ri=(xti)modntiY}Y'=\{yr_0r_i = \sqrt(xt_i)\mod n | t_i \in Y \}

B将XYX'\cup Y'中的元素以随机的顺序发送给A。

步骤4:

A检查 XYX'\cup Y'是步骤3指定的形式(对所有的wXY.w2=tixmodmw\in X'\cup Y'. w^2 = t_ix\mod mw2=tixymodmw^2 = t_ixy\mod m对一些tiXYt_i\in X\cup Y)而且XY>n3|X'\cup Y'| > \frac{n}{3}。如果不是这种情况,A停止检查作弊;否则A发送给Bv=Qm(x)v=Q_m(x)的值。

步骤5: 如果vCxv\neq C_x那么B停止检查作弊,否则令i=i+1(这是迭代的末尾)。

如果 ini\ge n,那么B接受(y,m)L(y,m)\in L,否则B返回步骤1。

让我们首先证明(A,B)构成了一个L的交互证明系统。

笔记:猜测模数均为m,若是有m有n,许多等式不成立。

标记2: 注意如果A,B按说明操作,程序的每次迭代将会以>112cn,0<c1>1-\frac{1}{2^{cn}},0<c\le 1的概率完成。下文的声明1和声明2在每次迭代中都生效。

声明1: 如果(y,m)不在L中,那么A(或其它任意A’)正确猜出CxC_x的概率是1/2。

证明: 证明遵循如下事实:Cx=0C_x=0的概率恰好为1/2,而且即使有无穷算力的A’也不能区分与B的计算中Cx=0C_x=0还是Cx=1C_x = 1。后者可以参照如下假设。

假设Cx=0C_x=0

那么,在步骤3中,对所有的tiXt_i\in X,A接收到r0ri=tix=ri2r02modmr_0r_i=\sqrt {t_ix}=\sqrt {r_i^2r_0^2} \mod m。注意到ei=tixmodme_i=t_ix\mod m是一个随机平方,而且r0rir_0r_ieimodme_i\mod m的随机平方根。对所有的tiYt_i\in Y,A接受yr0r1=ytix=y2ri2r02modmyr_0r_1=\sqrt{yt_ix}=\sqrt{y^2r_i^2r_0^2}\mod m。注意到fi=ytix=y2ri2xmodmf_i=yt_ix=y^2r_i^2x\mod m是一个随机的平方,而且y_r_0r_ifimodmf_i\mod m的随机平方根。

尽管如此,对Cx=0C_x=0Cx=1C_x =1 A将要收到随机平方的随机平方根。因此A在预测CxC_x时并没有任何优势。

声明2: 如果(y,m)L(y,m)\in L,那么A可以正确计算步骤4中的CxC_x

定理1: (A,B)是L的交互式证明系统。

证明: 对作为(A,B)输入的每个(y,m)L(y,m)\in L。在所有常量0<c10<c\le 1和足够大的n的情况下,B停止并接受的概率大于112cn1-\frac{1}{2^{cn}}。这由声明2可得。对任何机器A'和任何不在L中的(y,m),给(A',B)输入,B接受的概率至多为12n\frac{1}{2^n},这由声明1和标记3可得。

现在我们将展示L拥有的知识复杂度为0。

定理2: L拥有知识复杂度0. 证明: 为了展示(A,B)组成了L的零知识证明系统,我们必须展示,对每一个多项式时间的交互式图灵机器B',都存在一个概率多项式时间的图灵机器M满足 M[]M[\cdot](A,B)[](A,B')[\cdot]是不可区分的。基础的思路是M可以轻易模拟B',因为B'是在多项式时间内运行的。另一方面,M将会成功模拟A,通过运行B'的掷同一枚硬币两次。

一个更精确的关于M的描述是:输入(y,m)L(y,m)\in L,M随机填充B'的随机磁带,使用一个足够长的字符串R,让B'执行自己版本的步骤1。(B'实际上也许执行了一个不同的算法在步骤1中。)在步骤2模拟A对M来说也是轻松的,因为这里所有的A的做法是选择随机的子集合。接下来,M让B'执行自己版本的步骤3.现在,M必须在步骤4模拟A。注意到很容易检查A是否在步骤4停机。因此,对M来说很容易模拟A,在A在步骤4停机的与B'的计算中。困难发生在A没有停机仍继续。这意味M必须像A一样计算Qm(x)Q_m(x).对A来说很容易有足够的算力计算出x的二次剩余。注意到对M来说也将会是简单的,如果B',或者是生成x、通过计算M可以观察到的r0r_0的平方模m(这样M知道Qm(x)=0Q_m(x)=0)。或者B'生成x通过计算r0r_0的平方模m再乘以y(这样M知道Qm(x)Q_m(x)=1).然而生活并不总是简单的。B'也许生成x用一些其它的方式(比如随机),这样就使得M很难计算Qm(x)Q_m(x)。我们用如下方式客服了这个困难。通过将c1,c2,c3c_1,c_2,c_3标记为固定的、依赖于A和B'的正常量。不失一般性,我们也假设输入(y,m)(y,m),A将在步骤4停机的概率小于112c1n1-\frac{1}{2^{c_1n}}。(否则通过模拟步骤1,2和3中的A和B',如上所示,并让A在步骤4中停机,我们琐碎生成了与(A,B)[y,m](A,B')[y,m])不可区分的计算。

在步骤3的结尾,M保存了最近B'和虚拟的A发送的所有消息。M现在用相同的输入(y,m)(y,m)和B'中随机磁带的内容R再次运行B'。为了第二次计算,M重新模拟A,通过掷新的硬币。四件事情将会在第二次计算中发生。

1)B'在步骤1发生相同的集合S和T,如同第一次计算中一样。

2)在步骤2中,A将要选择一个随机的集合Z~TS\widetilde{Z}\subset T \cup S。并以大于112c2n1-\frac{1}{2^{c_{2}n}}的概率,Z~Z\widetilde{Z}\neq Z(ZZ表示第一次计算中选择的集合)。

3) 在步骤3中,B发送集合X~\widetilde{X}Y~\widetilde{Y}.(对应第一次计算中的X'和Y').并以大于112c3n1-\frac{1}{2^{c_{3}n}}的概率,X~\widetilde{X}Y~\widetilde{Y}是正确的格式(也就是说无法引起A停机)。

4)以大于112c4n1-\frac{1}{2^{c_{4}n}}的概率,X~X\widetilde{X} \neq X'Y~Y\widetilde{Y}\neq Y'

M现在选择一个元素ti(TX)X~t_i\in (T-X')\cap \widetilde{X}。由于tiTXt_i\in T-X',因此第一次计算中B'发生了它对应的rir_i。由于tiX~t_i \in \widetilde{X},在第二次计算中B'发送了xtimodm\sqrt{xt_i}\mod mxtiymodm\sqrt{xt_iy}\mod m。现在,不管是哪种情况,对M来说就像代数计算一样简单计算出r0r_0满足r02=xmodmr_0^2 =x\mod mr02y=xmodmr_0^2y = x\mod m。如果(y,m)L(y,m)\in L,这些示例中的一个会发生。因此M已经计算了r0r_0,可以通过发送v=Qm(x)v=Q_m(x)轻松模拟A。

5.插入的一小节

标记3: 就多项式计算时间而言,一个更强的方式说A沟通了最多f(n)f(n)位的知识如下:

对所有的交互式图灵机器B',存在一个交互式图灵机器M可以通过与B'交互(但可以读取B'的随机磁带)生成一套与(A,B)[](A,B')[\cdot]最多112f(n)1-\frac{1}{2^{f(n)}}区分度的信息。

这是更强的定义,在于它允许B不被绑定到多项式时间的计算上,在A不需要知道B算力的情况下。所有细节将在最后的文章给出。有意思的是,4.2节的二次非剩余交互式证明系统即使在这个更强的定义下,也揭露了0额外的知识。

一个非正式的定义: 标记3的一个视图点的优势在于它允许一个人以一种干净的方式表达定义,像是“多项式时间机器B知道x在它计算的某些点”。让我们考虑一个特殊的例子。假设机器B在输入k时开始计算并输出k位的整数m。B也许随机选择两个素数p1,p2p_1,p_2,让它们相乘,以生成m,然后删除p1,p2p_1,p_2,输出m。当一个人说B知道m的分解的时候意味着什么呢?一个自然的机会是B能够计算它。一种狭义的语境下,这也许意味着,在执行下个命令时,B将输出m的分解或它刚才写的数据,也就是B工作磁带一开始的时间中的一些点。一种广义的语境意味着如果一个概率多项式时间机器M“监控”B计算的立即描述的序列,那M在poly(k)的时间能以极高的概率输出m的分解。然而,这并不足够一般化。事实上,“提取”m的分解对M来说并不容易,但B仍然有足够的潜力高效计算它(即使B的程序也不想公开这么做)。我们相信下面(非正式的)定义实现了一般化的正确水平。令M为概率多项式机器,监控B的计算从开始到B输出m。尤其是M读取了B的所有输入(随机和非随机)和输出。非正式地说,如果M可以用B计算m的分解,我们说B知道m的分解。这里B的使用是非常一般化的。比如,M在改变磁带的内容后可以运行B不止一次。一个相关的示例在4.2节已经阐述。完整的细节将在最后的文章给出。

6.应用到密码学协议

给定我们低界知识的当前状态,密码学的安全性必须基于候选难题的棘手假设证明。因此,一个人必须接受,进一步的分析可能会导致候选难题被高效解决。其中,不能接受的是棘手协议在没有违反相关假设的情况下被打破。

在传统的通信复杂度和计算复杂度中,目标是沟通尽可能多的知识并尽可能高效。因为所有的参与者被认为是好朋友,因此没有人在意多于必要的知识被沟通。密码学协议的场景是不同的,在这种情况下,在这种情况下没有高效沟通知识的问题,完整的问题是没有太多的知识被交流。

模型理论知识已经被用来分析协议。比如,在[HR]论文中,它被用来证明 Rabin’s “Oblivious Transfer”在某些设置下是正确的。 然而,在[FMR]中被指出,Rabin's Oblivious Transfer仍然缺乏一个复杂的理论框架下的证明。

我们相信知识复杂度提供了一个合适的框架来讨论密码学协议的正确性。应用知识复杂度,[FMR]修改了Rabin's Oblivious Transfer使得它可以被证明正确。框架可以在6.1节中看到。

知识复杂度帮助证明或证反密码学协议的正确性,因为它们基于私人信息的秘密并帮助保护该秘密。信息的隐私给了我们相对于敌人的优势。让A拥有n的素数分解n=p1p2n=p_1p_2,B仅仅知道n。在与B的协议中,A应该保护隐私。假设A在执行协议的每一步中,都没有去看p1,p2p_1,p_2的值.那这很容易展示协议没有就n的分解这个秘密妥协。同样可以看出,协议本可以完成一些有趣的工作但没有。事实上,A没有充分利用它的优势。协议也许能完成个不平凡的工作,如果在其中的至少一步,A执行了依赖于p1,p2p_1,p_2的计算c。这引发了问题:

c(p1,p2p_1,p_2)会泄露关于p1,p2p_1,p_2的信息吗?

分类信息理论无法回答这个问题,但是知识复杂度可以,尤其是:

1)我们可以量化c泄露的p1,p2p_1,p_2的知识量; 2) 我们可以设计协议最小化这个知识泄露的量

如果(A,B)是L的零知识交互证明系统,我们已经可以看到,在输入xLx\in L时,A给B最多知识的一位,命名为xLx\in L, 然而,更一般的说,我们定义了一个上界,用位来衡量协议中A给B的知识的数量(在文章的最后出现)。

我们用这给出了一个关于协议或协议组合可以执行次数的上界,可以使用通用的密钥但不会泄露关于密钥过多的知识。此外,想要测量协议执行中泄露的关于密钥的知识量,也许能精确地定位协议设计中的弱点。例如,[BDJ]文中的协议泄露的知识量不合理地大。[H]进一步地分析展示了这个协议可以被破解,如果协议中使用的加密函数是低指数的RSA或者Rabin's function.

一个最重要的应用是这可以让我们用模块化的方式证明协议的正确性。复杂的协议由子协议组成。例如,许多协议用子协议来“电话掷硬币”。然而,如何用一个“普通的”掷硬币的正确性的定义来证明主协议的正确性是不清楚的。看起来许多子协议的更强的定义被需要,为了使它们在更大的协议中变得模块化和清晰。最后的文章中将给出所有的细节。

6.1 一种不经意传输的修改可证明等价于因子分解

本节是[FMR]中的联合工作。不经意传输的定义已经由Rabin[HR]介绍过,Rabin提出了第一个实现了不经意传输的协议。不经意传输作为一个设计工具似乎很有用。可以看到 Blum [B12] 和 Even Goldreich 和Lempel [EGL]的例子. Rabin 以一种数字理论的设置的方式介绍了不经意传输。更一般来说,不经意传输可以看作是一个以1/2概率传输大量知识的协议[EGL]。Berger. Peralta and Tedrick [BPT]提出了一个“不经意传输”随机数的正确协议。不同于不经意传输,这个协议没有传递知识。不经意传输的定义包含两个实体A和B和一个整数n(两个大的不同的素数)其分解仅有A知道。A将n的分解发送给B遵循如下的限制:

1)B有一半的概率收到n的分解,而在另一半可能中,B不应该知道关于n的分解的任何知识。

2)A也不应该知道B有没有收到n的分解

Rabin的协议依赖于分解计算的困难性。然而,如上文描述,它的协议中有潜在漏洞:B能够作弊并以远高于1/2的概率分解n,即使整数分解的棘手假设仍然存在。即使我们不能证明B真的作弊了,到现在也没有人证明B没有作弊。在进一步处理之前,让我们描述Rabin的协议,我们假设A和B都知道n,A知道n的分解。

步骤1: B选择随机的x,1xn1\le x\le n且与n互素。然后B计算yx2modny\equiv x^2 \mod n并将y发送给A。

步骤2: A计算y的随机平方根z,并将z发送给B(如果不存在平方根,那么A什么也不做)。

步骤3: B检查z2ymodnz^2\equiv y\mod n. 否则,B停止检查作弊。让我们假设z2ymodnz^2\equiv y\mod n。可以了解到,y有四个模n的平方根,分别是{x,x,w,w}\{x,-x,w,-w\},B是知道x的。有一半的概率z是x或-x,B没有收到任何知识。然而有另一半的概率z是w或-w,这种情况下gcd(n,x+z)将会是n的分解。这允许B计算n的分解。A不可能发送一些精心选择的平方根z作弊,无论A怎么做,z{x,x}z\in \{x, -x\}的概率是50%而且z{w,w}z\in \{w, -w\}的概率也是50%,A无法了解到底是哪种情况。

A不能作弊是显然的,可是B也不能作弊吗?我们希望是这种情况,协议结束B也不能以高于1/2的概率分解、即使B已经作弊,我们也希望仅在分解困难的假设下证明这点。如果B没有计算x的平方,而是选择了一个特殊的平方数模n,得到y该怎么办呢?也许知道y模n的任意平方根都将让B能分解n。也许存在一个多项式时间的算法输入n,输出一个模n的“特殊”平方y,存在另一个多项式时间的算法,输入y,n和任意y模n的平方根,然后分解n。关键不在于我们有这样的算法,而是没有人证明这样算法的存在与分解难题矛盾。因此,证明Rabin的协议不仅仅依赖于分解困难假设,还依赖于额外的复杂的不自然的假设,尤其是上述的算法不存在。

我们已经能证明Rabin的不经意传输的修改版是正确的。即概率(考虑到n的所有可能的取值和B的所有可能的选择)B在协议结束的k步内分解n,等于1/2 + B在协议开始前的k步内分解n的概率。修改版协议的关键在于除了y还包含了其他元素。B给了A一个最小的交互知识证明,证明B知道y的平方根,按照4.2节中的方法。尤其是,这个交互证明没有揭示任何B知道的y的哪个平方根的信息。现在我们确信B知道y的一个平方根。 当A发送给B随机一个平方根的时候,很容易证明B在协议结束分解n的概率等于1/2+协议开始前分解n的概率。

7 开放问题

很多开放问题存在,我们列出了其中的一小部分:

  1. NP 被严格包含在IP中吗?
  2. KC(O) 被包含在NP中吗?
  3. KC(O) 被包含在IP[1]中吗?
  4. Ip[k] 被严格包含在IP[k + 1]中吗?
  5. KC(Ω(n))KC(\Omega(n))中存在NP完全语言吗?
  6. 什么样的时间界限T(n)T(n)存在,能满足IPinfiniteIPT(n)IP_{infinite} \subseteq IP_{T(n)}