6 research outputs found
Recommended from our members
Optimizing Cryptographic Obfuscation
Cryptographic obfuscation is a powerful tool that makes programs “unintelligible” yet still runnable. It essentially gives programs the ability to keep secrets. The practical applications of obfuscation range from keeping secrets in banking applications to preventing software theft to providing secure messaging applications. The cryptographic applications of obfuscation are also vast – a tool that hides secrets in programs essentially enables all other cryptographic constructions. Despite (or perhaps due to) its power, obfuscation is currently wildly inefficient and on shaky theoretical ground. Its shaky theoretical ground in particular has resulted in a lack of engineering effort at making it more efficient. In this work, we focus largely on efficiency. We explore the concrete efficiency of multilinear maps, which are the basis of many cryptographic obfuscation constructions. Multilinear maps are mathematical objects that allow oblivious addition and multiplication of encrypted values. Using multilinear maps, we give the first ever implementations of obfuscation and multi-input functional encryption (MIFE: a variant of obfuscation) for branching programs. Along the way, we create the 5Gen framework for implementations of multilinear map-based applications. We apply the 5Gen framework to experiment with obfuscating point functions and MIFE of order-revealing encryption. We also explore efficiency in the context of obfuscators and MIFE for circuits. Circuits are more efficient than branching programs for many functions. We give the first MIFE construction for circuits and prove its security in an ideal model. Our scheme is efficient. To compare, we implement all known circuit obfuscation schemes using the 5Gen framework, and experiment with obfuscating a PRF. This results in the most complex PRF obfuscated to date – with 12 bits of security. Finally, recently Bishop et al. showed an obfuscation scheme for the specific functionality of wildcard pattern-matching [BKM+18]. This is a simple type of string matching where strings must match a pattern exactly except where there are wildcards. This obfuscation scheme simply relies on the generic group model, with no multilinear maps. Inspired by their work, and the deep connection of functional encryption to obfuscation, we give a function-private, public-key functional encryption scheme for the same wildcard pattern-matching functionality. Our scheme is the first such scheme and we prove its security in a generic model
Linicrypt: A Model for Practical Cryptography
A wide variety of objectively practical cryptographic schemes can be constructed using only symmetric-key operations and linear operations. To formally study this restricted class of cryptographic algorithms, we present a new model called {\em Linicrypt}. A Linicrypt program has access to a random oracle whose inputs and outputs are field elements, and otherwise manipulates data only via fixed linear combinations.
Our main technical result is that it is possible to decide {\em in polynomial time} whether two given Linicrypt programs induce computationally indistinguishable distributions (against arbitrary PPT adversaries, in the random oracle model).
We show also that indistinguishability of Linicrypt programs can be expressed as an existential formula, making the model amenable to {\em automated program synthesis.} In other words, it is possible to use a SAT/SMT solver to automatically generate Linicrypt programs satisfying a given security constraint. Interestingly, the properties of Linicrypt imply that this synthesis approach is both sound and complete.
We demonstrate this approach by synthesizing Linicrypt constructions of garbled circuits
5Gen-C: Multi-input Functional Encryption and Program Obfuscation for Arithmetic Circuits
Program obfuscation is a powerful security primitive with many applications.
White-box cryptography studies a particular subset of program obfuscation
targeting keyed pseudorandom functions (PRFs), a core component of systems
such as mobile payment and digital rights management. Although the white-box
obfuscators currently used in practice do not come with security proofs and
are thus routinely broken, recent years have seen an explosion of
\emph{cryptographic} techniques for obfuscation, with the goal of avoiding
this build-and-break cycle.
In this work, we explore in detail cryptographic program obfuscation and the
related primitive of multi-input functional encryption (MIFE). In particular,
we extend the 5Gen framework (CCS 2016) to support circuit-based MIFE and
program obfuscation, implementing both existing and new constructions. We then
evaluate and compare the efficiency of these constructions in the context of
PRF obfuscation.
As part of this work we (1) introduce a novel instantiation of MIFE that works
directly on functions represented as arithmetic circuits, (2) use a known
transformation from MIFE to obfuscation to give us an obfuscator that performs
better than all prior constructions, and (3) develop a compiler for generating
circuits optimized for our schemes. Finally, we provide detailed experiments,
demonstrating, among other things, the ability to obfuscate a PRF with a
64-bit key and 12 bits of input (containing 62k gates) in under 4 hours, with
evaluation taking around 1 hour. This is by far the most complex function
obfuscated to date
Garbled Neural Networks are Practical
We show that garbled circuits are a practical choice for secure evaluation of neural network classifiers. At the protocol level, we start with the garbling scheme of Ball, Malkin & Rosulek (ACM CCS 2016) for arithmetic circuits and introduce new optimizations for modern neural network activation functions. We develop fancy-garbling, the first implementation of the BMR16 garbling scheme along with our new optimizations, as part of heavily optimized garbled-circuits tool that is driven by a TensorFlow classifier description.
We evaluate our constructions on a wide range of neural networks. We find that our approach is up to 100x more efficient than straight-forward boolean garbling (depending on the neural network). Our approach is also roughly 40% more efficient than DeepSecure (Rouhani et al., DAC 2018), the only previous garbled-circuit-based approach for secure neural network evaluation, which incorporates significant optimization techniques for boolean circuits. Furthermore, our approach is competitive with other non-garbled-circuit approaches for secure neural network evaluation
A fast and verified software stack for secure function evaluation
We present a high-assurance software stack for secure function evaluation (SFE). Our stack consists of three components: i. a verified compiler (CircGen) that translates C programs into Boolean circuits; ii. a verified implementation of Yao’s SFE protocol based on garbled circuits and oblivious transfer; and iii. transparent application integration and communications via FRESCO, an open-source framework for secure multiparty computation (MPC). CircGen is a general purpose tool that builds on CompCert, a verified optimizing compiler for C. It can be used in arbitrary Boolean circuit-based cryptography deployments. The security of our SFE protocol implementation is formally verified using EasyCrypt, a tool-assisted framework for building high-confidence cryptographic proofs, and it leverages a new formalization of garbled circuits based on the framework of Bellare, Hoang, and Rogaway (CCS 2012). We conduct a practical evaluation of our approach, and conclude that it is competitive with state-of-the-art (unverified) approaches. Our work provides concrete evidence of the feasibility of building efficient, verified, implementations of higher-level cryptographic systems. All our development is publicly available.POCI-01-0145-FEDER-006961, FCT-PD/BD/113967/2015info:eu-repo/semantics/publishedVersio
5Gen: A Framework for Prototyping Applications Using Multilinear Maps and Matrix Branching Programs
Secure multilinear maps (mmaps) have been shown to have remarkable
applications in cryptography, such as program obfuscation and multi-input
functional encryption (MIFE). To date, there has been little evaluation of
the performance of these applications. In this paper we initiate a systematic
study of mmap-based constructions. We build a general framework, called
5Gen, to experiment with these applications. At the top layer we develop an
optimizing compiler that takes in a high-level program and compiles it to an
optimized matrix branching program needed for the applications we consider.
Next, we optimize and experiment with several obfuscators and MIFE
constructions and evaluate their performance. The 5Gen framework is modular
and can easily accommodate new mmap constructions as well as new obfuscators
and MIFE constructions. 5Gen is an open-source tool that can be used by
other research groups to experiment with a variety of mmap-based
constructions