Awesome
Awesome Homomorphic Encryption ![Awesome](https://awesome.re/badge.svg)
A curated list of amazing Homomorphic Encryption libraries, software and resources.
Contents
Libraries
Libraries that can be used to implement applications using (Fully) Homomorphic Encryption.
- blyss - Rust FHE library specialized for private information retrieval. Includes bindings to JS & Python.
- cuFHE - CUDA-accelerated Fully Homomorphic Encryption Library.
- cuHE - GPU-accelerated HE library for NVIDIA CUDA-Enabled GPUs.
- Cupcake - Facebook's Rust library for the (additive version of the) Fan-Vercauteren scheme.
- cuYASHE - Based on leveled fully HE scheme YASHE for GPGPUs.
- fhEVM - Solidity library that enables confidential smart contracts on the Ethereum VM using FHE.
- FHEW - A Fully HE library based on FHEW: Bootstrapping Homomorphic Encryption in less than a second.
- FINAL - C++ FHE library based on NTRU and LWE scheme.
- FV-NFLlib - A header-only library implementing the Fan-Vercauteren scheme.
- <a name="HEAAN">HEAAN - Scheme with native support for fixed point approximate arithmetic.
- HEAAN-Python - Python binding for the HEANN library.
- <a name="HElib">HElib - BGV scheme with bootstrapping and the Approximate Number CKKS scheme.
- HEMat - C++ implementation of matrix computation (addition, multiplication, and transposition) using HEANN.
- krypto - C++ implementation of multivariate quadratic FHE.
- Λ ○ λ - "Lol" Haskell library for ring-based lattice cryptography that supports FHE.
- <a name="lattigo">lattigo - Go library for lattice-based crypto that implements various schemes.
- libScarab - C library implementing a FHE scheme using large integers.
- libshe - Symmetric somewhat HE library based on DGHV scheme.
- <a name="SEAL">Microsoft SEAL - C++ FHE library implementing BFV and CKKS schemes.</a>
- NFLlib - NTT-based Fast Lattice library specialized on power-of-two polynomials.
- node-seal - JavaScript/WebAssembly port of Microsoft SEAL.
- NuFHE - GPU-accelerated HE library, faster than cuFHE, that implements the tfhe algorithms.
- <a name="OpenFHE">OpenFHE - C++ FHE library implementing all major schemes along with bootstrapping and scheme switching.
- <a name="OpenFHE-Python">OpenFHE-Python - Python wrapper for OpenFHE.
- <a name="OpenFHE-Rust">OpenFHE-Rust - Rust wrapper for OpenFHE.
- <a name="PALISADE">PALISADE - lattice encryption library (superseded by OpenFHE).
- petlib - Python library that implements a number of Privacy Enhancing Technologies.
- PhantomFHE - A CUDA-Accelerated Fully Homomorphic Encryption Library.
- Pyfhel - A Python wrapper for SEAL, HElib, and PALISADE.
- python-paillier - Partially HE based on Paillier scheme.
- SEAL-python - Python binding for the Microsoft SEAL library.
- SparkFHE - Apache Spark with an add-on for FHE computations. See :page_facing_up:.
- Sunscreen - Rust compiler for the BFV fully homomorphic encryption scheme.
- TenSEAL - Library for HE operations on tensors, built on Microsoft SEAL, with a Python API.
- <a name="tfhe">tfhe - Faster fully HE: Bootstrapping in less than 0.1 seconds.</a>
- TFHE-rs - Rust implementation of the TFHE scheme for boolean and integers FHE arithmetics by Zama.
Toolkits
- ALCHEMY - Haskell-based DSLs and interpreters/compilers, build on top of the lattice crypto library Lol.
- AWS HE toolkit - Simplifies the process of designing circuits for the CKKS scheme.
- Cingulata - Compiler toolchain and RTE for running C++ programs over encrypted data.
- Concrete - TFHE compiler for converting Python programs into FHE equivalents.
- Concrete-ML - Python-based toolkit for data scientists w/o prior FHE knowledge (using sklearn, pyTorch, XGBoost models).
- E3 - Encrypt-Everything-Everywhere framework for compiling C++ programs with encrypted operands.
- EVA - A compiler and optimizer for the CKKS scheme (targeting Microsoft SEAL).
- Google's FHE Repository - A compiler that converts a subset of C++ programs into FHE circuits implemented in various backend libraries (superseded by HEIR).
- <a name="HEIR">HEIR - Google's MLIR-based toolchain for FHE compilers.
- IBM HElayers - IBM's FHE SDK for practical and efficient execution of encrypted workloads.
- Marble - C++ framework that translates between nearly plaintext-style user programs and FHE computations.
- SHEEP - HE evaluation platform with a set of native benchmarks and a library agnostic language.
- T2 - A cross compiler and standardized benchmarks for FHE computation that targets lattigo, HElib, PALISADE, Microsoft SEAL, and tfhe.
Applications
- crypto-geofence - Geo-fencing demo application based on Paillier scheme.
- lattigo-polls - Web-application for scheduling meetings using lattigo.
- Morfix.io - Web-based UI to play around with the Microsoft SEAL library.
- nGraph-HE - Deep Learning (DL) with HE through Intel’s DL graph compiler nGraph based on SEAL.
- OpenFHE demo applications - Several demo applications that demonstrate some of the capabilities of OpenFHE
- boolean-circuit-evaluator - Demonstration application to read in boolean circuits using multiple formats and execute them in encrypted form based on binfhe module for encrypted boolean logic.
- genomic-examples - Prototypes for secure genome-wide association studies using homomorphic encryption.
- logreg-training-examples - Logistic Regression Training Examples.
- OpenMined - Decentralized data ownership & intelligence based on HE and deep / federated learning.
- KotlinSyft - Kotlin library for the Android part of the OpenMined's open-source ecosystem.
- PySyft - Python library for the server/IoT part of the OpenMined's open-source ecosystem.
- SwiftSyft - Swift library for the iOS part of the OpenMined's open-source ecosystem.
- syft.js - JavaScript library for the web part of the OpenMined's open-source ecosystem.
- Rosetta - A privacy-preserving framework based on TensorFlow.
- tf-encrypted - Bridge between TensorFlow and the Microsoft SEAL library.
- Zama's Hugging Face spaces - Demo apps showing the power of FHE for real-world use cases.
Databases
- CryptDB - Protecting confidentiality with encrypted query processing.
- encrypted-mongodb - Wrapper on MongoDB's Python driver that enables to query encrypted data.
- Prisma/DB - Security layer for relational database systems.
- TimeCrypt - Encrypted time-series database using homomorphic encryption-based access control.
- ZeroDB - E2E encrypted database using proxy re-encryption.
Resources
- Barak, Boaz. Chapter about FHE in Barak's introductory book to Cryptography, used for Harvard CS 127.
- Barthelemy, Lucas. Brief survey of Fully HE. 2016.
- Chen, Zhigang. A continuously updated list of FHE papers.
- FHE.org. A community of researchers and developers interested in advancing homomorphic encryption.
- Gentry, Craig. A fully homomorphic encryption scheme. Stanford University, 2009.
- HomomorphicEncryption.org. An open industry, government & academic consortium working on standardization of FHE.
- KU Leuven. An introduction to homomorphic encryption.
- Micciancio, Daniele. Links to papers and implementations of Lattice Cryptography schemes.
- Microsoft Research. Videos from SEAL/CKKS talks at Microsoft's Private AI Bootcamp.
- OpenFHE. Webinars about the foundations of applied FHE, the latest advances in the OpenFHE project and applications of FHE.
- Vaikuntanathan, Vinoid. A list of references about FHE, covering top papers in the field.
- Zhigang Chen. A list of English and Chinese FHE and Machine Learning references.
Related awesome lists
- awesome-cryptography
- awesome-crypto-papers
- awesome-mpc - Multi-Party Computation.
Contribute
Contributions welcome! Read the contribution guidelines first.
Like this work?
🚀 Contribute further awesome HE projects
💸 Spare me some coffee tea 🍵 via Paypal
License
To the extent possible under law, Jonathan Schneider has waived all copyright and related or neighboring rights to this work.