Questa è una domanda piuttosto ampia ed è davvero più un problema architettonico e filosofico. Cercare un prodotto particolare è spesso una cattiva idea su questo sito, quindi offrirò qualche consiglio.
Come definisci "nessun altro"? Codice nell'app, altre app sulla VM, app in altre VM, hacker che colpiscono il tuo sito web, app nell'host di macchine virtuali, amministratori di data center, ecc.? Questo riguarderà il design del sistema.
Dato che stiamo parlando di chiavi, il design breve e semplice è quello di spostare l'accesso e l'uso della chiave fuori dal regno di coloro che la attaccano (risposta utile, giusto?).
Spostamento verso l'esterno:
- Hardcoded nei binari dell'app (chiunque abbia letto sui binari può ottenere le chiavi)
- Memorizzato in un file di configurazione su disco (chiunque abbia letto nella config può ottenere le chiavi)
- Memorizzato nell'archivio certificati di Windows localmente (solo gli amministratori locali possono ottenere le chiavi)
- Memorizzato in un archivio certificati su un'altra macchina con accesso ai servizi remoti (solo gli amministratori locali sulla macchina remota possono ottenere le chiavi)
- In un modulo di sicurezza con supporto hardware (HSM) (nessuno può ottenere le chiavi)
In ogni fase introduci dei limiti e rendi più difficile l'accesso alle chiavi. Questi limiti esistono come servizi autenticati di qualche tipo. Generalmente trasferisci il lavoro a questi servizi e toccano i tasti, in questo modo la tua app non lo fa.
Il compromesso è complessità e gestibilità per un livello efficace di sicurezza.