Skip to content

andyp223/vectorized_batchpir

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vectorized Batch Private Information Retrieval

This repository contains an implementation of the Vectorized Batch Private Information Retrieval (PIR) Protocol published in IEEE Security and Privacy, 2023. The protocol introduces a novel approach where both communication and computation are amortized over a batch of entries, resulting in significantly lower communication overhead for small entry sizes (ranging from 32 bytes to 256 bytes). Specifically, for a batch of 256 entries and an entry size of 32 bytes, the communication overhead is 11 times less compared to previous schemes.

The paper detailing the protocol can be found here.

Dependencies

This code relies on the Microsoft SEAL Library. Make sure to install version 4.1 of this library globally.

Compilation

Before proceeding with the compilation, ensure that your system has CMake installed, preferably a version above 3.0.

After installing CMake and the Microsoft SEAL Library, navigate to the root directory of the project and execute the following commands:

cmake -S . -B build
cmake --build build

Once the build process is complete, run the following command to execute the Vectorized Batch PIR:

./build/bin/vectorized_batch_pir

This will run the Vectorized Batch PIR for the three input scenarios mentioned below:

Batch Size Database Size Entry Size
32 1048576 32
64 1048576 32
256 1048576 32

Expected Output

Upon processing the inputs, the terminal should display a similar output:

Terminal Output

FHE Parameter Selection

The performance of the protocol heavily relies on the selection of fully homomorphic encryption (FHE) parameters. We have provided the best-performing parameters for the given example inputs. However, we encourage developers to select the parameters that yield the best performance for their specific applications. Please refer to this section for parameter selection details.

Contributors

Acknowledgment: Sun I (is16@illinois.edu) for helping with testing the code

⚠️ Important Warning

This implementation is intended for research purposes only. The code has NOT been vetted by security experts. Therefore, no part of this code should be used in any real-world or production setting.

About

Vectorized Batch PIR implementation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.6%
  • Python 1.4%
  • CMake 1.0%