An obfuscator is a compiler that transforms any program into an obfuscated program that has the same input-output functionality as the original program, but is “unintelligible”. Obfuscation has applications for cryptography and for software protection.


Alwen, J., Barbosa, M., Farshim, P., Gennaro, R., Gordon, S.D., Tessaro, S. "On the Relationship between Functional Encryption, Fully Homomorphic Encryption, and Obfuscation." To appear at the Fourtheenth IMA International Conference on Cryptogaphy and Coding.

Goldwasser, S., Kalai, Y., Popa, R., Vaikuntanathan, V., and Zeldovich, N. "Succinct Functional Encryption and Applications: Reusable Garbled Circuits and Beyond." IACR Cryptology ePrint Archive 2012: 733, 2012.

Bitansky, N., Canetti, R., Goldwasser, S., Halevi, S., Tauman Kalai, Y., and Rothblum, G.N. “Program Obfuscation with Leaky Hardware.” In Dong Hoon Lee, Xiaoyun Wang, editors, ASIACRYPT 2011 - 17th International Conference on the Theory and Application of Cryptology and Information Security, Seoul, South Korea, December 4-8, 2011, volume 7073 of Lecture Notes in Computer Science, pages 722-739, 2011. Springer.

Goldwasser, G., Tauman Kalai, Y., and Rothblum, G.N. “One-Time Programs.” 28th International Cryptology Conference (CRYPTO 2008), pages 39-56, Santa Barbara, CA, July 2008.

Goldwasser, S. and Rothblum, G. “On Best-Possible Obfuscation.” Theory of Cryptography, 4th Theory of Cryptography Conference (TCC 2007), volume 4392 of Lecture Notes in Computer Science, pages 194-213, 2007. Springer.

Goldwasser, S. and Tauman Kalai, Y. “On the Impossibility of Obfuscation with Auxiliary Input.” Proceedings of the 46th Annual IEEE Symposium on Foundations of Computer Science (FOCS 2005), Pittsburgh, PA, pages 553-562, October 2005.