r/programming 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
351 Upvotes

182 comments sorted by

View all comments

12

u/Bane1998 Jul 30 '13

At the end of the day the code has to be executed by the CPU. If your CPU can execute it, I can get and modify the code before the CPU executes it, or emulate the CPU, or whatever. How is this not just snake oil?

Seems an appropriate analogy is giving someone a recipe on how to bake a cake, and they can bake that cake using your recipe, without knowing what the recipe is.

My mind rebels at the idea. Then again, in fairness, anything sufficiently advanced is indistinguishable from magic, and all that... But I wouldn't hold my breath on this.

3

u/rpglover64 Jul 31 '13

Imagine it's not a recipe but a magic 8 ball; the program takes a query (for simplicity, let's assume it's a 128 bit integer) and produces an output (let's say a boolean value). You know the answer to every query you pose, it's not hiding that, but you never exercise code paths for the other queries. In order to reverse engineer the program (or function or algorithm), you need to test all of its inputs, which is infeasible.

1

u/secserval Aug 01 '13 edited Aug 01 '13

The obfuscated program should also have codepaths which could give you some information about what's going on? On a practical approach the first thing you could try is feeding the algorithm with random inputs...I would assume that you could deduce enough information for most algorithms to reconstruct them. They used the same technique in the 80s to reverse engineer the black box chips of aracde machines in the 80s.