I have been attempting to analyse the classic proof presented by Barak et al. that claims Black-Box Obfuscation is not possible for (what appears to be) most classes of programs.
The proof is presented in such a manner where it is said that if there exists an encrypted program C'(a, b, x)
which returns b
if and only if a = x
, and another encrypted program D'(a, b, f)
which returns 1
if an only if f(a, b, x) = b
, then D'(a, b, C(a, b, x)) = 1
with a probability of 1
. This will also mean that an attacker will be able to differentiate C'(a, b, x)
from another function Z()
which returns 0
at all points, as D'(a, b, Z()) = 1
with a probability less than 1
.
The proof does not really make sense to me though, as assuming an attacker is unable to test every single value of a
and b
there would appear to be no way to conclude there is any difference between C'(a, b, x)
and Z()
. Black-Box Obfuscation would hold to be true however if the only way to differentiate two programs was to test every single input and inspect the output.
Is there anyone that could help explain to me how this proof is truly conclusive to say that Black-Box Obfuscation (for the most part) is not possible?