当前位置: 华文问答 > 科学

有哪些方法可以让其他人知道我拥有的秘密,且可以通过验证加以证明,却不必公布我拥有的秘密内容?

2014-09-26科学

谢谢

@康克由

同学的支持~虽然我真的觉得他的答案很好呢。。。为了让大家理解起来更方便一点,我补充了一个更生动例子,希望能够解释得更清楚,也欢迎大家指正~

试图给一个偏学院派的回答~

「零知识证明」是密码学中存在于「证明者(prover,以下用P代替)」和「验证者(verifier,以下用V代替)」双方的一种协议,这种协议的要求是:

  1. P使得V相信其拥有某知识
  2. V不能从证明过程中得到知识的任何信息

为了使得V相信P拥有知识,证明须满足:

  1. 完备性:如果P确实拥有知识,那么证明成功的概率大于2/3
  2. 可靠性:如果P并不拥有知识,那么证明成功的概率小于1/3

若证明满足上面的条件,则通过反复多次的证明,就能使得V相信P拥有知识的概率趋近1,P不拥有知识的概率趋近0。

概念结束(心累。。。)

下面举例说明:

第一个例子,也是

@康克由

原答案中引用的文章里提到的

战争中你被俘了,敌人拷问你情报。你是这么想的:如果我把情报都告诉他们,他们就会认为我没有价值了,就会杀了我省粮食,但如果我死活不说,他们也会认为我没有价值而杀了我。怎样才能做到既让他们确信我知道情报,但又一丁点情报也不泄露呢?

这的确是一个令人纠结的问题,但阿里巴巴想了一个好办法,当强盗向他拷问打开山洞石门的咒语时,他对强盗说:「你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我。」

强盗们当然会同意,因为这个方案不仅对他们没有任何损失,而且还能帮助他们搞清楚阿里巴巴到底是否知道咒语这个问题。阿里巴巴也没损失,因为处于一箭之地的强盗听不到他念的咒语,不必担心泄露了秘密,而且他确信自己的咒语有效,也不会发生被射死的杯具。

这个方法是如何成为零知识证明的呢?

完备性:当阿里巴巴知道咒语时,他一定可以按照强盗的要求正确的开关石门,正确率100%。

可靠性:如果阿里巴巴并不知道咒语,那么他必然不能正确开关,强盗会立刻发现,他就挂了。就算阿里巴巴运气好,随口说了一句「哈库呐玛塔塔!」,正好石门里有人想开门透透气开了门,让强盗们以为他掌握了咒语,这种情况也不会总是发生(概率很小)。只要强盗们多下几次指令,就可以将这样的运气成分降低到可以忽略不计。

而强盗在验证了阿里巴巴确实拥有咒语的同时,又不能得到咒语的任何信息,因此这是一个成功的零知识证明。(当然我才不相信会有这么守规矩的强盗=.=,门一开还不直接毙了阿里巴巴冲进洞去吗。。)

第二个例子。

仍然拿楼上Hamilton回路举例。具体过程为:

  1. P随机构造一个图G的同构图G',将G'发给V
  2. V随机从以下两者中选择一项
  • 要求P给出G和G'的同构对应关系
  • 要求P给出G'的Hamilton回路C'
  • P应V的要求做出相应回答
  • V对P的回答进行验证
  • 那么首先我们来看P是否能证明他真的知道图G的Hamilton回路C:

  • 完备性:显然如果P知道C,那么P在第3步做出正确回答的概率是100%
  • 可靠性:如果P不知道C,他仍然有可能在第3步回答正确,因为他运气好(=.=)。比如他只是画了一个同构的G',而V正好只要求他给出同构关系;或者他找了个不同构的、已知Hamilton回路的G',而V正好只要求他给出C'。但是P不可能永远这么幸运,他每次蒙对的概率是1/2,如果证明反复进行,总会有运气花光的那天,只要有一次回答错误,证明就失败了。
  • 接下来我们看V是否会从证明过程中获得知识:

    如果V能够由C'得到C,那V就知道G‘和G的同构对应关系,而这在计算上是不可能的(这个证明方法的基础就是同构图的判断是很困难的)。

    由此我们可以看出以上证明是一个零知识证明。


    再举一个跟图有关的例子:

    图的三色问题,是指找到这样一种染色方法,将图的顶点用三种颜色中的一种染色,并使得相邻顶点不同色。假如P找到了图G满足三色问题的一种染色方法,想要证明给V,他应该怎么做呢(O.O)?

    步骤如下:

    1. P随机选择一种颜色的置换方式(如红-蓝,蓝-黄,黄-红),将原来的染色方案按照颜色置换重新染色。将染色过后的G放在密封的信封里发给V。


    2. V随机选择图中的一条边,并要求P打开这条边的两个顶点。
    3. P打开相应的信封,展示顶点的颜色。
    4. 如果展示的顶点颜色不同,则V接受证明。

    完备性:如果P确实有三染色方案,那么证明必然成功。

    可靠性:如果P没有三染色方案,那么他的染色方案中至少有一条边是顶点同色的。假设图G有n条边,那么证明失败的概率至少是1/n。如果证明进行m次,那么P人品爆表蒙混过关的概率就会小于(1-1/n)^m,当m足够大,这个概率就趋近于0。

    而由于每次的随机颜色置换,V无法从揭示的边中获得任何染色方案的信息。因此这个证明是零知识证明。

    至于如何构造这样的「信封」,使得V在P开启信封前不能看到信封中的内容,而P也无法通过不同的"拆封"方式而操纵信封中的内容,这就是另外一种密码协议「承诺协议」的范围了。