/psistats

A Fast and Portable Implementation of PSI-STATS in Go

Primary LanguageGo

psistats

PSI-STATS is a 2-party aggregate statistics protocol for PSI, this is currelty a work in progress. You can find an example of a protocol run in proto/proto_test.go.

As of now the protocol runs successfully on small testsets, generalizing and optimizing the protocol to larger sets is in progress.

Project structure

  • cmd/ : Implements a lightweight sandbox for executing the protocol.
  • data/ : Synthetic datasets for benchmarks and tests.
  • docs/ : Project and Protocol docs.
  • internal/ : Implementation internals.
  • pkg/ : Implementation packages with an external API.
    • crypto/: Provides an easy to mis-use interface to the cryptographic building blocks.
    • net/ : Provides a 2-Party communication channel using Websockets and HTTP/2.
    • proto/ : Provides an API to protocol definition and constants.
  • scripts/ : Useful scripts for generating synthetic datasets for testing and simulations.
  • tests/ : Integration tests.

Paper details

We define protocol parameters in pseudocode and describe core algorithms and building blocks.

a[i],b[i] # identifiers
t[i]  # statistic associated with identifier i.
A.X = [a[i]] # party A holds set X
B.Y = [b[i],t[i]] # party B holds set Y
Y_ = [b[i]]
E = (Enc,Dec) # agreed upon instance of Paillier
h = (Sha256) # sha256 hash function
G # group of large order