/ / Crittografia password personalizzata JBoss DataSorurce? - sicurezza, crittografia, jboss, datasource, jboss-4.2.x

Crittografia password personalizzata JBoss DataSorurce? - sicurezza, crittografia, jboss, datasource, jboss-4.2.x

Sto lavorando con JBoss 4.2.1GA.

Come potresti ora, c'è un modo per evitare di avere La password di JBoss DataSoruce è in chiaro. Tuttavia questa tecnica ha un difetto di sicurezza fondamentale che diventa evidente quando si guarda come org.jboss.resource.security.SecureIdentityLoginModule decodificare e codificare i metodi sono implementati. La crittografia è fondamentalmente un blowfish regolare che utilizza una chiave segreta fissa ("jaas è il modo").

Sto cercando un modo per cambiare la chiave segreta fissa per uno scelgo o per cambiare il modo in cui viene eseguita la crittografia / decrittografia.

Sono propenso a pensare che possa essere fatto reimplementando SecureIdentityLoginModule che va bene, ma sto trovando difficile credere che non ci sia un'opzione pronta per questo (finora non ho trovato nessuno)

Qualcuno ha fatto qualcosa del genere?

risposte:

3 per risposta № 1

C'è un bug valido per questo problema, almeno per JBoss 4.0.x: https://issues.jboss.org/browse/JBAS-4460

Nota il commento:

La cosa della password "criptare il database" èlì per passare stupidi controlli di sicurezza. Alla fine ci sarà una password di qualche tipo da qualche parte perché il sistema ha bisogno di decodificare la password per inviarla al database. Sarà sempre facile per un programmatore relativamente esperto hackerarlo. Sicurezza del filesystem / OS + sicurezza del trasporto sono la tua unica speranza qui.

Quello che il commentatore sta dicendo è un problema comuneper tutti i sistemi di sicurezza: ad un certo punto c'è una chiave che può essere decifrata. Assicurati che la sicurezza del tuo filesystem sia fissata in modo tale che questa chiave non sia facilmente accessibile, e dovresti stare bene.


1 per risposta № 2

Dai un'occhiata a quanto segue wiki documento. Descrive due modi per crittografare le password di JBoss. Il primo è quello che hai descritto e il secondo è la crittografia basata su password.


0 per risposta № 3

Ok, questo è il modo in cui ho realizzato questo (sto lavorando su JBOSS 4.2.1 GA e Oracle quindi alcune cose potrebbero differire tra versioni e fornitori di DB):

È necessario estendere AbstractPasswordCredentialLoginModule.

Ho basato il mio (chiamato PGPLoginModule) sull'implementazione out of the box chiamata SecureIdentityLoginModule l'unica differenza tra questo e il mio è ildecodifica e codifica i metodi che utilizzano un algoritmo e un processo di crittografia diversi (il mio utilizza un certificato PGP per decrittografare un file di proprietà in cui è memorizzata la password) simile a quanto spiegato in Questo articolo, ma puoi usare qualsiasi metodo tu preferisca.

Dovrai aggiungere i seguenti jar situati sulle cartelle della libreria jboss per risolvere le dipendenze:

  • [JBOSS_HOME]/lib/jboss-common.jar
  • [JBOSS_HOME]/lib/jboss-jmx.jar
  • [JBOSS_HOME]/server/default/lib/jbosssx.jar
  • [JBOSS_HOME]/server/default/lib/jboss-jca.jar

Hai bisogno di JAR il tuo corso e posizionare il barattolo su entrambi:

  • [JBOSS_HOME]/ Server / default / lib

o

  • [JBOSS_HOME]/ lib

Quando hai questo devi configurarlo nel dominio di sicurezza che hai definito su jboss "login-config.xml in modo che usi la tua classe (il mio è org.company.resource.security.PGPLoginModule) invece di usare quello predefinito in modo che assomigli a qualcosa:

<application-policy name="PGPDomain">
<authentication>
<login-module code="org.company.resource.security.PGPLoginModule" flag="required">
<module-option name="username">[DB_USER]</module-option>
<module-option name="password">[ENCTRYPTED_PASSWORD]</module-option>
<module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDS</module-option>
</login-module>
</authentication>
</application-policy>

Si prega di notare che a seconda della forza e dell'algoritmo che si decide di utilizzare potrebbe essere necessario installare il File di criteri di durata illimitata dell'estensione di crittografia Java al tuo JRE.

Spero che qualcuno lo trovi utile.