Ejemplo de Java "Secure Salted Password" de Crackstation: ¿es realmente seguro?

2

Estoy haciendo un servicio de autenticación, así que he estado buscando algunas buenas implementaciones de Java / Groovy de hashing de contraseñas y sal. He encontrado este artículo en crackstation junto con un ejemplo de código y decidí hacerlo mío. Lo primero que noté es SHA1 y solo 1000 iteraciones, así que las cambié a SHA256 y 90510 (todavía tengo que probar el rendimiento en el servidor y tal vez aumentarlo a al menos 100k).

Sin embargo, una cosa me impresionó. La cadena de resultados es "[iteraciones]: [sal como hexadecimal]: [hash como hexadecimal]". ¿Por qué se agregan iteraciones al resultado? ¿No sería eso inseguro? ¿No sería eso como regalar un pedazo de la llave? O soy demasiado paranoico.

Lo he eliminado, pero me pregunto por qué está allí. ¿Cuál es el propósito de mostrar eso? En caso de que el número predeterminado de iteraciones cambie? ¿Debería el número de iteraciones ser aleatorizado a un grado?

    
pregunta MrPlow 27.01.2015 - 19:38
fuente

1 respuesta

5

Al igual que la sal, no se espera que el recuento de iteraciones se mantenga en secreto de los atacantes. Hace que el trabajo de los atacantes sea un poco más difícil si no conocen el número de iteraciones, ya que eso agrega una pieza de información que tienen que encontrar en otro lugar. Pero, en general, no se espera que sea un obstáculo que no puedan superar.

Al almacenar el valor de iteración junto con la contraseña, facilita la actualización del recuento de iteraciones en el sistema mientras se admiten las contraseñas existentes hasta que se puedan cambiar. La rutina de verificación de su contraseña siempre sabe el número apropiado de iteraciones que debe intentarse al hacer coincidir un hash de contraseña para cada usuario en particular. De lo contrario, tendría que intentar acomodar diferentes recuentos de iteraciones actuales y pasados dentro del código de verificación de contraseña.

La asignación aleatoria de la cantidad de iteraciones no agrega mucho valor, ya que los atacantes no están limitados a las herramientas de craqueo con recuentos de iteraciones codificadas o el uso de tablas de arco iris precalculadas con un cierto número de iteraciones.

    
respondido por el PwdRsch 27.01.2015 - 19:47
fuente

Lea otras preguntas en las etiquetas