尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

HEIR同态加密编译器后端对比:BGV、BFV、CKKS与CGGI 4种FHE方案支持详解

HEIR同态加密编译器后端对比:BGV、BFV、CKKS与CGGI 4种FHE方案支持详解 HEIR同态加密编译器后端对比BGV、BFV、CKKS与CGGI 4种FHE方案支持详解【免费下载链接】heirA compiler for homomorphic encryption项目地址: https://gitcode.com/gh_mirrors/he/heirHEIRHomomorphic Encryption Intermediate Representation是一个基于 MLIR 的开源同态加密编译器让你用统一的中间表示编写密文计算程序再一键编译到BGV、BFV、CKKS、CGGI这 4 种 FHE 方案与 OpenFHE、Lattigo、tfhe-rs、Jaxite 等多种后端。本文面向新手带你完整看懂 HEIR 同态加密编译器的后端架构4 种 FHE 方案各适合什么场景它们分别能编译到哪些后端库编译流水线如何走看完即可为自己的项目选型。一图看懂HEIR同态加密编译器的方言分层架构HEIR 的核心思想是分层抽象上层是标准 MLIRfunc、linalg、tensor、arith 等中间是密文算术层secret、tensor_ext、mgmt、polynomial、comb 等方言再往下就是 4 种 FHE 方案的 Scheme API 层最底层对接各后端库。这张图源自官方文档清晰标出了 4 种 FHE 方案在编译器中的位置——lwe、bgv、ckks、cggi四个 Scheme API 方言层级方言说明标准 MLIRfunc / linalg / tensor / arith / affine你写的原始程序无需懂 FHE密文算术层secret / tensor_ext / mgmt / comb标记哪些数据是秘密的Scheme APIslwe / bgv / bfv / ckks / cggi4 种 FHE 方案各自的操作集方案实现polynomial / rns / mod_arith格加密RLWE的数学基础后端库lattigo / tfhe_rust / jaxite / openfhe生成可执行代码的库一个关键细节BGV、BFV、CKKS 三者共享底层的lwe格加密方言——编译时 HEIR 会先把 BGV 操作转成 LWE 操作见 lib/Dialect/BGV/Conversions/BGVToLWE/ 与 lib/Dialect/CKKS/Transforms/CKKSToLWE.cpp而 CGGI 走完全不同的位级路线。4种FHE方案 × 4种后端支持矩阵速览这是新手最关心的兼容性表。来自 README.md 的官方后端支持矩阵后端库BGVBFVCKKSCGGIOpenFHEC✅✅✅❌LattigoGo✅✅✅❌tfhe-rsRust❌❌❌✅JaxitePython/TPU❌❌❌✅规律非常清晰BGV / BFV / CKKS→ 走格加密路线后端选 OpenFHE 或 LattigoCGGI→ 走位级路线后端选 tfhe-rs 或 Jaxite。各方案的端到端测试样例分布在 tests/Examples/openfhe/、tests/Examples/lattigo/、tests/Examples/tfhe_rust/、tests/Examples/jaxite/ 目录可按方案直接参考。4种FHE方案逐一详解各适合什么场景BGV精确整数算术的 SIMD 方案BGV 是格上同态加密经典方案之一支持精确整数运算和 SIMD 槽一条密文打包多个整数。它的方言操作定义在 lib/Dialect/BGV/IR/BGVOps.td核心操作包括bgv.add/bgv.sub/bgv.mul及明文版本add_plain/mul_plainbgv.rotate_cols/bgv.rotate_rowsSIMD 槽轮转实现向量化归约bgv.relinearize乘法后的重线性化bgv.modulus_switch/bgv.level_reduce模数切换用于控制噪声增长适用场景数据库聚合SUM/内积、整数计数、需要精确结果的整数运算。BFV与 BGV 同门的精确整数方案BFV 与 BGV 同属精确整数 SIMD家族语义上非常接近HEIR 为它提供了独立的方言与 BGV 平级和完全平行的编译流水线--mlir-to-bfv。两者的差异主要在参数化与噪声管理细节上工程上可按后端库的偏好选择。BFV 的参数生成实现在 lib/Parameters/BGV/Params.h 同层的参数体系内统一管理。适用场景与 BGV 相同若你的目标库如 Lattigo对 BFV 优化更好优先选它。CKKS浮点近似算术机器学习推理首选CKKS 专为实数/浮点数的近似计算设计。它的操作集见 lib/Dialect/CKKS/IR/CKKSOps.td与 BGV 相似但有关键区别用ckks.rescale重缩放代替 BGV 的模数切换管理浮点噪声提供ckks.bootstrap自举操作突破乘法深度限制参数体系独立维护见 lib/Parameters/CKKS/Params.hHEIR 对 CKKS 有特别强的支持通过--torch-linalg-to-ckks流水线可以直接把PyTorch 模型经 torch-mlir 导出编译成 CKKS 密文推理程序对 sigmoid 等非多项式函数--math-to-polynomial-approximation流水线会自动做多项式近似。适用场景神经网络推理、模糊搜索、浮点数内积等允许小误差的场景。CGGI位级电路 可编程自举的重武器CGGI 是另外一条路线位级同态加密基于可编程自举programmable bootstrap。它的方言lib/Dialect/CGGI/IR/CGGIOps.td更像密文版逻辑门电路布尔门cggi.and/cggi.or/cggi.xor/cggi.nand/cggi.not等查找表cggi.lut2/cggi.lut3/cggi.lut4一次自举计算任意 2/3/4 输入布尔函数高层比较cggi.cmp/cggi.min/cggi.max/cggi.eq高比特整型算术cggi.add/cggi.mul/cggi.sshr/cggi.sshlCGGI 流水线--mlir-to-cggi支持两种模式Bool模式会先用 Yosys/ABC 综合出布尔电路再转成可编程自举Integer模式则直接把整型算术转成 CGGI适合 tfhe-rs 这类原生支持高比特算术的后端。下游转换分别位于 lib/Dialect/CGGI/Conversions/CGGIToTfheRust/Rust和 lib/Dialect/CGGI/Conversions/CGGIToJaxite/TPU。适用场景复杂布尔逻辑、高比特位安全计算、条件分支密集的程序以及面向 TPUJaxite的部署。从MLIR到后端代码4种FHE方案的编译流水线完整流程说明见 docs/content/en/docs/pipelines.md。以 CKKS→Lattigo 为例下图展示了从 Torch 模型一路降到 CPU 可执行代码的完整路径用一张表总结两条主线主线入口流水线方案层后端流水线输出格加密线--mlir-to-bgv/--mlir-to-bfv/--mlir-to-ckksbgv / bfv / ckks 方言--scheme-to-openfheCOpenFHE格加密线同上同上--scheme-to-lattigoGoLattigo位级线--mlir-to-cggicggi 方言--scheme-to-tfhe-rsRusttfhe-rs位级线同上同上--scheme-to-jaxitePythonJaxite/TPU两条线共用前段--mlir-to-secret-arithmetic先把标准 MLIR 程序转为带秘密标记的密文算术含布局优化与客户端接口生成再进入各方案的专属变换重线性化优化、噪声分析、参数生成。新手选型指南如何为同态加密项目选择正确的FHE方案不确定选哪个按下面 4 个问题对号入座结果是精确整数还是浮点数精确整数 → BGV 或 BFV浮点近似 → CKKS。运算深度大不大深度大、需要自举 → CKKSckks.bootstrap或 CGGI可编程自举。程序里有没有复杂条件分支/位操作有大量布尔逻辑且目标平台是 TPU 或 Rust 生态 → CGGI。团队技术栈C 选 OpenFHEGo 选 LattigoRust 选 tfhe-rsPython/TPU 选 Jaxite。 经验法则80% 的入门项目内积、聚合、小模型推理用CKKS OpenFHE或BGV OpenFHE起步最快。快速上手HEIR同态加密编译器3步跑通第一个密文程序第 1 步获取 HEIR 源码git clone https://gitcode.com/gh_mirrors/he/heir cd heir第 2 步选择使用方式详见 docs/content/en/docs/getting_started.md快速试用pip install heir_py[python,openfhe]用compile()装饰器即可默认就是BGV 方案 OpenFHE 后端Python 前端代码在 frontend/heir/完整编译用 bazel 构建bazel build //tools:heir-opt两个核心工具分别是 tools/heir-opt.cpp跑编译通道和 tools/heir-translate.cpp后端代码生成第 3 步编译并验证以官方向量内积样例 tests/Examples/common/dot_product_8.mlir 为例一条命令完成 BGV 方案 OpenFHE 后端编译bazel run //tools:heir-opt -- \ --mlir-to-bgvmin-slot-count8 \ --scheme-to-openfheentry-functiondot_product \ $PWD/tests/Examples/common/dot_product_8.mlir把--mlir-to-bgv换成--mlir-to-bfv、--mlir-to-ckks或整条换成--mlir-to-cggi就切换到了对应的 FHE 方案——这正是 HEIR 一套 IR、多方案多后端的价值所在。小结HEIR让FHE方案选择变成编译器问题BGV / BFV精确整数 SIMDOpenFHE / Lattigo 后端CKKS浮点近似 自举ML 推理主力OpenFHE / Lattigo 后端CGGI位级电路 可编程自举tfhe-rs / JaxiteTPU后端核心资源入口README.md、docs/content/en/docs/pipelines.md、lib/Dialect/全部方言源码掌握这张方案 × 后端矩阵你就可以根据业务需求在 HEIR 中自由切换 FHE 方案与部署目标把同态加密从手写密码库变成写代码、跑编译了。【免费下载链接】heirA compiler for homomorphic encryption项目地址: https://gitcode.com/gh_mirrors/he/heir创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表