0Pricing
Cryptology Academy · 课时

用于整数运算的 BGV 与 BFV 方案

使用 BGV 执行加密整数加法和乘法

用于整数运算的 BGV 与 BFV 方案 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

BGV 概览

BGV(Brakerski-Gentry-Vaikuntanathan,2012)是一种基于 RLWE 的分层 FHE 方案。它支持对打包的整数明文执行任意次加法和乘法。“分层”表示它无需自举即可处理深度不超过固定值 L 的电路。

明文空间

BGV 和 BFV 将明文编码为 Z_t[x]/(x^n+1) 中的多项式,其中 t 是较小的明文模数(例如 t=65537)。每个多项式编码 n 个整数值(每个系数对应一个值)。密文上的算术运算会同时作用于全部 n 个值——这就是 SIMD 并行。

BGV 中的噪声管理

BGV 通过模数切换来降低噪声:每次乘法后,密文模数 q 都从 Q_L 降低为 Q_{L-1}。这会将噪声除以 Q_L/Q_{L-1},使噪声保持在可解密范围内。电路深度 L 对应 L 个模数层级。

BFV 概览

BFV(Brakerski/Fan-Vercauteren,2012)与 BGV 类似,但采用不同的噪声管理策略:尺度不变。BFV 不需要模数切换,而是在乘法后对密文重新缩放。它更易于实现,并被 Microsoft SEAL 使用。

批量编码(NTT 槽位)

通过明文环上的中国剩余定理,每个密文可以存储 n/2 个相互独立的整数值(槽位)。一次密文加法会并行地将全部 n/2 对值分别相加。一次乘法会将全部对应的值分别相乘。吞吐量:每次密文运算可执行 n/2 次整数运算。

乘法重线性化

两个一次密文相乘后,结果的次数为二次(包含 3 个分量)。重线性化使用求值密钥(重线性化密钥),以增加噪声为代价将结果转换回一次密文。每次乘法后都必须执行此步骤。

使用 SEAL 的 Python 示例

from seal import EncryptionParameters, scheme_type, SEALContext, KeyGenerator, Encryptor, Evaluator, Decryptor parms = EncryptionParameters(scheme_type.bfv) parms.set_poly_modulus_degree(4096) parms.set_coeff_modulus(CoeffModulus.BFVDefault(4096)) parms.set_plain_modulus(PlainModulus.Batching(4096, 20))

旋转

密文旋转会循环移动 n/2 个明文槽位。适用于:归约求和(将所有槽位累加到一个槽位中)、矩阵-向量乘法(旋转并累加)以及卷积(移动并相乘)。这需要伽罗瓦密钥(预先计算的旋转密钥)。

性能

n=8192 时的 BFV:加法约需 10 微秒,乘法约需 5 毫秒(包括重线性化)。自举(如果需要):30-60 秒。包含 4096 个整数的批次:每次乘法平均到每个整数约需 1 微秒。它不适合实时场景,但可用于离线分析。

参数选择

选择 n 和 q 时:SEAL 建议在 Q < 2^109 时使用 n=4096,以达到 128 位安全性;对于更大的电路,使用 n=8192。同态加密标准(homomorphicencryption.org)提供了参数表。请始终使用推荐参数——自定义选择很容易削弱安全性。

使用场景

加密数据库查询(搜索加密记录而无需解密)。私密基因组分析(对加密的 DNA 计算统计数据)。加密金融汇总(对加密的账户余额求和而无需查看个人数据)。安全的模型评估。

快速检查

BGV 使用什么技术来管理乘法后的噪声增长?

回顾

BGV 和 BFV 使用 RLWE 执行加密的整数算术。批量编码提供 SIMD 并行能力。BGV 使用模数切换;BFV 使用尺度不变性。重线性化会在乘法后恢复密文次数。下一节:用于近似算术和机器学习的 CKKS。

常见问题解答

「用于整数运算的 BGV 与 BFV 方案」课时是免费的吗?

是的 — 「用于整数运算的 BGV 与 BFV 方案」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「用于整数运算的 BGV 与 BFV 方案」这节课中我会学到什么?

使用 BGV 执行加密整数加法和乘法 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「用于整数运算的 BGV 与 BFV 方案」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是同态加密
  2. 带误差学习(LWE)基础
  3. 用于整数运算的 BGV 与 BFV 方案
  4. 用于近似运算和机器学习的 CKKS
← 返回 Cryptology Academy