Obliv-C is a simple GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs.
The idea is simple: if you are performing a multi-party distributed computation with sensitive data, just write it in our Obliv-C langauge and compile/link it with your project. The result will be a secure multi-party cryptographic protocol that performs this operation without revealing any of the inputs or intermediate values of the computation to any of the parties. Only the final outputs are revealed.
This paper motivates and describes Obliv-C:
Samee Zahur and David Evans. Obliv-C: A Language for Extensible Data-Oblivious Computation, Cryptology ePrint Archive: Report 2015:1153 [PDF], November 2015.
This mini-book provides an introduction to secure multi-party computation:
David Evans, Vladimir Kolesnikov and Mike Rosulek. A Pragmatic Introduction to Secure Multi-Party Computation, NOW Publishers, December 2018. [PDF] (Chinese translation also available)
This repository includes the implementation of Obliv-C and several example applications and benchmarks.
Walks through how to install Obliv-C and build your first data-oblivious application using a simple linear regression example application.
Documentation on Obliv-C’s language extensions and library functions.
Calling Obliv-C protocols from Rust programs (Phillipp Schoppmann)
Faithful reimplementation of Obliv-C in Java (Calctopia)
Projects Using Obliv-C
Libraries and Protocols
Absentminded Crypto Kit
Half-Gates (EuroCrypt 2015)
Secure Stable Matching (CCS 2016)
Multi-party data analytics:
Conclave (EuroSys 2019)
Pretzel (SIGCOMM 2017)
Secure Spreadsheet, Calctopia, 2017.
Publications and Talks
USENIX Sec 2019: Evaluating Differentially Private Machine Learning in Practice
CCS 2016: Secure Stable Matching at Scale
ECRYPT NET: Secure Multi-Party Computation: Promises, Protocols, and Practicalities (Paris, 27 June 2017) [SpeakerDeck]
Federal Trade Commission: Private Data Analysis using Multi-Party Computation (joint presentation with Denis Nekipelov, 18 August 2016)
Aarhus: From Mercury Delay Lines to Magnetic Core Memories: Progress in Oblivious Memories (MPC Workshop, June 2016) [Speaker Deck]
iDash: Obliv-C: A Simple C Extension for SMC (Samee Zahur’s talk at iDash Privacy & Security Workshop 2015, won award for fastest “Hamming Distance” execution)
CROSSING: Multi-Party Computation for the Masses (includes video) (CROSSING Conference, Darmstadt, June 2015)
Bargav Jayaraman, PhD Student
Youssef Errami, Undergraduate Researcher
Kush Patel, Undergraduate Researcher
David Evans, Faculty Advisor
Samee Zahur, Project Founder and Leader (now at Google)
Darion Cassel, Undergraduate Researcher (now at CMU)
Natnatee (“Ko”) Dokmai, Undergraduate Researcher (now at Indiana University)
Jack Doerner, Wizard of Oblivion (now at Northeastern)
Samuel Havron, Undergraduate Researcher (now at Cornell)
Hannah Li, Undergraduate and Masters Student (now at Facebook)
Jesse Nayak, Undergraduate Researcher Nathaniel Grevatt, Undergraduate Researcher (2018-2019)
Jonah Weissman, Undergraduate Researcher (summer 2019)