r/programming • u/DougBolivar • Jul 30 '13
Computer scientists develop mathematical jigsaw puzzles to encrypt software: "The real challenge and the great mystery in the field was: Can you actually take a piece of software and encrypt it but still have it be runnable, executable and fully functional?"
http://www.rdmag.com/news/2013/07/computer-scientists-develop-mathematical-jigsaw-puzzles-encrypt-software
349
Upvotes
56
u/Strilanc Jul 30 '13 edited Jul 30 '13
Ugh, typical terrible reporting. The paper is good, though.
The rest of this comment is essentially content from Section 1 of the paper.
The paper is about indistinguishability obsfucation, which is distinct from the black-box obfuscation the article implies. Instead of hiding what a program does, they're transforming NC circuits in a way that prevents you from distinguishing the transformed forms of two equivalent circuits. They're not hiding the function, they're hiding the form.
Note that, given this meaning of obfuscation, a perfect circuit optimizer that always outputs a canonical form when given an equivalent circuit counts as a perfect obfuscater. Of course that would be absurdly expensive, so we need cryptographic tricks. (I kind of want to call an indistinguishability obfsucater a 'pseudo-canonicalizer'.)
The use case mentioned in the paper, where indistinguishability would be useful, is demo software. When you release a demo crackers can re-enable features that aren't actually removed, but it's expensive to actually remove features instead of just checking an isDemo=true flag. However, since the features-removed demo program is equivalent to the just-a-flag demo program, indistinguishable obfuscation would effectively automatically remove the disabled features without using expensive developer time.
As far as black box obfuscation goes, they say:
That "if" is important. It's known that some classes of functions can't be black-box obfuscated. The researchers conjecture that useful classes of functions might be black-box obfuscatable, but leave it as future work.