Paper 2016/619
5Gen: A Framework for Prototyping Applications Using Multilinear Maps and Matrix Branching Programs
Kevin Lewi, Alex J. Malozemoff, Daniel Apon, Brent Carmer, Adam Foltzer, Daniel Wagner, David W. Archer, Dan Boneh, Jonathan Katz, and Mariana Raykova
Abstract
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.
Note: Removed erroneous reference to 128-core machine in Table 8.3.
Metadata
- Available format(s)
- Category
- Implementation
- Publication info
- Published elsewhere. Major revision. ACM CCS 2016
- Keywords
- multilinear mapsmatrix branching programsfunctional encryptionobfuscation
- Contact author(s)
- klewi @ cs stanford edu
- History
- 2016-11-15: last of 2 revisions
- 2016-06-16: received
- See all versions
- Short URL
- https://ia.cr/2016/619
- License
-
CC BY
BibTeX
@misc{cryptoeprint:2016/619, author = {Kevin Lewi and Alex J. Malozemoff and Daniel Apon and Brent Carmer and Adam Foltzer and Daniel Wagner and David W. Archer and Dan Boneh and Jonathan Katz and Mariana Raykova}, title = {{5Gen}: A Framework for Prototyping Applications Using Multilinear Maps and Matrix Branching Programs}, howpublished = {Cryptology {ePrint} Archive, Paper 2016/619}, year = {2016}, url = {https://eprint.iacr.org/2016/619} }