- Install TFHE
- Update library path if necessary:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<TFHE_INSTALL_DIR>/lib
export LIBRARY_PATH=$LIBRARY_PATH:<CUFHE_DIR>/cufhe/bin
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:<CUFHE_DIR>/cufhe/includeJuliet is a framework for general-purpose computation with Fully Homomorphic Encryption (FHE).
docker build -t juliet .
docker run --rm -i -t juliet bash
- Run
make client_scripts_cpufor the CPU-based TFHE backend ormake client_scripts_gpufor the cuFHE GPU-based backend. - Navigate to the
clientdirectory and run./keygen.outto generate an FHE keypair. The evaluation key needed for FHE operations will be placed in thecloud_encdirectory. - Create a file named
preAux.txtand load this with cleartext integer inputs (one per line) that represent sensitive data and will serve as sensitive program inputs for Juliet. - Run
./ppscript.shto automatically generate a ciphertext memory directory, which will be placed in thecloud_encdirectory. - Upload the entire
cloud_encdirectory to the cloud server.
The Juliet paper can be accessed here and here; you can cite this work as follows:
@article{gouert2024Juliet,
author = {Gouert, Charles and Mouris, Dimitris and Tsoutsos, Nektarios Georgios},
title = {{Juliet: A Configurable Processor for Computing on Encrypted Data}},
journal = {IEEE Transactions on Computers},
publisher = {IEEE},
year = {2024},
pages = {1-14},
doi = {10.1109/TC.2024.3416752},
note = {\url{https://trustworthycomputing.github.io/Juliet/Juliet.2024.pdf}},
}
This work was supported by the National Science Foundation (Award #2239334).
