This project, a collaborative effort between researchers at Georgetown University, U.S. Naval Academy, and the U.S. Naval Research Lab, is an extension of the Private Set-Union Cardinality (PSC) project. PSC is a cryptographic protocol used to privately measure the number of events that are collectively observed by a large distributed set of data collectors during an observation period.
PSC allows for secure and useful statistics gathering in privacy-preserving distributed systems such as anonymity networks; for example, it allows operators of anonymity networks such as Tor to securely answer the questions: How many unique users are using the network? and How many unique hidden services are being accessed?
While PSC is suitable for many applications, it does not provide fairness or accountability, and any Computation Party (CP) (a server that aggregates the observation) can cause the protocol to abort without blame or attribution. Moreover, malicious CPs can anonymously add any event to the aggregate at any point in time.
This accountable extension of the PSC protocol ensures that these anonymous attacks by the CPs are no longer possible. Additionally, this version of the protocol combines previously separate phases for added performance improvements.
For more information about accountable PSC, refer:
Accountable Private Set Cardinality for Distributed Measurement (in submission)
Ellis Fenske, Akshaya Mani, Aaron Johnson, and Micah Sherr
A PSC network consists at least two Computation Parties (CPs) and one or more Data Parties (DPs).
git clone https://github.com/ekalinin/envirius.git
cd envirius
make install
Add following to your ~/.bashrc:
[ -f "$HOME/.envirius/nv" ] && . ~/.envirius/nv
Restart your terminal.
nv ls-versions --go-prebuilt
nv mk <goenvironment_name> --go-prebuilt=1.14.9
nv on <goenvironment_name>
export GOPATH=~/.envirius/envs/<goenvironment_name>
cd $GOPATH
mkdir src && cd src
git clone git@github.com:GUSecLab/psc.git
cd psc
go mod init
go get -u ./...
cd $GOPATH/src/psc
git pull
nv off