fhEVM 全同态加密 EVM 是如何工作的?

  • Whales
  • 更新于 2024-07-11 22:33
  • 阅读 855

深入探讨了 fhEVMs 如何利用全同态加密来增强 EVM 兼容区块链中的隐私性。

本文深入探讨了 fhEVMs 如何利用全同态加密来增强 EVM 兼容区块链中的隐私性,实现加密交易和状态更改,同时又不损害区块链技术固有的去中心化和无需信任性,介绍了当前市场上存在的 fhEVMs。

照片由 Mauro SbicegoUnsplash上拍摄

特别感谢 Jason Delabays (Zama 的区块链生态系统负责人) & Taproot (Fhenix 的 Dev Rel)对本文的贡献,通过帮助澄清我的问题。如果你发现文章中有任何错误,请与我联系。

可编程隐私世界

公共区块链的最大好处之一是它是开放的、透明的和无需信任的。一切都记录在区块链上,通过共识机制处理,将交易区块链接在一起,这使得合作伙伴可以在共享生态系统中互动和共同发展,而无需彼此认识。透明度的最大好处是无可否认的,即一切都是公开记录的,而公共区块链的最大妥协也是...一切都是公开记录的。你推送的每笔交易、你铸造的每个 NFT 以及你与之交互的每个智能合约都会作为共享的公共分类帐发布到区块链上,这种来源的级别导致了试图利用和剥削这一系统的尝试。

区块构建者使用贪婪算法 来找到最有利可图的交易并将其包含在其区块中;交易者互相复制交易 来识别最有利可图的交易,而 MEV 机器人则抢跑或狙击交易 以从受害者的交易中窃取额外利润。如果生成的区块可以隐藏以不透露交易内容;如果交易中的金额和交互可以保持私密,那么这些问题就不会存在。

为了解决区块链上增强隐私的实际问题,数亿美元的风险资本资金已被投入加速链上隐私增强技术(PET)。许多协议已经涌现出来,以解决由于这种区块链隐私困境而存在的许多隐私问题,其中绝大多数集中在零知识证明(ZKPs)上。值得注意的例子包括Proven 在 2023 年种子轮融资中筹集了 1580 万美元,以及Aztec Protocol 在 2022 年 B 轮融资中筹集了 1 亿美元 ,这证明了 PET 行业的重要性。然而,零知识证明并不是应用于区块链的唯一现有的加密原语,该领域的另外两个发展是多方计算(MPC)和全同态加密(FHE)。

不同加密原语简要介绍

作为上述各种加密原语的快速介绍,让我通过一个涉及(加密)魔术的有趣例子简要描述一下:

零知识证明(ZKP) 允许我们从一个函数生成一个证明,证明输出是真还是假,而不显示输入或过程是什么。这就像魔术师似乎可以操纵现实的结构,从我的耳朵里凭空变出一枚硬币,证明他们做了一点小魔术。当我问“你是怎么做到的?”时,他们保持沉默,微笑着,继续从我的耳朵里取出更多硬币,而不透露背后的诀窍,直到我放弃走开。

* ZKP 很有用,因为它允许我们在应用于区块链的去中心化方式中进行私密的[可验证计算](https://en.wikipedia.org/wiki/Verifiable_computing) ,这使我们能够生成智能合约函数的计算证明,或者证明我们拥有某种资产,而不透露我们拥有的详细信息。

多方计算(MPC) 允许我们在多个参与方之间计算一个函数,而彼此之间不透露有关函数的任何信息,除了输出。这就像双胞胎可以在不说话的情况下进行心灵感应交流,并在同一时间说出相同的事情。

* MPC 在无需信任的分布式密钥管理中非常有用,因为种子短语的部分是分别生成的,而其他参与方不知情,消除了常见的从单个主种子短语生成的分层确定性钱包或存在为单个智能合约的外部拥有账户中存在的中心故障点。有一个有趣的游戏被创造出来,以应用 MPC 的工作方式,你可以在[这里](https://encryptle.sine.dev/) 玩。

全同态加密(FHE) 允许我们在加密数据上执行一个函数,而不破坏数据的加密。这就像一个心灵感应者可以不告诉你的情况下,某种方式进入宇宙诺域,知道你早餐吃了什么,钱包里有什么,而这次是 100%准确的。

* FHE 在数据分析中非常有用,因为可以在不解密从明文数据加密的密文中加密的数据的情况下查询数据集,使得具有敏感数据的数据集可以在不侵犯数据本身的安全性和隐私性的情况下进行集体查询。

随着区块链领域不断发展,采用更多以隐私为中心的基础设施,多个协议试图解决这一问题,该领域出现了一个有趣的发展,即尝试将 ZKPs、MPC 和 FHE 三种加密原语结合起来,创造出一种加密魔法的三角形。

介绍 fhEVMs

fhEVMs 试图为现有的 EVM 兼容区块链添加新的保密功能和加密数据类型,同时保持区块链的原始特性。这一新发展非常重要,因为区块链的不同部分可以应用这些增强隐私的加密原语的方式和方式有所不同。

fhEVMs 基于 FHE 的发展,自 2009 年以来一直作为区块链中的一个应用领域存在,与其较老的兄弟 ZKP 和 MPC 相比,FHE 在区块链中的应用领域已经有很多文章描述,我强烈推荐阅读这篇文章 ,这是一篇关于同态加密如何工作以及 FHE 在区块链行业中不断发展的很好的入门文章。

fhEVMs 主要基于 FHE 的发展,以为最终用户提供隐私,而将 MPC 和 ZKPs 的其他发展与之结合,以解决 FHE 无法单独解决的其他方面的差距。这些加密原语相互协作,相互补充,实现端到端的增强隐私区块链体验。虽然零知识证明本身允许我们私下计算输出,但它计算的数据可能没有加密,并且数据的加密方式可能不是通过无信任的分布式方式完成的,因此数据并非完全端到端加密。fhEVMs 试图通过确保启用端到端隐私来解决这个问题,通过确保创建的数据是加密和私密的,能够在数据检索过程中查询数据同时保持其隐私,并且输出查询也是私下计算和生成的。

这是它的工作原理:

  • 多方安全计算(MPC)用于生成分布式密钥给各方,并通过在多方之间设置去中心化密钥管理系统中的阈值签名方案来管理 FHE 密文的阈值解密。
  • 全同态加密(FHE)用于允许私密区块链状态(通过从明文生成密文)进行计算,之后可以解密以显示其信息。
  • 零知识证明(ZKPs)用于验证加密和解密函数的完整性和可验证性,通过生成证明来证明这些函数已被可验证地计算。

fhEVMs 的应用

将 FHE 应用于区块链似乎是天作之合,因为现在能够在开放、透明和无信任的公共区块链上进行的区块链交易是私密的,同时保持对数据的访问。这些私密交易不会透露有关在区块链上进行的交易内容的任何信息,但仍允许你从中查询。

自从引入 fhEVMs 以来,出现了令人兴奋的用例,使得能够创建保护隐私的应用程序成为可能。能够处理加密数据具有前所未有的用例,例如能够在不泄露隐私的情况下对敏感数据(如医疗、法律或财务记录)进行数据分析,实现规模化的真正匿名数据分析,并潜在地改善以前无法访问的敏感数据的透明度和可用性问题。

fhEVMs 的工作原理

目前,fhEVMs 的功能与现有的 EVMs 非常相似,具有与以前完全相同的功能。fhEVMs 提供的附加功能是现在能够通过 FHE 对可以加密的状态进行计算,因此开发人员现在能够使用额外的预编译加密数据类型,而无需具备加密知识。

fhEVMs 是通过全同态加密领域的发展实现的,最新版本的 FHE 是在 2018 年推出的称为“Torus 上的快速全同态加密 ” ,也被称为 TFHE。 FHE 领域应用于区块链的发展是由一家名为 Zama 的公司开创的。他们在 2022 年发表了一篇关于 TFHE 的 重要论文,以解释它们的内部工作原理。要了解更多关于他们工作的信息,我强烈建议阅读 Zama 的 白皮书 ,以深入了解 TFHE,并查看他们的 同态加密简介

然而,fhEVMs 并不是孤立地依赖 FHE 运行,需要将 MPCs 结合起来以保持去中心化,并使用 ZKPs 进行可验证计算。现在让我们一起来解开假设的 fhEVM 如何与加密魔法三角结合运作。

加密数据

在 fhEVM 上,用户需要能够加密和解密其数据,使得数据保持私密,同时完全控制他们发布到区块链上的数据。首先,用户将其数据以明文形式加密为加密密文。对于普通人来说,密文看起来像一堆字母和数字的混乱,但一旦解密,就包含了它所加密的明文消息。在 fhEVM 上,数据如何从明文转换为密文是通过使用公钥加密。公钥加密是指能够生成一对非对称的公私钥,允许用户使用其公共加密密钥加密数据,同时将私密解密密钥保密,只有用户自己知道。在 Zama 的关于 公钥加密 的文档中,这两种方法利用了学习与错误(LWE)的概念,其中引入错误以向数据添加噪声,使数据能够隐藏在噪声下保持安全私密。一旦使用用户的公钥安全加密数据,数据也可以使用用户的私钥安全解密。

在上述简化的场景中,能够在 fhEVM 上加密和解密数据的能力展示了 FHE 的基本应用,但是在区块链中,智能合约以无信任方式处理数据,因此在单用户场景中处理数据并不适用,并引入了更多复杂性。这些复杂性包括数据在多方设置中如何处理,数据如何加密和解密,以及你如何知道 fhEVM 中的输入和操作是否准确。区块链需要能够无信任和去中心化地运行,而 fhEVMs 需要具备这些特性才能对现有区块链用户有用。这些复杂性是仅靠 FHE 无法解决的,但也为其他加密原语填补这些空白提供了机会。这就是理论上的 MPC 和 ZKPs 的应用之处。

加密状态

对于发布到区块链的每个状态更改,还需要验证状态以确保数据准确性。在传统的区块链设置中,验证者可以直接验证每个状态更改,因为所有数据都是公开可用的,但在 fhEVM 中,存在额外的复杂性。为了使数据在 fhEVM 中保持私密,每个状态更改都需要加密,但是区块链验证者需要解密这些数据以验证数据。然后可以为每个验证者提供一个私钥来解密数据,但这将在存在恶意行为者的情况下引入中心化漏洞。在链上环境中,可以将 FHE 与 MPC 结合使用,将共享的私密解密密钥的部分分发给验证者,以便每个验证者对状态更改进行部分解密,然后对其进行聚合并检查不一致性,以得出完全解密的值。验证区块链状态也可以在链下完成,生成 ZKP 以确保链下进行的计算是可验证的。

验证者在 fhEVM 中计算和验证的这些状态更改也会延伸到用户与 fhEVM 应用程序进行交互,调用可以在保持用户数据隐私的同时执行的加密操作。

加密操作

用户需要能够与包含机密智能合约功能的 fhEVM 应用程序进行交互,而无需用户透露其输入并保持其数据私密。在这种情况下,用户将与已加密数据的应用程序进行交互,ZKPs 将在其中发挥作用,其中 zk 验证器生成关于用户数据输入准确性的证明,并验证从 fhEVM 应用程序调用的操作是否在逻辑上合理(例如,如果用户的代币余额请求少于其代币余额,则用户不应能够交换代币)。一旦生成了用于验证输入和操作函数的证明,fhEVM 应用程序将调用该函数,验证者将计算结果并验证 fhEVM 应用程序的更新状态。将这些假设性示例联系在一起,让我们对 fhEVMs 的工作原理有一个模糊的概念,并说明它们如何通过确保每个数据输入都经过加密、数据输入的解密只能以无需信任的方式进行、以及生成证明以确保所有更改都被准确和可验证地计算来实现端到端私有区块链。

当前 fhEVMs

考虑到 fhEVMs 在应用不同的加密原语方面还处于萌芽阶段,重要的是要知道该领域的发展不断改进,fhEVMs 将继续随着时间的推移而发展。话虽如此,目前有两种实现方式,它们各自具有独特的方法和考虑因素,以了解它们如何将各种加密原语应用在一起,以实现端到端私有区块链的未来。

我们将介绍的两种 fhEVMs 的主要实现方式是:

  1. Inco,一个建立在 Cosmos 上的模块化的与以太坊虚拟机(EVM)兼容的 L1 区块链
  2. Fhenix,一个建立在以太坊上的模块化 L2 乐观 Rollup

Zama 创建了一个 Rust 库,允许开发人员实现他们的 TFHE 方案,称为“TFHE-rs” ,目前基于他们在白皮书中概述的研究版本为 v0.5。这个 FHE 库包含他们的加密库,使用 TFHE 的(离散化)变体和操作码作为低级加密库,使开发人员能够在智能合约中使用 FHE 加密数据。这个库被 Inco 和 Fhenix 两者使用,而 Fhenix 选择对 TFHE-rs 库进行自己的实现和更改。

Zama 自己的 fhEVM 实现还包括“fhevm”库,目前版本为 v0.3,这是他们创建的一个 Solidity 库,用于向 Solidity 智能合约引入新的加密数据类型,这些数据类型已经为易用性而预编译。

Zama 开创了将 FHE 应用于当今区块链的发展,并且 Inco 和 Fhenix 的两种实现都是基于 Zama 的库构建的,Fhenix 采取了自己的方法。

Cosmos 区块链 fhEVM(Zama 和 Inco)

Inco 是一个建立在 Cosmos 上的模块化与以太坊虚拟机(EVM)兼容的 L1 区块链,始于 2023 年 8 月。他们通过1kx network 领导的一轮 450 万美元的种子融资圆满结束。在宣布融资的同时,他们发布了第一个供用户与协议交互的测试网“Gentry”,随后的测试网“Paillier”计划于 2024 年第二季度/第三季度发布,全力推进 2024 年第四季度的主网。

Inco 的 fhEVM 实现主要是基于 Zama 的 fhEVM 实现构建的,选择在 Cosmos 上构建作为 L1 区块链,以简化并避免作为 L2 关于数据可用性的关键考虑。Inco 利用了“evmos” 库作为建立在 Cosmos 生态系统之上的 EVM 堆栈,并在他们的实现中还使用了 Zama 的“TFHE-rs”和“fhEVM”库。

虽然 Zama 发布了一份白皮书 ,概述了他们自己的 fhEVM 实现以及一个供开发人员与他们的加密数据类型智能合约功能进行交互的开发网络,但他们表示他们没有任何意图在未来发布自己的 fhEVM 区块链,而是选择专注于为像 Inco 和 Fhenix 这样的 fhEVM 协议提供 FHE 和 fhEVM 库和工具作为基础设施提供商。

截至本文发布时,Inco 尚未发布他们的白皮书,因此我们对他们的 fhEVM 实现如何在幕后运作了解有限。然而,考虑到 Inco 在很大程度上借鉴了 Zama 的实现,我们将使用 Zama 的 fhEVM 白皮书作为替代,以解释 fhEVM 实现作为 L1 Cosmos 区块链在 Inco 正式白皮书发布之前的工作原理。

FHE 密钥架构

Zama 选择了全局 FHE 密钥的方法。密钥是通过非对称生成的,公共加密和评估密钥存储在链上,用于加密区块链的所有输入和状态,私有解密密钥分布在验证者之间。然而,为了确保验证者不滥用系统并恶意解密私有数据,使用了阈值协议,以确保需要一定阈值才能作为验证者组使用他们的解密私钥。

阈值协议

用于在区块链上解密私有数据的阈值协议参考了 Zama 的名为“ 诺亚方舟(Noah's Ark) ” 的论文,该论文在他们的 fhEVM 实现中引入了“噪声泛滥”,以便有效地应用阈值协议,以防止恶意行为者滥用他们的解密密钥特权。

fhEVM使用全同态加密的 EVM 智能合约,图 7.1:用户 U 和阈值解密方之间视图函数通信流的概念图示。

这个阈值协议是解密和重新加密区块链上的私有数据的唯一方式,一旦满足阈值要求,生成的未加密明文数据将发送给验证者。

非验证全节点

验证者与其他验证者共同参与阈值解密协议以集体解密密文,因此将立即能够输出结果的解密明文数据,但全节点没有相同的访问权限。

由于不参与验证区块链的全节点没有私有解密密钥,因此无法直接参与阈值解密协议,因此 Zama 的方法是让验证者将生成的明文值存储在链上,以便全节点能够与验证者同步到相同的状态。

认证密文

在早期介绍 FHE 如何与 ZKPs 在 fhEVM 中协同工作时,提到了为加密操作生成证明的概念。在 Zama 的实现中,会生成一个明文知识的零知识证明 (ZKPoK) ,并与他们的加密输入一起生成,以确保密文与生成的证明相符。这个认证密文随后可以被智能合约用来验证证明以及密文,以生成一个加密 uint(euint),供智能合约执行其功能。

FHE 操作

Zama 的 fhEVM 实现中的 FHE 操作利用他们创建的 fhEVM Solidity 库作为预编译智能合约,包括算术运算符(add、sub、mul、div)、逻辑运算符(and、or、xor、not)、比较运算符(le、lt、ge、gt、eq、ne、min、max)、位移运算符(shl、shr)和否定(neg)。

与非 FHE EVM 操作码相比,FHE 操作在计算上要昂贵得多。例如,在 EVM 上,典型的 ADD 操作至少需要 3 gas,而在 fhEVM 上,相同的加法操作(取决于 uint 大小)需要 94,000 gas 用于 euint8 操作,从最低的 65,000 gas(euint4)到 Zama 在其 fhEVM 上的 Gas估算 中的最高的 188,000 gas(euint64)。

Inco 的实现

除了 Zama 创建的 fhEVM 实现之外,Inco 还在他们的博客中宣布,他们正在与HyperlaneIBCThe Graph 合作,为他们的 fhEVM 区块链提供额外的功能。

作为一个建立在 Cosmos 上的可互操作的 L1 EVM 兼容区块链,与 Hyperlane 和 IBC 的集成将允许 Inco 的 fhEVM 与其他区块链之间进行跨链通信,以便将 fhEVM 功能添加到其他区块链中。此外,与 The Graph 的集成将允许开发人员将子图集成到他们的智能合约中,并监视发出的事件。

乐观 Rollup fhEVM(Fhenix)

Fhenix 是一个建立在以太坊上的模块化 L2 乐观 Rollup,始于 2023 年 7 月。他们通过由多币种资本Collider Ventures 领导的一轮$7 百万 的种子融资轮筹集资金。Fhenix 于 2023 年 11 月发布了他们的白皮书 ,概述了他们基于乐观的方法用于 L2 共识机制,并由模块化的排序器、证明者和数据可用性层组成。截至本文撰写时,他们目前没有可用的测试网。

Fhenix 选择采用基于乐观的 Rollup 方法,因为零知识基础的 Rollup 需要高计算开销,这实质上结合了两个已经各自具有高计算开销的密码原语。

FHE-Rollups:在以太坊及其他区块链上扩展保密智能合约:图 1. FHE Rollup 架构概述。

Fhenix 目前没有可用于测试的开发网络,但你可以按照 Fhenix 的文档页面中的设置说明 在本地环境中设置。

阈值协议

Fhenix 的实现还利用了与 Zama 的 fhEVM 相同的阈值协议,但解密和重新加密是通过阈值服务网络(TSN)处理的,其中每个请求都被路由到网络。

FHE-Rollups:在以太坊及其他区块链上扩展保密智能合约:图 2. 智能合约请求在 Fhenix 上解密 FHE 加密数据。

TSN 共同信托一个秘密共享网络密钥,需要满足一定的阈值要求,TSN 才能执行解密或重新加密。

验证密文

Fhenix 提出的一种与 Zama 的 ZKPoK 实现不同的替代方法是使用可验证秘密共享协议(VSS),用户将使用 VSS 共享他们的秘密输入到 TSN。这些输入将由 VSS 验证,以便重建并输出一个公共值,以确保各方之间的正确性。

欺诈证明

作为一个基于乐观的 Rollup,欺诈证明对于确保 L2 状态正确且没有欺诈交易发布到区块链至关重要。为了实现这一点,乐观 Rollup 将整个交易数据块发布到 L1,任何验证者都可以验证数据是否正确,并挑战发现的任何欺诈交易。

FHE-Rollups:在以太坊及其他区块链上扩展保密智能合约:图 4. FHE 指令的欺诈证明引擎。

作为 L2 Rollup 的 fhEVM,Fhenix 通过重新利用 Arbitrum 的 Nitro 欺诈证明器,将所有 FHE 逻辑编译为 WASM 运行时在以太坊 L1 层上链执行证明轮。

FHE 操作

作为他们的 fhEVM 实现的一部分,Fhenix 构建了一个名为“fheOS” 库,采用了他们自己的设计,这是 Zama 的 TFHE-rs 库的一个 EVM 友好的封装。该库包括用于在 fhEVM 上执行加密操作的所有预编译的加密操作码,这些操作与 Zama 的原始 TFHE-rs 库中可用的操作相同,还支持密文除法操作。

根据 Fhenix 的Gas 估算 ,加法操作的Gas 成本估计为 7315 gas,而 euint32 操作的Gas 成本高达 34067 gas。

结论

虽然 fhEVM 在可编程隐私区块链领域是一个令人兴奋的新发展,但当前的实现并非没有挑战。FHE 操作的计算强度引入了显著的性能和Gas 成本问题,特别是加密操作的Gas 成本与非 FHE 对应操作之间的鲜明对比。增加的复杂性要求以极端的密码学严谨性来发展,以真正准备好迎接主流采用。

本文仅是对实现全同态加密(FHE)以及多方计算(MPC)和零知识证明(ZKP)的令人难以置信的复杂性的简要介绍,随着这一特殊领域内不断发展的情况,回顾几年后,看到未来的进步使本文中的信息显得古老将是令人兴奋的。

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Whales
Whales
Musings on blockchain and cryptography. I believe in a user-centric blockchain. X: https://twitter.com/0_whales