In Cryptography, Advances in Program Obfuscation
simonsfoundation.org
simonsfoundation.org
Apparently, it didn't work very well iirc. The researchers figured out how to get into all of the layers somehow, though I forget how. But the idea was clever... I wonder if something similar could work well in practice.
(This isn't the same thing as what was presented in the article, of course, but it's a lot easier to accomplish in practice.)
And if you're decrypting a program and doing something that people notice, it's a matter of time before someone is able to capture the decrypted code and work backwards from that.
The decryption routine is a rather obvious place to look; does the routine check if something is decrypted properly before jumping into that code, or does it decrypt, jump, and crash if the key is wrong? If it checks, then that's the ideal place to stop the program, dump the memory, and see what's going on. If it doesn't check, you're going to have malware that's crashing all the time and fairly easy to detect for that reason. If you're trying to do something under the radar, the last thing you want is unstable malware.
So yeah, traditional obfuscation is just a speed bump, and too much of it might make things detectable. The underlying problem is that the software has to DO something useful (read a file, send network packets, etc), and it's extremely hard to hide that on hardware you don't control.
But like any security, depending on the goal, maybe a speed bump is good enough.
It's like DRM: the user must have the key, so the only security you can have lies in obfuscation.
But in the case of Flame, wasn't that (one of) the big problem(s)? That the researchers didn't know what, exactly, comprised a known-vulnerable host?
Thus, only in that particular targeted environment will the next layer be revealed. While it is true that, as you say, Anything like that is not really fundamentally different from a password, that password might require physical possession of the target machine.
Unless the entropy that's the input key is something ephemeral, it's only a matter of time before the key is found. And in the case of malware, you can pretty much assume that the victim/target does have physical possession of the machine.
Yes, it is a matter of time, so long as you can run this experiment on every unique hardware environment.
But if you have a black box obfuscator, creating a
public key encryption protocol becomes a simple matter
of choosing your favorite secret-key encryption scheme,
expressing its workings as a computer program,
obfuscating the program, and making the obfuscated
version widely available. Anyone can then use it to
encrypt a message to send to you, but no one can tease
the decryption key out of the obfuscated software.
I cannot imagine downloading and running such an application for which nobody could feasibly determine it was safe, except to run it in some sort of secure sandbox.Further, how could any of us determine that any given program we happened to have downloaded wasn't built with something like this?
If true, this seems to open ever nefarious possibility one might imagine. The evil could be in the executable but it could be in weird point arithmetic in the source code.
I hope this is just hype or something. (reading the article, I'm supposing the main problem is that so far any program like this will be huge).
It's worth reiterating that this is very much not practical by any standard, and doesn't look anything like the usual software obfuscation used today, even white-box. This thing requires at the very least that multilinear maps and fully homomorphic encryption are anywhere near practical, which is not the case today (and may end up being like quantum computing, always 10 years away).
Maybe if we do eventually outgrow the computational power we have access to this could happen, but not in the near future I don't think.
I know nothing about crypto and AI and even less about neuroscience and this probably sounds stupid - but, is it possible that all the sensory input we receive is just random "sensible nonsense" and our brains partially solve this "multilinear jigsaw puzzle" using a vast neural network?
Considering the fact that brute force AI has been a total failure in recognizing anything, I wonder if our world is similarly obfuscated by sensible nonsense (from the robot's perspective).
Mostly, we don't succeed by analyzing it fully, but only by observation and attempts to build an algorithm on our own. I think one could approach breaking such schemes with similar strategy.
Another question is whether usable (ie. reasonable code and data sizes) and secure (with "hard" in the cryptographic sense, not in the sense of non-obvious) white-box cryptography is actually possible.
>However, the new obfuscation scheme is far from ready for commercial applications. The technique turns short, simple programs into giant, unwieldy albatrosses
I can't see how you can't trace a program on a computer without such a black box part. Just ask any software cracker.
this is like a compiler that generates obfuscated code (that is as hard to decompile as if it were encrypted).
*Technically homomorphic encryption refers to performing arithmetic (and other?) functions on encrypted data without decrypting the data. But these operations can then be used to construct an interpreter that treats the data as code.