Re: [math-fun] obfuscated programs, moron detection interlude
Date: Tue, 4 Feb 2014 14:57:18 -0500 From: Warren D Smith <warren.wds@gmail.com>
Date: Wed, 5 Feb 2014 02:34:39 +0000 From: Fred Lunnon <fred.lunnon@gmail.com>
From: Warren D Smith <warren.wds@gmail.com>
--I can write an interpreter WI for interpreting any program written in Warren's Programming Language (WPL). WI works as follows. First, if decrypts the WPL program by public key cryptography with the decryption key 4103943687648904689346189789676897642975685988043769349707438017463179432. Second, it views the result as a BASIC program and runs it. Now. Doesn't the net program (WI+its input) at seem pretty darn obfuscated to you?
Here's the definition of indistinguishability obfuscation:
A program-garbling procedure qualifies as an indistinguishability obfuscator if, whenever two programs that do exactly the same thing pass through the obfuscator, no one is able to tell which garbled program came from which original.
That is, no one can tell which is which by any (tractable) means, including watching and deeply studying the sequences of internal states as the programs run. Watching WI run, we would see the plaintext BASIC program pop out, so that's not very obfuscated. - - -
From: Fred Lunnon <fred.lunnon@gmail.com>
Most intriguing notion of "homomorphic encryption", of which I knew not: http://en.wikipedia.org/wiki/Homomorphic_encryption
But I'm unconvinced about some the claims apparently being made for it.
Do you mean you've read the proofs? Not that I have.
For example, if I encrypt a large integer and send it off to an insecure factorising server, am I going to receive in return its encrypted factorisation, despite the server being unable to decrypt the input? Hmm ...
That's exactly what I read the wikipedia article to be claiming. -> for certain operations <- I don't know whether factoring can be constructed from those operations. But if the hard problem inside indistinguishability obfuscation turns out to be truly hard, the answer is a definite "Yes, but." You write a straightforward: input an encrypted message decrypt it with this secret-key cypher factor it encrypt the result with this secret-key cypher output the encrypted result ...which you would compile into the obfuscator's input language and run thru the obfuscator, producing a circuit diagram which you would send to the server in advance. Then you could send it an encrypted number, and get back the encrypted factorization. BUT, with the current state of the art, the run time is much larger than that of the original, and the circuit size is proportional to that big run time, which makes it impractical to send or store. --Steve
participants (1)
-
Steve Witham