awesome-mpc
A curated list of multi party computation resources and links.
https://github.com/rdragos/awesome-mpc
Last synced: 14 days ago
JSON representation
-
Misc
-
Tutorials
- ePrint papers - Frequently updated list of secure computation papers appearing on IACR eprint.
- MPC deployments - A hub for real-world MPC deployments maintained by UC
- MPC deployments - A hub for real-world MPC deployments maintained by UC
-
-
Software
-
Apps
- TLS Notary - Uses MPC to blindly sign TLS data, allowing users to make proofs about the content of data served to them over https.
- 2PC is for Lovers - Allows two people to find out if they are secretly in love with each other using malicious secure 2PC of a single AND gate.
- MPC Hello - Malicious secure 2PC calculating the larger of two numbers. Also a [template repository](https://github.com/voltrevo/mpc-hello) for building malicious secure 2PC web apps for any circuit.
-
Frameworks
- Carbyne Stack - MPC cloud platform that combines state-of-the-art MPC with cloud-native technology like Kubernetes, Istio, and Knative to enable MPC deployments at scale.
- EMP-toolkit - 2PC and MPC with garbled circuits; secure against semi-honest adversaries (emp-sh2pc). There are also ones resistant against malicious parties (emp-[ag2pc|m2pc|agmpc]) | eprint: [2017/189](https://eprint.iacr.org/2017/189), [2016/762](https://eprint.iacr.org/2016/762), [2017/030](https://eprint.iacr.org/2017/030).
- FRESCO - MPC supporting TinyTables or SPDZ protocols; secure against semi-honest or malicious adversaries. | [Practice'15](http://practice-project.eu/downloads/publications/D22.1-State-of-the-art-analysis-PU-V1.1.pdf).
- MPyC - BGW honest majority multi-party protocol; secure against semi-honest adversaries. | [TPMPC'18](https://www.win.tue.nl/~berry/mpyc/TPMPC2018.pdf).
- Obliv-C - 2PC with garbled circuits; secure against semi-honest adversaries. | eprint: [2015/1153](http://eprint.iacr.org/2015/1153).
- Sharemind - 2PC or 3PC with secret sharing; secure against semi-honest adversaries. | [Cyber'13](https://cyber.ee/research/theses/roman_jagomagis_msc.pdf).
- TNO-MPC - Collection of MPC generic software components, procedures, functionalities, and solutions based on secret sharing and (partially) homomorphic encryption developed in Python and Go. | Blogs and principles: [TNO MPC Lab](https://mpc.tno.nl/).
- ABY3 - 3PC with secret sharing for privacy preserving machine learning and database joins (PSI, Union, etc.); secure against semi-honest adversaries. | [CCS'18](https://eprint.iacr.org/2018/403.pdf), [2019/518](https://eprint.iacr.org/2019/518.pdf).
- Fancy-Garbling - 2PC with arithmetic garbled circuits; secure against semi-honest adversaries. | eprint: [2016/969](https://eprint.iacr.org/2016/969).
- HPMPC - HPMPC implements multiple MPC protocols and provides a high-level C++ interface to define functions and use cases. Out of the box, the framework supports computation in the boolean and arithmetic domain, mixed circuits, and fixed point arithmetic. Neural network models can be imported from PyTorch as part of [PIGEON](https://eprint.iacr.org/2024/1371.pdf).
- JIFF - JavaScript client and server libraries for building web-based applications that employ general purpose MPC; secure against semi-honest adversaries. | documentation: [link](https://multiparty.org/jiff/).
- MP-SPDZ - MPC with garbled circuits or secret sharing; secure against malicious or semi-honest adversaries with dishonest or honest majority. | [documentation](https://mp-spdz.readthedocs.io/en/latest/) | eprint: [2020/512](https://eprint.iacr.org/2020/521)
- MPC Framework - TypeScript framework for doing MPC with multiple techniques for generating circuits and MPC backends. In particular, it supports [summon](https://github.com/voltrevo/summon) circuits and [emp-wasm-backend](https://github.com/voltrevo/emp-wasm-backend) for malicious secure 2PC.
- MPZ - A collection of multi-party computation libraries written in Rust 🦀. Strives to provide safe, performant, modular and portable MPC software with a focus on usability.
- SecretFlow-SPU - A domain-specific compiler and runtime suite, that aims to provide a secure computation service with provable security. SPU compiler uses XLA as its front-end Intermediate Representation (IR) and SPU runtime implements various MPC protocols. | [USENIX ATC'23](https://www.usenix.org/system/files/atc23-ma.pdf).
- swanky - A suite of rust libraries for secure multi-party computation (currently includes oblivious transfer, garbled circuits, and private set intersection).
- ORQ - General framework for relational analytics written in C++; includes fast sorting implementations and supports multiple protocols. | [SOSP'25](https://dl.acm.org/doi/10.1145/3731569.3764833)
- MPC - Go-based secure two-party computation framework combining a garbled-circuit runtime, the MPCL compiler, circuit tooling, OT primitives, and a WIP BMR implementation.
- Velox - Post-Quantum asynchronous MPC implemented in Rust. Offers Fairness against $t<\frac{n}{3}$ malicious parties. Scales to $n=100$ parties in a geo-distributed network. | eprint: [2025/1630](https://eprint.iacr.org/2025/1630).
- Carbyne Stack - MPC cloud platform that combines state-of-the-art MPC with cloud-native technology like Kubernetes, Istio, and Knative to enable MPC deployments at scale.
- HPMPC - HPMPC implements multiple MPC protocols and provides a high-level C++ interface to define functions and use cases. Out of the box, the framework supports computation in the boolean and arithmetic domain, mixed circuits, and fixed point arithmetic. Neural network models can be imported from PyTorch as part of [PIGEON](https://eprint.iacr.org/2024/1371.pdf).
- Stoffel - A framework for robust MPC protocols which includes a custom compiler, VM runtime, SDKs targeted at developers with minimal MPC knowledge.
- TNO-MPC - Collection of MPC generic software components, procedures, functionalities, and solutions based on secret sharing and (partially) homomorphic encryption developed in Python and Go. | Blogs and principles: [TNO MPC Lab](https://mpc.tno.nl/).
- Zama KMS - Zama's MPC-based key management system for threshold key generation and threshold decryption for FHE. | [WAHC'23](https://eprint.iacr.org/2023/815), [Spec](https://github.com/zama-ai/threshold-fhe/blob/main/docs/CryptographicDocumentation.pdf)
-
Primitives
- aes-prng - Rust pseudo-random number generator based on AES.
- APRICOT - OT Extension secure against malicious adversaries. | [2015/546](http://eprint.iacr.org/2015/546).
- Distributed Vector-OLE - A two-party generator for Vector-OLE correlations. [CCS'19](https://eprint.iacr.org/2019/1084.pdf).
- LibOTe - Library with various OT Extensions.
- OT Extension - OT Extension secure against malicious adversaries. | [2015/061](https://eprint.iacr.org/2015/061).
- SCAPI - Various secure computation API's carefully documented with a clean code design in mind. | [2012/629](http://eprint.iacr.org/2012/629).
- SplitCommit - Additively homomorphic commitment scheme. | [2015/694](http://eprint.iacr.org/2015/694).
- TSS - A pure-Rust implementation of various threshold secret sharing schemes.
-
Protocols
- ORAM (Obliv-C) - Oblivous RAM. | [S&P'16](http://oblivc.org/docs/sqoram.pdf).
- BaRK-OPRF - Private Set Intersection. | [2016/799](https://eprint.iacr.org/2016/799).
- LibPSI - Various protocols for performing private set intersection.
- Linreg - Privacy preserving linear regression. | [2016/892](https://eprint.iacr.org/2016/892).
- Geppetri - Verifiable 3PC. | [2017/013](https://eprint.iacr.org/2017/013).
- MPECDSA - Threshold multiparty ECDSA from ECDSA assumptions. | [S&P'19](https://eprint.iacr.org/2019/523.pdf).
- Prio - Private aggregation with SNIPs (secret-shared non-interactive proofs). | [NSDI'17](https://crypto.stanford.edu/prio/paper.pdf).
- PSI - Private Set Intersection. | [2014/447](https://eprint.iacr.org/2014/447).
- ROOM - Read-Only Oblivious Maps and applications to secure machine learning on sparse data. | [CCS'19](https://eprint.iacr.org/2019/281.pdf).
- Blockchain-Crypto-MPC - Multiparty ECDSA signing in the cryptocurrency setting, includes an optimized GC library, OT, and more. | [CCS'18](https://eprint.iacr.org/2018/987).
- Fireblocks MPC - Multiparty ECDSA and EdDSA | eprint [2020/492](https://eprint.iacr.org/2020/492).
-
Retired software
- Frigate - C-style compiler for optimizing boolean circuits. | [Euro S&P'16](https://www.cise.ufl.edu/~traynor/papers/mood-eurosp16.pdf).
- SCALE-MAMBA - General MPC with secret sharing; secure against various adversaries including malicious with a dishonest majority. Software closer to a production system. | documentation: [link](https://homes.esat.kuleuven.be/~nsmart/SCALE/Documentation.pdf).
- SPDZ - General MPC with secret sharing; secure against malicious adversaries | eprint: [2017/1230](https://eprint.iacr.org/2017/1230).
- VIFF - 3+PC with secret sharing; secure against semi-honest adveraries.
- Wysteria - Multiparty computation with GMW, written in a functional PL; secure against semi-honest adversaries | [S&P'14](http://www.cs.umd.edu/~aseem/wysteria.pdf).
- SCALE-MAMBA - General MPC with secret sharing; secure against various adversaries including malicious with a dishonest majority. Software closer to a production system. | documentation: [link](https://nigelsmart.github.io/SCALE/Documentation.pdf).
- ABY - 2PC with secret sharing and garbled circuits; secure against semi-honest adversaries. | [NDSS'15](http://encrypto.de/papers/DSZ15.pdf).
- BatchDualEx - 2PC with garbled circuits; secure against malicious adversaries. | eprint: [2016/632](https://eprint.iacr.org/2016/632).
- CrypTen - MPC with secret sharing; secure against semi-honest adversary; focused on building PyTorch applications. | documentation: [link](https://crypten.ai/)
- EzPC - Offers a suite of tools for secure machine learning using semi-honest MPC protocols. It includes a language for secure machine learning, compilers for TensorFlow/Onnx to various MPC protocols, and frameworks for training and inference on deep neural networks. It provides an end-to-end solution for secure machine learning. | documentation: [link](https://github.com/mpc-msri/EzPC). End-to-End Platform: [link](https://github.com/microsoft/private-benchmarking)
- HoneyBadgerMPC - Robust MPC-based confidentiality layer for blockchains with guaranteed output delivery; secure against up to t < n/3 malicious parties.
- libTMCG - C++ framework with various primitives and tools for implementing multiparty games; secure against semi-honest adversaries. | documentation: [link](https://www.nongnu.org/libtmcg/libTMCG.html/index.html)
- Moose - 3PC with secret sharing; secure against semi-honest adversaries; focused on data processing and machine learning.
- MOTION - Mixed-Protocol MPC framework supporting full-threshold boolean and arithmetic GMW and BMR; secure against semi-honest adversaries. | eprint: [2020/1137](https://eprint.iacr.org/2020/1137).
- Obliv-Java - Faithful reimplementation of Java using Obliv-C. | eprint: [2017/878](https://eprint.iacr.org/2017/878)
- Tandem - 2PC with garbled circuits written in Rust; secure against malicious adversaries.
- Duplo - 2PC with garbled circuits; secure against malicious adversaries.
- FairPlayMP - GMW based multi-party protocol secure against semi-honest adversaries | [CCS'08](http://www.cs.huji.ac.il/project/Fairplay/FairplayMP/FairplayMP.pdf).
- Myst - Secure Multiparty Key Generation, Signature and Decryption JavaCard applet and host application | [CCS'17](https://acmccs.github.io/papers/p1583-mavroudisA.pdf).
- SDA - Secure distributed aggregation of high-dimensional vectors | [2017/643](https://eprint.iacr.org/2017/643).
- SPDZ-Yao - 2PC with garbled circuits; high-level language similar to SPDZ; secure against semi-honest adversaries.
- Semi-honest BMR - BMR protocol secure against semi-honest adversaries | [2016/1066](https://eprint.iacr.org/2016/1066).
- Tasty - 2PC with garbled circuits and homomorphic encryption | [2010/365](https://eprint.iacr.org/2010/365).
- TinyLEGO - 2PC with garbled circuits; secure against malicious adversaries | eprint: [2015/309](http://eprint.iacr.org/2015/309).
- VIFF - 3+PC with secret sharing; secure against semi-honest adversaries | [PhD Dissertation](https://pure.au.dk/portal/da/publications/cryptographic-protocols-theory-and-implementation/).
- Rosetta - 3PC with secret sharing; secure against semi-honest adversaries; focused on reusing the APIs of TensorFlow and allowing to transfer traditional TensorFlow codes into a privacy-preserving manner with minimal changes.
-
Tools
- CBMC-GC - Creates Boolean circuits from ANSI-C code optimized for secure computation. | [ShallowCC](https://web.archive.org/web/20180205110742/http://www.seceng.informatik.tu-darmstadt.de/assets/buescher/ShallowCC16.pdf).
- CipherCompute - Create generic MPC programs using [Rust](https://www.rust-lang.org/). Works on top of the [SCALE](https://github.com/KULeuven-COSIC/SCALE-MAMBA) engine. Enterprise software that provides UIs for participants handshaking, computations approval, datasources connections, auditing etc...
- Circom 2 Arithc - Compiles bristol circuits for MPC from circom code.
- Conclave - Big Data query compiler that combines cleartext processing with Spark and MPC protocols. | [EuroSys19](https://arxiv.org/abs/1902.06288).
- Garble-Lang - Programming language for MPC with Garbled Circuits. Garble is statically typed, low-level, purely functional and uses a syntax heavily inspired by Rust.
- HyCC - Optimizes circuits for hybrid MPC from ANSI-C. | [CCS'18](https://thomaschneider.de/papers/BDKKS18.pdf).
- MPC-SoK - Build environments for many MPC frameworks using Docker containers. | [S&P19](https://marsella.github.io/static/mpcsok.pdf).
- Private Benchmarking - Provides an End to End platform to perform Private Benchmarking using MPC and GPU-based Confidential Computing on LLMs/CNNs/Vision Models using [EzPC](https://github.com/mpc-msri/EzPC) framework. | [eprint](https://arxiv.org/abs/2403.00393).
- Summon - A TypeScript-like language for compiling bristol circuits for MPC. Also available as an [npm module](https://www.npmjs.com/package/summon-ts).
- Tiny-Garble - Logic Synthesis and Sequential Descriptions for Yao's Garbled Circuits. | [S&P'15](http://aceslab.org/sites/default/files/TinyGarble.pdf).
- UC Compiler - Valiant's Universal Circuit Compiler. | [2016/093](https://eprint.iacr.org/2016/093).
- Circom 2 Arithc - Compiles bristol circuits for MPC from circom code.
-
-
Theory
-
Books
- A Pragmatic Introduction to Secure Multi-Party Computation - A broad introduction to the field of secure multi-party computation, covering both the fundamental constructions and many of the recent improvements. The book emphazises the intuition and ideas behind the protocols rather than rigorous proofs.
- Applications of Secure Multiparty Computation - Collection of MPC protocols for several real-world tasks such as statistics.
- Efficient Secure Two-Party Protocols - Comprehensive study of efficient protocols and techniques for secure two-party computation – both general constructions that can be used to securely compute any functionality, and protocols for specific problems of interest.
- Secure Multiparty Computation and Secret Sharing - Comprehensive treatment of unconditionally secure techniques for multiparty computation (MPC) and secret sharing.
-
Courses
- Cryptographic Computing Course - Course on MPC, Homomorphic Encryption and related topics given by Claudio Orlandi at Aarhus University.
- FHE-MPC Advanced Grad Course - 'Informal grad course' in FHE and MPC.
- Secure Computation - Secure Computation course offered by Indian Institute of Science covering secret sharing schemes, oblivious transfer to impossibility results and zero-knowledge proofs.
- Secure Multi-Party Computation at Scale - Boston University course that covers mathematical and algorithmic foundations of MPC, with an additional focus on deployment of state-of-the-art MPC technologies.
- FHE-MPC Advanced Grad Course - 'Informal grad course' in FHE and MPC.
-
Tutorials
- Getting Started with MPC - Light compilation of basic resources for getting started in MPC study and research.
- How To Simulate It - A Tutorial on the Simulation Proof Technique.
- OSU Bibliography - An Annotated Bibliography of Practical Secure Computation.
- UC Security - Video lectures on UC security delivered by Ran Canetti.
- Getting Started with MPC - Light compilation of basic resources for getting started in MPC study and research.
- TinySMPC (tutorial)
- UC Security - Video lectures on UC security delivered by Ran Canetti.
-
-
Workshops
-
Retired software
- IIT Bombay MPC school - Covers basic and advanced topics related to the theory of MPC aimed at CS students and researchers interested in cryptography.
- Securing Computation - Conducted at Simons institute for Theory of Computing.
- The 1st BIU Winter School - Introductory lectures for basic secure computation constructions.
- The 5th BIU Winter School - Tutorials and recent advances in secure computation delivered in video format.
- TPMPC - Yearly workshop that started in Aarhus 2012. It has now become one of the biggest workshops for MPC people.
- The 1st BIU Winter School - Introductory lectures for basic secure computation constructions.
- The 5th BIU Winter School - Tutorials and recent advances in secure computation delivered in video format.
- IIT Bombay MPC school - Covers basic and advanced topics related to the theory of MPC aimed at CS students and researchers interested in cryptography.
- RWMPC - Real World MPC (RWMPC) Workshop. Started in 2025 and is co-located with the [Real World Crypto (RWC)](https://rwc.iacr.org/) conference.
-
Programming Languages
Categories
Sub Categories
Keywords
multi-party-computation
5
mpc
5
secure-computation
5
cryptography
5
multiparty-computation
4
oblivious-transfer
3
garbled-circuits
3
secret-sharing
3
rust
3
privacy
3
machine-learning
2
secure-multi-party-computation
2
smpc
2
privacy-enhancing-technologies
2
secure-multiparty-computation
2
ot-protocols
1
zero-knowledge
1
ot-extension
1
oblivious-transfer-extension
1
privacy-preserving
1
delta-ot
1
threshold-cryptography
1
confidential-computing
1
signature
1
schnorr
1
javacard
1
elgamal
1
yao-millionaires
1
sha-512
1
sha-256
1
programming-language
1
logical-circuits
1
hmac-sha512
1
hmac-sha256
1
golang
1
go
1
garbled-circuit
1
ed25519
1
aes-128-gcm
1
aes-128-cbc
1
web-security
1
multiparty
1
multi-party
1
javascript-library
1
javascript
1
cybersecurity
1
statistics
1
homomorphic-encryption
1
prng
1
aes
1