Specification

MPC (SPDZ)

**Draft.** Reference implementation: `crates/confium-privacy/src/mpc.rs`.


status: accepted

Status

Draft. Reference implementation: crates/confium-privacy/src/mpc.rs.

Motivation

SPDZ (Speedz, pronounced “spuds”) is a malicious-secure MPC protocol for arithmetic circuits. It’s the basis for general-purpose secure multi-party computation.

Scope

  • 2-party and N-party MPC
  • Arithmetic circuits over a prime field
  • Malicious security via SPDZ MACs
  • Online phase (fast) + offline phase (preprocessing with somewhat homomorphic encryption)

Out of scope

  • Boolean circuits (use garbled circuits separately)
  • Honest-majority protocols (we cover dishonest-majority SPDZ only)

Specification

Setup

. Each party generates an SPDZ keypair. . Parties run preprocessing to generate Beaver triples (using somewhat homomorphic encryption or oblivious transfer). . Triples are pre-shared and MAC’d.

Online phase

For each multiplication gate in the circuit:

. Parties broadcast masked shares of their inputs. . Each party computes a partial output using a precomputed triple. . MAC check at the end confirms no cheating.

Security considerations

  • Preprocessing is the expensive phase; running out of triples stops the protocol.
  • MAC verification MUST happen at the end of the circuit; if MAC fails, EVERYTHING is discarded.
  • SPDZ provides malicious security with abort, not fairness (some parties may learn the output before abort).

References

  • Damgård, I., Pastro, V., Smart, N., & Zakarias, S. (2012). Multiparty Computation from Somewhat Homomorphic Encryption. CRYPTO 2012.
  • Confium source: crates/confium-privacy/src/mpc.rs