虽然 ZK、MPC、和 FHE 都是为了保护数据隐私和安全设计的先进加密技术,但是在应用场景 / 技术复杂性有区别。

作者:0xTodd,Nothing Research 合伙人

封面:Photo by Ruan Richard Rodrigues on Unsplash

上次我们分析了全同态加密(FHE,Fully Homomorphic Encryption)技术如何运作。

但是很多朋友仍然会把 FHE 和 ZK、MPC 这些加密技术弄混,因此第二篇 thread 计划将这三门技术详细对比一波:

FHE vs ZK vs MPC 

首先,让我们从最基本的问题开始: - 这三种技术分别是什么? - 它们如何工作? - 它们如何为区块链应用工作?

1. 零知识证明(ZK):强调「证明却不泄露」

零知识证明(ZK)技术探讨的命题是:如何在不泄露任何具体内容的情况下,验证信息的真实性。

ZK 建立在密码学的坚实基础上,通过零知识证明,Alice 可以向另一方 Bob 证明:她知道某个秘密,却不必揭示任何关于秘密本身的信息。

想象一个场景,Alice 希望向租车行员工 Bob 证明她的信用,但她不希望去银行打个流水之类的。这时候,比如银行 / 支付软件的「信用分」就堪比她的「零知识证明」。

Alice 在 Bob「零知晓」的条件下,证明她的信用评分良好,而无需展示她的账户流水,这就是零知识证明。

如果应用到区块链里,可以参考之前的一个匿名币 Zcash:

当 Alice 给他人转账时,她既要匿名,又要证明她拥有转账这些币的权力(否则会导致双花),于是她就需要生成一个 ZK 证明。

所以,矿工 Bob 看到了这个证明后,能够在不知道她到底是谁(即对 Alice 的身份零知识)的情况下,仍能把交易上链。

FHE vs ZK vs MPC,三种加密技术究竟有何不同?

2. 多方安全计算(MPC):强调「如何计算却不泄露」

多方安全计算(MPC)技术主要应用于:如何在不泄露敏感信息的前提下,让多方参与者还能安全地一起计算。

这项技术让多个参与者(比如说 Alice、Bob 和 Carol)能够共同完成一项计算任务,却无需任何一方透露自己的输入数据。

例如,如果 Alice、Bob 和 Carol 想要计算他们三人的平均工资,却不泄露各自的具体工资。那么如何操作呢?

每个人可以将自己的工资分成三部分,并交换其中两部分给其他两人。每个人都对收到的数字进行加和,然后分享这个求和结果。

最后,三人再对这三个求和结果求出总和,进而得到平均值,但却无法确定除自己外其他人的确切工资。

如果套用到加密行业,MPC 钱包就使用这样的技术。

以 Binance 或者 Bybit 推出的最简单 MPC 钱包为例,用户不再需要存 12 个助记词,而是有点类似于,把私钥魔改成 2/2 多签,用户手机一份,用户云端一份,交易所一份。

如果用户不小心弄丢了自己的手机,至少云上 + 交易所还能恢复出来。

FHE vs ZK vs MPC,三种加密技术究竟有何不同?

当然,如果要求安全性更高,一些 MPC 钱包可以支持引入更多的第三方来保护私钥碎片。

因此,基于 MPC 这门密码学技术,多方可以在相互不需要信任的情况下,安全地使用私钥。

3. 全同态加密(FHE):强调「如何加密才能找外包」

如同我上篇 thread 所说,全同态加密(FHE)则应用在:我们如何加密,使得敏感数据加密后,可以交给不信任第三方进行辅助计算,结果仍能由我们解密出来。 上篇传送门:https://x.com/0x_Todd/status/1810989860620226900 …

FHE vs ZK vs MPC,三种加密技术究竟有何不同?

举个例子,Alice 自己没有计算能力,需要依赖 Bob 来计算,但是又不想告诉 Bob 真相,因此只能将原始数据引入噪音(做任意次的加法 / 乘法加密),然后利用 Bob 强大的算力对这些数据进行加工,最后由 Alice 自己解密出来得到真实结果,而 Bob 对内容一无所知。

想象一下,如果你需要在云计算环境中处理敏感数据,如医疗记录或个人财务信息,FHE 就显得尤为重要。 它允许数据在整个处理过程中保持加密状态,这不仅保护数据安全,还符合隐私法规。 

上次重点分析了 AI 行业为什么需要 FHE,那么在加密行业中,FHE 这门技术能够带来什么应用呢? 比如说有个项目叫做 Mind Network 拿到了以太坊 Grant,也是币安孵化器的项目。它关注到了一个 PoS 机制的原生问题:

像以太坊这样的 PoS 协议,拥有 100 w+ 的验证者,自然没什么问题。但是很多小的项目,问题就来了,矿工天生是偷懒的。

为什么这么说呢?理论上,节点工作是:兢兢业业地验证每一笔交易是否合法。但是一些小的 PoS 协议,节点不够多,而且包括很多「大节点」。

所以,很多小 PoS 节点就发现:与其浪费时间亲自计算核实,不如直接跟随照抄大节点现成的结果。 

这个毫无疑问,会带来非常夸张的中心化。

另外,比如投票的场景同样有这种「跟随」迹象。

比如说之前 MakerDAO 协议的投票,由于 A16Z 当年拥有了太多 MKR 票仓,导致很多时候它的态度对于某些协议起决定性作用。A16Z 投票之后,很多小票仓只能被迫跟票或者弃权,完全无法反映出真实民意。

所以,Mind Network 利用了 FHE 技术:

让 PoS 节点相互 * 不知道 * 对方答案的情况下,仍然能够借助机器算力完成区块的验证工作,防止 PoS 节点相互抄袭。

or

让投票者在相互 * 不知道 * 相互的投票意向之后,仍然能够借助投票平台计算出投票结果,防止跟票。

FHE vs ZK vs MPC,三种加密技术究竟有何不同?

这就是 FHE 在区块链的重要应用之一。

所以,为了实现这样的功能,Mind 还需要重建一个 re-staking 套娃协议。因为 EigenLayer 本身将来就要为一些小的区块链提供「外包节点」服务,如果再配合 FHE,可以让 PoS 网络或者投票大幅提升安全性。

打个不恰当的比喻,小的区块链引入 Eigen+Mind,有点像小国自己搞不定内政,于是引入外国驻军。

这也算是 Mind 在 PoS/Restaking 分支上和 Renzo、Puffer 的差异化之一, Mind Network 相比 Renzo、Puffer 这些起步更晚,最近刚刚启动主网,相对来说没有 Re-taking summer 那时候那么卷了。

当然,Mind Network 也同样在 AI 分支上提供服务,比如用 FHE 技术加密喂给 AI 的数据,然后让 AI 能够在 * 不知道 * 原始数据的情况下学习、处理这些数据,典型案例包括与 bittensor 子网的合作。

最后,再总结一下: 

虽然 ZK(零知识证明)、MPC(多方计算)、和 FHE(全同态加密)都是为了保护数据隐私和安全设计的先进加密技术,但是在应用场景 / 技术复杂性有区别:

应用场景: ZK 强调「如何证明」。它提供了一种方式,使得一方可以向另一方证明某一信息的正确性,而无需透露任何额外信息。这种技术在需要验证权限或身份时非常有用。

MPC 强调「如何计算」。它允许多个参与者共同进行计算,而不必透露各自的输入。这在需要数据合作但又要保护各方数据隐私的场合,如跨机构的数据分析和财务审计中。

FHE 强调「如何加密」。它使得在数据始终保持加密的状态下,委托进行复杂的计算成为可能。这对于云计算 /AI 服务尤为重要,用户可以安全地在云环境中处理敏感数据。

技术复杂性: ZK 虽然理论上强大,但设计有效且易于实现的零知识证明协议可能非常复杂,需要深厚的数学和编程技能,比如大家听不懂的各种「电路」。

MPC 在实现时需要解决同步和通信效率问题,尤其是在参与者众多的情况下,协调成本和计算开销可以非常高。

FHE 在计算效率方面面临巨大挑战,加密算法比较复杂, 2009 年才成型。尽管理论上极具吸引力,但其在实际应用中的高计算复杂性和时间成本仍是主要障碍。

说实话,我们所依赖的数据安全和个人隐私保护正面临前所未有的挑战。想象一下,如果没有了加密技术,我们的短信、外卖、网购过程中的信息都已暴露无遗。就像没有锁的家门,任何人都可以随意进入。

希望对这三个概念有混淆的朋友们,能够彻底区分这三门加密学圣杯上的明珠们。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。