Hardware Acceleration for FHE
by Orion Papadakis, Thanos Stratikopoulos, Michalis Papadimitriou, Mary Xekalaki, Juan Fumero, Christos Kotselidis
University of Manchester
Introduction: The ENCRYPT platform includes a hardware acceleration module in order to boost performance for applications that will employ ENCRYPT’s privacy preserving mechanisms. Hardware acceleration has been employed in various application domains to increase performance by offloading parts of the algorithms from the main CPU onto specialised hardware co-processors, such as Graphics Processing Units (GPUs), Field Programmable Arrays (FPGAs), Tensor Processing Units (TPUs), etc.
In the context of ENCRYPT, the hardware acceleration module provides support for GPU acceleration. Its objective is to enhance the efficiency of performing data processing via privacy-preserving technologies, such as Fully Homomorphic Encryption (FHE). FHE has been a topic of significant research interest recently, thereby leading in numerous libraries that incorporate multiple schemes implemented in different programming languages. The tables below presents an overview of some of those libraries and highlights their hardware acceleration support, if any.
Computational Model | Library | Scheme | Language | Acceleration | Open source |
---|---|---|---|---|---|
Boolean | TFHE | tFHE | C/C++ | GPU by nuFHE | Y |
nuFHE | tFHE | Python | GPU | Y | |
PALISADE (now in OpenFHE) | tFHE | C++, Javascript | FPGA | N | |
cuFHE | tFHE | C++, Python | GPU | Y | |
FHEW | FHEW | C++ | – | N |
Computational Model | Library | Scheme | Language | Acceleration | Open source |
---|---|---|---|---|---|
Modular Arithmetic | HELib (now in OpenFHE) | BFV | C++ | GPU | N |
SEAL | BFV | C/C++ .NET | GPU | N | |
Lattigo | BFV | Go | – | – | |
PALISADE (now in OpenFHE) | BFV,BGV | C++ | FPGA | N |
Computational Model | Library | Scheme | Language | Acceleration | Open source |
---|---|---|---|---|---|
Floating Point Arithmetic | SEAL | CKKS | C/C++ .NET | GPU | N |
Lattigo | CKKS | Go | |||
PALISADE (now in OpenFHE) | CKKS | C++, Javascript | FPGA, more? | N |
To explore the hardware acceleration support for FHE libraries, it is necessary to undertake three steps:
- Performance analysis of the ENCRYPT FHE library (i.e., OpenFHE) as well as the BGV FHE scheme (i.e., selected based on the ENCRYPT use case requirements). The performance analysis has been performed by profilers that identify the code segments that are candidates for GPU acceleration.
- Design and implementation of a GPU kernel (e.g., OpenCL, CUDA) for each function.
- Deployment of the implemented kernels instead of the original implementation of the functions.
Stay tuned for more!