MP-SPDZ  by data61

MPC framework for secure multi-party computation protocol benchmarking

created 6 years ago
1,055 stars

Top 36.4% 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

6 days ago

Responsiveness

1 day

Pull Requests (30d)
1
Issues (30d)
18
Star History
48 stars in the last 90 days

Explore Similar Projects

Starred by Andrej Karpathy Andrej Karpathy(Founder of Eureka Labs; Formerly at Tesla, OpenAI; Author of CS 231n), Georgios Konstantopoulos Georgios Konstantopoulos(CTO, General Partner at Paradigm), and
2 more.

gpu.cpp by AnswerDotAI

0.2%
4k
C++ library for portable GPU computation using WebGPU
created 1 year ago
updated 2 weeks ago
Starred by Andrej Karpathy Andrej Karpathy(Founder of Eureka Labs; Formerly at Tesla, OpenAI; Author of CS 231n), Anil Dash Anil Dash(Former CEO of Glitch), and
15 more.

llamafile by Mozilla-Ocho

0.2%
23k
Single-file LLM distribution and runtime via `llama.cpp` and Cosmopolitan Libc
created 1 year ago
updated 1 month ago
Starred by Bojan Tunguz Bojan Tunguz(AI Scientist; Formerly at NVIDIA), Mckay Wrigley Mckay Wrigley(Founder of Takeoff AI), and
8 more.

ggml by ggml-org

0.3%
13k
Tensor library for machine learning
created 2 years ago
updated 3 days ago
Starred by Andrej Karpathy Andrej Karpathy(Founder of Eureka Labs; Formerly at Tesla, OpenAI; Author of CS 231n), Nat Friedman Nat Friedman(Former CEO of GitHub), and
32 more.

llama.cpp by ggml-org

0.4%
84k
C/C++ library for local LLM inference
created 2 years ago
updated 16 hours ago
Feedback? Help us improve.