3 ms·
But if you have a black box obfuscator, creating a public key encryption protocol becomes a simple matter of choosing your favorite secret-key encryptio
by Zikes 13y ago
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.
- tptacek 13y agoThen you're not being very imaginative. Instead of assuming that this some giant EXE, assume instead that the (open source, carefully vetted) host for this code exposes a small VM, with no linkage to system libraries or direct access to memory, whose sole purpose is to unwrap small encrypted blobs.
- DerpDerpDerp 13y agoHow can you tell it's not swapping text to include "Fire all the missiles!" (or other message of choice) to whatever you're encrypting?
- jerf 13y agoIf you are running an obfuscated blob, it's probably not because you intend to trust it, it's probably because you are offering the ability to run some computation to a another person to run in your context in a way that they can trust. (It wasn't mentioned, but I imagine that trying to falsely run a program like this would also be very difficult; the slightest deviation probably shreds the output; my intuition says this would be a necessary condition for any such obfuscation scheme to stand. Combine this with the obfuscated code signing the result and you're probably looking at something extremely hard to forge.) Your trusted environment and input, their trusted code, a result that either they trust or perhaps you mutually trust (with some protocol stuff added in).
- bdamm 13y agoHence a secure sandbox, as the parent suggested. Careful when you insult people.
- tptacek 13y agoHm. You're right. That came out way snippier than I meant it too. Thanks.
- bdamm 13y agoThis combo really is something. I saw your other comment about private-key being the interesting part (and not high-speed symmetric operations). This really is a breakthrough but I am not sure today where it will go.
- joe_the_user 13y agoAh, 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).
- Sniffnoy 13y agoNote that this is if you have a black-box obfuscator, and black-box obfsucators are impossible. (The proof is actually pretty simple; see [0] ("Theorem 4") for a short version.) Although, according to the article, apparently something similar is possible with an indistinguishability obfuscators; I'm not too clear on how that works. In that case, though, where you use an indistinguishability obfsucator, then yes there is the problem of having a huge program (which is probably also slower). [0] http://www.scottaaronson.com/blog/?p=392 http://www.scottaaronson.com/blog/?p=392