HEU (Homomorphic Encryption processing Unit) is a user-friendly and high-performance homomorphic encryption library that supports multiple types and scalable hardware acceleration.
https://www.secretflow.org.cn/docs/heu/
Homomorphic encryption algorithms are mainly divided into two categories: partially homomorphic encryption (PHE) and fully homomorphic encryption (FHE). Currently, HEU supports most PHE algorithms, while FHE is still under development and will take some time.
Supported algorithms:
Each algorithm includes a variety of different implementations, and some implementations support hardware accelerators. For more details, please refer to the Document
.
├── .circleci # CI/CD configuration files for circleci
├── .github # Configuration files for GitHub
├── docs # HEU documentation in Sphinx format
├── heu # All the implementation code for HEU
│ ├── algorithms # Holds the implementations of all algorithms
│ ├── experimental # Contains some standalone experimental code
│ ├── library # Implements the application layer functionality of the HE Library
│ │ ├── algorithms # Legacy algorithms not yet migrated to SPI (this directory will be deprecated after migration)
│ │ ├── benchmark # Contains benchmarking code
│ │ ├── numpy # Implements a set of Numpy-like interfaces
│ │ └── phe # PHE Dispatcher implementation (to be deprecated, with replaced by SPI)
│ ├── pylib # Python bindings
│ └── spi # Defines the HEU software and hardware access layer interface (SPI)
│ ├── he # Contains HE SPI and related Sketches
│ └── poly # Defines polynomial interfaces and related Sketches
└── third_party # Contains third-party libraries required for compilation; libraries will be automatically downloaded during build
HEU is currently transitioning from the old Dispatcher architecture to an SPI-based framework. The main modules and their code path mappings for both architectures are as follows:
Dispatcher-based architecture:
Python APIs (Python binding)
PATH: heu/pylib
│
├───────────────────┐
│ ▼
│ Tensor Lib with Numpy-like API
│ PATH: heu/library/numpy
│ │
│ ┌─────────────┘
│ │
▼ ▼
PHE Dispatcher & PHE C++ API
PATH: heu/library/phe
│
│
▼
Various PHE algorithm implementations
PATH: heu/library/algorithms
SPI-based architecture:
Python APIs (Python binding)
PATH: heu/pylib
│
├───────────────────┐
│ ▼
│ Tensor Lib with Numpy-like API
│ PATH: heu/numpy
│ │
│ ┌─────────────────┘
│ │
▼ ▼
HE SPI (C++ APIs)
PATH: heu/spi/he
│
│
▼
Various HE algorithm implementations
PATH: heu/algorithms
For a more detailed introduction to SPI, please click here
Architecture Transition Milestones:
FHE Milestones:
pip install sf-heu
The following command will automatically compile and install HEU into the default Python environment:
git clone git@github.com:secretflow/heu.git
cd heu
sh build_wheel_entrypoint.sh
# just compile, do not run any UT (optional)
bazel build heu/...
# compile and run all UTs
bazel test heu/...
SecretFlow is an open and inclusive community, and we welcome any kind of contribution. If you want to improve HEU, please refer to Contribution Guide