Hacker News new | ask | show | jobs
by baby 3437 days ago
There is no encrypted program, there is encrypted data. You can operate on this data, and it will reflect on the plaintext after decryption. I think what you're thinking about is functional encryption?
3 comments

The distinction between program and data is not a sharp one, since f(x) = apply(<f, x>) = eval_x(f) (where eval_x takes the description of some program f and runs it on the constant input x). You can use this equivalence to compute f(x) where f is in plaintext and x is encrypted (ordinary HE), f and x are both encrypted (but apply is plaintext), or f is encrypted but x is not (so we can derive eval_x). In every case, however, the output is encrypted.

In general, this is only of theoretical interest, since the interpreter apply and the specialized interpreter eval_x are large, complicated programs.

I'm not thinking of functional encryption. I thought I'd read somewhere a plan to use homomorphic encryption with an encrypted program by simply applying an interpreter to it.
You're not thinking of Indistinguishability Obfuscation per chance?

https://blog.cryptographyengineering.com/2014/02/21/cryptogr... seems an interesting article.

That might be it - Thanks.
Could you spare a minute to comment of the current state of functional encryption?

Is it practical on an intel cpu ?

If you want fully general functional FE, then no; constructions are based on something called "indistinguishability obfuscation", a crypto primitive that a) we're not sure exists b) has conjectured constructions that are ultra ultra ultra slow.