Skip to content

Latest commit

 

History

History
60 lines (38 loc) · 2.71 KB

Readme.md

File metadata and controls

60 lines (38 loc) · 2.71 KB

C++ Library for Mobile Private Contact Discovery

C++ library implementing several OPRF protocols and using them for Private Set Intersection

Requirements

  • JAVA JNI libaries
  • C++ compiler supporting C++14

Build instructions

git submodule update --init # pull GSL and RELIC
mkdir build && cd build
cmake ..
make -j

Test programs

In the droidCrypto/tests directory, some basic tests and example programs can be found.

e.g., droidCrypto/tests/test_psi_oprf_lowmc runs the Garbled-Circuit based PSI protocol based on LowMC

In terminal 1:

droidCrypto/tests/test_psi_oprf_lowmc 0 20

In terminal 2:

droidCrypto/tests/test_psi_oprf_lowmc 1 10

This performs a set intersection using 2^{20} elements on the server (0) side and 2^{10} elements on the client (1) side. Only the item with index 0 is common for both sets, so the client program should only print "Intersection C0" (errors may occur based on the parameters of the cuckoo filter, but the default parameters should have an error probablity of 2^{-30}).

Disclaimer

This code is provided as a experimental implementation for testing purposes and should not be used in a productive environment. We cannot guarantee security and correctness.

Android Test Application

We provide a small benchmarking application for modern Android phones at mobile_psi_android.

Acknowledgements

This project uses several other projects as building blocks.

  • The OT code is based on the public domain library libOTe by Peter Rindal.
  • Elliptic Curve operations are implemented using RELIC.
  • Some of the binary circuits are based on ones from ABY.
  • The garbled circuit interface is inspired by FlexSC.
  • The used cuckoo filter implementation is cuckoofilter.
  • The implementation of LowMC is based on Picnic.

References