¿es seguro usar jBCrypt y recomendarlo a mi organización?

11

Me gustaría recomendar a mis compañeros desarrolladores que todos usamos bcrypt para hacer hash de las contraseñas almacenadas. Todos usamos java y vacilo en recomendar jBCrypt solo porque su último número de versión (0.3) indica que es una versión beta. Veo que las versiones recientes de Spring Security han incluido una implementación que es principalmente el código exacto de jBCrypt. Por "principalmente" me refiero a que Spring Security lo ha cambiado para cumplir con sus convenciones de codificación y poco más que pueda detectar. Para mí, Spring Security es un sello de aprobación bastante bueno. Mi pregunta es: ¿se sentirían cómodos recomendando la implementación de Spring? Si lo pruebo y comparo los resultados con los resultados reales de bcrypt, ¿sería esto lo suficientemente bueno? ¿Cómo sabría si mis pruebas fueron exhaustivas?

    
pregunta mcgyver5 05.10.2012 - 20:28
fuente

2 respuestas

17

Usted podría auditar el código jBCrypt . Es pequeño: un archivo de código fuente de 750 líneas, la mitad de las cuales es una matriz de constantes. Además, dado que esto es Java, no tiene que temer el temido "comportamiento indefinido" de C: si funciona bien en su máquina, funcionará bien en todas partes (para ese tipo de código, que no implica subprocesos, acceso al sistema de cómputos de punto flotante, el mantra de Java de "escribir una vez, ejecutar en todas partes" tiende a ser cierto).

También puede echar un vistazo al archivo TestBCrypt.java que lo acompaña: parece una aplicación bastante completa de vectores de prueba conocidos (incluidas algunas contraseñas que no son ASCII). El código me parece bien.

Para la mayoría de los proyectos de código abierto, los números de versión no tienen sentido, ya que traducen más la sensación de satisfacción interna del autor que cualquier calidad técnica real del software.

Nota: por supuesto, dado que el punto de hashing lento es una carrera presupuestaria entre el defensor y el atacante, al usar Java le está dando una ventaja de 3x al atacante: he usará C o ensamblado optimizado (o algún FPGA). Sin embargo, bcrypt aplicado correctamente, incluso con Java, debería ser suficiente para garantizar que el almacenamiento de la contraseña ya no sea el peor de sus problemas.

    
respondido por el Thomas Pornin 05.10.2012 - 21:38
fuente
2

BCrypt es definitivamente seguro de recomendar, ya sea la versión de Spring o el puerto original de Mindriot jBCrypt. No deje que el número de versión lo asuste, ya que es solo un resultado del esquema de versiones del autor.

Consulte enlace para ver las notas de la versión

    
respondido por el David Welch 16.01.2013 - 06:02
fuente

Lea otras preguntas en las etiquetas