# Hi-FHE **Repository Path**: openeuler/Hi-FHE ## Basic Information - **Project Name**: Hi-FHE - **Description**: FHE acceleration system based on Kunpeng CPU, supporting efficient CKKS/BFV/BGV Homomorphic operations and Bootstrapping. - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 7 - **Created**: 2025-05-29 - **Last Updated**: 2025-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: sig-security-facility ## README # Hi-FHE Hi-FHE为基于鲲鹏处理器的FHE加速计算系统。本项目在国产CPU芯片鲲鹏上实现经典的BFV、BGV、CKKS全同态算法,通过集成先进的加速方案,系统显著提升了同态操作的运行效率,并完整支持CKKS和BFV的自举(Bootstrapping)操作。 ### 全同态加密 全同态加密(FHE)是一种密码学技术,允许对加密数据直接进行任意计算,结果解密后与明文计算完全一致。其核心价值在于实现“数据可用不可见”——用户无需信任第三方即可外包数据处理,尤其适用于云计算、医疗数据共享、金融风控等隐私敏感场景。 #### CKKS CKKS(Cheon-Kim-Kim-Song)是一种支持近似计算的同态加密方案 $^{[1]}$,该方案的核心优势在于能够对实数或复数数据进行近似同态运算,适用于处理定点小数计算场景。在 CKKS 中,明文数据被编码为复数向量,并通过iFFT嵌入到多项式环中进行加密。加密后的数据支持同态加法和乘法运算,解密结果与在明文上执行相同运算的结果近似相等,误差主要来源于编码过程中的舍入和浮点精度限制。因此,CKKS 广泛应用于隐私保护下的机器学习、数据分析等需要数值计算精度但允许轻微误差的场景。 #### BFV BFV(Brakerski/Fan-Vercauteren)是一种Ring-LWE(Ring Learning With Errors)假设的同态加密方案$^{[2]}$,属于第二代全同态加密方案的重要实现之一。BFV 方案直接在整数模环上对明文向量进行加密,支持对密文执行精确的同态加法和乘法运算。与 CKKS 不同,BFV 保留了整数的精确算术特性,适合需要精确计算的应用场景,如安全多方计算、电子投票和整数聚合等。该方案通过噪声管理机制控制密文在运算过程中的噪声增长,从而支持有限层数的同态乘法运算。 #### BGV BGV(Brakerski-Gentry-Vaikuntanathan)方案是另一种重要的 leveled 全同态加密方案$^{[3]}$,同样基于 Ring-LWE 问题。BGV 在 BV11 方案的基础上引入了模数切换(modulus switching)技术,有效控制了同态乘法过程中噪声的快速增长,从而支持多层同态运算。 #### 技术细节 * 密钥切换:密钥切换是三类FHE方案中的一个核心操作,在密文-密文乘法、密文旋转、自举以及基于全同态加密的计算任务中占据70%以上的时间,本项目的CKKS实现采用最新的第三代密钥切换算法$^{[4]}$来提升密文乘法、密文旋转等操作的运行效率。 * CKKS自举:CKKS方案旨在提升密文的模数,其通过扩模、同态解码$^{[5]}$、同态取模$^{[6]}$和同态编码四个步骤在密文上进行操作,以刷新噪声并保持同态性质。CKKS 方案中的自举(Bootstrapping)旨在通过提升模数从而刷新可执行的同态乘法的层数,实现由近似同态加密至完全同态加密的拓展。其主要包括四个主要步骤:模数提升(Mod Raise)、系数转槽(Coefficient to Slot)$^{[5]}$、同态取模(Evaluate Mod)和槽转系数(Slot to Coefficient)$^{[6]}$。 * BFV自举:BFV自举方案本质是一种通过重新加密密文来刷新噪声的技术,允许在加密状态下执行解密操作,从而延续后续计算。其基本思想是在加密状态下执行对原密文执行同态的取整舍入操作,从而生成一个噪声刷新、可继续进行后续同态运算的新密文,进而支持无限层数的全同态运算$^{[7]}$ $^{[8]}$。 ### 依赖安装 支持平台:鲲鹏920系列CPU,包括7260、5250、5220、3210等 1. NTL (Number Theory Library) 依赖: * GMP (GNU Multiple Precision Arithmetic Library) * C++ 编译器 版本:11.5.1 安装步骤: 1. tar -xvf ntl-11.5.1.tar.gz 2. cd ntl-11.5.1/src 3. ./configure NTL_GMP_LIP=on 4. make 5. sudo make install 2. GMP (GNU Multiple Precision Arithmetic Library) 依赖: * C 编译器(如 GCC) * GNU Make:用于编译和安装 GMP 版本:6.2.1 安装步骤: 1. tar -xf gmp-6.2.1.tar.xz 2. cd gmp-6.2.1 3. ./configure 4. make 5. sudo make install ### 构建&测试方法 * BFV运行测试(在BFV目录下): * cd build * cmake .. * make -j * numactl -C0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 ./BFV * BGV运行测试(在BGV目录下): * cd build * cmake .. * make -j * numactl -C0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 ./BGV * CKKS运行测试(在CKKS目录下): * cd build * cmake .. * make -j * numactl -C0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30 ./CKKS ### 参考文献 [1] [Homomorphic Encryption for Arithmetic of Approximate Numbers](https://eprint.iacr.org/2016/421) [2] [An Improved RNS Variant of the BFV Homomorphic Encryption Scheme](https://eprint.iacr.org/2018/117) [3] [Fully Homomorphic Encryption without Bootstrapping](https://eprint.iacr.org/2011/277) [4] [Accelerating HE Operations from Key Decomposition Technique](https://eprint.iacr.org/2023/413) [5] [Efficient Bootstrapping for Approximate Homomorphic Encryption with Non-Sparse Keys](https://eprint.iacr.org/2020/1203) [6] [Improved Bootstrapping for Approximate Homomorphic Encryption](https://eprint.iacr.org/2018/1043) [7] [Homomorphic Lower Digits Removal and Improved FHE Bootstrapping](https://eprint.iacr.org/2018/067) [8] [Homomorphic polynomial evaluation using Galois structure and applications to BFV bootstrapping](https://eprint.iacr.org/2023/1304) ### 贡献征集 我们欢迎所有贡献,包括但不限于: * 引入新的计算优化方法; * 扩展使用新的处理器指令; * 贡献新的FHE算法; * 报告本代码仓库中的问题. 如果您有意为Hi-FHE做贡献,请遵循相关的[开源协议](http://license.coscl.org.cn/MulanPSL2) ### 致谢 在遵循[开源协议](http://license.coscl.org.cn/MulanPSL2) 的前提下,项目代码的分发不受限制。本项目得到华为技术有限公司的支持,所表达的观点、意见和调查结果是作者的观点、意见、和调查结果,不代表华为技术有限公司的官方观点和政策。 感谢为本项目做出贡献的技术团队、研究人员和高校师生,包括但不限于:徐鹏、鲁赵骏、王蔚、杨一帆、吴健、彭惠康、申延哲、郭星宇、陈启东、要智伟、万立鹏、张瑞等。