密码学中有许多精妙的理念。全同态加密(FHE)可能是其中最荒诞却真实可行的一个。
其原理是:你将数据加密后交给他人,对方对其进行运算,再将结果交回给你,当你解密该结果时,结果是正确的。负责运算的人从未看过你的数据。不是经过脱敏的版本,不是哈希值,而是实际的底层数值,从未被暴露,哪怕一微秒也没有。

Craig Gentry 于 2009 年证明了这一点的可行性。在此之前,密码学界已就此问题探索了约 30 年。
FHE 的工作原理
普通加密是一扇单向门。你锁住数据,任何想对其进行操作的人都必须先解锁。FHE 让门保持锁定状态,但允许你从外部重新排列里面的家具。
更准确地说:FHE 方案在密文上定义了两种运算,通常称为同态加法和同态乘法。这些运算与底层明文上的相同运算一一对应。若将两个加密值相加,解密后的结果等于原始值之和。乘法同理。
这两种运算足以构建计算机能够计算的任意函数。(二进制域上的加法和乘法可以得到 AND 门和 XOR 门,进而构建任意电路。)这就是从"对加密数字进行两种运算"到"对加密数据进行任意计算"的桥梁。
问题在于噪声。每次 FHE 运算都会向密文中添加少量误差。运算次数足够多后,噪声将淹没信号,导致无法解密。Gentry 的核心贡献是一种名为自举(bootstrapping)的技术:在密文仍处于加密状态时,对其运行解密电路,从而重置噪声水平。细想之下,这相当奇特——解密函数在加密内部完成解密。正是这一点,使该方案成为"全"同态加密,而非仅仅"有限"同态加密。
有限同态加密(SHE)在噪声变得致命之前只能处理固定数量的运算。分层同态加密(LHE)能处理预定深度的电路。FHE 则能处理任意电路,不受限制,因为自举技术使运算得以持续进行。
FHE 目前的可用场景
对于大多数应用而言,FHE 的速度仍然太慢。但"大多数"并不意味着全部。目前已有真实的部署在运行。
私密机器学习推理。客户端拥有敏感的输入数据,服务器拥有专有模型,双方都不希望向对方暴露自己所拥有的内容。FHE 允许服务器在客户端的加密输入上评估其模型,并返回客户端可以解密的加密结果。服务器从不查看输入,客户端从不查看模型权重。目前已有公司针对特定模型架构交付了此类方案。由于电路深度有界且可预测,该工作负载符合 FHE 的当前限制。
私密基因组计算。 基因组数据的敏感程度远超社会安全号码:它关联你的亲属,具有永久性,且随着参考数据库的扩大,隐私风险也在累积。研究人员已使用 FHE 来计算疾病风险评分和基因比对,而无需向计算方暴露底层序列。iDASH 竞赛自 2014 年起持续对该用例进行基准测试。
私密数据库查询。你希望在不暴露查询内容的情况下查询数据库。关键词搜索、范围查询和集合成员测试均有对应的 FHE 构造。开销仍然较大,但对于低频、高价值的查询而言尚可接受。
具有隐私保障的联邦计算。多家医院希望在不共享病历的情况下,基于合并的患者数据训练模型。FHE(通常与安全多方计算结合使用)可实现联合计算,同时无需汇聚数据。
FHE 与其他隐私保护方案的比较
FHE 并非孤立存在,它是一个工具栈中的一环,该工具栈还包括:
安全多方计算(MPC):多方在不向彼此透露各自输入的情况下,共同计算某个函数。对于特定函数,MPC 通常比 FHE 更快,但需要多个互不勾结的参与方。FHE 可在单一服务器上运行。
差分隐私(DP):向输出添加经过校准的噪声,以限制攻击者能从数据集中推断出的个人信息。DP 可防范对聚合结果的推断攻击,但不支持对私密输入进行计算。
可信执行环境(TEEs):硬件安全区(Intel SGX、AMD SEV),在操作系统无法读取的受保护内存区域中运行代码。TEEs 的前提是信任硬件供应商且实现中不存在缺陷。FHE 的前提是信任数学。
零知识证明(ZKPs):允许你证明某个陈述为真,而无需透露其原因。ZKPs 用于证明属性,FHE 用于对私密值进行计算,两者相辅相成。
混合系统日益普遍。FHE 负责处理敏感计算,ZKPs 验证计算执行的正确性,MPC 分散信任。随着从业者构建的系统需要同时具备多种技术属性,这些技术之间的边界正在逐渐消融。








