看到这里 , 大家是不是对「模拟」慢慢有了感觉?这里第二个电视台的主持人通过剪辑视频的方式 , 而不是「时间倒流」 。 他对「理想世界」 , 也就是电视中播出的内容所在的世界 , 进行了外部干预 , 达到了同样的效果 。 对理想世界而言 , 这种剪辑本质上就是一种超能力 。
这个故事其实来源于一篇论文『如何向你的孩子解释零知识证明』(How to Explain Zero-Knowledge Protocols to Your Children)[3] , 发表在1989年的美密会议上 。
模拟与图灵机
一谈到超能力 , 大家有没有觉得这玩意不科学 。 是的 , 如果我们无脑地用「超能力」来解释任何事情 , 那么我们逻辑就无法自恰(Consistent) 。 在理想世界中 , 模拟器是不能随便开挂的 , 比如模拟器肯定不能直接修改 Bob 的内部状态 , 比如 Bob 在验证步骤明明验证失败 , 但是模拟器强硬去把验证结果改为「接受」 , 这会导致我们可以证明:「任何的交互系统都是零知识的」 , 这个错误结论 。
模拟器不是理想世界中全能的上帝
那么模拟器到底可以是什么呢?模拟器其实只是一个图灵机 。 所谓的「时间倒流」 , 「剪辑录像」这类的所谓超能力并不是玄乎的超自然能力 , 而是图灵机可以实现的功能 。 计算机专业的朋友们肯定都用过 VMWare , 虚拟机之类的软件 , 本文讲的「模拟器」完全可以想象成一个「虚拟机」软件 , 它能虚拟出一个计算机环境 , 这个虚拟环境就是我们上文说的「理想世界」 。 「时间倒流」如何解释呢?不知道大家有没有用过虚拟机软件的「快照」功能(Snapshot) , 使用快照的时候 , 虚拟机软件可以把整个虚拟计算机的所有状态保存下来 , 然后在任意时刻 , 虚拟机软件都可以重新回到保存快照的位置继续运行 。
注:其实所谓时间倒流是计算机中的一个基本操作 , 在程序语言理论中有一个概念叫做 Continuation 。 抽象地讲 , Continuation 表示从现在开始到未来的计算 。 Continuation这是控制流的一个显式抽象 , 而 goto , call-with-current-continuation , 甚至 thread scheduling 都可以看做是操作 Continuation 的操作符 。 比如采用call/cc , 也就是call-with-current-continuation 就可以轻松地实现「回溯」功能 。 保存快照可以理解为保存当前的 Continuation , 而回到过去的某一刻 , 就是应用这个Continuation 。
不管 Zlice 还是 Bob , 还有我们的每一个观察者 , 都是一个个可执行程序 。 这些程序被拷贝到了虚拟机里 。 Zlice 与 Bob 的会话实际上就是这两个程序之间的通讯 。 观察者是 Hook 在 Zlice 与 Bob 进程 IO 上的程序 。 在上文的地图三染色「理想世界」的诚实 Bob , 实际上是 Bob 进程调用了虚拟机的「随机数发生器」 , 而这个随机数发生器是能被 Zlice 操纵的 。 「现实世界」是外部运行虚拟机软件的计算机环境 。
大家是不是又有所悟 , 我再强调一下:
证明零知识的过程 , 就是要寻找一个算法 , 或者更通俗点说 , 写出一段代码 , 它运行在外部计算机系统中 , 但是实现了虚拟机的功能 。 而且在虚拟机中 , 需要有一个不带有「知识」作为输入的 Zlice , 可以骗过放入虚拟机运行的 Bob 。
猜你喜欢
- 自己在家怎么做果冻
- 椰子价格:批发价和零售价
- 自制猫零食,超级简单的秋刀鱼玛芬
- 转载 太空能热水器主机怎么选,水循环和氟循环哪个好?看完总算知道了
- 转载 闲钱是存定期还是用来投资
- 转载 80后工作2年存款超10万 计划明年帝都买房咋理财
- 转载 中国人必读的10条理财忠告
- 转载 10分钟教你成为有钱人--分层次理财
- 吃零食的危害有哪些 怎么拒绝零食的诱惑
- 富贵竹价格:不含盆零售价格:约1.5元~2.5元/支
