初始零知识证明

零知识证明(Zero-Knowledge Proofs,ZKP)背景知识,主要介绍一下研究的动机


这里我简单介绍一下背景知识,希望能引起你们研究的兴趣!

起源

Goldwasser等人1在1985年提出交互是证明概念,通过将交互性和随机性引入到传统的NP证明系统中,提出了交互式证明系统。在交互式证明的系统中,验证者V可以向证明者P提随机问题。V可以验证超出它计算能力以外的问题,P的私密信息不会泄露给V。

一个ZKP引发的爱情故事2

这里以数独为例引入零知识证明,Alice和Bob两人非常喜欢完数独,两人一直喜欢用自己设计的数独互相挑战对方。其中Alice经常给Bob出一些非常有挑战难度的数独

证明(Proof)

有一天,Alice和Bob打赌解开Alice设计超级困难的数独,如果解开的话,Alice答应Bob做他的女朋友。Bob听到这个消息后闭关三天三夜,下定决心一定要解开,然而功夫不负有心人…,他没有解开。Bob冥思苦想,Alice是不是不喜欢我?故意出一个无解的题。当想到这一刻,Bob崩溃了…

终于Bob鼓起勇气质疑Alice出的数独根本没有解,向Alice抱怨是在耍他,Alice听到后,暴脾气上来直接骂他笨蛋,这题都解不开,还想做我男朋友。但是Alice为了保持数独的神秘性,告诉Bob能证明该数独是有答案的,而且不要告诉他答案是啥就能证明,Bob心想,只想你能证明我就知道答案是啥,到时间我就能解出来了。心里暗自偷笑

承诺(Commitment)

Alice分别用卡片代表她设计的数独,然后Bob转过身后,Alice将卡片按照数独解的排列放在桌子上,代表解的卡片数字面依旧朝下,其他数字按数独原来位置排放。

随机挑战(Random Challenge)

Alice整理好卡片后让Bob睁开眼转过身来,Bob非常开心,因为他想着可以揭穿Alice的无解数独,或者偷偷看到答案,这样可以厚脸皮拿着答案去向Alice表白。

当Bob转过身的那一瞬间,Bob傻眼了,这是什么东西,这跟我解题的数独有什么关系?啥提示也没有啊!这时,Alice对Bob笑着说,我已经把数独的答案摆好,但是你看不到呦。不过你能验证这些数独的答案,你可以随意选择按照行,或者按照列,或者按照3$\times$3的九宫格检验。你随机挑选一种,保证结果正确…

Bob想着,这是什么解题方式?这样就能告诉我答案吗?会不会有诈?但是为了幸福,要勇敢的卖出那一步,所以Bob就按照行来选,看看Alice玩的什么把戏?这时Alice根据Bob的选择按照行的方法来验证,将每一行卡片秘密的收入一个麻袋里,然后将九个麻袋打乱顺序交给Bob手中。

Bob心里想着这时什么操作?我能打开麻袋看吗?我怎么验证?

验证(Verification)

Bob收到九个麻袋后,一脸懵逼的看着Alice,这时什么意思?Alice对着Bob说,见证奇迹的时刻到了,你可以打开这9个麻袋,每个麻袋正好9张,没有重复的数字,分别1-9的卡片。Bob按照Alice的说法打开后,直呼NB,还真的是这样。

但是Bob始终不相信Alice,不相信这个数独有解,所以狡辩说:我也可以这样做给你看。我只要保证每一行都是1-9这9张卡片,不去管纵列和九宫格里的数字是不是也都是没有重复的不就行了。Alice反问,我也不知道你会按照行来收集卡片啊,或者按照列?你菜就别狡辩,OK?还敢质疑我!你选什么方式验证我都不怕…

接着,Bob心里服,要再次进行验证,Alice重复上面的步骤,这次Bob选择3$\times$3的九宫格验证,然后结果还是正确,此时,Bob心里非常复杂,难道我没有机会了吗?我真的很菜吗?Alice竟然在不告诉我答案的情况就能正确有解。实际上他不知道是,刚才Alice就是用零知识证明的方式向Bob展示该数独有解。

总结

经过Alice和Bob的故事,大概总结为:Alice作为证明者,Bob作为验证者,两者之间根据数独的答案进行交互。

零知识证明技术满足以下三个性质:

  1. 完备性(Completeness):如果证明者 P 知道证据(Witness)能证明命题的正确性,则能以极大概率让验证者 V 信任。
  2. 正确性(Soundness):一个恶意的证明者 P’ 难以用一个错误的命题欺骗验证者 V。这里的正确性区分为计算正确性和完美正确性。满足计算正确性的零知识证明方案能防止只能做多项式时间计算的恶意证明者(可以简单理解为恶意证明者只有有限计算资源)。
  3. 零知识性(Zero-knowledge):一个恶意的验证者 V’ 不能获取除了命题是否正确以外的信息。同样,我们区分计算零知识性和完美零知识性。

参考文献


  1. Goldwasser S, Micali S, Rackoff C. The knowledge complexity of interactive proof systems[J]. SIAM Journal on computing, 1989, 18(1): 186-208. ↩︎

  2. https://medium.com/qed-it/the-incredible-machine-4d1270d7363a ↩︎

零知识证明学习(一)—— 初始零知识证明相关推荐

  1. 零知识证明学习资源汇总

    本文将继续会持续进行更新,更新后的版本将在 Github 和知乎上发布,欢迎关注. Github 地址:https://github.com/sec-bit/learning-zkp/blob/mas ...

  2. 零知识证明学习(三)—— 非交互式零知识证明(zkSNARKs)

    非交互式零知识证明 本节主要介绍一种新的零知识证明-zkSNARKzkSNARKzkSNARK,zkSNARK:zero−knowledgeSuccinctNon−InteractiveArgumen ...

  3. 零知识证明学习笔记:背景与起源

    副标题:斯坦福学霸的零知识证明学习笔记(一) 本文作者东泽,来自安比技术社区的小伙伴,目前就读于斯坦福大学,研究方向密码学,本系列文章来源于作者在斯坦福著名的课程<CS 251: Cryptoc ...

  4. 零知识证明系列之一——初探零知识证明

    前言 区块链的发展可谓是日新月异,分布式账本,哈希函数,merkle tree,公钥算法,p2p网络,共识机制,智能合约等等很高大上的名词相信大家一定都不会很陌生.区块链像一个有机体,融合了各种不同的 ...

  5. 学习记录——初始——计算机学习准备

    学习记录--初始--程序员预备 初衷 我现在是大三的一名通信学院本科生,目前准备做一名社畜程序员,今天偶然间看到了这篇文章,又正准备对之前学习的语言工具进行整理,于是决定用博客记录一下自己的学习过程. ...

  6. 复工证明怎么写 企业复工证明模板

    本文转载自DuShuSir.com 原文链接https://dushusir.com/back-to-work-certificate/ 问题: 2020年新年,所有人过的都不好,在这里首先祝福大家身 ...

  7. 区块链共识机制:权益证明POS和委托权益证明DPOS

    详情参见个人博客: http://brainware360.cn/%E5%8C%BA%E5%9D%97%E9%93%BE%E5%85%B1%E8%AF%86%E6%9C%BA%E5%88%B6%E4% ...

  8. 做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个DNN模型...

    来源:机器之心 本文约2600字,建议阅读9分钟 在时间序列预测任务上,你不妨试试简单的机器学习方法. 在深度学习方法应用广泛的今天,所有领域是不是非它不可呢?其实未必,在时间序列预测任务上,简单的机 ...

  9. 斜堆学习笔记+复杂度证明

    和左偏树几乎一模一样,唯一的区别是左偏树合并后判断如果左儿子深度小于右儿子则交换左右儿子,而斜堆直接无脑交换. 复杂度是均摊的 O(nlog⁡n)O(n\log n)O(nlogn) 证明: 定义重结 ...

最新文章

  1. 2017年9月9日普级组 优美三角剖分
  2. zabbix server监控项报警提示:“Zabbix discoverer processes 75% busy”
  3. 系统接口规范以及常见的接口技术概述和比较
  4. eclipse 无法启动选择的项,最近未进行任何启动
  5. Jquery小菜鸟---防止按钮在短时间内被多次点击
  6. 宣讲会通知|香港科技大学工学院理学硕士线上直播综合场【MSc】
  7. ps用计算机,教你用photoshop绘制计算器
  8. 栅栏密码解密——Java实现
  9. 【LDC1314】金属传感器(电感传感器)的调试技巧
  10. 张正友标定法的非opencv库函数实现
  11. 加拿大卡尔加里推出数字货币以促进当地经济发展
  12. input输入框对伪类(after,before)支持情况
  13. js 字符串 转换 html标签,js 字符串转html标签
  14. MySql 高级查询强化学习
  15. 三菱plc支持c语言,5.三菱FX系列PLC支持哪种编程方式.
  16. 农村创业年收入可以实现三五十万元?有哪些投资不大的项目
  17. 少儿学编程好还是奥术好
  18. 内网安全-域横向CSMSF联动及应急响应初识
  19. windows禁用f1按键
  20. iPhone手机配置fiddler代理

热门文章

  1. “远程办公效率低?” 谈谈职场沟通与交流
  2. 基于MATLAB下巴特沃斯IIR数字滤波器的实现
  3. 手把手教你六类网线水晶头接法,超详细教程
  4. 搭建环境,创建vue3+typescript+vuetify项目
  5. 十四、Debian 10 ldap
  6. 第四讲:详谈波分设备在双活方案中应用
  7. 使用代码操作WLAN
  8. Java千问:开发Java程序为什么要配置环境变量?
  9. Path环境变量是什么?有什么用?怎么工作?JDK,JRE,JVM,集成开发工具是什么?有什么用?怎么工作?JDK安装包文件结构?有必要设置Path环境变量?Eclipse和IDEA开发工具的运作
  10. MQTT3-常见的MQTT服务器介绍