- 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/include
Juliet 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_cpu
for the CPU-based TFHE backend ormake client_scripts_gpu
for the cuFHE GPU-based backend. - Navigate to the
client
directory and run./keygen.out
to generate an FHE keypair. The evaluation key needed for FHE operations will be placed in thecloud_enc
directory. - Create a file named
preAux.txt
and load this with cleartext integer inputs (one per line) that represent sensitive data and will serve as sensitive program inputs for Juliet. - Run
./ppscript.sh
to automatically generate a ciphertext memory directory, which will be placed in thecloud_enc
directory. - Upload the entire
cloud_enc
directory 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).