This repository accompanies the paper Privacy Preserving Network Analysis by Marcella Hastings, Brett Hemenway Falk, and Gerry Tsoukalas.
The contents of this repository include implementations of network analysis algorithms in four MPC libraries; a reference implementation of the network analysis algorithms in C++; and scripts to scrape and format the data on which we ran the algorithms.
Each directory has more detailed notes about how to build and run the software, generate data for plots and tables in the text, and any limitations we're aware of.
BIS
: scripts to scrape and format data from the Bank of International Settlements.emp
: implementation of algorithms using the EMP-toolking MPC engineinsecure
: C++ implementation of all algorithms, does not use any MPC techniquesmpyc
: implementation of algorithms using the MPyC enginepicco
: implementation of algorithms using the PICCO MPC enginescalemamba
: implementation of algorithms using the SCALE-MAMBA MPC engine
Each code sample is paired with a Docker container that downloads all the necessary software dependencies.
Some general usage notes about Docker:
-
Docker containers are supposed to be self-sufficient environments. You build a container image to get an isolated filesystem with all the configuration details and dependencies. You run a container image to get an instance, which is a sandboxed process that can support the software we provided. Learn more about Docker through their tutorial.
-
We list
build
andrun
commands for each library in their READMEs. If you're on linux, you might have to run these withsudo
.
Many of the examples use Python3 to generate synthetic data and produce plots. This was tested with Python 3.8.10.
You'll need the following packages:
$ pip install networkx matplotlib numpy