在上一节中,我们深入理解了零知识证明和隐私币技术——见识了如何用 ~200 字节的 zk-SNARK 证明一整个交易的有效性,以及 Monero 的环签名和隐匿地址如何实现全栈隐私。但零知识证明并非隐私保护技术的终点:还有更通用的密码学工具——同态加密(HE) 和安全多方计算(MPC)——正在解决"如何在不暴露数据的情况下对数据执行计算"这个更宏大的问题。本节还将覆盖机密交易和私有智能合约执行环境,最后收束第10章全章要点。
10.6 同态加密(HE)与安全多方计算(MPC)
10.6.1 同态加密(Homomorphic Encryption, HE)
同态加密实现了一个看似不可能的目标:对加密后的数据(密文)执行计算,然后将结果解密,得到与直接计算明文相同的结果。
\\[
\text{Dec}(\text{Eval}(f, \text{Enc}(x))) = f(x)
\\]
部分同态加密(PHE):只支持一种运算的同态性。以 Paillier 加密为例,它支持加法同态:
\\[
\text{Enc}(a) \otimes \text{Enc}(b) = \text{Enc}(a + b)
\\]
即在不知道 \\(a\\) 和 \\(b\\) 具体值的前提下,可以直接在密文上执行加法操作。这在区块链投票场景中非常有用——计票合约可以汇总加密后的选票,解密后得到总票数,而永远不会暴露任何一个投票人的选择。
全同态加密(FHE):支持任意计算的同态性。自 Craig Gentry 2009 年的博士论文实现理论突破以来,FHE 经历了 BFV、BGV、CKKS 等多代优化。然而,FHE 的计算开销仍然极其巨大——比明文计算慢 10^5 到 10^6 倍。对于区块链而言,这意味着目前在链上直接使用 FHE 是不现实的(Gas 成本无法接受)。
FHE 在区块链领域的一个值得关注的应用方向是 MEV 隐私:用户用 FHE 加密交易后提交到 mempool,区块构建者在密文状态下对交易排序和打包,但无法看到交易的具体内容,从而防止三明治攻击和抢跑。Flashbots 的 SUAVE 和 Shutter 网络正在探索此类路径。
10.6.2 安全多方计算(Secure MPC)
安全多方计算的场景是:n 个参与方各自持有秘密输入 \\(x_1, ..., x_n\\),他们希望在不向彼此暴露各自输入的前提下,联合计算一个公共函数 \\(f(x_1, ..., x_n)\\)。
一个经典的直觉例子——平均工资问题:5 个人想知道平均年薪,但不想任何人知道自己的具体薪水。通过 MPC 协议,各方向协议提交加密后的数据,协议计算平均值后只输出最终结果。没有人获得任何额外信息。
MPC 在区块链中的实际应用(已大规模落地):
- MPC 托管 / MPC 钱包:私钥被分片到多个独立服务器上(如 2-of-3 分片),任何单一服务器无法访问完整私钥。交易签名需要阈值数量的参与方联合完成。这是 Fireblocks、ZenGo、Coinbase 等机构托管产品的核心技术——数万亿美元规模的加密资产正在通过 MPC 保护。
- 跨链桥验证者门限签名:跨链桥的验证者集使用 MPC 生成 BLS 或 Schnorr 门限签名,将多个验证者的签名聚合成一个——任何单一验证者无法单独签署跨链交易,只有在足够数量的验证者参与签名生成后,最终的签名才会出现。
- 预言机数据聚合:多个数据提供方用 MPC 计算价格中位数,仅将聚合结果上链——这样链上合约得到的是可信的聚合价格,而单个数据源的值不会被暴露。
10.6.3 HE 与 MPC 对比
| 维度 | 同态加密(HE) | 安全多方计算(MPC) |
|---|---|---|
| 计算方式 | 一方对密文独立计算 | 多方协作交互计算 |
| 参与者要求 | 仅加密方提供数据 | 所有参与方在线 |
| 通信开销 | 极低(单方计算) | 高(多轮交互) |
| 计算开销 | FHE 慢 10^5+ 倍 | 通信是瓶颈 |
| 链上适用性 | ❌(Gas 不可接受) | ⚠️(仅链下计算+链上验证) |
| 已商用场景 | MEV 隐私(探索中) | MPC 托管、门限签名(大规模商用) |
📌 要点总结:
- FHE 是密码学理论上的里程碑,但 10^5-10^6 倍的计算开销使其在链上几无可能——MEV 隐私是目前最有前景的落地方向。
- MPC 已通过 MPC 托管和门限签名在区块链领域大规模商用——私钥分片 + 阈值签名是目前最成熟的去中心化密钥管理方案。
- HE 与 MPC 的核心哲学差异:HE 是"有人把数据锁起来交给你计算,你算完锁着还回去",MPC 是"很多人一起来算,但谁也不告诉对方自己的数据"。
10.7 机密交易与状态隔离
10.7.1 机密交易(Confidential Transactions, CT)
智能合约需要验证"输入金额 = 输出金额"以阻止凭空创造代币。但标准做法要求所有金额公开——这使得任何人都能看到每笔交易的资金流。机密交易通过 Pedersen 承诺 解决了这个问题:
\\[
C(v, r) = v \cdot H + r \cdot G
\\]
其中 \\(v\\) 是金额,\\(r\\) 是随机盲化因子,\\(G\\) 和 \\(H\\) 是椭圆曲线上的生成元。承诺 \\(C\\) 隐藏了 \\(v\\) 的具体数值——任何人看到同一个 \\(C\\) 都无法恢复 \\(v\\)。但是,Pedersen 承诺具有加法同态性:
\\[
C(v_1, r_1) + C(v_2, r_2) = C(v_1 + v_2, r_1 + r_2)
\\]
这意味着验证者可以在不看到 \\(v_1\\) 和 \\(v_2\\) 的明文值的情况下,验证"输入承诺之和 = 输出承诺之和"——交易的"守恒性"得到了数学保证。
但承诺仅隐藏金额,攻击者可以承诺一个负数值(\\(v = -10\\)),导致凭空创造代币。因此机密交易还需要范围证明(Range Proof):一个密码学论证,在隐藏 \\(v\\) 的条件下向验证者证明 \\(v \geq 0\\) 且 \\(v\\) 不超过某个上限。Bulletproofs 是目前最高效的通用范围证明,将证明大小从 \\(O(n)\\) 压缩到 \\(O(\log n)\\)——Monero 的 RingCT 正是使用 Bulletproofs 来实现机密金额。
10.7.2 私有智能合约执行环境
支付隐私只是第一步。更复杂的挑战是:如何让智能合约的内部状态对非授权方保密? 例如一个链上医疗记录合约——患者的诊断数据应该只对患者授权的医生可见。
当前主要技术路线:
- 可信执行环境(TEE):
- 代表项目:Secret Network(Cosmos 隐私智能合约链)、Oasis(通用隐私合约平台)。
- 原理:合约在 Intel SGX 或类似硬件的"飞地"(Enclave)中执行,合约代码和状态对主机操作系统(以及链上其他节点)不可见。
- 局限:TEE 依赖硬件安全假设——SGX 历史上已被多次侧信道攻击攻破(SGAxe、SmashEx、Plundervolt)。在需要数十亿美元 TVL 的 DeFi 场景中,仅依赖 TEE 的安全性是不够的。
- ZK 化智能合约:
- 代表项目:Aztec Network(以太坊隐私 Layer 2)、Aleo(独立隐私公链)。
- 原理:合约逻辑在链下以 ZK 电路形式执行,仅将证明提交链上。状态变化由 ZK 证明保证正确性,但具体状态值保持隐私。
- 局限:开发难度大,工具链尚不成熟,证明生成时间较长。
- TEE + ZK 混合方案:TEE 负责高效的合约执行(数毫秒级),ZK 负责为 TEE 执行的正确性生成可验证的证明——结合了 TEE 的效率优势和 ZK 的安全性优势。Oasis 和 Secret Network 正在探索此方向。
10.7.3 隐私保护现状一览
| 隐私场景 | 成熟度 | 代表方案 |
|---|---|---|
| 支付隐私(发送方/接收方/金额) | ✅ 成熟 | Monero、Zcash |
| 交易金额隐私 | ✅ 成熟 | CT + Bulletproofs(Liquid、Monero) |
| 智能合约身份隐私 | 🟡 进行中 | Secret Network(TEE)、Aztec(ZK) |
| 通用智能合约隐私 | ⚠️ 攻坚期 | zkEVM + 隐私扩展、Aztec Noir |
| 元交易隐私(MEV 防护) | 🟡 进行中 | FHE mempool、Shutter、SUAVE |
📌 要点总结:
- 机密交易通过 Pedersen 承诺隐藏金额 + Bulletproofs 范围证明确保金额非负——这是已经工程化并投入实战使用的成熟技术。
- 通用智能合约隐私有两条主要路线:TEE(效率高但依赖硬件信任,已多次被攻破)和 ZK 化智能合约(无需信任但开发难度高)。TEE+ZK 混合可能是短期内的最佳实践。
- 当前隐私保护的工程化现状:支付隐私已有成熟方案(Monero、Zcash),通用智能合约隐私仍处于攻坚期(Aztec、Aleo 尚在早期)。
10.8 本章小结
第10章核心脉络回顾
本章覆盖了从隐私需求分析到密码学基础到工程实践的完整链条:
| 篇次 | 维度 | 核心内容 |
|---|---|---|
| (上) | 需求与数学基础 | 10.1 隐私需求分析 / 10.2 椭圆曲线配对 & BLS 签名 / 10.3 聚合签名方案 |
| (中) | 零知识证明与隐私币 | 10.4 zk-SNARKs / zk-STARKs / zkEVM / 10.5 Monero & Zcash |
| (下) | 高级隐私技术与展望 | 10.6 HE & MPC / 10.7 机密交易 & 私有合约环境 |
3个关键认知
- 区块链默认透明,隐私是主动附加属性——透明性是区块链的信任基石,但也意味着隐私保护需要用户和协议开发者主动选择并按需实现。没有任何技术可以"免费"提供隐私——每项隐私技术都有或安全、或性能、或去中心化方面的取舍。
- 零知识证明是隐私与合规的最佳平衡点——zk-SNARK 允许用户向监管机构证明"我通过了 KYC"而不暴露姓名和地址,证明"我的资金来源于合规渠道"而不暴露交易历史。这使得"合规的隐私"(Regulated Privacy)成为可能——Web3 隐私不再等同于洗钱工具。
- 隐私技术的算力/存储成本仍然是去中心化应用落地的关键障碍——zk-STARK 证明 ~100 KB(链上存储贵)、FHE 计算慢 10^5 倍(CPU 时间贵)、TEE 存在硬件安全漏洞(信任成本高)。理解这些权衡是在区块链应用中选择隐私方案的前提——对大多数场景而言,选择现有的成熟方案(如 CT + Bulletproofs 隐藏金额、Chainlink 聚合预言机隐藏交易模式)而非追求"全栈零知识化"是更务实的路径。
关键概念速查
| 概念 | 说明 |
|---|---|
| 同态加密(HE) | 对密文直接计算,解密等于明文计算结果 |
| 全同态加密(FHE) | 支持任意计算的同态加密,计算开销极大 |
| 安全多方计算(MPC) | 多方不暴露输入的前提下联合计算函数 |
| MPC 托管 | 私钥分片管理,阈值签名 |
| Pedersen 承诺 | 可隐藏金额的密码学承诺,支持加法同态 |
| Bulletproofs | 对数大小的范围证明,用于 RingCT |
| TEE | 可信执行环境,硬件隔离的合约执行 |
| 机密交易(CT) | 通过承诺隐藏金额+范围证明确保经济正确性 |
评论
0评论加载中…