Almacenamiento de contraseñas con Jasypt StrongPasswordEncryptor vs PBKDF2

0

Actualmente estamos trabajando en la autenticación de una aplicación web. Para el almacenamiento de contraseñas, estamos usando Jasypt StrongPasswordEncryptor con SHA-256 y decenas de miles de iteraciones. Al entrar en el proyecto, esperaba implementar PBKDF2-HMAC-SHA512 (no creo que pueda obtener tracción en un conmutador a bcrypt o scrypt).

El Jasypt StrongPasswordEncryptor simplemente vuelve a hacer hash al pasado, sin embargo, muchas veces especificado usando SHA-256 (u otro algoritmo elegido), en lugar de las iteraciones HMAC en PBKDF2. Entiendo que el beneficio de seguridad de PBKDF2 es su velocidad lenta, mientras que SHA es rápido. Sin embargo, dado que PBKDF2 simplemente reitera HMAC-SHA (o alguna otra función), es difícil mostrar una mejora con respecto al método actual.

Si la mejora de seguridad del cambio es mínima, es poco probable que se realice. Si hay una mejora de seguridad sustancial, todavía es lo suficientemente temprano en el proyecto como para realizarlo.

¿Qué tiene HMAC-SHA que lo hace mejor / más lento que un SHA normal?

¿Qué tipo de información puedo aportar a una solicitud de cambio? ¿Cuánta mejora habrá?

¿Es necesario el cambio?

    
pregunta Applesnacks 12.08.2014 - 19:12
fuente

1 respuesta

3

StrongPasswordEncryptor de Jasypt es un caso especial de StandardStringDigester de Jasypt que, a pesar de su nombre, no es estándar en todos. De la descripción, parece ser una construcción personalizada, que por lo tanto tiene el mismo problema que cualquier otra construcción no estándar: no ha sido revisada. No sabemos cómo diseñar funciones seguras , y lo mejor que podemos hacer es poner las funciones bajo el escrutinio colectivo de (muchos) criptógrafos durante algún tiempo (años). Una función no estándar no se benefició ni siquiera con eso, por lo que realmente no sabemos si es buena o no.

En mi opinión, no seguir las normas revisadas por pares es un defecto de seguridad grave. Cambiar a PBKDF2 sería una mejora significativa. (Pero predigo que las personas que realizan funciones personalizadas pensarán lo contrario).

Por supuesto, bcrypt is mejor .

    
respondido por el Thomas Pornin 12.08.2014 - 20:15
fuente

Lea otras preguntas en las etiquetas