Skip to content

AarhusCrypto/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). 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.

Releases

No releases published

Packages

No packages published

Languages