Skip to content

sjehan/Mozzarella

 
 

Repository files navigation

Mozzarella Benchmarking Code

This repository contains the code developed for the benchmarking experiments in our paper:

"Moz​$\mathbb{Z}_{2^k}$​arella: Efficient Vector-OLE and Zero-Knowledge Proofs Over $\mathbb{Z}_{2^k}$". By Carsten Baum, Lennart Braun, Alexander Munch-Hansen, and Peter Scholl (all Aarhus University). To appear at Crypto 2022. Full version on ePrint.

Code

The code is based on the secure computation framework swanky by Galois, more specifically, on a fork of swanky by Mathias Hall-Andersen.1 The implementation of our VOLE protocol for $\mathbb{Z}_{2^k}$ is available in the subdirectory ocelot/src/ot/mozzarella. The benchmarking code for the QuarkSilver zero-knowledge protocol is located in ocelot/src/quarksilver.

Compile

We have tested the code with Rust v1.58.1. It requires an x86 processor with AESNI and SSE2 instruction set extensions. To compile the benchmarks, run cargo build --release. Then the benchmark programs can be found under target/release/mozzarella_bench and target/release/qs_mult_bench.

Running the Benchmarks

The benchmark binaries have a builtin --help which documents the available option.

Example: VOLE Extension Benchmark

Sender / Prover Command

./target/release/mozzarella_bench \
--party prover \
--listen \
--host ::1 \
--threads=4 \
--repetitions=10 \
--json \
--ring=r144 \
--base-vole-size=553600 \
--num-noise-coordinates=2186 \
--extension-size=10557972

Receiver / Verifier Command

./target/release/mozzarella_bench \
--party verifier \
--host ::1 \
--threads=4 \
--repetitions=10 \
--json \
--ring=r144 \
--base-vole-size=553600 \
--num-noise-coordinates=2186 \
--extension-size=10557972

Footnotes

  1. The original README can be found here.

About

Vector OLE and zero-knowledge for Z2k. https://ia.cr/2022/819

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.1%
  • Other 0.9%