A question in theory of Computer Science
Today I can secretly store files in the cloud (say, amazon s3), by having them encrypted before I store them and decrypt them after I download. The storage provider cannot obtain any information from the stored files - everything is encrypted safely, and even symmetrical cipher will be ok here.
My question is if the same can be done with computing in the cloud. There is a computing provider in the cloud (say amazon ec2). Can I upload an "encrypted program" together with "encrypted input" for the program and have my cloud computing provider perform all the computations for me and generate for me an "encrypted output" - with the same security guarantees as in the "secret file store"?
Note that I am not talking about obfuscation and reverse engineering issues, but about secret computing with strong cryptography guarantees.
My hunch is it can't be done. Otherwise 1) it would exists, 2) my intuition is that no encrypted data can "keep being encrypted data" after transformations are applied to it, i.e. it just become gibberish.
Note Perhaps I lack the proper background in computer science, if someone could tell me what the exact nomenclature should be.
Pointers to academic literature, and clarifications regarding the concepts described above are actually called will be welcome.
Answer:
It looks that:
secret input and output, non-secret program: Only in theory
Secret input, secret output and secret program: not even in theory. (Update: perhaps yes, see Artelius' comment)