Here's our story: We're developing some software (written in C#/.NET) and we're already signing the assemblies with strong names, I do this in Visual Studio with a pfx file that is protected by a password.
As an added security step I would like to sign the assemblies or at least the executable with Authenticode.
The problem is: The targets for our deployment will not have internet access nor are we able to get our own CA verified certificate at the moment. We have complete control over the target of deployment during the deployment phase, we choose the hardware, install the OS etc., but once our product (which is thus a combination of hard- and software) is "out there" we would like to provide as much security as we can.
Of course we understand that we can't control what happens to it in the wild, but we have also taken measures to be able to see if the hardware has been tampered with. If it has, we know we can't trust the software and we won't look it.
To get back around to our main issue: Does it make sense to create our own "fake" (non-verifiable) certificate to sign the assemblies? Do we need to put these certificates into the Windows store? I'm trying to protect our executables from being replaced by other executables, say through a USB-flash drive or something similar.
What's the best way to deal with this problem? Thanks in advance.