Awesome
Private Set Intersection (PSI)
###Intersection###
Install:
sudo make install
Clean:
sudo make clean
A memory-efficient implementation of the plain intersection protocol.
Two files with binary elements of fixed size are used to calculate their intersection. Output is then saved to the output file.
There is some given number of buckets, which divide hashing domain into smaller domains.
Input files are read in sequential order. Every element is saved into the bucket queue according to its hash value. After queue buffer gets full the queue buffer will be saved to the according bucket file. If the end of the input file is reached all bucket queues will be saved.
Now intersection between bucket pairs can be calculated in RAM in parallel, results of which are concatenated.
Install:
sudo make install
Remove:
sudo make remove
###Dependencies:
- libglib2.0-dev
- lpsi-util
- libssl-dev
###Usage:
psi-intersection
- -e element size Byte size of the elements
- -p "path result" Path to the output file
- -a "path to file a" Path to file A
- -b "path to file b" Path to file B
- -s "path to bucket folder" Path to the temporary folder to store buckets
- -n number of buckets Number of buckets
- -q queue buffer size Buffer size of the wait queues
- -r read buffer size Size of the read buffer
- -t thread number Thread number
- -x "OT" or "NH" Lookup protocol to use. Currently two possible choises: Oblivious Transfer or Naive Hashing.
- -l path to lookup file Path to the lookup file in NH protocol.
- -m path to masks Path to the client's masks in OT protocol
- -c path to cuckoo table Path to the original Cuckoo Hashing table.