TFHE-rs
TFHE-rs作为TFHE的继承者,是开发非常活跃的一个全同态密码库。
运行所有的benchmark:
cargo bench --no-default-features \
--features=boolean,shortint,integer,internal-keycache,zk-pok,pbs-stats \
-p tfhe-benchmark上面的参数--no-default-features避免启用CUDA和HPU支持,而通过--features显式指定需要启用的特性。如果需要编译CUDA版本,可以去掉。如果及其支持最新的AVX512指令集,也可以增加特性avx512。
或者运行单个benchmark:
cargo bench --no-default-features \
--features=boolean,shortint,integer,internal-keycache,zk-pok,pbs-stats \
-p tfhe-benchmark \
--bench boolean
cargo bench --no-default-features \
--features=boolean,shortint,integer,internal-keycache,zk-pok,pbs-stats \
-p tfhe-benchmark \
--bench integer
cargo bench --no-default-features \
--features=boolean,shortint,integer,internal-keycache,zk-pok,pbs-stats \
-p tfhe-benchmark \
--bench shortint--bench后可用的benchmark参见./tfhe-benchmark/Cargo.toml中的bench字段定义的列表。
需要注意的是,8位的shortint支持无限次密文操作,但需要先生成大的密钥文件,运行后可能占用超过15GB磁盘空间。
OpenFHE
配置构建目录:
cmake -S . -B build -DBUILD_BENCHMARKS=ON -DHAVE_POSIX_REGEX=1编译Release版本:
cmake --build build --config Release编译完成后,进入build目录,运行性能测试程序:
cd build
bin/benchmark/bfv-mult-method-benchmarkMicrosoft SEAL
如果没有CMake,根据官方网站下载安装CMake。
配置构建,CMake自动下载缺少的依赖:
mkdir build
cmake -B build -DSEAL_BUILD_BENCH=ON -S .编译项目和性能测试程序:
cmake --build build编译完成后,进入build目录,运行性能测试程序:
cd build
bin/seal_benchLattigo
运行所有测试:
go test -bench=. ./...排除默认的测试,只运行benchmark,且防止测试超时:
go test -run=^$ -bench=. -benchmem -timeout=0s ./...Swift Homomorphic Encryption
苹果官方开源的Swift Homomorphic Encryption实现了BFV同态密码算法。编译运行需要Swift环境,安装参见官方文档。
项目通过Swift Package Manager管理依赖。但package-benchmark依赖需要事先安装jemalloc,可以通过系统软件包管理器或Homebrew安装。通过设置BENCHMARK_DISABLE_JEMALLOC=1环境变量也可以仅用jemalloc,但可能对最终的性能测试有影响。
可以直接运行测试:
# RlweBenchmark
SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING=1 \
swift package -c release benchmark --target RlweBenchmark
# PolyBenchmark
SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING=1 \
swift package -c release benchmark --target PolyBenchmark
# PIRBenchmark
SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING=1 \
swift package -c release benchmark --target PIRBenchmark
# PNNSBenchmark
SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING=1 \
swift package -c release benchmark --target PNNSBenchmark通过-c release使用发布配置编译,能避免默认的调试编译带来的性能损失。
如果遇到问题,也可以通过swift package clean清理构建目录,或swift package reset重置目录。然后尝试自行构建。
SWIFT_HOMOMORPHIC_ENCRYPTION_ENABLE_BENCHMARKING=1 swift build -c release --product RlweBenchmark编译通过后,直接运行
.build/arm64-apple-macosx/release/RlweBenchmark