I've got a set of source code files (compiled C#) that I want to prevent direct read access to. The program will be running on the VM. I was thinking of storing these in an encrypted hard disk VM, the VM would use these files in conjunction with a HTTP / TCP endpoint.
Some additional information:
- The files that need to be protected are compiled C# 'IL' files (I think it's called bytecode).
- The client will be running the VM within their own host/hypervisor environment.
The encryption would be disk encryption (relative to the VM) so taking the following from https://wiki.archlinux.org/index.php/Disk_encryption
Disk encryption ensures that files are always stored on disk in an encrypted form. The files only become available to the operating system and applications in readable form while the system is running and unlocked by a trusted user. An unauthorized person looking at the disk contents directly, will only find garbled random-looking data instead of the actual files.
Would this mean a VM host would not actually be able to view the files?
I would also look to prevent any other means of access besides the HTTP / TCP endpoint (so I'd remove any login prompt etc, possibly even remove the entire shell if that is possible).
I'm not too worried about the files appearing in 'memory', as I think it would be a difficult task to reverse engineer them back into files.
I can appreciate that this is not 100% secure, I'm just trying to make it as difficult as possible to access the source code (I'm already using source code obfuscation).
The main object here is to prevent read access / reverse engineering the source code of the application.
I suppose a summary of the above can be stated as: Is the above sufficient to make a 'secure' binary blob that is a VM image and it's only point of entry/interface would be a HTTP endpoint?