零知识证明(二)——经典例子阐释

1,608 阅读4分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第14天,点击查看活动详情

有帮助的话请点个赞吧~

零知识证明学习笔记整理之几个常见的例子。

几个经典例子

交互式零知识证明

房子、保险箱

  • 这个故事有很多版本,但是大同小异,P想要向V证明他拥有房子or保险箱的钥匙(或密码),而V恰好知道在房子or保险箱里有某些特定的东西:
    • V让P拿出某样东西;
    • P在V看不到的情况下打开门,拿出东西,展示给V看。
    • 因为是特定东西,所以也许一次就可以证明而无需重复。
知识论断挑战
钥匙或密码P打得开门V选择的物品

阿里巴巴山洞(这个故事有很多版本,大同小异)

  • 有一个山洞类似下图中的山洞,洞里有个岔路,岔路尽头是不通的,被一扇门阻隔。
    image.png
  • P说他知道一句能打开那扇门的口令,V不相信,P想向V证明但又不想把口令告诉他:
    • P随便选择一条岔路走到门前,V此时站在洞外不知道P的选择;
    • V随机选择一条出路,进入洞穴向P喊话让他从相应出路出来;
    • P根据V的要求穿过门or回头从相应道路出去。
    • 重复这个过程多次,V将不得不相信P确实可以穿越那道门
知识论断挑战
口令P知道口令V随机选择的出路
  • 还有一个版本是类似阿里巴巴与四十大盗的故事,阿里巴巴知道一个山洞入口门的口令,大盗站在远处(听不到阿里巴巴说话的距离)向阿里巴巴发出指令,阿里巴巴根据指令开门或关门。

色盲游戏

  • V是一个色盲,他手里拿着两个在他看来一摸一样的球,但是正常的P表示这两个球颜色不同,V不信:
    • V向P展示这两个球;
    • V把手背到身后,对球进行操作(交换或不动);
    • V重新展示两个球,P判断他是否交换了这两个球。
    • 重复这个过程,次数足够多那么V就会逐渐相信,因为P每次都猜对的概率是越来越低的,具体满足如下决策树。 image.png
知识论断挑战
球的颜色两个球颜色不同V随机进行的交换
  • 这个过程必须是实时交互的,V操作完P立刻给出答案,且证明过程无法留存供别人检查。

非交互式零知识证明

数独游戏

  • 给出一道数独题,P声称他知道题目答案但又不想告诉V:
    • 准备191\sim9的数字卡片,每个数字准备3×9=273\times9=27张,每一个格子要放三张卡片;
    • 题面用下述方式展示,即每个格子上放三张相同的数字卡片;
      image.png
    • P解答题目时,若要在某个格子填入数字,那就在这个格子上放三张对应数字的卡片;
      image.png
    • 然后把每一行的9张卡片收集起来打乱分别装进袋子里(一个格子拿一张),每一列的9张卡片收起来打乱分别装进袋子,每一宫的9张卡片收起来打乱分别装进袋子,得到27个袋子,每个袋子里都有九张卡片,理论上九张卡片应为不重复的191\sim9
    • V随机打开一个袋子进行验证是否为不重复的九张卡片,验证得足够多他就不得不相信P真的解出了这道题。
知识论断挑战
数独答案P知道答案V随机选择的袋子
  • 这个过程不需要交互,袋子可以一直放着,等着随便一个人随时来检验,而P也无需在场。

参考

[1] Zero-knowledge proof - Wikipedia
[2] 零知识证明介绍 - 知乎 (zhihu.com)


欢迎指正与讨论!