A header-only library implementing the Fan-Vercauteren homomorphic encryption scheme
What is it?
FV-NFLlib is a software library implementing an homomorphic encryption scheme (HE). FV-NFLlib implements the Fan-Vercauteren (FV) scheme, and is based on the NFLlib C++ library dedicated to ideal lattice cryptography.
To use the FV-NFLlib library, you need GMP, Mpfr, a C+11 compiler and the NFLlib library. The library only consists of a single header file FV.hpp that has to be included during the compilation of your program.
Three tests are provided for the library
- tests/Test_binary_tree: this program benchmarks the key generation, the encryption/decryption, homomorphic addition and homomorphic multiplication procedures. A binary tree of multiplications is evaluated to ensure correctness and the final noise bound is given.
- tests/Test_ec_additions: this program computes in the clear and homomorphically an elliptic curve addition over the NIST P-256 curve. The code of the elliptic curve addition is templated, and called twice (once with FV::mess_t and once with FV::ciphertext_t)
- tests/Test_encrypt_poly: this program encrypts two polynomials and computes their product homomorphically. It outputs a small SAGE program to test the correctness.