Nel suo cuore, questa è una domanda su Controllo. Si desidera controllare l'accesso a questo file KeyStore, in modo che solo l'applicazione possa accedervi, ma nessun altro può farlo. Non si vuole mettere troppo pochi controlli su questo, perché ciò aprirebbe la possibilità di accesso non autorizzato. Né vuoi mettere troppi controlli su questo, perché sarebbe troppo ingombrante e troppo costoso da usare.
Per consentire all'applicazione, e non a nessun altro, di accedere al suo KeyStore, è necessario abilitare l'applicazione per far valere un'identità.
Hai le seguenti opzioni:
- Inserire la passphrase nel KeyStore in un file di configurazione e fare in modo che l'applicazione lo legga all'avvio. Ciò consente di controllare l'identità dell'istanza dell'applicazione manipolando le autorizzazioni del file system (l'utente dell'applicazione può leggere, ma non scrivere e nessun altro può leggere). Se il tuo KeyStore è basato solo sul file KeyStore, considera di mettere i controlli delle autorizzazioni del sistema operativo sul file KeyStore e di eliminare completamente la passphrase. Se il tuo avversario può impersonare l'utente dell'applicazione, è root sul tuo sistema e hai problemi molto più grandi.
- All'avvio dell'applicazione, chiedere a qualcuno di digitare la passphrase su KeyStore sulla console prima che l'applicazione carichi il KeyStore. Questo ovviamente rientra esattamente nella categoria "ingombrante": impedisce l'avvio automatico e può essere attaccato corrompendo le persone che devono conoscere la passphrase.
- Utilizzare un modulo di sicurezza hardware (HSM) per eseguire il backup del KeyStore in modo che la protezione del file system sovvertente sul server delle applicazioni debba essere combinata con un attacco fisico alla struttura di hosting prima che le chiavi possano essere utilizzate. Stesse considerazioni di cui sopra per la sicurezza delle credenziali utilizzate per accedere all'HSM. Qui è dove devo rivelare che vendo HSM per vivere.
- Utilizzare un HSM in combinazione con i controlli di accesso forzati HSM in modo che più operatori debbano fornire una credenziale hardware (smart card) e digitare una passphrase sulla console di sistema prima che l'applicazione possa essere avviata. Questa è la parte più lontana dell '"ingombrante", ma protegge dalla questione della corruzione di cui al punto 2.
Si noti che nessuno di questi si basa sull'aggiunta di livelli di crittografia: si tratta di implementare i controlli sull'accesso ai contenuti di KeyStore, in base all'identità di un'istanza dell'applicazione o all'autorizzazione di uno o più operatori.
Alla fine, tutto dipende dall'importanza della chiave privata e dalle conseguenze quando la chiave privata viene persa o compromessa. Quale controllo utilizzare dovrebbe essere una decisione aziendale, basata sulla valutazione dei rischi e delle conseguenze.