fedoraghi / PSU

Private Set Union from Symmetric-Key Techniques

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Private Set Union

This is the implementation of our paper: **Scalable Private Set Union from Symmetric-Key Techniques **[ePrint].

Evaluating on a single server (2 36-cores Intel Xeon CPU E5-2699 v3 @ 2.30GHz and 256GB of RAM) with a single thread per party, each party has 2^20 items, our protocol requires 239 seconds and 144 MB.

Installations

Required libraries

C++ compiler with C++14 support. There are several library dependencies including Boost, Miracl, NTL with GMP, and libOTe. For libOTe, it requires CPU supporting PCLMUL, AES-NI, and SSE4.1. Optional: nasm for improved SHA1 performance. Our code has been tested on both Windows (Microsoft Visual Studio) and Linux. To install the required libraries:

  • For building boost, miracl and libOTe, please follow the more instructions at libOTe
  • For NTL with GMP, cd ./thirdparty, and run gmp.get and ntl.get.

Building the Project

After cloning project from git,

Windows:
  1. build cryptoTools,libOTe, and libPSU projects in order.
  2. run frontend project
Linux:
  1. make (requirements: CMake, Make, g++ or similar)
  2. for test: ./bin/frontend.exe -t

Running the code

./bin/frontend.exe -r 1 
& ./bin/frontend.exe -r 0 

Help

For any questions on building or running the library, please contact Ni Trieu at trieun at oregonstate dot edu

About

Private Set Union from Symmetric-Key Techniques


Languages

Language:C++ 49.8%Language:C 46.3%Language:CMake 3.4%Language:PowerShell 0.5%