I'm working for a startup creating a product which will be rolled out complete with the required hardware.
The hardware is a mini PC running Ubuntu 20.04. The application consists of python services inside docker containers, a database and some deep learning models - so essentially the mini PC is used as a server replacement. Users access the application by connecting to a hotspot. At some customers the hardware will be airgapped.
I can't get into too many details, but the configuration makes sense in their special use case.
I have now been tasked with securing the hardware to not allow tempering/modification of the application. I've done a bit of research (see below) but am a little bit out of ideas of what if anything can be done to solve this in a satisfactory way.
My Research:
- My first idea I found was to encrypt the root partition with LUKS and then store the key in TPM - the current hardware does not support TPM (this hopefully is something that can be changed for future hardware purchases)
- The second idea was to encrypt the root partition and also deliver the partition key. Even though you now need two parts, I don't think that this would make it harder to temper with.
- Another idea outside the possibilities of the operating system was to at least obfuscate the application code with something like pyarmor - but this again feels like a very low bar to clear.
I've already tried finding other possibilities - maybe my search queries suck - but I wasn't able to find any satisfactory way to solve this problem. I'm hoping someone here can point me in the right direction.