A Language for Probabilistically Oblivious Computation

11/25/2017
by   David Darais, et al.
0

An oblivious computation is one that is free of direct and indirect information leaks, e.g., due to observable differences in timing and memory access patterns. This paper presents Lobliv, a core language whose type system enforces obliviousness. Prior work on type-enforced oblivious computation has focused on deterministic programs. Lobliv is new in its consideration of programs that implement probabilistic algorithms, such as those involved in cryptography. Lobliv employs a substructural type system and a novel notion of probability region to ensure that information is not leaked via the distribution of visible events. The use of regions was motivated by a source of unsoundness that we discovered in the type system of ObliVM, a language for implementing state of the art oblivious algorithms and data structures. We prove that Lobliv's type system enforces obliviousness and show that it is nevertheless powerful enough to check state-of-the-art, efficient oblivious data structures, such as stacks and queues, and even tree-based oblivious RAMs.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
06/24/2020

Raising Expectations: Automating Expected Cost Analysis with Types

This article presents a type-based analysis for deriving upper bounds on...
research
10/25/2019

Pointer Life Cycle Types for Lock-Free Data Structures with Memory Reclamation

We consider the verification of lock-free data structures that manually ...
research
06/15/2022

Searching Entangled Program Spaces

Many problem domains, including program synthesis and rewrite-based opti...
research
07/11/2022

Program Adverbs and Tlön Embeddings

Free monads (and their variants) have become a popular general-purpose t...
research
12/14/2018

Truly Visual Polymorphic Algebraic Data Structures through Maramafication

This paper presents a so-called maramafication of an essential part of f...
research
07/23/2020

Recursive Variable-Length State Compression for Multi-Core Software Model Checking

High-performance multi-core software typically uses concurrent data stru...

Please sign up or login with your details

Forgot password? Click here to reset