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)
Getting Started
Code: https://github.com/samee/obliv-c
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
Fast Oblivious Memories:
floram (CCS 2017)
SqORAM (S&P 2016)
Cryptographic library:
Absentminded Crypto Kit
Half-Gates (EuroCrypt 2015)
Distributed Learning
Distributed Linear Regression (PETS 2017)
MPC + Differential Privacy (NeurIPS 2018)
Secure Stable Matching (CCS 2016)
Sub-String Search:
Oblivious Knuth-Morris-Pratt
Blind Justice: Fairness with Encrypted Sensitive Attributes (ICML 2018)
Private Nearest Neighbors
Secure Deep Learning
Multi-party data analytics:
Conclave (EuroSys 2019)
Encrypted email:
Pretzel (SIGCOMM 2017)
Secure Spreadsheet, Calctopia, 2017.
Publications and Talks
USENIX Sec 2019: Evaluating Differentially Private Machine Learning in Practice
NeurIPS 2018: Distributed Learning without Distress: Privacy-Preserving Empirical Risk Minimization
PETS 2017: Privacy-Preserving Distributed Linear Regression on High-Dimensional Data
CCS 2016: Secure Stable Matching at Scale
S&P 2016: Revisiting Square-Root ORAM Efficient Random Access in Multi-Party Computation
EuroCrypt 2015: Two Halves Make a Whole: Reducing Data Transfer in Garbled Circuits using Half Gates
Obliv-C 2015: Obliv-C: A Language for Extensible Data-Oblivious Computation
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)
People
Bargav Jayaraman, PhD Student
Youssef Errami, Undergraduate Researcher
Kush Patel, Undergraduate Researcher
David Evans, Faculty Advisor
Alumni
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)
Other Notable Contributors:
Richard Li, Michael Mahoney, Xiao Wang, Weikeng Chen