TL;DR
Currently, there isn’t a single, universally adopted standard for homomorphic encryption (HE). However, several schemes are becoming de facto standards and are supported by libraries like SEAL, HElib, and TFHE. This guide outlines the key schemes, relevant initiatives, and how to get started.
Understanding Homomorphic Encryption
Homomorphic encryption allows computations to be performed on encrypted data without decrypting it first. This is hugely important for privacy-preserving applications. Different HE schemes offer varying levels of functionality (fully vs partially homomorphic) and performance characteristics.
1. Key Homomorphic Encryption Schemes
- Fully Homomorphic Encryption (FHE): Allows arbitrary computations on encrypted data. This is the most flexible but also the slowest.
- BFV: Based on Ring Learning With Errors (RLWE). Good for integer arithmetic.
- CKKS: Also based on RLWE, optimised for floating-point arithmetic. Popular in machine learning applications.
- TFHE: Uses a bootstrapping technique to allow unlimited depth of computation but is generally slower than BFV/CKKS for large computations.
- Partially Homomorphic Encryption (PHE): Supports limited types of operations, like addition or multiplication, but not both indefinitely.
- Paillier: Supports additive homomorphic encryption. Relatively simple to implement and widely used for privacy-preserving voting schemes.
- ElGamal: Supports multiplicative homomorphic encryption.
2. Standardisation Efforts
While no single standard exists, several initiatives are working towards it:
- NIST Post-Quantum Cryptography (PQC) Competition: Although primarily focused on post-quantum resistance, some schemes considered have homomorphic properties or can be combined with HE.
- Homomorphic Encryption Standardisation Group (HESG): A working group aiming to develop standards for HE. Progress is ongoing, but a complete standard isn’t yet available.
- SEAL Library: Microsoft SEAL provides implementations of BFV and CKKS schemes and is often used as a reference implementation in research and development.
3. Practical Implementation & Libraries
Here’s how to get started with some popular libraries:
- Microsoft SEAL (C++): A powerful library for BFV and CKKS.
#include "seal/seal.h" using namespace seal; // Example: Creating a context Context context(ParametersSet::default_scheme()); - HElib (C++): Another widely used library, offering more advanced features.
#include "helib/helib.h" using namespace helib; // Example: Creating a context KContext kctx = KContext(CoeffModulus::Create(PolyModulusDegree)); - TFHE (C++): For faster bootstrapping and more complex computations.
#include "tfhe/tfhe.h" using namespace tfhe; // Example: Creating a context TFHEContext ctx(1024, 30); - Concrete-ML (Python): A higher level library built on top of TFHE for machine learning.
from concrete import fhe # Example: Creating a context compiler = fhe.Compiler(128, poly_modulus_degree=4096)
4. Considerations When Choosing a Scheme
- Performance: FHE is slower than PHE. CKKS generally outperforms BFV for floating-point operations. TFHE can be fast for specific use cases but requires careful optimisation.
- Functionality: Choose a scheme that supports the computations you need to perform (addition, multiplication, arbitrary functions).
- Security Level: Ensure the chosen parameters provide adequate security against known attacks.
- Library Support: Consider the availability of libraries and tools for your preferred programming language.
5. Future Outlook
The field of cyber security homomorphic encryption is rapidly evolving. Expect to see more standardisation efforts in the coming years, along with improvements in performance and usability. Keep an eye on developments from NIST PQC and HESG.

