tl;dr Homomorphic Encryption allows to perform calculations on encrypted data without decrypting it first.
- Introduction to FHE by Pascal Paillier
- Marc Joye’s blog for Zama FHE: Homomorphic Encryption 101
- FHE Community of Interest: FHE.org
- Monthly meetings on FHE: https://www.meetup.com/fhe-org/
- Chat space https://discord.fhe.org (wealth of information and discussions on how to use the libraries etc)
- HE Standardization https://homomorphicencryption.org/
- RSA cryptosystem (unbounded number of modular multiplications)
- ElGamal cryptosystem (unbounded number of modular multiplications)
- Goldwasser–Micali cryptosystem (unbounded number of exclusive or operations)
- Benaloh cryptosystem (unbounded number of modular additions)
- Paillier cryptosystem (unbounded number of modular additions)
See Wikipedia
Ph.D. thesis by Craig Gentry https://crypto.stanford.edu/craig/craig-thesis.pdf
- Brakerski-Gentry-Vaikuntanathan (BGV, 2011) scheme, building on techniques of Brakerski-Vaikuntanathan
=> good for masking and integer arithmetic
- The NTRU-based scheme by Lopez-Alt, Tromer, and Vaikuntanathan (LTV, 2012)
- Brakerski/Fan-Vercauteren (BFV, 2012) scheme, building on Brakerski's scale-invariant cryptosystem
- NTRU-based scheme by Bos, Lauter, Loftus, and Naehrig (BLLN, 2013), building on LTV and Brakerski's scale-invariant cryptosystem
- Cheon-Kim-Kim-Song (CKKS, 2016) scheme.
- Note that there were some issues with CCKS reported recently by Li and Micciancio (eprint report). In response, the HElib team published a list of mitigations.
=> floating point arithmetic => machine learning
- Website: https://homenc.github.io/HElib
- Repo: https://github.com/HomEnc/HElib
- Docs: https://homenc.github.io/HElib/
- Bug report: https://github.com/homenc/HElib/issues
- Math behind HElib: HElib-design.pdf
- FHE-toolkit https://github.com/ibm/fhe-toolkit-linux (containerized IDE with precompiled libraries and examples)
- Website: https://www.microsoft.com/en-us/research/project/microsoft-seal
- Repo: https://github.com/microsoft/SEAL
- Docs: https://github.com/microsoft/SEAL#introduction
- Bug report: https://github.com/microsoft/SEAL/issues
- Website: https://zama.ai/concrete
- Repo: https://github.com/zama-ai/concrete
- Docs: https://docs.zama.ai/concrete/lib
- Bug report: https://github.com/zama-ai/concrete/issues
- Python package: GitHub: https://github.com/zama-ai/concrete-numpy
- Website: https://palisade-crypto.org/
- Repo: https://gitlab.com/palisade/palisade-release
- Docs: https://palisade-crypto.org/documentation
- Bug report: https://gitlab.com/palisade/palisade-release/-/issues
- Repo: https://github.com/google/fully-homomorphic-encryption
- Examples: https://github.com/google/fully-homomorphic-encryption/tree/main/transpiler/examples
- Blog Post: Our latest updates on Fully Homomorphic Encryption
In 2020, IBM Research conducted a project with a Brazilian Bank to implement a pilot using Homomorphic Encryption (HE) to a machine learning (ML) pipeline. Specifically they used HE in the ML for both the variable selection of the model generation and the actual prediction computation.