引言:密码学的"圣杯"

想象这样一个场景:你希望让云服务处理你的医疗记录,但又不希望云服务商看到任何明文数据。传统做法是你下载数据、解密、处理、加密、再上传。而全同态加密(Fully Homomorphic Encryption, FHE)承诺让这一切变得不同——你可以在不解密的情况下,直接对密文进行任意计算,得到的结果解密后等同于对明文做同样的计算。

这听起来像是魔法,但它确实是现代密码学中最深刻、最强大的构造之一。自 2009 年 Craig Gentry 提出第一个可行性方案以来,FHE 已从纯理论逐步走向工程实践,在隐私计算、联邦学习、机密云计算、基因组分析等领域展现出巨大的应用潜力。

本文将从最基础的问题出发,系统梳理 FHE 的数学原理、方案演进、工程实现与未来方向,帮助你构建完整的认知框架。

一、从部分同态到全同态:问题的演进

1.1 什么是同态加密?

同态加密的核心性质可以用一个简洁的公式表达:

Dec(Enc(a) ⊙ Enc(b)) = a ⊕ b

其中 ⊕ 和 ⊙ 分别是明文空间和密文空间上的运算。这意味着在密文上执行某类操作后,解密结果等同于在明文上直接执行另一类操作。

1.2 部分同态加密(PHE)

许多经典加密方案天然具备某种同态性质:

方案支持的运算典型用途
RSA(无填充)乘法同态数字签名、密钥交换
ElGamal乘法同态电子投票
Paillier加法同态隐私求和、电子投票
Benaloh有限次加法安全多方计算

Paillier 的加法同态性质最为实用:Enc(a) · Enc(b) = Enc(a + b)。例如在电子投票中,计票方可以在不知道每张选票内容的情况下,直接聚合所有密文选票,解密后得到总票数。

1.3 些许同态加密(SHE)

如果一种方案可以同时支持加法和乘法,但仅限有限次数,则称为些许同态加密(Somewhat Homomorphic Encryption)。Gentry 之前的方案(如 BGN、IPP 等)都属于这一类。

1.4 全同态加密(FHE)的突破

全同态加密 = 同时支持无限次加法和乘法。因为任意布尔电路都可以用 NAND(或 AND + XOR)门构成,而 NAND 可以由一次乘法和一次加法实现,所以支持无限次加法 + 乘法的方案就等价于支持任意计算。

2009 年,Craig Gentry 在斯坦福博士论文中首次构造出真正的 FHE 方案,这被称为密码学领域的"圣杯"终于被摘下。

二、Gentry 范式:Bootstrapping 的核心思想

2.1 噪声增长问题

所有实用的 FHE 方案都基于"近似特征向量"或"噪音"的思想:密文中包含一个可控的噪声项,解密时噪声会被消除。但每次同态运算(尤其乘法)都会增大噪声。当噪声超过阈值时,解密就会失败。

这正是 SHE 方案的局限——噪声增长限制了可执行的运算深度。

2.2 自举(Bootstrapping)

Gentry 的天才想法是:同态地执行解密操作,从而"刷新"密文、重置噪声水平。

具体而言,Bob 持有密文 c 和私钥 sk。他将私钥加密为 sk*(用自己公钥加密自己私钥),然后将 c 和 sk* 发送给 Alice。Alice 在不解密的情况下,用同态解密电路"消耗"掉噪声,输出一个同明文但噪声清零的新密文。

原始密文 c(噪声 = δ)
    ↓ [同态解密: Dec*(c, sk*)]
新密文 c'(噪声 ≈ δ₀,远小于 δ)

代价:自举本身开销很大。因此 Gentry 范式将 FHE 分解为两步——先用 SHE 支持有限次运算,再通过自举"续命",实现无限次运算。

2.3 密钥交换与模交换(后续优化)

后来的研究对 Gentry 范式进行了大量优化:

  • 密钥交换(Key Switching):在不同密钥间转换密文,避免使用公钥加密私钥带来的巨大开销。
  • 模交换(Modulus Switching):Brakierski 和 Vaikuntanathan 发现通过缩小密文模数可以线性控制噪声增长,比自举更高效。这一发现是现代 FHE 方案(BGV、BFV)的基石。

三、四代 FHE 方案演进

3.1 Gentry 原始方案(2009)

基于理想格(Ideal Lattices)构造,安全性基于理想格上的近似最短向量问题(approx-SVP)和有界距离解码问题(BDD)。首次证明了 FHE 的存在性,但效率极低——一个比特同态运算需要 30 分钟。

3.2 BGV 方案(Brakerski-Gentry-Vaikuntanathan, 2011)

第一个不再依赖 Gentry 原始构造的方案。核心创新是模交换:每次乘法后通过缩小模数来控制噪声,使其保持在线性范围而非指数增长。自举变得不那么频繁,效率大幅提升。

BGV 基于 LWE(Learning With Errors)问题,安全性有广泛研究支持。

3.3 BFV 方案(Brakerski/Fan-Vercauteren, 2012)

与 BGV 类似但采用不同的噪声管理策略——在整数环上使用 BFV 的明文空间结构,支持精确的整数运算。对密码学中的精确计算(如比较、查表)更友好。

BFV 不依赖模交换,而是通过预计算来管理噪声。适合需要精确结果的场景。

3.4 GSW 与 FHEW/TFHE(2013-2016)

Gentry-Sahai-Waters (GSW) 方案基于近似特征向量问题,其关键突破是乘法运算中密文不膨胀(矩阵乘法保持固定维度)。

Chillotti 等人基于 GSW 提出了 TFHE(Fast Fully Homomorphic Encryption over the Torus),它的革命性之处在于:每个门(AND、OR、NOT、XOR)的同态运算只需约 10-30 毫秒!

TFHE 使用环面(R torus)上的 LWE 变体,支持高效的门自举(Gate Bootstrapping),特别适合需要逐位布尔电路计算的场景。

3.5 CKKS 方案(Cheon-Kim-Kim-Song, 2017)

CKKS 是迄今在近似计算领域最重要的 FHE 方案。它专门处理实数/复数向量,使用重缩放(Rescaling)替代模交换来管理噪声,非常适合机器学习推理、统计分析等近似计算场景。

CKKS 支持打包(Batching):一个密文可以打包数千个值(SIMD 风格),计算时自然实现并行。

隐私机器学习推理(如 CrypTFHE、废密推理框架)大多基于 CKKS。

3.6 方案对比总览

方案时间基础问题自举最佳场景
Gentry '092009理想格每次门理论存在性证明
BGV2011LWE/RLWE每若干层模运算、精确整数
BFV2012RLWE每若干层精确整数、字符串
TFHE2016TLWE/TRLWE每个门(ms级)布尔电路、通用门
CKKS2017RLWE每若干层机器学习、浮点近似

四、FHE 工程实现与工具链

4.1 主流 FHE 库

经过十多年发展,FHE 已有多个成熟的开源实现:

  • Microsoft SEAL:微软研发,支持 BFV 和 CKKS。C++ 实现,有 .NET 和 Python 绑定。文档完善,社区活跃。
  • OpenFHE:Google、MIT 等支持的 BGV/BFV/CKKS/TFHE/DM 全方案库,C++ 实现,是 PALISADE 的后继者。
  • TFHE-rs:Zama 团队用 Rust 实现的高性能 TFHE 库,支持 WASM 目标,可部署到浏览器环境。
  • Concrete:Zama 基于 TFHE-rs 的 Python 编译框架,让开发者用普通 Python 代码编写 FHE 程序并自动编译为 FHE 电路。
  • Lattigo:EPFL 的 Go 语言实现,支持 BFV/CKKS/BGV,适合分布式场景。
  • HElib:IBM 出品,基于 BGV 和 CKKS,历史悠久但已逐步被 OpenFHE 取代。

4.2 编程模型差异

FHE 编程与传统编程有本质区别:

// 传统代码
int x = a + b;
int y = x * c;

// FHE 代码 (伪代码 + SEAL)
Encryptor encryptor(context);
Encrypt(a_enc, a);  // 加密
Encrypt(b_enc, b);
Encryptoror(b_enc);

// 同态加法
EvalOror.add(a_enc, b_enc, add_enc);       // add_enc = a_enc + b_enc
// 同态乘法
EvalOror.multiply(add_enc, c_enc, mul_enc); // mul_enc = (a+b) * c
// 需要重线性化
EvalOror.relinearize(mul_enc, relin_keys, mul_enc);
// 解密
Decryptoror(mul_enc, result);

关键约束:

  • 无分支:FHE 无法做条件跳转(否则泄露中间值信息),需用选择门替代 if-else。
  • 无循环(控制次数):循环次数必须静态确定,不能依赖密文。
  • 噪声预算:每次乘法消耗一部分"噪声预算",需合理规划电路深度或安排自举。

五、从理论到产业:真实应用案例

5.1 iDASH 基因组隐私竞赛

iDASH(Integrating Data for Analysis, Anonymization and SHaring)是国际著名的基因组隐私计算竞赛,多届主题直接聚焦 FHE:

  • GWAS(全基因组关联分析)中的等位基因频率统计
  • 基因组编辑效率的回归分析
  • 加密字符串匹配(保护患者标识)

FHE 让多个医院可以协同计算基因组分析结果,但任何一方都无法获知其他机构的原始数据。

5.2 隐私机器学习推理

2016 的 CryptoNets 论文首次证明:用 FHE(基于 CKKS)可以在加密的 MNIST 图像上做推理,准确率仅下降 0.38%。

现代框架如 NGRAPH-HE、GAZELLE(混合 FHE + 混淆电路)、Delphi 等进一步将深度学习推理开销降低到可接受范围(秒级)。

典型场景:医院上传加密的医学影像模型推理请求,云端返回加密结果,全程不暴露图像或模型权重。

5.3 金融风控与合规

银行间需要联合评估客户信用风险,但不愿共享各自的客户数据。FHE 实现"可用不可见":

  • 多方各自加密特征数据
  • 在密文上执行 XGBoost / 逻辑回归评分
  • 返回加密评分结果

5.4 Apple 与 Google 的 FHE 部署

苹果在 iOS 中部署了基于 FHE 的 Photos 重复检测——在不解密的情况下识别用户照片库中的重复/相似图片。Google 在 Chrome 中也使用 FHE 进行密码检查(Pwned Passwords 服务),确保用户的密码不会以明文形式发送到服务器。

5.5 全同态加密即服务(FHE-as-a-Service)

Zama 推出了 fhEVM——一个支持 FHE 智能合约的 EVM 兼容链,允许在链上对加密状态执行任意计算。这是 FHE 与区块链结合的重要里程碑。

IBM FHE Toolkit 提供 Docker 化部署方案,包含 iOS/macOS 和 Linux SDK,内置加密健康记录、金融转账等示例应用。

六、挑战与代价:何时不该用 FHE

FHE 并非万能的银弹。了解其局限与正确使用时同样重要。

6.1 性能开销

操作明文开销FHE 开销倍数
整数加法<1 ns~1 ms~10⁶
整数乘法~1 ns~10 ms~10⁷
浮点运算~1 ns~100 ms~10⁸
比较操作~1 ns~10 ms+(TFHE)~10⁷+

FHE 比明文慢 10⁵ 到 10⁸ 倍。这不是常数因子差距,而是跨数量级的差距。

6.2 密文膨胀

FHE 密文的大小远比明文膨胀。一个 32 位整数加密后可能膨胀到 512KB 到 2MB。CKKS 通过打包可以缓解,但仍比明文大 1000-10000 倍。

6.3 密钥管理复杂

FHE 方案需要管理多种密钥:公钥、私钥、重线性化密钥、自举密钥、 Galois 密钥(用于旋转)。自举密钥和 Galois 密钥可以达到数 GB,这是部署中的实际工程瓶颈。

6.4 何时不该用 FHE

  • 非多方可信场景:如果只有一方持有数据,没有必要用 FHE,同态加密解决的是多方不信任问题。
  • 简单数据查询:如果只需要搜索/比对,不需要 FHE 的全同态能力,PEKS、SSE 等可搜索加密更高效。
  • 高频实时系统:FHE 的低频(秒级)特性使其不适合高频交易、实时音视频处理等场景。
  • 可选择 TEE:如果硬件可信执行环境(Intel SGX/TDX、ARM TrustZone)可用且信任模型接受,TEE 通常比 FHE 快 10-100 倍。

七、前沿进展(2024-2026)

7.1 自举性能突破

Zama 团队在 TFHE-rs 中实现了 GPU 加速自举,单 GPU 每秒可处理约 10,000 次自举操作。CKKS 的自领性能也因数论变换(NTT)硬件加速而大幅提升。

7.2 FHE 硬件加速

DARPA DPRIVE 计划资助了多个 FHE 专用芯片项目:

  • Intel HEXL:面向 AVX-512 的 FHE 加速库,NTT 运算加速 5-10 倍。
  • Duality Technologies 的 FHE 加速器:基于 FPGA 的 CKKS 计算加速卡。
  • 定制 ASIC 研究:Cornell、MIT 等正在研发 FHE 专用芯片,目标是将自举降到微秒级。

7.3 功能加密(Functional Encryption)融合

功能加密允许对特定函数集输出部分解密结果(如只输出均值而非原始数据)。结合 FHE 和功能加密的混合方案正在被研究,可以在某些场景下显著降低开销。

7.4 多方 FHE(Multi-Key FHE)

FHE 的多方版本(MKFHE)支持不同参与方使用各自密钥加密数据,并在这些密文上联合计算。这在多方数据协作场景中至关重要,技术挑战在于跨密钥计算时的噪声控制。

7.5 FHE 标准化

HomomorphicEncryption.org 联盟(包括 Intel、Microsoft、Google、IBM、MIT 等)正在推进 FHE 标准制定,预计在 2025-2026 年推出标准草案。标准化将极大促进 FHE 的互操作性和产业采用。

八、学习路线与上手建议

对希望深入 FHE 的读者,推荐以下分阶段学习路径:

阶段一:概念理解(1-2 周)

  • 阅读 Gentry 原始论文(ACM CCR 版,精简版)
  • 学习 LWE/RLWE 问题本质
  • 理解 Bootstrapping 的核心思想

阶段二:动手实验(2-4 周)

  • 安装 Microsoft SEAL 或 OpenFHE
  • 完成官方示例(BFV 基本运算 → CKKS 打包计算)
  • 尝试实现一个简单的加密统计(均值/方差)或加密整数比较

阶段三:深入专项(1-2 月)

  • 选定方向:TFHE(布尔电路)、CKKS(近似计算)、BFV(精确整数)
  • 阅读对应方案的教材/论文
  • 实现一个完整的应用原型(如加密推理、加密数据库查询)

阶段四:前沿研究

  • 跟踪 ePrint (eprint.iacr.org) 上的 FHE 论文
  • 关注 HomomorphicEncryption.org 的标准动态
  • 参加 iDASH 竞赛、FHE.org 社区

九、总结

全同态加密从 Gentry 2009 年的理论跨越,经过四代方案演进,正在从学术论文走向生产部署。尽管在性能上仍比明文慢多个数量级,但随着算法优化、硬件加速和标准化的推进,FHE 的适用边界正在不断扩展。

其核心价值可以用一句话概括:数据在使用过程中保持加密,信任边界从"人不看数据"变成"人无法看数据"。在隐私保护日益成为刚性需求的今天,掌握和理解 FHE,就是掌握了下一代可信计算的关键钥匙。

参考资料

  • Craig Gentry, "Fully Homomorphic Encryption Using Ideal Lattices", STOC 2009
  • Zvika Brakerski, Craig Gentry, Vinod Vaikuntanathan, "(Leveled) Fully Homomorphic Encryption without Bootstrapping", ITCS 2012
  • Ilaria Chillotti et al., "TFHE: Fast Fully Homomorphic Encryption Over the TORUS", JoC 2020
  • Jung Hee Cheon et al., "Homomorphic Encryption for Arithmetic of Approximate Numbers", ASIACRYPT 2017
  • Microsoft SEAL: github.com/microsoft/SEAL
  • OpenFHE: github.com/openfheorg/openfhe-development
  • TFHE-rs: github.com/zama-ai/tfhe-rs
  • HomomorphicEncryption.org 标准工作组
点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部