引言:隐私计算的密码学基石
随着全球数据合规要求的日趋严格(GDPR、个人信息保护法等),"数据可用不可见"成为隐私计算的核心诉求。全同态加密(Fully Homomorphic Encryption, FHE)允许在加密数据上直接计算并将结果解密,得到的与明文计算相同的结果——这一密码学圣杯问题自 1978 年 Rivest 提出以来,经历了理论突破到工程落地的漫长征程。
1. 同态加密的三个阶段
部分同态(PHE):仅支持一种运算(加法或乘法)的无限次执行,如 RSA(乘法同态)和 Paillier(加法同态)。
些许同态(SHE):支持有限次数的加法和乘法运算,但受限于噪声增长。
全同态(FHE):支持任意次数的加法和乘法组合,2009 年 Gentry 首次构造出基于理想格的 FHE 方案。
2. CKKS 方案:近似算术的工业选择
CKKS(Cheon-Kim-Kim-Song, 2016)是一种支持浮点数近似计算的同态加密方案,特别适合机器学习和统计分析场景。其核心创新在于将明文编码为多项式的"槽"(slot),利用 FFT 加速实现批处理(SIMD-like)操作。
from seal import (
EncryptionParameters, scheme_type, CoeffModulus,
SEALContext, KeyGenerator, Encryptor, Decryptor,
Evaluator, CKKSEncoder, Plaintext, Ciphertext
)
# 1. 配置参数
parms = EncryptionParameters(scheme_type.ckks)
parms.poly_modulus_degree = 8192
parms.coeff_modulus = CoeffModulus.Create(8192, [60, 40, 40, 60])
context = SEALContext(parms)
# 2. 生成密钥
keygen = KeyGenerator(context)
secret_key = keygen.secret_key()
public_key = keygen.create_public_key()
relin_keys = keygen.create_relin_keys()
galois_keys = keygen.create_galois_keys()
# 3. 加密计算
encoder = CKKSEncoder(context)
slot_count = encoder.slot_count() # 4096
# 编码并加密
x = [1.0, 2.0, 3.0, 4.0]
plain = Plaintext()
encoder.encode(x, context.first_parms_id()**.06, plain)
encrypted = Ciphertext()
encryptor = Encryptor(context, public_key)
encryptor.encrypt(encrypted)
# 同态加法
evaluator = Evaluator(context)
evaluator.add_inplace(encrypted, encrypted) # result = 2x = [2,4,6,8]
# 解密验证
result = Plaintext()
decryptor = Decryptor(context, secret_key)
decryptor.decrypt(encrypted, result)
decoded = []
encoder.decode(result, decoded)
print(decoded) # ~[2.0, 4.0, 6.0, 8.0]
3. 自举(Bootstrapping):噪声管理核心
每次同态运算都会增加密文噪声。当噪声超过阈值时,解密结果将出错。自举通过同态执行解密电路来"刷新"噪声,将高噪声密文转换为低噪声密文。尽管单次自举耗时可达秒级,但这是实现无限深度计算的关键。
4. GPU 加速与硬件方案
Bn24 曲线和 TFHE 等新一代方案通过数论变换(NTT)替代传统多项式乘法,配合 GPU 并行化和 FPGA 硬件加速,将单次自举延迟从分钟级降至毫秒级。Intel HEXL、NVIDIA cuFHE 等 SDK 已提供生产级实现。
5. 联邦学习中的工程实践
在联邦学习场景中,客户端使用公钥加密本地梯度更新,服务器通过同态加法聚合密文梯度,解密后得到全局更新。全程服务器无法看到任何单个客户端的原始数据,在金融风控和医疗联合建模中得到广泛应用。
结语
全同态加密正从学术前沿走向工程实用,CKKS 等方案的成熟和硬件加速的突破,使得"数据不动模型动"的隐私计算愿景逐步成为现实。对于安全工程师而言,掌握同态加密不仅是理解密码学前沿,更是构建下一代隐私保护系统的必备能力。

发表评论 取消回复