同态加密在机器学习中的应用:密文下计算
FreeGuideOnline
最新
2026-06-20
python
使用 TenSEAL(对 SEAL 的 Python 封装)演示
import tenseal as ts import numpy as np
1. 创建上下文,配置 CKKS 方案
context = ts.context(ts.SCHEME_TYPE.CKKS, poly_modulus_degree=8192, coeff_mod_bit_sizes=[60, 40, 40, 60]) context.global_scale = 2**40 context.generate_galois_keys()
2. 客户端加密数据
x = np.array([0.5, -0.3, 1.2]) # 明文特征 enc_x = ts.ckks_vector(context, x) # 加密
3. 服务器持有明文权重和偏置(或也可加密)
w = np.array([0.8, 0.1, -0.5]) b = 0.2
执行同态线性组合:y = w·x + b
enc_z = enc_x.dot(w) + b # 内部实现为密文-明文点乘
4. 同态 sigmoid 近似(例如 3 次多项式)
多项式: 0.5 + 0.15z - 0.0015z^3 (示意,非精确近似)
enc_z2 = enc_z * enc_z enc_z3 = enc_z2 * enc_z enc_pred = 0.5 + 0.15 * enc_z - 0.0015 * enc_z3
5. 客户端解密
y_encrypted = enc_pred.decrypt() print(y_encrypted) # 与明文计算结果近似