Secure FedAvg Functionality using Fully Homomorphic Encryption (CKKS)
Using Docker env with Dockerfile in this repo or install all dependencies yourself as bellow:
-
PALISADE: a lattice-based homomorphic encryption library in C++. Follow the instructions on https://gitlab.com/palisade/palisade-release to download, compile, and install the library. Make sure to runmake installin the user-created\builddirectory for a complete installation. -
pybind-11: pip install pybind11, make sure to have havepython3andcmakealready installed. -
Clang: install clang and set it as the default compiler
palisade_pybind folder contains the implementation of weighted average operation with python bindings.
go to the palisade_pybind/SHELFI_FHE/src folder and run pip install ../
Tests/Examples as wella as the pybind11 binding code are located in the ../pythonApi directory (relative to dir. above) and can be run by simply running:
python3 ../pythonApi/[example].py