Whisker17 / zkpThings

This repo contains kinds of zkp scheme in current market
39 stars 10 forks source link

Ben Fisch 关于 ZKP 的AMA #18

Closed Whisker17 closed 3 years ago

Whisker17 commented 3 years ago

Ben Fisch 关于 ZKP 的AMA

原文链接:Ben Fisch 关于 ZKP 的AMA

Whisker17 commented 3 years ago

Questions:

  1. 零知识证明目前的算法有很多,能简单介绍一下之间的区别,当前业界主要用的是哪种?

  2. 零知识的证明往往由证明方和验证方组成,两者之间进行交互有哪些有效的方法?

  3. 对比MPC中的解决方法,零知识证明有哪些优势?

  4. 现阶段有许多密码学方法都说自己只支持PoC,想了解一下PoC在工程中会遇到哪些问题?

  5. 当前的门限签名算法很多,你认为将来发展趋势的话,哪种会成为工业界的通用方案?

  6. 现阶段的TEE与MPC结合能达到什么样的效率,你认为MPC与TEE的结合在多久会得到工业级的广泛应用?

Whisker17 commented 3 years ago

Q:零知识证明目前的算法有很多,能简单介绍一下之间的区别,当前业界主要用的是哪种?

A:零知识证明(ZKP)目前有专用型ZKP通用型ZKP。首先,ZK-sigma-protocols 可以有效的应用于很多简单任务,例如:

  1. 签名:密钥的证明知识,如Schnorr和ECDSA签名。

  2. 选择性披露凭证(匿名凭证)

  3. 环签名(例如:门罗币中使用的)

其次,Bulletproof是中等复杂性任务的最佳ZKP解决方案,例如:

  1. 范围证明:如证明加密值大于0,

  2. 仅保密交易隐藏金额(使用范围证明)

以上都是行业中的应用。通用型ZKP尚未在业界广泛使用,主要由于直到最近才用更先进的ZKP技术克服了其局限性,这种状况将随之被改变。

ZKP技术大体主要分为两类:有可信设置无可信设置

Groth-16是最有效的有可信设置的ZKP,应用于ZCash中。有可信设置在使用时很不方便,需要针对每种应用进行重新设置,因而限制了行业应用。

STARKs没有可信设置,但是相比之下,证明的大小非常大。STARKs在某些DEX项目上有一些集成的原型验证。最近发现的通用设置SNARK(例如:Sonic,PLONK和Marlin)做了权衡:它们像Groth-16一样实用,并且具有一次性的可信设置,可以在许多应用程序中被重复使用。最新研究发现,Findora研发的Supersonic是一种非常实用的无需可信信任的通用型ZKP,且其证明大小会比STARKs小很多。

Whisker17 commented 3 years ago

Q:零知识的证明往往由证明方和验证方组成,两者之间进行交互有哪些有效的方法?

A:基本上所有交互式的ZKP都可以设为非交互式。(一个例外是物理上的ZKP,5年前我写了一篇关于它的论文)。一些密码学家争论这种转换所涉及的启发式方法的安全性,但实际上,我们仅使用了非交互式ZKP,这个证明可以被任何人发布,传递和验证。为了进行有效的通信,我们将ZKP设计为较小的证明大小。对于简单的证明非常容易,对于更通用性的证明,则存在具有不同权衡因素的各种解决方案(例如:SNARKs)。

Whisker17 commented 3 years ago

Q:对比MPC中的解决方法,零知识证明有哪些优势?

A:MPC和ZKP具有不同的用途。实际上,ZKP是MPC的一个特例MPC用于具有秘密输入的多方,以学习其输入的某些计算结果,但不会彼此泄漏有关输入的任何其他信息。例如,几家公司可以使用MPC来得到其客户总集合的交集,而无需透露交集之外的客户名字。ZKP是一种特殊情况,其中证明者有秘密输入,而验证者没有秘密输入。有时,用于构建MPC协议的技术也可用于构建ZKP,但是一些特殊情况下ZKP通常更有效。

Whisker17 commented 3 years ago

Q:现阶段有许多密码学方法都说自己只支持PoC,想了解一下PoC在工程中会遇到哪些问题?

A:如果我的理解是正确的话,那么很多研究报告或放在github上讲的,许多协议实现都声称是经过概念验证的。这通常是因为这个实施尚未得到审核,因此不应将其用于实际的应用中。在很多情况下,加密协议由于实施中的错误而被中断。从随机数生成器和密钥管理到侧链攻击,确保一切正确,仍然是工程上的挑战。由于协议本身存在更多基本的扩容问题,因此有时将协议称为PoC(概念验证)。对于企业来说,在开发出真正的产品之前,快速开发可使用诸如ZKP之类的加密工具进行试验的PoC产品是非常正常的。

Whisker17 commented 3 years ago

Q:当前的门限签名算法很多,你认为将来发展趋势的话,哪种会成为工业界的通用方案?

A:是的,有许多门限签名的算法,它们针对稍微不同的设计约束或安全属性进行了优化。最简单的门限签名是琐碎的。每个签名者都有自己的独立密钥,你只需要使用任何常规签名方案,收集超过门限数量的签名。主要问题是签名非常大(不压缩)。更高级的方案可以实现压缩的签名,并且还可以隐藏对签名做出贡献的签名者的子集(签名隐私)。某些方案(例如:最近的门限ECDSA)针对向后兼容性进行了优化(即:与需要最少更改的现有系统集成)。与当前版本的比特币兼容需要用ECDSA。我认为,从长远来看,在给定用例中获得最佳性能(包括易于实施)比向后兼容要重要。我认为Boneh-Drijvers-Neven的BLS多重签名可以在签名隐私不重要的用例中占主导地位。非常有趣的是,它不是量子安全的,没有量子安全门限签名方案能在性能上具有竞争力。

Whisker17 commented 3 years ago

Q:现阶段的TEE与MPC结合能达到什么样的效率,你认为MPC与TEE的结合在多久会得到工业级的广泛应用?

A:TEE(如果受信任)会非常强大,可以替代很多高级加密协议,包括零知识证明,MPC,混淆和性能更好的完全同态加密。当然,问题在于必须信任制造过程和防篡改功能的设备,有的时候制造商(如:Intel)仍在管理密钥。它必须是受信任的,并且还应该避免被黑客入侵。MPC可以通过跨多个TEE拆分私人信息(秘密共享)来减少这种信任,甚至可以由不同的制造商来制造。但它的缺点是,这会导致TEE的性能的损失