This repository includes the implementation of the Secrecy relational Multi-Party Computation framework described in the USENIX NSDI'23 paper by John Liagouris, Vasiliki Kalavri, Muhammad Faisal, and Mayank Varia.
You can cite the paper using the BibTeX below:
@inproceedings {285183,
author = {John Liagouris and Vasiliki Kalavri and Muhammad Faisal and Mayank Varia},
title = {{SECRECY}: Secure collaborative analytics in untrusted clouds},
booktitle = {20th USENIX Symposium on Networked Systems Design and Implementation (NSDI 23)},
year = {2023},
isbn = {978-1-939133-33-5},
address = {Boston, MA},
pages = {1031--1056},
url = {https://www.usenix.org/conference/nsdi23/presentation/liagouris},
publisher = {USENIX Association},
month = apr,
}
NOTICE: This is an academic proof-of-concept prototype and has not received careful code review. This implementation is NOT ready for production use.
This repository is organized as follows:
- The
deploymentfolder contains automation scripts to deploy secrecy in AWS in either same region or cross region setups. - The
srcfolder contains the core functionality of Secrecy, including the implementation of MPC primitives, relational oblivious operators, and party communication. - The
examplesfolder contains the implementation of example queries with the Secrecy API. - The
src/testfolder contains various unit and end-to-end tests. - The
src/experimentsfolder contains the implementation of various microbenchmarks and performance experiments. - Plotting scripts and other helper utilies are located in the
results/scriptsfolder.
To build Secrecy, you will need to install:
- CMake
- Libsodium
- an MPI implementation, such as OpenMPI or MPICH.
- Create a new directory
include/external-liband clonehttps://github.com/mfaisal97/sql-parserinside it.
-
Make sure you have pkg-config installed.
On Linux:
sudo apt install pkg-configOn OSX:
brew install pkg-config -
To compile and run all test cases:
./run_tests.sh -
To run a specific test file or experiment:
- First use cmake to create the build dir and make file:
mkdir build cd build cmake .. - Build and run a test file:
cd build make planner mpirun -np 3 ./planner ../examples/queries/q1.txt ../examples/schemas/q1_schema.txt 128 128 // Will compile and run Q1 with 128 and 128 rows per input tables
- First use cmake to create the build dir and make file:
Secrecy is distributed under the terms of the Apache License (Version 2.0).