-
Notifications
You must be signed in to change notification settings - Fork 16
Home
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 are summarized following:
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 |
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!
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 | β | β | β | β | β | β | β |
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
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 |
- Home
- Compilers & Optimizations
- Libraries
- Benchmark Programs
- Implementation Docs