Copyright by Venkata Vivek Kumar Koppula 2018
Total Page:16
File Type:pdf, Size:1020Kb
Copyright by Venkata Vivek Kumar Koppula 2018 The Dissertation Committee for Venkata Vivek Kumar Koppula certifies that this is the approved version of the following dissertation: Program Obfuscation: New Applications and Constructions from Standard Assumptions Committee: Brent Waters, Supervisor Adam Klivans Amit Sahai David Zuckerman Program Obfuscation: New Applications and Constructions from Standard Assumptions by Venkata Vivek Kumar Koppula, DISSERTATION Presented to the Faculty of the Graduate School of The University of Texas at Austin in Partial Fulfillment of the Requirements for the Degree of DOCTOR OF PHILOSOPHY THE UNIVERSITY OF TEXAS AT AUSTIN August 2018 Acknowledgments First, I am extremely thankful to my advisor, Brent Waters, without whose guidance and support this thesis would not have been possible. His enthusiasm towards research has been a great source of motivation, and I feel truly indebted to him. I am also grateful to Amit Sahai for hosting me at UCLA on multiple occasions, and for his engaging discussions. This thesis mainly consists of two separate projects, and I wish to thank my collaborators Allison Bishop, Rishab (L.C.) Goyal and Brent Waters for the numerous discussions on these works. Special thanks to Rishab for both the technical as well as non-technical conversations we've had over the last four years. I am also thankful to colleagues with whom I had the pleasure to do research (that is not part of this thesis). Many thanks to my PhD committee members (Adam Klivans, Amit Sahai and David Zuckerman) for their valuable feedback on my thesis. Finally, I thank my friends and family for their constant support and confidence in me. iv Program Obfuscation: New Applications and Constructions from Standard Assumptions Publication No. Venkata Vivek Kumar Koppula, Ph.D. The University of Texas at Austin, 2018 Supervisor: Brent Waters Code obfuscation has been one of the main focal points of cryptographic research over the last few years. This proposed thesis studies two different as- pects of program obfuscation. In the first part, we examine the power of indistinguishability obfuscation. This notion of indistinguishability obfusca- tion requires that the obfuscation of two functionally identical programs must be computationally indistinguishable. In this work, we show how obfusca- tion for circuits can be used to obfuscate Turing machines. Our obfuscation scheme satisfies the succinctness requirement; that is, the obfuscation of a Turing machine M has size polynomial in the machine description jMj and a maximum bound on the input length n. Previous works that addressed this problem required an additional bound on the maximum space used by the Turing machine. Our construction is based on indistinguishability obfuscation for circuits, one way functions and injective pseudo random generators. v In the second part of the proposed dissertation, we study constructions of obfuscation for restricted function classes under standard assumptions. We introduce the notion of lockable obfuscation. In a lockable obfuscation scheme there exists an obfuscation algorithm that takes as input a security parame- ter, a program P , a message m and \lock value" α and outputs an obfuscated program P~. One can evaluate the obfuscated program P~ on any input x where the output of evaluation is the message m if P (x) = α and otherwise receives a rejecting symbol. We proceed to provide a construction of lockable obfuscation and prove it secure under the Learning with Errors (LWE) assumption. Previ- ous constructions of obfuscation under standard assumptions worked for much weaker function classes such as point functions and conjunctions. Next, we describe multiple applications of lockable obfuscation. The first application is a generic transformation of any attribute-based encryption (ABE) scheme into one in which the attributes used to encrypt the message are hidden from any user that is not authorized to decrypt the message. Similarly, we show how to upgrade broadcast encryption schemes to have one-sided anonymity. We also show applications of lockable obfuscation to separation and uninstantiability results. vi Table of Contents Acknowledgments iv Abstract v Chapter 1. Introduction 1 1.1 A Brief History of Program Obfuscation . .2 1.2 Summary of Our Results . 12 1.2.1 Indistinguishability Obfuscation for Turing Machines . 13 1.2.2 Lockable Obfuscation . 16 Chapter 2. Indistinguishability Obfuscation for Turing Machines 22 2.1 Overview of our scheme . 22 2.2 Preliminaries . 30 2.2.1 Notations . 30 2.2.2 Puncturable Pseudorandom Functions . 31 2.2.3 Obfuscation . 32 2.3 iO-compatible Primitives . 33 2.3.1 Iterators . 33 2.3.1.1 Construction . 36 2.3.1.2 Security . 38 2.4 Positional Accumulators . 42 2.4.1 Construction . 48 2.4.1.1 Correctness . 52 2.4.1.2 Security . 53 2.4.2 Splittable Signatures . 61 2.4.3 Construction . 66 2.4.3.1 Proofs of Security . 69 2.5 Message Hiding Encodings . 85 vii 2.5.1 Construction . 86 2.5.2 Proof of Security . 89 2.5.3 Proof of Lemma 2.11 . 99 2.5.4 Proof of Lemma 2.12 . 106 2.5.5 Proof of Lemma 2.13 . 119 2.5.5.1 Analysis . 123 2.5.6 Proof of Lemma 2.14 . 128 2.5.6.1 Analysis . 129 2.5.7 Proof of Lemma 2.15 . 130 2.5.7.1 Analysis . 133 2.6 Machine Hiding Encodings . 135 2.6.1 Construction . 137 2.6.2 Proof of Security . 140 2.6.3 Proof Outline for Lemma 2.16 . 145 2.6.4 Proof of Lemma 2.17 . 162 2.6.5 Proof of Lemma 2.18 . 178 2.6.5.1 Analysis . 180 2.6.6 Extensions and Variations . 181 Chapter 3. Lockable Obfuscation 183 3.1 Overview of our Lockable Obfuscation Construction . 183 3.2 Preliminaries . 191 3.2.1 Lattice Preliminaries . 193 3.2.2 Branching Programs . 197 3.2.3 Public Key Encryption . 198 3.2.4 Homomorphic Encryption . 200 3.2.4.1 Leveled Homomorphic Encryption . 200 3.2.4.2 Fully Homomorphic Encryption . 202 3.2.5 Pairwise Independent Hash Functions . 203 3.2.6 Low-Depth Pseudorandom Generators with Polynomial Stretch . 204 3.3 Lockable Obfuscation . 205 3.3.1 Correctness . 206 viii 3.3.2 Security . 208 3.3.3 Extending the Message Space . 209 3.3.4 Relationship with Existing Cryptographic Primitives . 211 3.4 Our Construction . 212 3.4.1 Security . 217 3.4.1.1 Simulator Sim ................... 217 3.4.1.2 Sequence of Hybrid Games . 218 3.4.1.3 Analysis . 224 3.4.2 On the Need for a Pseudo Random Generator . 231 3.5 Predicate Encryption: Achieving 1-Sided Security . 233 3.5.1 Key-Policy ABE with Bounded Decryption Depth and Size233 3.5.2 Generalizing to Other Types . 245 3.5.3 Encrypting to a Hidden Public Key . 248 3.6 Separating IND-CPA security and Circular Security . 249 3.6.1 Separating IND-CPA Security from n-Circular Security . 252 3.6.2 Separating IND-CPA Security from 1-Circular Security for Bit Encryption . 258 3.6.3 Creating an Unbounded Public Key Cycle Tester . 261 3.7 Uninstantiability of the Fujisaki-Okamoto and Related Trans- formations . 264 3.7.1 The Fujisaki-Okamoto Transformation . 266 3.8 Indistinguishability Obfuscation for Rejecting Programs . 276 3.8.1 Defining Indistinguishability Obfuscation for Rejecting Programs . 278 3.8.2 Witness Encryption . 280 3.8.3 Construction of Rejecting Indistinguishability Obfuscator from Witness Encrytion . 281 3.8.3.1 Security . 283 3.9 Upgrading Broadcast Encryption to Anonymous Broadcast En- cryption . 286 3.9.1 Preliminaries . 287 3.9.1.1 Security . 288 3.9.2 Upgrading Broadcast Encryption to One-Sided Anony- mous Broadcast Encryption . 290 3.9.2.1 Security . 293 ix Index 302 Bibliography 303 x Chapter 1 Introduction Cryptography (derived from Greek words krypt´os meaning `secret' and graphein meaning `to write') is the art of hiding secrets. Traditionally, cryp- tographers have been interested in hiding secrets in messages { transforming secret plaintext messages into scrambled text such that only authorized parties can recover the underlying plaintext message. Decades of research resulted in very efficient solutions for hiding secrets. Since the dawn of the software industry, a different `secret-hiding' prob- lem has emerged : hiding secrets in programs. Suppose Alice has an exciting software P . How can Alice `scramble' this program P into a program P 0 such that P 0 works exactly as P , but hides the implementation of P ? We refer to this problem as code obfuscation, and it is a well-studied problem, both in theory and practice. 1 1.1 A Brief History of Program Obfuscation The goal of code obfuscation is to make programs `maximally unintel- ligible'. An obfuscator takes as input the description of a program P 1 and compiles it into a program P 0 such that P and P 0 have identical functionality, yet P 0 `hides' the internal logic of P . The idea of code obfuscation has been around for many years. Diffie and Hellman, in their seminal work on public- key encryption [241], envisioned that such one-way compilers could be used to transform any private-key encryption schemes to a public-key encryption schemes. In practice, there exist multiple commercial solutions for code ob- fuscation. However, all these solutions are primarily heuristic approaches, and there are no hardness guarantees. Theoretical Foundations of Code Obfuscation: A theoretical study of obfuscation was initiated by the seminal work of Barak, Goldreich, Impagli- azzo, Rudich, Sahai, Vadhan and Yang [61], who proposed various definitions for code obfuscation. One of the definitions they proposed was called vir- tual black box(VBB) obfuscation, which (informally) states that having an obfuscation of program P is similar to having oracle access to P (that is, any predicate that can be computed in polynomial time from the obfuscated code can be simulated via oracle access to the program).