security - salted - ¿Cómo implementarías las contraseñas saladas en Tomcat 5.5?
salt encryption c# (3)
Mi aplicación web confía en la seguridad administrada por contenedor y me pregunto si es posible usar contraseñas saladas. Por lo que puedo decir, es bastante fácil almacenar contraseñas digeridas en una base de datos simplemente configurando un JDBC o un DataSource Realm, pero no hay manera de agregar una sal a esos compendios.
¿Alguna sugerencia?
Editar: parece que solo necesito pensar un poco más antes de hacer preguntas ;-)
Solo se trata de elegir quién está haciendo el cálculo de resumen (cliente o servidor) y configurar Tomcat en consecuencia.
La encriptación basada en Passord en JCE usa sal según PKCS # 5. Consulte http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#PBEEx para ver un ejemplo.
Si está creando y almacenando los resúmenes, puede crear y almacenar las sales al mismo tiempo.
Su tabla auth contendría ... pwdDigest varchar (64), - o int256 si tiene un hashSalt int64, ....
Luego, dependiendo del protocolo de autenticación que esté usando, envíe el hashSalt al cliente cuando obtenga el nombre de usuario para el cifrado del lado del cliente o úselo para actualizar la contraseña si la recibe en forma clara.
No estoy familiarizado con las tecnologías de acceso a la base de datos de las que está hablando, por lo que me disculpo si he omitido el punto y simplifiqué demasiado la respuesta.
Tomcat 5.5 y 6.0 no son compatibles con las contraseñas saladas en JDBCRealms y DataSourceRealms. Es un error conocido, y el parche sugerido parece funcionar bien, pero aún no fue aceptado.
Si no desea aplicar el parche, al menos puede usarlo como ejemplo de implementación:
Bug 45871 - Soporte para parches salados y digeridos en DataSourceRealm