HE Libraries
I spent some time investigating the most popular open-source Homomorphic Encryption (HE) libraries and tools, which I outline in this blog post.
FHE schemes libraries
HElib
An equally popular library, that implements several optimizations to improve performance.
Repository: https://github.com/homenc/HElib
Lattigo
A more recent and fairly popular library written in GO that exhibits performance comparable to libraries written in C/C++. Includes support for MPC.
Repository: https://github.com/ldsec/lattigo
Palisade
Another popular HE library that supports a wider range of encryption schemes including support for MPC. This is the library used by Duality Technologies and is perhaps the most maintained one.
Repository: https://gitlab.com/palisade
SEAL
SEAL is one of the most popular HE libraries along with HElib. SEAL was developed by the Cryptography and Privacy Research group at Microsoft. It supports both BFV and CKKS and receives frequent updates. Includes a good number of examples with associated documentation.
Repository: https://github.com/Microsoft/SEAL
TFHE
A C++ implementation of TFHE, by the authors of the paper.
Repository: https://github.com/tfhe/tfhe
Library Comparison
| Library | BGV | BFV | CKKS | FHEW | TFHE | MPC support | Language |
|---|---|---|---|---|---|---|---|
| HElib | ✔ | ✘ | ✔ | ✘ | ✘ | ✘ | C++ |
| Lattigo | ✘ | ✔ | ✔ | ✘ | ✘ | ✔ | GoLang |
| Palisade | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | C++ |
| SEAL | ✘ | ✔ | ✔ | ✘ | ✘ | ✘ | C++ |
| TFHE | ✘ | ✘ | ✘ | ✘ | ✔ | ✘ | C++ |
FHE Tools
Google’s FHE transpiler
Transpiles C++ programs to ones that work over encrypted data and uses the TFHE library described above as its FHE backbone.
Repository: https://github.com/google/fully-homomorphic-encryption