I have some code and other resources which run in a container or VM ("black box") on a host machine. The host uses this as a service to process some files which are highly sensitive and they don't want them off their premises (so no cloud). However, suppose I do not trust the host: I do not want the host to be able see the resources or code in the black box: ideally the host starts it like a server, and can only interact with it via an API. The analogy I have in my head is the driver of car who can use their key to start the engine to drive the car but can't access or see inside the engine.
I'm new to security so I'm out of my depth but I've so far been able to discover the "separation kernel" but I don't think that's quite what I'm after since that's about protecting multiple OSes which don't trust each-other running on a single machine which they all together trust. In my scenario I don't trust the machine on which my code is running. Ultimately, I suppose the black box needs to use the host CPU so the host will have to see at least machine code going in and out of the black box. But:
- What are the theoretical limits? And
- What options are currently available in this scenario (even if it's just obfuscation like wrapping the container encrypted in a binary which contains the key)?