ArticleslgStudy

computer science

Indistinguishability obfuscation

Indistinguishability obfuscation is a computer science topic covered in the lgStudy science library. This page brings together a partial reference excerpt, illustrations, worked examples, real-world applications and a short study plan, so you can understand Indistinguishability obfuscation rather than just read about it. In short: In cryptography, indistinguishability obfuscation (abbreviated IO or iO) is a type of software obfuscation with the defining property that obfuscating any two programs that compute the same mathematical function results in programs that cannot be distinguished from each other. Informally, such obfuscation hides the implementation of a program while still allowing users to run it.

Key takeaways

  • Indistinguishability obfuscation belongs to computer science; place it in that map before memorising details.
  • Learn the definition first, then one example that makes the definition concrete.
  • Connect Indistinguishability obfuscation to a quantity you can measure, compute or draw — that is where exam questions come from.
  • Reproduce the core statement of Indistinguishability obfuscation from memory before moving on to harder problems.

Reference excerpt

In cryptography, indistinguishability obfuscation (abbreviated IO or iO) is a type of software obfuscation with the defining property that obfuscating any two programs that compute the same mathematical function results in programs that cannot be distinguished from each other. Informally, such obfuscation hides the implementation of a program while still allowing users to run it. Formally, iO satisfies the property that obfuscations of two circuits of the same size which implement the same function are computationally indistinguishable. Indistinguishability obfuscation has several interesting theoretical properties. Firstly, iO is the "best-possible" obfuscation (in the sense that any secret about a program that can be hidden by any obfuscator at all can also be hidden by iO). Secondly, iO can be used to construct nearly the entire gamut of cryptographic primitives, including both mundane ones such as public-key cryptography and more exotic ones such as deniable encryption and functional encryption (which are types of cryptography that no-one previously knew how to construct), but with the notable exception of collision-resistant hash function families. For this reason, it has been referred to as "crypto-complete". Lastly, unlike many other kinds of cryptography, indistinguishability obfuscation continues to exist even if P=NP (though it would have to be constructed differently in this case), though this does not necessarily imply that iO exists unconditionally. Though the idea of cryptographic software obfuscation has been around since 1996, indistinguishability obfuscation was first proposed by Barak et al. (2001), who proved that iO exists if P=NP is the case. For the P≠NP case (which is harder, but also more plausible), progress was slower: Garg et al. (2013) proposed a construction of iO based on a computational hardness assumption relating to multilinear maps, but this assumption was later disproven. A construction based on "well-founded assumptions" (hardness assumptions that have been well-studied by cryptographers, and thus widely assumed secure) had to wait until Jain, Lin, and Sahai (2020). (Even so, one of these assumptions used in the 2020 proposal is not secure against quantum computers.) Currently known indistinguishability obfuscation candidates are very far from being practical. As measured by a 2017 paper, even obfuscating the toy function which outputs the logical conjunction of its thirty-two Boolean data type inputs produces a program nearly a dozen gigabytes large.

Formal definition

Let i O {\displaystyle {\mathcal {iO}}} be some uniform probabilistic polynomial-time algorithm. Then i O {\displaystyle {\mathcal {iO}}} is called an indistinguishability obfuscator if and only if it satisfies both of the following two statements:

Completeness or Functionality: For any Boolean circuit C of input length n and input x ∈ { 0 , 1 } n {\displaystyle x\in \{0,1\}^{n}} , we have Pr [ C ′ ( x ) = C ( x ) : C ′ ← i O ( C ) ] = 1. {\displaystyle \Pr[C'(x)=C(x):C'\leftarrow {\mathcal {iO}}(C)]=1.}

Indistinguishability: For every pair of circuits C 0 , C 1 {\displaystyle C_{0},C_{1}} of the same size k that implement the same functionality, the distributions { i O ( C 0 ) } {\displaystyle \{{\mathcal {iO}}(C_{0})\}} and { i O ( C 1 ) } {\displaystyle \{{\mathcal {iO}}(C_{1})\}} are computationally indistinguishable. In other words, for any probabilistic polynomial-time adversary A, there is a negligible function ε ( k ) {\displaystyle \varepsilon (k)} (i.e., a function that eventually grows slower than 1 / p ( k ) {\displaystyle 1/p(k)} for any polynomial p) such that, for every pair of circuits C 0 , C 1 {\displaystyle C_{0},C_{1}} of the same size k that implement the same functionality, we have | Pr [ A ( i O ( C 0 ) ) = 1 ] − Pr [ A ( i O ( C 1 ) ) = 1 ] | ≤ ε ( k ) . {\displaystyle |\Pr[A({\mathcal {iO}}(C_{0}))=1]-\Pr[A({\mathcal {iO}}(C_{1}))=1]|\leq \varepsilon (k).}

… excerpt ends here. Continue reading the full article.

Worked examples

Example 1 — a first encounter with Indistinguishability obfuscation

Start with the simplest possible case. Write down what Indistinguishability obfuscation claims or describes in one sentence, then invent the smallest concrete situation in which that sentence is true. In computer science, the smallest case is usually a single object, a single equation or a single measurement. Check that every symbol or term in your sentence has a meaning in that case.

Example 2 — changing one variable

Take the situation from Example 1 and change exactly one quantity: double it, halve it, or set it to zero. Predict what should happen to Indistinguishability obfuscation before you calculate. Comparing your prediction with the result is the fastest way to find out whether you understand the idea or only the words.

Example 3 — an exam-style question

Typical questions about Indistinguishability obfuscation ask you to (a) state it precisely, (b) apply it to given data, and (c) explain a limitation. Practise writing all three answers in under five minutes; the third part is what separates a full-mark answer from an average one.

Applications of Indistinguishability obfuscation

In research
Indistinguishability obfuscation appears in computer science research whenever the underlying quantities have to be modelled precisely. Papers usually cite it as a starting assumption and then explore where it breaks down.
In technology and industry
Engineering practice reuses Indistinguishability obfuscation in design rules, simulations and safety margins. Knowing the idea lets you read a specification sheet and understand why the numbers look the way they do.
In the classroom
Indistinguishability obfuscation is common in secondary-school and first-year university syllabi. It links to neighbouring topics Cryptographic primitives, Software obfuscation, so understanding it makes those chapters shorter.
In everyday life
Look for Indistinguishability obfuscation outside the textbook — in sport, cooking, traffic, electronics or the sky above you. An example you found yourself is remembered far longer than one you were given.

Affiliate

Preply — study more efficiently by working with a personal tutor. 50% off.

How to study Indistinguishability obfuscation in 20 minutes

  1. Read the reference excerpt below once, without taking notes.
  2. Close the page and write down what Indistinguishability obfuscation means in your own words.
  3. Compare your version with the excerpt and mark what you missed.
  4. Work through the three examples above with pen and paper.
  5. Explain Indistinguishability obfuscation out loud to somebody else — or to Teacher Smith in the lgStudy chat.

Frequently asked questions

What is Indistinguishability obfuscation in simple terms?

In cryptography, indistinguishability obfuscation (abbreviated IO or iO) is a type of software obfuscation with the defining property that obfuscating any two programs that compute the same mathematical function results in programs that cannot be distinguished from each other. Informally, such obfu…

Why does Indistinguishability obfuscation matter?

Because it connects several computer science ideas at once: it gives you a definition you can apply, a quantity you can calculate, and a way to check whether a result is plausible.

How should I study Indistinguishability obfuscation?

Read the excerpt, restate it from memory, then work through the examples and applications listed on this page. The five-step study plan above takes about twenty minutes.

What does this page cover?

It gives you a compact reference excerpt plus original lgStudy explanations, examples, applications and study material on Indistinguishability obfuscation.

Tags

  • Cryptographic primitives
  • Software obfuscation

Keep exploring