2021SC@SDUSC PALISADE开源库(一)安装与配置环境
目录PALISASE介绍PALISASE入门安装及配置环境测试代码可能遇到的问题1.在项目克隆的时候,网络屏蔽Github(山大校园网防火墙屏蔽GitHub),导致克隆下载失败【fatal:unabletoaccess'https://github.com/xxx/autowrite.git/':OpenSSLSSL_read:Connectionwasreset,errno10054】2.在进行
2021SC@SDUSC
目录
2.fatal error: cereal/cereal.hpp: No such file or directory
PALISASE介绍
PALISADE是一个通用的格密码库,目前包含以下格密码算法的有效实现:
- 全同态加密(FHE),包含如下方案
-
用于整数计算的Brakerski / Fan-Vercauteren(BFV)方案
-
用于整数计算的Brakerski-Gentry-Vaikuntanathan(BGV)方案
-
用于实数计算的Cheon-Kim-Kim-Song(CKKS)方案
-
用于布尔电路计算的Ducas-Micciancio(FHEW)和Chillotti-Gama-Georgieva-Izabachene(TFHE)方案
-
有限整数计算的Stehle-Steinfeld方案
-
- 多方全同态加密,包含如下方案
- BGV,BFV和CKKS方案的门限FHE
- BGV,BFV和CKKS方案的代理重加密
- 数字签名
- 基于身份的加密
- 密文策略基于属性的加密
PALISADE是支持Linux,Windows和macOS的跨平台C ++ 11库。支持的编译器是g ++ v6.1或更高版本以及clang ++ v6.0或更高版本。
该库还包括单元测试和示例应用程序演示。
PALISADE在BSD-2条款的许可下使用。
该库基于模块化体系结构,包含如下各层:
- 数学运算层:支持一些基础计算,例如模算术,数论变换和整数采样。该层支持可移植到多种硬件计算框架下。
- 格运算层:支持格运算,环代数和格陷门采样。
- 加密层:包含各类格密码方案的有效实现。
- 编码层:为各种加密方案提供多种明文编码。
PALISADE的重点在于方案的可用性。例如,所有带有密文打包的FHE方案都使用相同的通用API,并使用运行时多态性实现。
PALISADE有效实现了的余数系统(RNS)算法,从而大幅提高BGV,BFV和CKKS等方案的性能。PALISADE库被用作全基因组关联研究(GWAS)解决方案的库,在iDASH’18比赛上获奖。
默认情况下,该库的构建没有外部依赖关系。但是如果需要,可以为用户提供添加GMP / NTL和/或tcmalloc(线程敏感内存分配)第三方库的选项。
PALISASE入门
安装及配置环境
1.首先需要下载MSYS2,可以从MSYS2进行下载,下载完成后,执行下面的语句来更新所有的下载包:
pacman -Syu
2.运行以下命令以安装所有预需
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-cmake
pacman -S autoconf
pacman -S make
pacman -S git
3.进行项目的克隆
我们是从GitLab中找到一个名为“PALISADE Development”的项目(PALISADE / PALISADE Development · GitLab),首先进入名为“palisade-development”的文件家中,将项目克隆到这个文件夹中,执行下面的命令
cd palisade-development/
git clone https://gitlab.com/palisade/palisade-development.git
4.创建一个二进制文件的目录。典型的选择是子折器“build”,这种情况下,命令是
mkdir build
cd build
cmake ..
请注意,cmake 将检查构建过程所需的任何系统依赖性。
5.构建PALISADE(此过程需要下载,可能会耗费大量时间,我记得我是耗费了20分钟左右,请耐性等待下载完成)。命令是
make
6.在系统目录中安装PALISADE。命令(需要在管理员权限下进行安装)是
make install
7.如果不运行"make install",请将以下路径添加到 PATH 变量(以查找 dlls):"lib"(无 NTL)或"lib:third-party/bin"(带有NTL)。例如,可以使用以下命令
没有NTL:
export PATH=$PATH:lib
带有NTL:
export PATH=$PATH:lib:{PATH_TO_NTL_BINARIES}
注意,这只是暂时添加lib的路径,当命令行窗口关闭后,该路径会自动关闭,下次打开执行的时候,需要再次执行上述命令。
要想将lib的添加路径永久化,需要在/.bashrc配置文件中加入lib的路径,这个我会在“可能遇到的问题”中详细讲述。
测试代码
1.运行单元测试,以确保所有功能都按预期运行
make testall
出现下面界面,说明运行成功
2.运行示例代码以进行测试,例如
bin/examples/pke/simple-integers
出现下面界面,说明测试成功
3.要删除通过制作构建的文件,可以执行
make clean
可能遇到的问题
1.fatal: unable to access 'https://github.com/xxx/autowrite.git/': OpenSSL SSL_read: Connection was reset, errno 10054
在项目克隆的时候,网络屏蔽Github(山大校园网防火墙屏蔽GitHub),导致克隆下载失败
这个时候,应该关闭校园网,连接自己手机的热点,重新进行克隆(git clone .....)。
2.fatal error: cereal/cereal.hpp: No such file or directory
在进行cmake .. 的时候,提示cereal中找不到相应的文件
这个时候,应该找到GitLab(项目的原地址),找到cereal的克隆地址,将cereal中的内容重新进行克隆,命令
git clone https://gitlab.com/palisade/cereal.git
重新进行cmake就可以成功了
3.error while loading shared libraries: libPALISADEcore.dll: cannot open shared object file: No such file or directory
在进行make testall进行测试时,可能会出现lib的路径找不到,除了用export来实现暂时找到lib路径外,要想实现lib路径永久化,进行下列操作
cd ~
vim ./.bashrc
进入.bashrc文件中,打开编辑模式。将下面的代码添加到文件中
export PATH=$PATH:/home/Administrator/palisade-development/build/lib
在执行下面的命令,就成功了。
source ./.bashrc
小组成员及分工
本项目一共分为九个模块,分别是:
我们项目一共有三个人,所以一个负责三个模块
我只要负责:
3.用于实数运算的全同态加密
4.布尔电路的全同态加密
6.公钥加密模块的示例程序
更多推荐
所有评论(0)