The FINAL library contains the implementation of the fully homorphic encryption schemes presented in the paper "FINAL: Faster FHE instantiated with NTRU and LWE", by Charlotte Bonte (charlotte.bonte@intel.com), Ilia Iliashenko (ilia@esat.kuleuven.be), Jeongeun Park (Jeongeun.Park@esat.kuleuven.be), Hilder V. L. Pereira (HilderVitor.LimaPereira@esat.kuleuven.be), and Nigel P. Smart (nigel.smart@kuleuven.be).
It is distributed under the MIT license. Please, check the LICENSE file for more details.
A C++ compiler, the NTL and FFTW 3 libraries.
- Run
make
in the main repository folder. - Run the
test
program and check that all the homomorphic gates are computed correctly.
Use test.cpp
and Makefile
as reference points to create and compile your own program with FINAL.
// Input bits
int b1 = 0;
int b2 = 1;
// LWE encryption base scheme
SchemeLWE s;
// LWE ciphertexts
Ctxt_LWE ct1, ct2, ct_or, ct_nand, ct_xor;
// Encryption of bits
s.encrypt(ct1, b1);
s.encrypt(ct2, b2);
// Computes NAND
s.nand_gate(ct_nand, ct1, ct2);
// Computes OR
s.or_gate(ct_or, ct1, ct2);
// Combines the previous results with AND to get XOR
s.and_gate(ct_xor, ct_nand, ct_or);