Skip to content
Alexander Viand edited this page Dec 20, 2020 · 18 revisions

Welcome to the SoK wiki πŸ‘‹ This wiki accompanies our paper SoK: Fully Homomorphic Encryption Tools & Compilers (coming soonTM) and provides additional notes and remarks on the investigated tools. The FHE compilers considered in the paper are summarized below. Items in bold are experimentally evaluated in this repository.

Tools

Libraries

Library Code Docs License
concrete GitHub https://concrete.zama.ai/ AGPL-3.0
FHEW GitHub -- GPL-2.0+
FV-NFLlib GitHub -- GPL-3.0
HEAAN GitHub -- CC-BY-NC 3.0
HElib GitHub https://homenc.github.io/HElib/ Apache-2.0
lattigo GitHub -- Apache-2.0
PALISADE Gitlab https://palisade-crypto.org/documentation/ BSD 2-clause
SEAL GitHub Manual for older version MIT
TFHE GitHub https://tfhe.github.io/tfhe/ Apache-2.0
cuFHE GitHub -- MIT
nuFHE GitHub https://nufhe.readthedocs.io/en/latest/ GPL-3.0

Compilers

Tool/Technique Code License
ALCHEMY πŸ“„ GitHub GPL-3.0
Cingulata1 πŸ“„ (incl. CinguParam πŸ“„) GitHub, GitHub CeCILL-C
Cingulata (incl. CinguParam) + Multi Start πŸ“„ closed source --
Cingulata (incl. CinguParam) + Cone Rewriting πŸ“„ closed source --
Cingulata (incl. CinguParam) + Lobster πŸ“„ ACM DL, GitHub free
EVA πŸ“„ GitHub MIT
nGraph-HE πŸ“„ πŸ“„ GitHub Apache-2.0
Ramparts πŸ“„ closed source --
SEALion πŸ“„ closed source --

1 Previously known as Armadillo.

Questions and suggestions about this work should be publicly raised in the repository's issue tracker. PRs containing extensions or corrections are welcome!

Evaluation

Evaluation Programs

The following table summarizes the programs that we use to evaluate the performance and compilation/optimization time of the considered tools.

Algorithm Reference Source (Paper) Eval. Category Remarks
Application Tool/Optimization Snippet/BB Binary Integer FP/CKKS NN/MVP
End-2-End CNN inference for non-trivial but not too deep model. CIFAR-10/MNIST EVA ● β—‹ β—‹ ● β—‹ β—‹ β—‹ E.g., LeNet-5 or SqueezeNet.
Logistic Regression inference: MNIST/CREDIT e.g. used in Phishing Classification ● β—‹ β—‹ β—‹ ● β—‹ ●
CHI-Squared Test Secure GWAS ● β—‹ β—‹ β—‹ ● β—‹ ●
Edit Distance Cheon et al. (2016), Kim et al. (2015 ● β—‹ β—‹ β—‹ ● β—‹ ●
Kernel (e.g. Laplacian Sharpening Filter) Ramparts, EVA β—‹ ● β—‹ β—‹ ● β—‹ ● Uses the Kreyvium stream cipher.
Cardiac Risk Factor Cingulata β—‹ ● β—‹ β—‹ β—‹ ● β—‹
Chebyshev Approx. of Sigmoid Kim et al. (2018), Blatt et al. (2020) β—‹ β—‹ ● β—‹ β—‹ ● β—‹
Compute p-th bit of the product of a and b (or similar) TFHE β—‹ β—‹ ● β—‹ ● β—‹ β—‹

Evaluation Metrics

In the paper, we define a set of metrics to compare the optimization techniques implemented in the compilers. The metrics that we consider are:

  • Expressiveness*

    The variety of programs that can be expressed using the tool.

  • Accessibility/Usability*

    The extent of available documentation, code comments, examples, and other user-oriented documentation.

  • Capabilities*

    The features of the tool (that are not necessarily related to the program's expressiveness).

  • Performance/Speedup (run time) + memory consumption

    Time and resource consumption while executing our benchmarking program.

  • Compilation/Optimization time

    Time required to build the program that can be executed afterwards.

Metrics marked by a star (*) do not require executing a program. For full explanations of the criteria, please refer to the paper.

The following symbols are used to denote fulfillment of a criteria:

●  yes, supported
◐  partially supported (see paper)
β—‹  no, not supported
-  not applicable

Basic Information

Tool/Technique Scheme Language (Bindings for) FHE Library
BGV BFV CKKS CGGI
ALCHEMY ● β—‹ β—‹ β—‹ Haskell Ξ› ⚬ Ξ»
Cingulata (incl. CinguParam) β—‹ ● β—‹ ● C++ TFHE
Cingulata (incl. CinguParam) + Multi Start β—‹ ● β—‹ ● C++ TFHE
Cingulata (incl. CinguParam) + Cone Rewriting β—‹ ● β—‹ ● C++ TFHE
Cingulata (incl. CinguParam) + Lobster β—‹ ● β—‹ ● C++ TFHE
EVA β—‹ β—‹ ● β—‹ C++ (Python) SEAL
nGraph-HE β—‹ β—‹ ● β—‹ C++ (Python) SEAL
Ramparts β—‹ ● β—‹ β—‹ Julia Palisade
SEALion β—‹ ● β—‹ β—‹ C++ (Python) SEAL
Clone this wiki locally