MP-SPDZ  by data61

MPC framework for secure multi-party computation protocol benchmarking

Created 7 years ago
1,078 stars

Top 35.2% on SourcePulse

GitHubView on GitHub
Project Summary

MP-SPDZ is a comprehensive framework for benchmarking and executing secure multi-party computation (MPC) protocols. It supports a wide array of security models (semi-honest, covert, malicious) and computation domains (modulo prime, modulo 2^k, binary circuits), catering to researchers and developers exploring the performance trade-offs of different MPC techniques. The framework enables direct comparison of protocols like MASCOT, SPDZ2k, Yao's Garbled Circuits, and various secret sharing schemes.

How It Works

MP-SPDZ employs a virtual machine that executes programs compiled into a specific bytecode. It supports separate bytecode sets for arithmetic and boolean circuits, with a Python-based compiler that optimizes for communication rounds or AES-NI pipelining. The core advantage lies in its unified interface for diverse protocols, allowing users to run the same high-level Python program across different MPC paradigms and security assumptions, facilitating direct performance comparisons.

Quick Start & Requirements

  • Linux/macOS: Download distribution, Scripts/tldr.sh.
  • Source Distribution: Requires GCC/Clang, Python 3.5+, libgmp, libsodium, OpenSSL, Boost.Asio/Thread. make setup on Ubuntu/macOS.
  • Docker: docker build --tag mpspdz:mascot-party --build-arg machine=mascot-party.x then docker run ....
  • Dependencies: libOTe (with patches), NTL (optional for HE).
  • Hardware: x86/ARM64 CPUs. For optimizations, AES-NI, PCLMUL, AVX2, BMI2, ADX are recommended (CPUs from 2014+).
  • Docs: Read the Docs

Highlighted Details

  • Supports 15+ distinct MPC protocols across various security models and computation domains.
  • Enables mixed-circuit computation, combining arithmetic and binary operations.
  • Includes implementations for Oblivious RAM (ORAM) benchmarking.
  • Offers options for online-only benchmarking and insecure preprocessing for faster testing.

Maintenance & Community

The project originated from the SPDZ protocol and integrates previous work from SPDZ-2, SPDZ-BMR-ORAM, and SPDZ-Yao repositories. Contact is primarily via GitHub issues or mp-spdz@googlegroups.com.

Licensing & Compatibility

The repository does not explicitly state a license in the README. Compatibility for commercial use or closed-source linking is not specified.

Limitations & Caveats

The README states the software has not undergone a security review and should not be used for critical production code. Some protocols require specific hardware features (e.g., AVX for libOTe). Compilation on macOS may require specific compiler configurations.

Health Check
Last Commit

20 hours ago

Responsiveness

1 day

Pull Requests (30d)
1
Issues (30d)
27
Star History
13 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.