Sarà molto difficile, quasi impossibile, farlo in un modo semplice.
Se si desidera proteggere la chiave, sarebbe semplice: basta inserire la chiave in un dispositivo resistente alla manomissione come qualsiasi token o smartcard. In una smartcard , qualcuno può eseguire calcoli al suo interno, ma non può accedere al codice o una chiave memorizzata, ecc.
Il tuo problema è un po 'più profondo di quello: dato un computer che è fuori dal tuo controllo (ambiente client), non importa per quanto tempo è spento, ecc., vuoi essere sicuro che quando tenti di connettersi al tuo server , non è stato modificato / incasinato in alcun modo.
E a questo non c'è un modo pienamente possibile per garantirlo. È la terza regola:
Law #3: If a bad guy has unrestricted physical access to your computer, it's
not your computer anymore
(source: http://technet.microsoft.com/en-us/library/cc722487.aspx)
Specialmente se il tuo computer può essere spento regolarmente.
Pensa che qualcuno potrebbe provare a bloccare il segnale GPS, o aprire il tuo caso e rimuovere qualsiasi hardware speciale che hai inserito, o provare a cambiare il sistema operativo del tuo computer, o mettere un dispositivo tra il computer e la tastiera, o rimuovere il tuo HD e copia tutto, o ...
Se vuoi solo proteggere qualche chiave, vai con token o smartcard. Ma ciò non impedirebbe a qualcuno di accedervi nello stesso modo in cui farebbe il software originale.
Se vuoi proteggere il modulo client dal furto, metti al suo fianco alcuni uomini armati. Oppure dicci di più su esattamente che vuoi proteggere, quindi possiamo elaborare un po 'di più.