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.

Tutorial

Walks through how to install Obliv-C and build your first data-oblivious application using a simple linear regression example application.

Documentation

Documentation on Obliv-C’s language extensions and library functions.

Rust Wrapper

Calling Obliv-C protocols from Rust programs (Phillipp Schoppmann)

Obliv-Java

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)

Decentralized CAs

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

Full publications list…

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)

Full talks list…

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