JKS - Protezione del keystore e file di configurazione

3

Sembra che Java Keystore sia usato spesso dal web server usando un file di configurazione, con la password che apre il JKS scritto in esso e anche la password che protegge la voce specifica.

Come potrebbe essere considerato sicuro? Con questo schema, il "problema segreto" si è spostato nel file. Anche se il file è protetto da diritti utente, deve essere crittografato, non è vero? Ma questo significherebbe che ogni volta che viene avviato il server web, l'amministratore deve inserire una password per generare la chiave simmetrica (PBKDF2) e decodificare il file?

Mi piacerebbe sapere di più su come questo è gestito in modo sicuro.

    
posta crypto-learner 26.03.2015 - 10:52
fonte

2 risposte

2

Come @whoami ha menzionato, sposta semplicemente il problema in un altro posto. Come hai detto, ti consente di spostarlo fuori codice (se lo hai codificato in modo hard), proteggerlo con password (se originariamente era solo un PEM o qualsiasi altra cosa sul disco) e farlo ACL con le autorizzazioni necessarie.

Il problema è che devi conoscere la chiave per sbloccarlo, e questo ovviamente richiede una certa protezione, e beh, hai le tartarughe fino in fondo.

Ciò che stai facendo in pratica è spostare la barra per gli aggressori in modo che debbano impegnarsi maggiormente per rompere il problema. A un certo punto dicono solo di fottere e andare avanti. Puoi renderlo più difficile introducendo la complessità alla generazione delle chiavi, ma se gli aggressori sanno come funziona possono farlo da soli abbastanza facilmente, o peggio possono semplicemente rubare il file e provare a forzare la chiave bruta in quanto non particolarmente casuale. In alcuni casi il sistema operativo fornisce un meccanismo per proteggere le chiavi casuali, ma in questo caso avresti bisogno di qualcosa che è esposto alla JVM.

Altre soluzioni pratiche implicano il trasferimento della chiave in aree meglio protette e questo di solito significa hardware di qualche tipo. In alcuni casi parliamo di TPM, HSM o semplicemente di smart card (sebbene siano tutte la stessa cosa, ma con caratteristiche diverse). Il principio di base è che la chiave non lascia mai l'hardware, quindi è impossibile rubarla. Un effetto collaterale di questo è che tutta la crittografia di solito si verifica nell'hardware stesso, quindi tutto ciò che si sta facendo è spingere i dati e ottenere i dati, senza doversi preoccupare della cripto stessa.

Questo significa che è necessario proteggere l'interfaccia per l'hardware in modo che solo i sistemi autorizzati possano parlarci. Vedi le tartarughe ancora?

    
risposta data 14.06.2015 - 22:03
fonte
0

Sì, hai ragione, tutto ciò che fa è spostare il problema in un altro posto.

Ci sono diversi modi per proteggere la password del Keystore usando PBKDF2.

  1. Utilizzo di una password necessaria all'avvio del server delle applicazioni (come indicato).
  2. Comporre la password di PBKDF2 su "cose" che conosci del tuo ambiente di distribuzione; ad esempio: concatenazione di nome host, nome utente e indirizzo MAC.

Il numero 2 ha il vantaggio che nessuna persona dovrà ricordare (o annotare) la password; Aiuta anche quando il keystore viene copiato / rubato da un insider - > a meno che non comprendano come è composta la password.

Lo svantaggio dell'utilizzo di 2. è che, se ad esempio la scheda di rete non funziona e viene sostituita, non sarà possibile ricavare la chiave necessaria per decrittografare la password del keystore.

Entrambi i modi sopra citati sono il modo in cui personalmente l'ho visto implementato.

    
risposta data 15.05.2015 - 13:55
fonte

Leggi altre domande sui tag