1. 为什么需要同态加密?
在区块链世界里,大家都关心 数据隐私 和 可信计算。
举几个现实场景:
- 隐私投票:选民想投票,但不希望别人知道自己的选择,同时需要保证统计结果正确。
- 加密数据计算:用户把数据存到链上或交给一个去中心化应用(DApp),但不希望应用的运行者看到原始数据。
- 金融交易:在 DeFi 协议中,你可能想证明自己的资产满足某些条件,而不泄露确切余额。
传统加密方案(如 AES、RSA)只能保护存储和传输中的数据,一旦需要计算,就必须解密。这会暴露隐私。
而 同态加密(Homomorphic Encryption, HE) 的目标是:
👉 让我们能在数据保持加密状态下直接做运算,得到的结果解密后,和在明文上计算的结果完全一致。
2. 同态加密的直观理解
“同态”这个词有点数学味儿,但其实很好理解:
-
普通加密:
Enc(1) = A Enc(2) = B如果你想算 1 + 2,必须先解密。
-
同态加密:
Enc(1) = A Enc(2) = B你可以直接在密文 A 和 B 上做 “加法运算”:
A ⊕ B = C最后解密 C,得到结果:
Dec(C) = 3
换句话说:
Enc(a) ⊕ Enc(b) = Enc(a + b)
这样,计算的过程就完全不需要知道明文是什么。
3. 同态加密的分类
根据“能做多少种运算”,同态加密有几个层次:
-
部分同态加密(PHE, Partially Homomorphic Encryption)
只能支持一种运算(加法或乘法)。- 例子:RSA(支持乘法)、Paillier(支持加法)。
-
某种意义上的“混合”同态加密(SHE, Somewhat Homomorphic Encryption)
支持加法和乘法,但次数有限,不能无限叠加。 -
全同态加密(FHE, Fully Homomorphic Encryption)
支持任意次的加法和乘法,理论上能在密文上执行任意程序。
但目前非常慢,性能是区块链应用的主要瓶颈。
4. 区块链里的应用场景
同态加密和零知识证明(ZKP)常常被一起提到。区别在于:
- ZKP:证明某个计算的结果是正确的,但不暴露输入。
- HE:让别人帮你做计算,但他们根本看不到原始数据。
在区块链中,同态加密的典型应用包括:
-
隐私投票系统
每个人加密后投票,区块链节点直接在密文上求和,最后一次性解密出统计结果。- 好处:谁投了什么票完全保密,但投票总数准确无误。
-
去中心化数据市场
数据提供者加密数据,消费者可以在加密状态下跑模型,结果解密后仍然正确,保证了数据安全性。 -
DeFi 风控
用户用同态加密证明“我的资产余额大于 100 ETH”,但不泄露具体金额。
5. 一个超简化的例子(Paillier 加法同态)
Paillier 加密是比较常见的加法同态加密方案。我们用“投票”来演示:
-
Alice 投票给候选人 A:
vote_Alice = Enc(1) # 加密的 1 -
Bob 投票给候选人 B(记作 0):
vote_Bob = Enc(0) # 加密的 0 -
区块链把所有票相加(在密文层面加法):
total = Enc(1) ⊕ Enc(0) = Enc(1) -
最后解密 total,得到:
Dec(total) = 1说明候选人 A 获得 1 票,候选人 B 获得 0 票。
整个过程中,任何人都看不到单个用户的真实投票。
6. 当前的挑战
虽然同态加密非常强大,但在区块链上的应用仍然受限:
- 性能开销大:全同态加密(FHE)计算速度比明文慢几个数量级。
- 存储开销大:加密后的数据比原始数据大很多。
- 工程难度高:和智能合约结合还不够成熟。
目前一些区块链项目(如 Zama、NuCypher)正在探索把 FHE 与智能合约结合,但离大规模落地还需要时间。
7. 总结
- 同态加密的核心价值:在不泄露明文的前提下进行计算。
- 在区块链中的意义:解决“公开账本 vs 隐私保护”的矛盾。
- 现状:已经有加法/乘法同态方案能用在特定场景(投票、资产证明),但全同态加密还处在探索阶段。
一句话概括:
👉 同态加密让我们可以在“盲盒”里做计算,既保证了结果的正确性,又不暴露里面的秘密。
学习交流请添加vx: gh313061