来源:Privacy and Scaling Explorations
作者:Kichong
编译: Techub News-Morffi
编辑: Techub News-Junge

本文由kichong撰写,sinu和jmall提供了有益的反馈和意见。
MPC, FHE, iO。如果这些字母的组合对你来说没什么意义,那么你来对地方了。这篇文章试图在高水平上回顾超越零知识(ZK)边界的可编程密码学世界。
其目的是让人们认识到,ZK 只是不断变化的密码原语、技术和协议中的一部分。剩下的东西比一般密码学好奇者所了解的更强大、更隐秘、更令人困惑。
这篇文章不做出任何主张、结论或预测。这不是深入研究。充其量,这只是在寻求密码学的非正式的表面浏览。
可编程密码学
虽然加密技术已经存在了数千年,但可编程密码学是一项现代技术。被描述为"通用密码学……[或]一种用于声明的表达语言",它的理念是,像 ZK 证明这样的密码学原语可以变得足够灵活和自适应,开发人员可以在其基础上编写几乎任何功能的程序。从点击网站上的一个按钮到保证加密操作安全的数学证明,可以存在一条完整的逻辑链。

来源:https://youtu.be/qAfprVCBhdQ?t=1024
传统的密码学依赖于固定的功能集,要求熟练的密码学家为每一种新的机制建立专门的系统,而可编程密码学则让开发人员用更接近他们所理解的语言来部署密码属性和功能。它为非密码学专家的开发人员提供了一个更熟悉的界面。
ZK 证明于 1989 年首次提出,但一直停留在理论层面,直到 2012 年,一种名为 zk-SNARK 的 ZK 证明被发现。这种新原语允许 ZK 证明证明或验证几乎任何函数或任意计算。
自从zkSNARKS成为可能之后,资源和人才纷纷投入到zCash、zkRollups、zkEVMs和其他一系列以字母z开头的应用中。事实证明,像以太坊这样的去中心化系统以及整个区块链,是让人们对密码学产生兴趣的最佳动力,将一个曾经不切实际的研究领域变成了一个具有实际终端用户应用的活跃生态系统。
无法保证多方计算 (MPC)、全同态加密 (FHE)和不可区分混淆 (iO)会遵循与 ZK 相同的路径,随着时间的推移变得更加实用、优化和通用。但在这个早期阶段,这当然是可能的。
如果把可编程密码学看成是一种数字计算机,它建立在一定的假设之上,可以实现某些特性和保证,那么我们现在还处于硬件阶段,仍在积极摸索构建这种新型计算机逻辑门或电路的最佳方法。
直观对比
为了更好地了解可编程密码学的总体情况,让我们先大致了解一下 MPC、FHE 和 IO 与 ZK 的关系,以及它们之间的关系。在本节以及之后的所有章节中,我们将在细微差别、精确性和正式性之间进行权衡,以求简单易懂。
理解密码学的最简单方法是了解哪些信息被隐藏或保密。以及系统证明或揭示了什么。

你也可以把这些系统想象成一个假想的共同朋友。维基百科称这位朋友为"托尼"。托尼是绝对可靠,廉洁,完全值得信赖的。托尼的工作是保守秘密。在下面的表中,将"私有元素"视为Tony可以信任的秘密,将"应用"视为Tony可以相当好地执行的任务,将"实用性"视为Tony今天执行这些任务的熟练程度。

上表旨在为可编程密码学的不同领域提供一个粗略的概念。现在,让我们再深入一点,回顾一下 MPC、FHE 和 iO 的作用,以及每个领域的一些有趣花絮。
多方计算(MPC)
多方计算(MPC)允许多方在不向其他参与者透露任何数据的情况下共同计算某个商定的函数。使用多方计算时,对每个人的数据进行相同的计算,但每一方的输入都是保密的。中间值也将保密。最后只显示输出结果。
与 ZK 不同,MPC 是协作式的。它允许各方合作进行相同的计算,各自贡献自己的数据,以获得大家都想要的结果。
我们可以将 ZK 和 MPC 放在人工智能系统中进行比较,以获得更多信息。ZK 适用于验证或核实数据来自真人或手机。MPC 更适合训练人工智能系统,因为不同的个人、团体或组织可以与人工智能系统共享敏感数据,但相信这些数据不会泄露给其他人。
百万富翁的难题
MPC 于 1982 年由安德鲁-姚(Andrew Yao)提出,用于解决一个名为 "百万富翁问题 "的思想实验。根据经常解释密码学概念的维塔利克-布特林(Vitalik Buterin)的说法,这也是理解 MPC 的最基本方法之一。
[在了解乱码电路之前,你需要知道什么是算术电路。如果你是第一次接触电路,这里有一个简单的解释]。
MPC 是一个多步骤的互动过程,在这个过程中,1 号百万富翁"爱丽丝(Alice)"必须首先创建电路,输入她的净资产,然后将其转换为乱码或加密形式,再将其传递给 2 号百万富翁"鲍勃(Bob)"。当鲍勃拿到电路后,他的任务是加入自己的净资产,然后评估或运行电路以确保正确无误。最后,鲍勃对最终输出进行解密,例如,他知道爱丽丝更富有了,但他永远不会知道爱丽丝实际上比他富有得多,而他不应该做出这样的假设。
百万富翁问题和作为解决方案的乱码电路对 MPC 的早期发展至关重要。但它的应用是有限的。该问题的一个更复杂、更微妙的版本被称为 "社会主义百万富翁问题"(Socialist Millionaire's Problem),它检查两个百万富翁是否同样富有,而不是揭示谁拥有更多的钱。这种微妙的差别大大扩展了 MPC 的功能,但需要更复杂的加密解决方案和技术,超出了本文的讨论范围。
全同态加密 (FHE)
全同态加密(fully homomorphic encryption, FHE)允许对加密数据进行计算。它可以在加密数据上执行函数,就像未加密数据一样。函数的输出只有拥有秘钥的一方才能解密。如果我们把加密看作一个隐藏秘密的黑匣子,那么 FHE 就能确保数据和对数据的计算都在这个黑匣子里。
尽管没有像 MPC 的百万富翁问题这样著名的思想实验,FHE 确实解决了一个基本的安全弱点:"在处理数据之前需要解密"。

https://www.zama.ai/post/the-revolution-of-fhe
在人工智能环境下,FHE 将对用户(秘钥持有人)和人工智能系统之间的所有数据进行加密。用户可以与系统正常交互,但用户可以确信,人工智能从未 "获悉 "任何有关所提供数据的信息。整个交互过程都是加密的。人工智能永远不会知道你输入了什么或问了什么,发送了什么图片,或者是谁发送的,但仍然可以做出回应,就好像它确实知道这些信息一样。
如果成功,FHE 将成为最强大的隐私保护技术之一。谁知道呢?10 年后,我们甚至可能拥有 FHE-EVM。
噪音管理
与 MPC 和 ZK 相比,FHE 目前还处于理论阶段或实用性较低的阶段。直到 2009 年,当克雷格-金特里(Craig Gentry)想出如何处理噪声时,人们才认为这项技术是可行的。
FHE 操作的计算量非常大,因为在加密过程中会添加 "噪声 "以提高安全性。FHE 中的噪声是在明文(未加密数据)转化为密文(加密数据)之前添加到明文中的一个小随机值。每次操作都会增加噪声。 加法和减法运算导致的噪声增长可以忽略不计,而乘法运算的计算成本较高,会导致噪声大幅增长。因此,随着程序复杂度的增加,噪音(容纳噪音所需的空间和处理噪音所需的计算资源)也会不断累积。
Gentry 的突破是一种称为引导的技术,该技术可以减少噪音并允许对 FHE 系统中的加密数据进行更多计算。Bootstrapping 获取密文并对其进行同态解密,这意味着降低加密数据的噪声水平,而不会实际泄露其内容。结果是预定义噪声低得多的密文,从而使我们能够进一步计算密文。一般来说,自举可以让我们避免随着计算复杂性的增加而需要更大的噪声增长空间。我们可以将空间限制为几个操作,并重复引导以计算任意大的计算,而不会影响原始数据。
根据 FHE 方案,引导可能需要几分钟或几毫秒。如果引导速度较慢,则可以通过一次将其应用于多个密文来分散计算成本。如果引导速度更快,通常需要权衡一次仅处理小块明文(通常是 8 位)以保持效率。
不可区分性混淆 (iO)
如果FHE将计算的所有元素变成黑匣子,那么iO将计算本身变成黑匣子。
不可区分性混淆(iO)被认为是理论上最强大的密码系统。在本文中,iO 被描述为 "几乎所有其他加密协议都可以用来构建的主工具",并被加密专家称为 "皇冠上的宝石 "和 "统治一切的加密原语"。
阿米特-萨海(Amit Sahai)是一位以向孩子们解释 ZK 证明而闻名的教授,他也是设计出在有充分依据的假设基础上构建 iO 的方法的研究人员之一,根据他的说法,iO 的工作模式与以前的密码系统有着根本的不同。iO 假设对手已经能读懂你的思想(比如你的电脑)。你的秘密已经为人所知,因此无法隐藏。你唯一能做的就是混淆对手已经看到的内容。

https://youtu.be/v2RR_c5hn1E
iO 的意义在于让两个函数或计算变得同样模糊。如果把两个计算转换成彼此无法区分的形式,就可以隐藏程序的工作原理。如果你无法分辨两个程序之间的区别,你就不知道这两个程序中哪个正在执行,除了它们都执行相同的功能外,无法从任何一个程序中推导出任何信息。这两个程序接受相同的输入,产生相同的输出,但 iO 却让任何人都无法知道它们是如何运行的。
使用 iO,你可以隐藏每一种函数的结构,包括几乎所有构成密码学的函数。换句话说,通过隐藏几乎所有的功能,你可以实现最通用的可编程密码学,并在此基础上对其他原语进行编程。
从技术上讲,有一个黑盒比 iO 更大。这就是字面上所说的黑盒混淆。但这仍然是不可能的。
有根据的假设
直到 2013 年 Garg、Gentry、Halevi、Raykova、Sahai、Waters 提出多线性地图之前,没有人知道如何构建 iO 。
计算机程序可以像拼图一样被分解,然后使用多线性映射来模糊。被遮蔽的部分可以被重新组装以实现与原始程序相同的功能,而无需透露其内部工作原理。
直到 2013 年 Garg、Gentry、Halevi、Raykova、Sahai、Waters 提出多线性地图之前,才有人知道如何构建 iO。计算机程序可以像拼图一样被分割,然后使用多线性地图进行遮挡。被遮挡的程序块可以重新组合,以实现与原始程序相同的功能,而不会泄露其内部运作。
多线性映射是椭圆曲线密码学 (ECC )中使用的双线性映射或配对的推广。虽然双线性映射是BLS 签名等现有加密方案的基础,但它们对于 iO 来说不够复杂或表达不够。虽然多线性映射可以处理 iO,但这种新开发的代数结构很容易受到攻击并且不安全,因此依赖多线性映射通常不能令密码学家满意。
然后,在 2020 年,Jain、Lin 和 Sahai 提出了一种解决方案,虽然不同寻常且新颖,但对密码学家来说却非常简单,无需依赖多线性映射等新开发的假设,这一版本的 iO 可以建立在研究了几十年的更标准、更有根据的假设之上,例如 "带错误学习"(LWE)。有了这一最新突破,iO 再次变得可行。
未驯服的荒野
每个密码系统都由不同的数学假设和密码技术组成。没有任何一项突破能解决系统中的所有问题。取而代之的是一系列不可预知的小进步和大飞跃,它们改变了现有的假设和技术,反过来又带来了更多的突破和发现。每一个成功的发现,都会有更多的失败。

在一次关于 iO 的演讲中,Sahai 将这一领域描述为 "未经驯服的荒野",人们甚至不清楚什么是不被理解的,什么是要解决的正确问题。
像 PSE 这样的团队主要从事可编程密码学的实践或应用方面的工作,专注于像 ZK 和 MPC 这样的原语,这些原语有充分的假设,经过实战检验、相对优化,被认为是安全有效的。虽然还有很多优化工作要做,但 ZK 现在已完全进入实用领域。但是,ZK 也曾一度被限制在桀骜不驯的荒野之中。
为了最大限度地向全世界提供保护隐私、保证安全、验证权利要求、支持密码学的工具,我们至少应该眯起一只眼睛,注视着未来的地平线,因为没有人能预测 10 年后会有什么实用工具。
Sahai 的演讲引用了Steven Weinberg 2003 年《自然》杂志上一篇名为《四个黄金教训》的文章,该文章强调了解决当前不切实际问题的另一个原因。
"20世纪60年代末,我在麻省理工学院任教时,一位学生告诉我,他想研究广义相对论,而不是我正在研究的领域--基本粒子物理学,因为前者的原理众所周知,而后者对他来说似乎一团糟。我突然意识到,他刚刚给出了一个完全正确的理由来做相反的事情......我的建议是去研究那些乱七八糟的东西--那才是有意义的地方"。


