全同态
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 23 天前 | ||
| 23 天前 | ||
| 18 天前 | ||
| 18 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 23 天前 | ||
| 1 个月前 | ||
| 20 天前 | ||
| 20 天前 | ||
| 25 天前 | ||
| 25 天前 |
HiFHE
HiFHE 是面向 openHiTLS 的同态加密 provider 密码库。目前提供 CKKS 和 BGV 算法。
功能
1. 公共能力
- 对接 openHiTLS provider,提供算法注册、查询及 provider 生命周期管理。
- 提供已编译算法能力查询接口
HIFHE_GetFeatures。 - 支持动态库、静态库、算法裁剪、ASan 和覆盖率构建。
- 提供基于 openHiTLS SDV 框架的生成式测试。
2. 当前支持的算法与能力
CKKS
- 参数配置、算法上下文创建、复制和释放。
- 密钥生成、公私钥导入导出。
- 复数向量编码与解码、公钥加密和私钥解密。
- 通过 openHiTLS provider 调用密钥管理和加解密接口。
尚未提供密文同态加法、乘法、旋转、重缩放及自举接口。
BGV
- 参数配置、算法上下文创建、复制和释放。
- 密钥生成、公私钥导入导出。
- 整数向量的批编码与解码、公钥加密和私钥解密。
- 密文加乘、重线性化、模切换、旋转和重随机化。
构建
依赖 CMake 3.16 或更高版本、C11 编译器和 openHiTLS。不传
--hitls_dir 时,脚本会下载并编译 openHiTLS。默认同时生成
libhifhe_provider.so 和 libhifhe_provider.a。
bash testcode/script/build_hifhe.sh
使用已有 openHiTLS:
bash testcode/script/build_hifhe.sh --hitls_dir /path/to/openHiTLS
# 当前工作区:
bash testcode/script/build_hifhe.sh --hitls_dir /usr1/cq/openhitls/openhitls
只生成一种库:
bash testcode/script/build_hifhe.sh shared
bash testcode/script/build_hifhe.sh static
使用已编译的 openHiTLS 直接执行 CMake:
cmake -S . -B build \
-DHITLS_ROOT_PATH=/path/to/openHiTLS \
-DHITLS_LIB_DIR=/path/to/openHiTLS/build \
-DHIFHE_BUILD_SHARED=ON \
-DHIFHE_BUILD_STATIC=ON \
-DHIFHE_CKKS=ON \
-DHIFHE_BGV=ON \
-DHIFHE_ENABLE_ASAN=OFF \
-DHIFHE_ENABLE_GCOV=OFF
cmake --build build --parallel
CMake 配置:
| 变量 | 默认值 | 说明 |
|---|---|---|
HITLS_ROOT_PATH |
platform/openhitls |
openHiTLS 源码目录 |
HITLS_LIB_DIR |
${HITLS_ROOT_PATH}/build |
hitls_crypto、hitls_bsl 库目录 |
HIFHE_BUILD_SHARED |
ON |
生成 libhifhe_provider.so |
HIFHE_BUILD_STATIC |
ON |
生成 libhifhe_provider.a |
HIFHE_CKKS |
ON |
将 CKKS 编译进 provider |
HIFHE_BGV |
ON |
将 BGV 编译进 provider |
HIFHE_ENABLE_ASAN |
OFF |
启用 AddressSanitizer |
HIFHE_ENABLE_GCOV |
OFF |
启用覆盖率 |
至少启用一种库类型。CKKS 和 BGV 均支持按算法裁剪:
bash testcode/script/build_hifhe.sh --enable ckks
bash testcode/script/build_hifhe.sh --disable ckks
bash testcode/script/build_hifhe.sh --enable bgv
bash testcode/script/build_hifhe.sh --disable bgv
HIFHE_CKKS=OFF 或 HIFHE_BGV=OFF 会排除对应算法源码,并将结果
写入生成的 build/include/hifhe_config.h。
安装命令:cmake --install build --prefix /path/to/prefix。
测试
编译:
bash testcode/script/build_sdv.sh
用例依赖动态 provider。只编译一个套件:
bash testcode/script/build_sdv.sh run-tests=test_suite_sdv_hifhe_ckks
运行:
bash testcode/script/execute_sdv.sh