I limiti alla protezione tramite la crittografia delle password

Liberty supporta la crittografia Advanced Encryption Standard (AES) per le password memorizzate nel file " server.xml. Quando si utilizza la crittografia AES (Advanced Encryption Standard) per la protezione delle password di sistema nella configurazione Liberty , è necessario comprendere i limiti alla protezione che fornisce.

Open Liberty La documentazione più recente sulle limitazioni di crittografia della parola d'ordine per Libertà è disponibile su Sito web Open Liberty.

[ 25.0.0.2 e versioni successive]Il comando Liberty- securityUtility encode utilizza la crittografia " AES-256 " quando l'opzione " --encoding " è impostata su " aes". Il valore predefinito per questa opzione è " xor". Per la decrittazione AES, Liberty supporta sia l'algoritmo AES ( AES-128 ) che l'algoritmo AES-GCM ( AES-256 ).

Liberty supporta la crittografia AES-256 per le password memorizzate nel file di configurazione server.xml . AES-256 fornisce una crittografia più forte, rendendo le password crittografate più sicure.

Per crittografare una password con AES-256, utilizzate il comando securityUtility encode con l'opzione --encoding=aes :
securityUtility encode --encoding=aes superAES256password
Questo comando genera una password criptata AES-256, come mostrato nell'esempio seguente:
{aes}ARAmkTCr3of9G0gvieyx7NtHFbeX5fiueD6yGTvnYzyFMxyg7Cd5V6Ew34uxunYb0pYixwDiR6V2qCx2Yxm9io4KBZiW8T9GJLCut1ClauY7GNBM6lFM+PMZfCaScPzUgSE07PJYI37WQ8lSzjaeWGCA+K5dlA==
È quindi possibile utilizzare questa password crittografata nel sito server.xml, ad esempio nella definizione di un keystore:
<keyStore id="MyKeyStore" password="{aes}ARAmkTCr3of9G0gvieyx7NtHFbeX5fiueD6yGTvnYzyFMxyg7Cd5V6Ew34uxunYb0pYixwDiR6V2qCx2Yxm9io4KBZiW8T9GJLCut1ClauY7GNBM6lFM+PMZfCaScPzUgSE07PJYI37WQ8lSzjaeWGCA+K5dlA==" />
Importante:
  • La chiave AES utilizzata per la crittografia è in genere memorizzata in un keystore come aesKey.jceks utilizzato in WebSphere® Application Server tradizionale. Assicurarsi che il keystore sia accessibile al server runtime per la decodifica.
  • Il comando Liberty securityUtility encode utilizza la crittografia AES-256 quando l'opzione --encoding è impostata su aes. Il valore predefinito per questa opzione è xor. Per la decodifica AES, Liberty supporta AES-128 e AES-256. --encoding=aes-128 può essere usato per criptare con AES-128 per compatibilità con le versioni del server precedenti a 25.0.0.2.

[ 25.0.0.12 e successivamente]Per informazioni sulla fornitura della propria chiave AES-256 pregenerata per la crittografia della password, compreso come definirla wlp.aes.encryption.key, vedere Fornitura della propria AES-256 chiave per la crittografia della password.

Crittografare una password nella configurazione Liberty non significa che la password sia sicura o protetta; significa solo che qualcuno che può vedere la password crittografata, ma non conosce la chiave di codifica, non può facilmente recuperare la password. Il processo del server delle applicazioni richiede l'accesso sia alla password crittografata che alla chiave di decodifica, pertanto entrambi questi elementi di dati devono essere memorizzati sul file system accessibile all'ambiente di runtime del server. La chiave di codifica è richiesta anche da chiunque codifica una password inserita nella configurazione del server. Per un utente malintenzionato che ha accesso esattamente allo stesso insieme di file dell'istanza del server Liberty, l'applicazione della crittografia AES alla password non fornisce quindi alcuna sicurezza aggiuntiva oltre alla codifica esclusiva o (XOR).

Tuttavia, ci sono ancora motivi per cui si potrebbero considerare di crittografare le password nella configurazione Liberty . La configurazione Liberty è progettata per essere altamente componibile e condivisibile. Il sottosistema di amministrazione di WebSphere Application Server tradizionale (la console di gestione e lo scripting wsadmin) impedisce ad un amministratore di accedere ad una password codificata XOR. Liberty è progettato per essere configurato senza un sottosistema di amministrazione e quindi qualsiasi password codificata XOR è visibile a qualsiasi amministratore. Date queste caratteristiche di progettazione, considerare i seguenti scenari:
  • Le password non sono sensibili, quindi codificarle fornisce poco valore.
  • Le password sono sensibili, quindi o i file di configurazione contenenti la password sono sensibili alla sicurezza e l'accesso deve essere controllato, oppure le password sono crittografate e la chiave di codifica viene poi protetta come sensibile alla sicurezza.

La chiave di codifica utilizzata per la decodifica può essere sovrascritta dal default impostando la proprietà wlp.password.encryption.key . Per assicurarsi che il file contenente la chiave non sia incluso quando si esegue il comando dump del server o package, non impostare questa proprietà nel file server.xml che memorizza la password, ma in un file di configurazione separato incluso dal file server.xml . Questo file di configurazione separato deve contenere solo una singola dichiarazione di proprietà e deve essere memorizzato al di fuori della normale directory di configurazione per il server. La proprietà chiave di cifratura può anche essere specificata come una proprietà bootstrap. Se si sceglie questa opzione, inserire la chiave di crittografia in un file delle proprietà separato incluso nel file bootstrap.properties del server.

Uso

I seguenti esempi dimostrano l'impostazione della proprietà wlp.password.encryption.key .
  • Come definire la proprietà nel file server.xml .
    <server>
      ...
      <variable name="wlp.password.encryption.key" value="yourKey" />
    </server>
  • Come includere la proprietà come file separato nel file server.xml .
    <server>
      ...
      <include location="${shared.config.dir}/key.xml" />
    </server>