Indistinguishability Obfuscation
Indistinguishability obfuscation (iO) is a form of program obfuscation in which the obfuscated programs for any two functionally equivalent circuits are computationally indistinguishable. It is considered a “universal” cryptographic primitive: combined with one-way functions, iO implies a vast number of cryptographic primitives. The first candidate construction was given by Garg, Gentry, Halevi, Raykova, Sahai, and Waters — GGHRSW13; the first construction from well-founded assumptions was given by Jain, Lin, and Sahai — JLS21.
Syntax
An indistinguishability obfuscator is an efficient randomized algorithm such that:
- , takes a circuit and outputs an obfuscated circuit ,
- for all inputs (functionality preservation).
Properties
Correctness
For all , circuits , and inputs : with probability 1.
Indistinguishability
For all pairs of circuits of the same size that compute the same function (i.e., for all ), and all efficient adversaries :
is negligible, where .
Variations
Virtual black-box obfuscation (VBB)
A stronger notion requiring that anything an efficient adversary can compute from the obfuscated program could be computed by a simulator with only oracle access to the program. VBB obfuscation is impossible for general circuits — standard (Barak et al. 2001).
Differing-inputs obfuscation (diO)
An intermediate notion between iO and VBB, which requires indistinguishability for pairs of circuits that are hard to distinguish on any input. Known to be equivalent to iO under certain conditions.
Other results
- MMap ⇒ iO
- DDH + LPN + LWE + NC1-PRG ⇒ iO
- Hash function + iO ⇒ PKE
- Hash function + iO ⇒ FE
- Hash function + iO ⇒ NIZK
- Hash function + iO ⇒ Deniable encryption
- Hash function + iO ⇒ Lossy trapdoor functions
- FE ⇒ iO
- VBB obfuscation is impossible for general circuits; iO is believed to be the “best possible” general obfuscation — standard
Participates in
Builds on Indistinguishability Obfuscation
- Hash function + iO ⇒ Deniable encryption
- Hash function + iO ⇒ DS
- Hash function + iO ⇒ FE
- Hash function + iO ⇒ Lossy trapdoor functions
- Hash function + iO ⇒ NIZK
- Hash function + iO ⇒ PKE
Produces Indistinguishability Obfuscation