I am looking to distribute a linux VM image (with a modified linux kernel to suit or product's needs) that runs some proprietary software that will already be on the VM I distribute. The goals is to let users run the VM locally on their own machines.
My question is, what are some good ways of protecting my proprietary software without making it too difficult for honest users to user our software?
I am aware that it is always possible to reverse-engineer anything I distribute but I was still hoping to add some measures to make it too tedious for malicious user to achieve that.
Some of the ideas I already have:
- Cryptographic signatures added to the VM or computed and uploaded to my server to compare against valid signatures to detect software modification.
- Encryption keys hidden/obfuscated in the boot partition that in turn decrypt the root fs.