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

Participates in

Builds on Indistinguishability Obfuscation

Produces Indistinguishability Obfuscation