lemonviv / Secrecy

A relational Multi-Party Computation framework for analytics in untrusted clouds

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

SECRECY: Secure collaborative analytics in untrusted clouds

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.

Building and running Secrecy

Repository organization

This repository is organized as follows:

  • The deployment folder contains automation scripts to deploy secrecy in AWS in either same region or cross region setups.
  • The src folder contains the core functionality of Secrecy, including the implementation of MPC primitives, relational oblivious operators, and party communication.
  • The examples folder contains the implementation of example queries with the Secrecy API.
  • The src/test folder contains various unit and end-to-end tests.
  • The src/experiments folder contains the implementation of various microbenchmarks and performance experiments.
  • Plotting scripts and other helper utilies are located in the results/scripts folder.

Dependencies

To build Secrecy, you will need to install:

  • CMake
  • Libsodium
  • an MPI implementation, such as OpenMPI or MPICH.
  • Create a new directory include/external-lib and clone https://github.com/mfaisal97/sql-parser inside it.

Building and running using the CMakeLists.txt file:

  • Make sure you have pkg-config installed.

    On Linux:

    sudo apt install pkg-config 
    

    On 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
      

License

Secrecy is distributed under the terms of the Apache License (Version 2.0).

About

A relational Multi-Party Computation framework for analytics in untrusted clouds

License:Apache License 2.0


Languages

Language:C++ 88.9%Language:C 6.7%Language:Python 3.4%Language:Shell 0.8%Language:CMake 0.2%