1. One-Time Programs made Practical 2019 FinancialCryptography IntelSGX
    Lianying Zhao, Joseph I. Choi, Didem Demirag, Kevin R. B. Butler, Mohammad Mannan, Erman Ayday, and Jeremy Clark
    [View PDF on arxiv.org]
    [Show BibTex Citation]

    title={One-Time Programs Made Practical},
    journal={Lecture Notes in Computer Science},
    publisher={Springer International Publishing},
    author={Zhao, Lianying and Choi, Joseph I. and Demirag, Didem and Butler, Kevin R. B. and Mannan, Mohammad and Ayday, Erman and Clark, Jeremy},

A one-time program (OTP) works as follows: Alice provides Bob with the implementation of some function. Bob can have the function evaluated exclusively on a single input of his choosing. Once executed, the program will fail to evaluate on any other input. State-of-the-art one-time programs have remained theoretical, requiring custom hardware that is cost-ineffective/unavailable, or confined to adhoc/unrealistic assumptions. To bridge this gap, we explore how the Trusted Execution Environment (TEE) of modern CPUs can realize the OTP functionality. Specifically, we build two flavours of such a system: in the first, the TEE directly enforces the one-timeness of the program; in the second, the program is represented with a garbled circuit and the TEE ensures Bob’s input can only be wired into the circuit once, equivalent to a smaller cryptographic primitive called one-time memory. These have different performance profiles: the first is best when Alice’s input is small and Bob’s is large, and the second for the converse.