2021SC@SDUSC
目录

PALISASE介绍

PALISASE入门

安装及配置环境

测试代码

可能遇到的问题

1.fatal: unable to access 'https://github.com/xxx/autowrite.git/': OpenSSL SSL_read: Connection was reset, errno 10054

2.fatal error: cereal/cereal.hpp: No such file or directory

3.error while loading shared libraries: libPALISADEcore.dll: cannot open shared object file: 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.公钥加密模块的示例程序

Logo

鸿蒙生态一站式服务平台。

更多推荐