Cryptology ePrint Archive: Report 2017/787

Indistinguishable Predicates: A New Tool for Obfuscation

Lukas Zobernig and Steven D. Galbraith and Giovanni Russello

Abstract: Opaque predicates are a commonly used technique in program obfuscation, intended to add complexity to control flow and to insert dummy code or watermarks. We survey a number of methods to remove opaque predicates from obfuscated programs, hence defeating the intentions of the obfuscator. Our main contribution is an obfuscation technique that introduces opaque constant predicates that are provably indistinguishable from obfuscations of certain other predicates in the program. Our technique resists all known efficient static attacks on opaque predicates. We present an evaluation of our implementation of the scheme. This includes measurements of its performance impact on an obfuscated instance versus a vanilla one and an experimental verification that the obfuscator is functionality preserving.

Category / Keywords: applications / program obfuscation, indistinguishable/opaque predicates

Date: received 20 Aug 2017

Contact author: lukas zobernig at auckland ac nz

Available format(s): PDF | BibTeX Citation

Version: 20170821:133514 (All versions of this report)

Short URL: ia.cr/2017/787

Discussion forum: Show discussion | Start new discussion


[ Cryptology ePrint archive ]