Ecco la nostra storia: stiamo sviluppando alcuni software (scritti in C # /. NET) e stiamo già firmando gli assembly con nomi forti, lo faccio in Visual Studio con un file pfx che è protetto da una password.
Come ulteriore passo di sicurezza vorrei firmare gli assembly o almeno l'eseguibile con Authenticode.
Il problema è: gli obiettivi per la nostra implementazione non avranno accesso a Internet e non siamo in grado di ottenere il nostro certificato CA verificato al momento. Abbiamo il controllo completo sull'obiettivo di distribuzione durante la fase di distribuzione, scegliamo l'hardware, installiamo il sistema operativo ecc., Ma una volta che il nostro prodotto (che è quindi una combinazione di hardware e software) è "là fuori" ci piacerebbe fornire più sicurezza possibile.
Ovviamente comprendiamo che non possiamo controllare ciò che accade in natura, ma abbiamo anche preso delle misure per essere in grado di vedere se l'hardware è stato manomesso. Se è così, sappiamo che non possiamo fidarci del software e non lo faremo.
Per tornare al nostro problema principale: ha senso creare il proprio certificato "falso" (non verificabile) per firmare gli assembly? Abbiamo bisogno di mettere questi certificati nell'archivio di Windows? Sto cercando di proteggere i nostri eseguibili da essere sostituiti da altri eseguibili, ad esempio tramite un'unità flash USB o qualcosa di simile.
Qual è il modo migliore per affrontare questo problema? Grazie in anticipo.