一、簡介
CKKS17方案提出了近似計算方法,方案可以對實數進行加密,這與此前均是基于整數的同態加密有很大不同,正是這一點,基于近似計算的同態加密方案可以支持現實中的大多數應用環境,具有較大發展潛力,
目前支持CKKS17方案的庫主要有:HEAAN、SEAL、HElib、PALISADE、CIMERA和PEGASUS,本文主要介紹HEAAN和SEAL庫的安裝環境配置,后面幾個庫今后了解更多可能會補充進來,
二、SEAL
SEAL的最大優勢就是微軟開發的,可以應用在Windows下,并且代碼開發規范,注釋寫得很好,
SEAL使用較為方便,在使用SEAL3.5版本時,直接打開SEAL.sln就可以對代碼進行編輯修改運行,不過在運行時總會報很多玄學錯誤,時常要重新生成方案,這一點上來說還是比較麻煩的,
SEAL3.7以上版本取消了SEAL.sln這個檔案,具體配置運行方法在README中有提及,按照README中所述方法可以正常進行配置,
SEAL對Visual Studio版本有要求,比如SEAL3.5中明確指明需要Visual Studio 2019版本以上,
雖然傳說SEAL庫不依賴與NLT等計算庫,但是還是建議配置前提前安裝下NLT和GMP,不然總會有玄學的事情發生,
三、HEAAN
HEAAN是CKKS17論文作者提供的實作庫,README中說在Ubuntu 16.04環境下可配置成功,實際測驗時環境為Ubuntu 20.04,也可配置成功,
HEAAN庫有多種版本,如HEAAN-master、HEAANBOOT、FULL-RNS-HEAAN等,HEAANBOOT是CHK+18a中針對方案自舉實作的可自舉近似計算同態加密庫,FULL-RNS-HEAAN則是針對CHK+18b中RNS變體實作的近似計算同態加密庫,而HEAAN-master是該課題組一直在維護的實作庫,下面的配置使用的是HEAAN-master庫,
HEAAN依賴于NTL庫,使用前需安裝NTL庫,而NTL庫需要g++、m4和gmp的支持,
安裝g++
sudo apt-get install g++
可以通過g++ --version查看g++的版本,
安裝m4
sudo apt-get install m4
安裝gmp
官網:The GNU MP Bignum Library/
到達下載檔案的路徑并執行,我下載的是gmp-6.2.1.tar.lz,具體版本號會有差異需更改:
sudo apt-get install lzip
lzip -d gmp-6.2.1.tar.lz
tar -xvf gmp-6.2.1.tar
cd gmp-6.2.1
./configure --enable-cxx
make
make check
sudo make install
可以通過如下代碼try.cpp進行測驗:
#include <iostream>
#include <gmpxx.h>
using namespace std;
int main()
{
mpz_t a,b,c;
mpz_init(a);
mpz_init(b);
mpz_init(c);
gmp_scanf("%Zd%Zd",a,b);
mpz_add(c,a,b);
gmp_printf("%Zd\n",c);
mpz_clear(a);
mpz_clear(b);
mpz_clear(c);
return 0;
}
編譯:
g++ try.cpp -o try -lgmpxx -lgmp
運行時可以輸入兩個巨長的數字測驗大整數加法,

安裝NTL
可在 NTL: A Library for doing Number Theory下載,下載后的檔案ntl-x.x.x/doc/tour-unix.html檔案中有安裝教程,安裝程序如下:
gunzip ntl-xxx.tar.gz
tar xf ntl-xxx.tar
cd ntl-xxx/src
./configure
make
make check
sudo make install
測驗程式:
#include <NTL/ZZ.h>
using namespace std;
using namespace NTL;
int main()
{
ZZ a, b, c;
cin >> a;
cin >> b;
c = (a+1)*(b+1);
cout << c << "\n";
}
安裝時可能會遇到:
GMP version check (6.1.2/6.1.0)
*** version number mismatch: inconsistency between gmp.h and libgmp
Aborted (core dumped)
makefile:353: recipe for target ‘setup3’ failed
可能是gmp版本與ntl版本不一致導致的,解決辦法:
sudo ldconfig
安裝HEAAN
在/lib檔案夾里執行make all,執行成功可以看到生成libHEAAN.a檔案,
測驗
先在/run檔案夾下執行make命令,會生成TestHEAAAN檔案,可以通過./TestHEAAN Encrypt來進行測驗,TestHEAAN后的引數可見下圖,運行時較費時,可能出現許久沒有結果,不是電腦卡頓或命令問題,耐心等待就好,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/395198.html
標籤:區塊鏈
上一篇:個人收款碼不得用于經營收款
下一篇:魚池連接礦池失敗問題解決辦法
