Questa è davvero una bella domanda e mi piacerebbe vedere più buone risposte. Ecco quelli di cui sono a conoscenza:
- Hardcode la / e password / i nell'applicazione.
- Mantieni le password in un file.
- Salva la password in un sistema esterno e recuperala all'avvio.
Di questi il primo è il più comune e spesso la password è 'password' o 'changeit' ecc. La prima opzione potrebbe sembrare migliore a prima vista, ma è difficile spiegare come esattamente. L'ultima opzione è probabilmente l'unica che ha la speranza di fare qualcosa di significativo. Conosco soluzioni di venditori che fanno questo genere di cose e pretendono di migliorare la sicurezza.
Il problema fondamentale qui è che se un utente malintenzionato si trova sull'host con sufficiente accesso per visualizzare lo spazio dell'applicazione, non c'è davvero nulla che tu possa fare per impedirgli di ottenere questa password. Ad un certo punto deve essere in memoria in chiaro.
Come si vede, la password sul keystore lo protegge principalmente nella situazione in cui il keystore stesso è stato recuperato dalla macchina senza effettivamente avere accesso direttamente a quella macchina. Con quel file, un aggressore può martellarlo a piacimento per ricavarne i segreti. Se non hai una password sicura, game over. Se l'utente malintenzionato può estrarre quel file, è probabile che possa estrarre altri file in cui la password potrebbe essere archiviata. Ciò pone le opzioni 1 e 2 in dubbio.
Per quanto riguarda la terza opzione, il problema ora si sposta su come autenticare i client per recuperare la password. So che ci sono un certo numero di schemi per fare ciò, a seconda dell'host / rete e usando le firme sui binari. Potresti avere un'intera discussione solo su come farlo e su quale livello di protezione porta.