This is the implementation of our CCS 2021 paper: Simple, Fast Malicious Multiparty Private Set Intersection[ePrint].
NOTE: the current code is under maintenance to integrate the stand-alone OKVS libs. However, you can still use it to evualate our protocols.
git clone --recursive git@github.com:asu-crypto/mPSI.git
$ cd mPSI/thirdparty
$ bash all_linux.get
C++ compiler with C++14 support. There are several library dependencies including Boost
, Miracl
, NTL
, libOTe
, and libPaXoS
. 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:
- windows: open PowerShell,
cd ./thirdparty
, and.\all_win.ps1
- linux:
cd ./thirdparty
, andbash .\all_linux.get
.
NOTE: If you meet problem with all_win.ps1
or all_linux.get
which builds boost, miracl and libOTe, please follow the more manual instructions at libOTe
. For libPaXoS, please follow the more manual instructions at libPaXoS
After cloning project from git,
- build cryptoTools,libOTe, and libOPRF projects in order.
- add argument for bOPRFmain project (for example: -u)
- run bOPRFmain project
- make (requirements:
CMake
,Make
,g++
or similar) - for test: ./bin/frontend.exe -u
The database is generated randomly. The outputs include the average online/offline/total runtime that displayed on the screen and output.txt.
-u unit test which computes PSI of 5 paries, 2 dishonestly colluding, each with set size 2^12 in semihonest setting
-n number of parties
-p party ID
-m set size
-t number of corrupted parties
./bin/frontend.exe -u
Compute PSI of 4 parties, 2 dishonestly colluding, each with set size 2^12
./bin/frontend.exe -m 12 -n 4 -t 2 -p 0 & ./bin/frontend.exe -m 12 -n 4 -t 2 -p 1 & ./bin/frontend.exe -m 12 -n 4 -t 2 -p 2 & ./bin/frontend.exe -m 12 -n 4 -t 2 -p 3
For any questions on building or running the library, please contact Ofri Nevo ofrine at gmail dot com
or Ni Trieu nitrieu at asu dot edu