International Association for Cryptologic Research

International Association
for Cryptologic Research

ASIACRYPT 2024

QuietOT: Lightweight Oblivious Transfer with a Public-Key Setup


README

QuietOT Implementation 🤫

A prototype implementation of the QuietOT OT extension protocol in C.

QuietOT is a lightweight oblivious transfer protocol with a public-key setup.

Organization

Directory
quiet-bipsw/ Implementation of QuietOT with the BIPSW wPRF.
quiet-gar/ Implementation of QuietOT using the GAR wPRF.
bcmpr-bipsw/ Implementation of the BCMPR PCF using the BIPSW wPRF
other/ Partial implementations of the BCMPR and OSY pseudorandom correlation functions for benchmarking purposes.

Dependencies

Getting everything to run (tested on Ubuntu, CentOS, and MacOS)

Install dependencies (Ubuntu): Install dependencies (CentOS):
sudo apt-get install build-essential sudo yum groupinstall 'Development Tools'
sudo apt-get install cmake sudo yum install cmake
sudo apt install libssl-dev sudo yum install openssl-devel
sudo apt install clang sudo yum install clang

On MacOS, use homebrew to install dependencies.
cmake and clang can be installed via xcode-select --install.
OpenSSL can be installed via brew install openssl or manually.

Installation

Ubuntu:

sudo apt-get update
sudo apt-get install build-essential cmake libssl-dev clang

CentOS

sudo yum groupinstall 'Development Tools'
sudo yum install cmake openssl-devel clang

MacOS

brew install openssl
xcode-select --install  # Installs cmake and clang

Quick Start

git clone https://github.com/yourusername/QuietOT.git
cd QuietOT
cd quiet-bipsw
make && ./bin/test

Running tests and benchmarks

Test and benchmark for QuietOT:

cd [quiet-bipsw | quiet-gar]
make && ./bin/test 

Running BIPSW with AVX512

make AVX=1 
make && ./bin/test 

Benchmarking BCMPR (with BIPSW wPRF):

cd bcmpr-bipsw
make && ./bin/test

Benchmarking BCMPR (with GAR wPRF) and OSY:

cd other
make && ./bin/bench

Citation

@misc{QuietOT,
author = {Geoffroy Couteau and Lalita Devadas and Srinivas Devadas and Alexander Koch and Sacha Servan-Schreiber},
title = "{QuietOT}: Lightweight Oblivious Transfer with a Public-Key Setup",
howpublished = {Cryptology ePrint Archive, Paper 2024/1079},
year = {2024},
note = {\url{https://eprint.iacr.org/2024/1079}},
url = {https://eprint.iacr.org/2024/1079}
}

Acknowledgements

We use the super fast Polymur hash for universal hashing.

⚠️ Important Warning

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