University of Minnesota
Program Analysis for Security
index.php

Program obfuscation

Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich, Amit Sahai, Salil P. Vadhan, and Ke Yang. “On the (im)possibility of obfuscating programs”. In International Cryptology Conference (CRYPTO), pages 1–18, Santa Barbara, CA, USA, August 2001.
[IACR] [Springer: seems not to have UMN access]

Matias Madou, Bertrand Anckaert, Bjorn De Sutter, and Koen De Bosschere. “Hybrid static-dynamic attacks against software protection mechanisms”. In Digital Rights Management Workshop (DRM), pages 75–82, Alexandria, VA, USA, November 2005.
[ACM]

Question: The Barak et al. paper (first reading) describes its constructions using Turing machines and combinatorial circuits, since these are the simplest representations to use in a proof. But the same constructions would work for other program representations with appropriate changes. For instance in practical security applications we might be interested in whether we can obfuscate x86 binary programs. Based on the constructions in the proofs up to and including Theorem 3.4 of the paper, describe how you would construct un-obfuscatable x86 binary programs Fα,β and Gα,β, and what concretely it means that the obfuscation fails (i.e., what the adversary called A in the proof does, that could not be done with black-box access).