This repository contains code to test and benchmark symmetric ciphers in hybrid homomorphic encryption. This code is also used in the evaluations of the ciphers in the paper [1].
The following Homomorphic Encryption Libraries are part of the framework:
The libraries are included as submodules in this repository and will be downloaded to the thirdparty
directory.
The following ciphers are already implemented in the framework:
The framework is developed and tested on Linux (and WSL2). The dependencies of the framework are git
, gcc/g++
(or clang/clang++
), cmake
, autoconf
, and libtool
. Install these dependencies with
sudo apt install build-essential cmake autoconf libtool
To compile the framework, execute the following commands from the root directory:
mkdir build
cd build
cmake ..
make -j4
Each cipher for each library will then have its own executable, located in build/test
.
A new cipher can be added to the framework by adding the source code to the ciphers
directory. Make sure to use the same structure and naming convention as the already implemented ciphers! Furthermore, add the cipher to CMakeLists.txt
.
The framework already includes different benchmarks, which are implemented in ciphers/common/<lib>_kats
for Z_2 ciphers and in ciphers/common_Zp/<lib>_kats
for Z_p ciphers. The benchmarks can be chosen by adding corresponding tests to the testvectors.h
file of the cipher.
Please use the following BibTeX entry to cite our work in academic papers.
@article{HybridHE,
author = {Christoph Dobraunig and
Lorenzo Grassi and
Lukas Helminger and
Christian Rechberger and
Markus Schofnegger and
Roman Walch},
title = {Pasta: A Case for Hybrid Homomorphic Encryption},
journal = {{IACR} Cryptol. ePrint Arch.},
volume = {2021},
pages = {731},
year = {2021}
}