Summary of Affine Determinant Programs: A Framework for Obfuscation and Witness Encryption
This paper proposes practical witness encryption from ADP and uses it to construct a public-key encryption scheme with very short secret and public keys (around 300 bits) but large ciphertexts (around 400MB).
The ADP construction is then used as a potential candidate for IO, but it is not practical yet, essentially because it requires a super-polynomial error in the depth of the branching program to protect against invalid inputs.
Given the size of the branching program, modulus (error is sampled mod ) must be , i.e. super-polynomial in .
An example is given: if , then the ADP would be around 100 terabytes.
An affine determinant program ADP: is specified by a tuple of squares matrices over and a function and is evaluated on a in put by computing .
ADP is conceptually very simple and might offer a route toward implementable applications.
This work has the following results:
A ciphetext is encrypted with respect to an instance of some language . The ciphertext can be decrypted using any witness that attests that .
The security stipulates that, for any false instance where , the encryptions relative to completely hides the message for computationaly bounded adversaries.
Note that the instance is considered public (e.g. a public-key).
Witness encryption can be used to build a public-key encryption scheme where public keys are extremly short and generated efficiently.
And the ciphertext is the ADP
The all-accept program is here to prevent leakage of the bit on evaluations . This is done by adding noise wich must satisfy the following propeties:
In other words, the noise is sampled as an all-accept branching program over the set of all binary strings.
This is much more challenging than witness encryption:
Fortunately there are many ways to convert an into an ADP and IO for can be bootstrapped into IO for any circuit.
This work makes use of branching programs as the underlying computational model, which can be represented as an ADP. In particular, this representation has the property that for any binary input , if induces an accepting path in the branching program and otherwise.
The authors arg that ADP has better properties than matrix branching programs, because the later gives rise to "mixed-input" attacks, since matrix branching program have multiple matrices associated with each input bit.
Any read-once oblivious branching program can be efficiencly learned. Thus some noise has to be introduced in the obfuscation procedure such that the read once nature of the program is destroyed. The random even-valued error acts as adding edge between each pair of vertices of the branching program, labeled with a random, small, even linear combination of the entire input vector. The resulting program is thus far from being read-once, as evaluating every edge requries reading the entire input.
This requires to change the evaluation of the program to computing the parity of the output.
Essentially, without a super-polynomial error it is possible to distinguish two different ADP, even if they are valide, by looking at the distribution of the norm of their determinant on random inputs.
This is prevented by adding a super-polynomial noise as an ADP mod that evaluates to the original ADP when both are taken mod (and changes the evaluation to extracting the parity). The noise will create an overflow mod that hides the evaluation on non-binary inputs.
Given the size of the branching program, modulus must be , i.e. super-polynomial in .
An example is given: if , then the ADP would be around 100 terabytes.