HElib is an open-source (Apache License v2.0) software library that implements homomorphic encryption (HE). Currently available schemes are the implementations of the Brakerski-Gentry-Vaikuntanathan (BGV) scheme with bootstrapping and the Approximate Number scheme of Cheon-Kim-Kim-Song (CKKS), along with many optimizations to make homomorphic evaluation runs faster, focusing mostly on effective use of the Smart-Vercauteren ciphertext packing techniques and the Gentry-Halevi-Smart optimizations.
Please refer to CKKS-security.md for the latest discussion on the security of the CKKS scheme implementation in HElib.
Articles that describe some aspects of HElib include:
- HElib Design Principles, Shai Halevi and Victor Shoup, November 2020.
- Algorithms in HElib, Shai Halevi and Victor Shoup, published in CRYPTO 2014.
- Bootstrapping for HElib, Shai Halevi and Victor Shoup, EUROCRYPT 2015.
Since mid-2018 HElib has been under extensive refactoring for Reliability, Robustness & Serviceability, Performance, and most importantly Usability for researchers and developers working on HE and its uses.
HElib supports an "assembly language for HE", providing low-level routines (set, add, multiply, shift, etc.), sophisticated automatic noise management, improved BGV bootstrapping, multi-threading, and also support for Ptxt (plaintext) objects which mimics the functionality of Ctxt (ciphertext) objects.
HElib is written in C++17 and uses the NTL mathematical library.
HElib is distributed under the terms of the Apache License v2.0.
For code downloads, full installation instructions, example programs and tutorials, visit HElib GitHub Pages.