HElib
什么是HElib?
HElib是一个基于C++语言的同态加密开源软件库,底层依赖于NTL数论运算库和GMP多精度运算库实现,主要开发者为IBM的Halevi,目前最新版本为1.0.2,实现了支持“Bootstrapping”的BGV方案和基于近似数的CKKS方案。 HElib在上述原始方案中引入了许多优化以加速同态运算,包括Smart-Vercauteren密文打包技术和Gentry-Halevi-Smart优化,提升了算法的整体运行效率。
HElib提供了一种“同态加密汇编语言”,支持“set”、“add”、“multiply”、“shift”等基本操作指令,此外还提供了自动噪声管理、改进的“Bootstrapping”方法、多线程等功能。
HElib的github主页:https://github.com/homenc/HElib
相关论文:Halevi S , Shoup V . Algorithms in HElib[J]. Lecture Notes in Computer Science, 2014, 8616:554-571.如何安装?
//CentOS 8安装HElib
##一般先决条件
GNU make
//-GNU make> = 3.82
yum install make
pthreads
什么是Pthreads?
参考:链接
git
//-git> = 1.8.3(需要构建和运行HElib测试套件)
yum install git
** Linux环境:**
g ++
// -g ++> = 7.3.1
yum install gcc-c++
cmake
// -cmake> = 3.10.2
yum install cmake
第一种方法
自动下载并构建GMP和NTL依赖关系并打包可重定位文件夹中的库
此选项将HElib及其依赖项(NTL和GMP)捆绑在一个目录中,然后可以在系统上自由移动。 NTL和GMP将自动获取和编译。 它可以全局安装(即在/ usr / local下),如果未指定CMAKE_INSTALL_PREFIX,这是默认选项,但是由于要覆盖现有版本的NTL,GMP或HElib,因此应谨慎操作。在这种情况下,还需要另外两个前提条件:
m4
什么是m4?
m4是一个宏处理器,将输入拷贝到输出,同时将宏展开。宏可以是内嵌的,也可以是用户定义的,它还有一些内建函数,可以引用文件、执行命令和计算等。m4既可以作为编译器的前端,也可以单独作为一个宏处理器。
更多:链接
// -m4> = 1.4.16
yum install m4
patchelf
什么是patchelf ?
patchelf 是一个用来修改elf格式的动态库和可执行程序的小工具,可以修改动态链接库的库名字,以及链接库的RPATH。
更多:
// -patchelf> = 0.9(如果在Linux上构建)
yum install patchelf
PS:一般用云服务器的话,镜像里没有 patchelf 的话,会自动去github上下载
如果用的是服务器测试的话,一般是yum 不了patchelf的,所以请采用其他方式安装
参考:链接
开始1
1、下载
wget https://github.com/homenc/HElib/archive/v2.1.0.tar.gz
链接
2、解压
tar -zxvf v2.1.0.tar.gz
3、构建目录
mv HElib-2.1.0/ HElib cd HElib mkdir build cd build
4、运行cmake
cmake -DPACKAGE_BUILD=ON -DCMAKE_INSTALL_PREFIX=/home/alice/helib_install ..
PS:运行cmake配置步骤,指定要构建软件包(通过-DPACKAGE_BUILD = ON)并说出您希望安装到的位置,例如,要在`/home/alice/helib_install`中安装
可以在此处指定其他选项,例如使用以下命令启用HElib测试 -DENABLE_TEST = ON
5、编译
编译,并指定可选数量的线程(在此示例中为16),其输出将在可重定位文件夹“ helib_pack”中
make -j16
PS:1核 2GB 20Mbps 的服务器,CPU直接100%,需要稍微高点的配置。或者输入小的进程数,例如: make -j5
1核 4GB 20Mbps的服务器make时:
6、可选
(1)如果步骤2是通过-DENABLE_TEST = ON执行的,则HElib测试可以运行如下:
ctest
可以在以下位置找到详细的HElib特定测试日志 :`Testing / Temporary / LastTest.log`
(2)运行安装步骤,将文件夹“ helib_pack”复制到 :$ {CMAKE_INSTALL_PREFIX}(在此示例中为/home/alice/helib_install)
make install
当然,如果将“ CMAKE_INSTALL_PREFIX”保留为默认的“ /usr /local”,或者其他系统范围的路径,步骤6(2)可能需要`sudo`特权
默认按上面安装的流程,此时已安装完毕:
1、解压后的目录:
examples:里面有三个工程项目,稍后在下面可以演示
tests:里面有很多小例子,均引用了该库,后期会运行演示
2、安装目录
/home/alice/helib_install/helib_pack
所有的头文件都在 include 中
第二种方法
MacOS10.15下安装HElib库
安装并在系统中可用的依赖项
此选项涉及自行构建HElib,并链接到系统上预先存在的依赖项(NTL和GMP)。这样,可以移动HElib库,但不能依赖其依赖项(NTL和GMP),因为它们是绝对路径。对于此选项,您必须自己构建GMP> = 6.0.0和NTL> = 11.4.3。
在整个安装选项中,都假定将环境变量$ GMPDIR和$ NTLDIR设置为分别指向GMP和NTL的安装目录。请注意,如果从软件包构建更改为库构建,则更安全使用一个干净的构建目录
GMP
GMP多精度运算库,许多发行版都预装有GMP。如果没有,您可以将GMP安装为如下:
1、下载,确保版本GMP> = 6.0.0
官方安装文档
2、官方例子
3、不懂球的2大业