转自:PrivacyIN 隐私学院

前言

隐私学院【PrivacyIN】第一期ZK训练营课程精讲内容上线啦,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍ZK理论及相关应用,课堂主题为《Basics of ZK Cryptography & Research Overview》。

此次授课采取小班授课,邀请了数十名来自国内外密码学及相关领域的专家学者作为学员,参加了高强度的90分钟的密码学培训课堂。

课程精讲全文

零知识证明(Zero-Knowledge-Proofs)由Goldwasser、Micali和 Rackoff在1985年提出,零知识证明是一种在证明者和验证者之间的密码学协议,证明者向验证者证明其拥有一个解(witness)能够解决某个计算问题(statement),同时又不泄露任何关于该解(witness)的额外信息。

零知识证明(Zero-Knowledge-Proofs)既不泄露隐私又保证正确性的能力,使得零知识证明成为一个强大的工具,并广泛应用各种领域中,如电子投票、匿名凭证、群签名、可验证外包计算等,尤其随着WEB3技术的发展,数字货币与区块链技术非常紧密地联系起来。

本期课堂中张宇鹏老师围绕零知识证明展开,主要内容有:证明系统和零知识证明定义、零知识证明发展史、零知识证明及区块链应用等。

张宇鹏老师首先以证明「勾股定理」为范例描述了传统意义上的证明问题,即给出一个B为直角的三角形ABC,证明正确,证明的方法是通过B点画一条垂直线交AC于D点,然后通过三角形相似关系证明勾股定理关系满足。


这里即证明的声明statement,证明的过程(推演步骤)即prove。statement可以表示任何计算问题,传统statement证明是通过提供所有的证明推演步骤,然后进行正确性检测验证来实现的,这里会泄露信息(知识knowledge)。

在证明系统中,prover/verifier交互证明计算模型是非常典型的,张宇鹏老师例举一个颜色检验的例子,该证明中prover声称「知道一张拥有不同颜色的纸」作为statement。

通过引入随机挑战,verifier生成随机数以确定是否翻动纸张来进行随机挑战,prover收到挑战则回答是否翻动了纸张,如果是诚实的prover将总是能够以正确(100%的概率)回答verifier是否翻动了纸张,否则盲猜只有1/2的概率能够正确回答verifier的挑战。重复该过程很多次(比如100次或以上),如果prover每次都能够正确回答verifer的挑战,则极大概率(几乎为100%)地证明了prover知道正确的答案,即证明了prover声称的「知道一张拥有不同颜色的纸」statement;如果prover不知道答案,则prover将以极低的概率(如100次挑战,猜对的概率几乎可以忽略)猜对,则证明其prover在撒谎或是作恶者。

标准的证明系统中,主要有证明者prover、验证者verifier和公共计算C,其中prover拥有数据data,prover生成一个证明proof表示其使用计算表达式C计算得到结果result,然后将计算证明proof发送给verifer;verifer收到计算证明proof进行验证证明是否正确。

证明系统具备主要特点:

正确性(correctness):诚实的证明者可以以极高的验证正确性(几乎为1)

完备性(soundness):如果证明者不诚实或作恶,则通过验证的概率是极小的(可以忽略的概率)

一个高效的证明系统的主要指标高效的验证时间和较小的证明proof大小,也即具备succinct特性。

基于证明系统上,构建一个既能证明计算正确性,proof中又不泄露任何prover原来的数据,即具备零知识性(zero-knowledge),这样的证明系统就是零知识证明ZKP系统。

课程中张宇鹏老师回顾了零知识证明问题的发展史,介绍了最早由Goldwasser、Micali和 Rackoff的提出零知识证明系统以及早期相关的复杂计算理论,包括交互证明(Interactive Proof)、概率检测证明(Probabilistically checkable proofs)、零知识(Zero-knowledge)等。


零知识证明系统比较里程碑意义的突破则是Pinocchio协议,Pinocchio协议是第一个接近实用的简洁、非交互的零知识证明系统zkSNARK(SNARK=Succint Non-interactive ARgument of Knowledge),它支持通用计算,将计算问题转换为R1CS(Rank1 Constraint System)形式,然后将R1CS转换到QAP(Quadratic Arithmetic Programs)来实现简洁的多项式证明和验证,Pinocchio协议的出现标志着零知识证明开始由理论发展到实用阶段,这也是Groth16协议的基础。

接着,张宇鹏老师对当前零知识证明系统依托的密码学技术进行分类,主要分为:双线线性配对(Bilinear Pairing)、安全多方计算(Secure Computation)、离散对数(Discrete-log)、交互式谕示证明Interactive oracle proof、交互式证明Interactive proof、格密码(Lattice)等。

目前零知识证明系统性能已经接近实用,当前最佳的证明系统在百万级别计算电路上表现已经性能非常好了(比如生成证明),但另外一方面证明大小和验证时间则跟具体密码学技术构造方式有很大关系。

进一步地,张宇鹏老师简单探索了密码货币、认证和区块链的特点,并针对Bitcoin隐私性,分析了涉及的隐私泄露问题,表示其隐私保护性是数据公开的、弱伪匿名,提出可以使用零知识证明来创建数据合法性证明来解决问题的思路。


张宇鹏老师还分析了当前区块链的扩容问题(Scalability),即区块链系统处理交易的能力非常低效(比如Bitcoin: 5tx/s,Ethereum: ~30 tx/s)的问题,并介绍了非常火热的ZK-Rollup技术,表示其主要是使用高效零知识验证算法,将批量交易聚合构建简洁证明,并执行高效的验证来实现的。

临近课堂结束,张宇鹏老师继续分析和讨论了隐私链ZCash和ZK-Rollup的一些差异,帮助大家进一步理解它们的特点、概念和设计目标。

自由讨论环节,张宇鹏耐心地为学员解答了一系列密码学基础和零知识证明的相关问题。

关于PrivacyIN

PrivacyIN隐私学院 (Privacy Institution) 是由LatticeX基金会发起,致力于建设开放的密码和隐私技术布道和研究社区,并联合全球顶尖的学者、隐私技术开发者推动ZK(零知识证明)、MPC(安全多方计算)、FHE(全同态密码)的创新和落地。

PrivacyIN Week1课程回顾 | 张宇鹏博导开讲零知识证明密码学基础研究导论相关推荐

  1. PrivacyIN Week2 | 张宇鹏博导开讲经典零知识证明协议设计原理

    前言 隐私研究院[PrivacyIN]第一期ZK训练营课程精讲内容上线,本期课堂邀请到美国德州农工大学(Texas A&M University)计算机科学与工程学院的助理教授张宇鹏,主要介绍 ...

  2. 开源软件通识基础:第二周课程回顾与总结

    接第一篇<开源软件通识基础:第一周课程回顾与总结>,本文为第二周课程内容的回顾与总结. 本导学班在调研全球开源教育与课程的基础上,通过收集.整理.理解.拓展国际最新的前沿开源课程,采取众创 ...

  3. 【1024创造营】精彩课程回顾

    简介:开发者学堂联合多个团队开展的[1024创造营]圆满结束,精彩课程回顾已打包,请查收! 1024 万人创造营,覆盖低代码.云原生.人工智能.视频云.运维等领域,通过coding 改变世界,坚持对于 ...

  4. 2019年51CTO学院发布课程回顾总结-引莫(孙忠)

    2019年51CTO学院发布课程回顾总结 2018年期间共发布五套教程:bat批处理自动发邮件.bat批处理自动数据备份.oracle数据库安装.EXCEL库存库位管理模板 2017年共发布7套课程: ...

  5. 易基因课程回顾|表观遗传学和表观育种在品种改良中的应用研究

    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因. 传统作物育种包括杂交.选择所需性状的遗传变异,导致遗传基础缩窄和遗传多样性缺失,从而阻碍作物改良.表型性状受遗传学和表观遗传学影响,利用 ...

  6. 棕榈学院Python课程回顾——K线图绘制

    棕榈学院Python课程回顾(Day 1-2) 文章目录 棕榈学院Python课程回顾(Day 1-2) 环境配置 Sublime text 3 jupyter notebook Day 1 文件读取 ...

  7. 论中职计算机基础课程授课方法,浅论中职《计算机基础》的教法与学法

    [摘要]在中职教育中,计算机教育在各个专业都占有一席之地,尤其是<计算机基础>,借用中职计算机基础课程的"前世"与"今生"的拟人手法,讲述教师如何教 ...

  8. C#面向对象程序设计课程实验一:实验名称:C#语言基础、程序流程控制

    C#面向对象程序设计课程实验一:实验名称:C#语言基础.程序流程控制 实验内容:C#语言基础.程序流程控制 一. 实验目的 二.实验环境 三.实验内容 四.实验总结 实验内容:C#语言基础.程序流程控 ...

  9. 网络工程师课程---7、网络通信综合实验(做网络基础综合实验 用什么软件)...

    网络工程师课程---7.网络通信综合实验(做网络基础综合实验 用什么软件) 一.总结 一句话总结: cisco packet ['pækɪt]  tracer ['treɪsə] packet 英 [ ...

最新文章

  1. Vue.js 实践(2):实现多条件筛选、搜索、排序及分页的表格功能
  2. 产品Backlog(Product Backlog)是什么?
  3. linux学习随笔——linux文件权限管理和网络配置
  4. python测试开发django-8.windows系统安装mysql8教程
  5. sp_addlinkedserver (Transact-SQL)
  6. 如何把创建ECS(CreateInstance)作为触发器来触发函数计算
  7. 业务中台01:中台解决方案本质在解决什么问题?
  8. Python凭什么成为增速最快的编程语言:21条调查说明一切
  9. 埃斯顿服务器上电无显示,埃斯顿伺服常见现象报警及排除
  10. 面试题:老师生日分析过程,能否建模用程序解答?
  11. 业务模式制胜,BLM战略规划七步法
  12. 并网光伏发电系统(simulink仿真)
  13. Android 之度量单位px,dp,dip,sp,in,mm详解
  14. sns.relplot
  15. 第七讲项目3-编制三角函数表
  16. powershell操作excel
  17. 计算机主机开机为什么显示器不开,电脑显示屏不亮但是主机已开机怎么解决
  18. poi和easyExcel基于Java操作Excel学习笔记
  19. 【ZooKeeper】大数据之分布式协调神器:ZooKeeper选举
  20. Java8——Stream流操作List排序_List集合中每个对象元素按时间顺序排序

热门文章

  1. phpweb admin.php,phpweb完美解密版
  2. 关押罪犯 - C++
  3. 每天一练——牛客网基础语法(7)
  4. 香港服务器CN2线路双向和单向到底什么意思?
  5. matlab slice四维,Matlab有关四维数据作图小结2(slice命令)
  6. Learning html
  7. express 开发 热更新
  8. el-table表头取消全选框
  9. Android APP代码执行历史漏洞与攻击面分析
  10. Java dangling metacharacter *