This is a prototype implementation of VOLE-ZKPs for RNS-based HE evaluations. We implement our VOLE-ZKPs for BGV and CKKS.
Warning: This is an academic proof-of-concept prototype, and has not received careful code review. This implementation is NOT ready for any production use.
We implement our protocols on a machine running Ubuntu 22.04 LTS. You can use the following commands to install the basic packages that will be used:
sudo apt-get update
sudo apt-get install -y cmake git build-essential
Then you have to install NTL-11.5.1, GMP-6.2.1 libraries (https://libntl.org/doc/tour-gmp.html), and Mircosoft SEAL-4.1 libary (https://github.com/microsoft/SEAL).
You can use the following commands for installation:
mkdir build
cd build
cmake ..
make
We assume you are already in the ./build folder. To run a VOLE-ZKP for ciphertext-ciphertext multiplication of CKKS, you can run
./test/test_CKKS 1
To run a VOLE-ZKP for ciphertext-ciphertext multiplication of CKKS, you can run
./test/test_BGV 1
Besides ciphertext-ciphertext multiplication, we also prepare other examples for test, including matrix-vector multiplication, basic neural network layer approximation, logistic regression approximation, and comparison approximation. See details in ./test/test_BGV.cc and ./test/test_CKKS.cc