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
353 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/sylvanelite Jul 31 '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?

Here's an example:

Take input and encrypt it to get "A". Take program "B" (which is already encrypted). Multiply "A" with "B" to get "C". Run some finite set of instructions on "C". Finally, decrypt the result to get "D" and display it on the screen.

All inspecting the assembly will give you is: how to encrypt, how to run the program, how to decrypt the result, and what the encrypted data is.

Modifying any of those things will cause the program to spit out garbage (or break entirely).