I have a system that displays video from a camera feed with an overlay, and it must boot without any user intervention (the quicker the better). However, these systems will be in the hands of customers so we are worried about reverse-engineering.
The OS (linux), software, and logs are stored on an mSATA SSD. The CPU is a 4th-gen Core i3 with 4GB RAM.
Basically, how can we prevent any unscrupulous customers or competitors from simply removing the SSD and stealing our application code? The obvious answer is to encrypt the drive, but it needs to boot unattended. The next logical step is to decrypt the software at runtime, but you would still need to store the decryption key somewhere in plaintext right?
There is a TPM module onboard, which might be a solution, but I couldn't find any good documentation on using it for this.
I am open to any and all suggestions.