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.
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 rungmp.get
andntl.get
.
After cloning project from git,
- build cryptoTools,libOTe, and libPSU projects in order.
- run frontend project
- make (requirements:
CMake
,Make
,g++
or similar) - for test: ./bin/frontend.exe -t
./bin/frontend.exe -r 1
& ./bin/frontend.exe -r 0
For any questions on building or running the library, please contact Ni Trieu
at trieun at oregonstate dot edu