Recuerde que el valor se almacena en la contraseña: $2a$(2 chars work)$(22 chars salt)(31 chars hash)
. No es un valor fijo.
Si encuentra que la carga es demasiado alta, solo haga que la próxima vez que inicien sesión, críptice algo más rápido para calcular. Del mismo modo, conforme pasa el tiempo y obtener mejores servidores, si la carga no es un problema, puede actualizar la fuerza de su picadillo de cuando inician sesión.
El truco es mantenerlo teniendo aproximadamente la misma cantidad de tiempo para siempre en el futuro junto con la Ley de Moore. El número es log2, de modo que cada vez que las computadoras dupliquen su velocidad, agregue 1 al número predeterminado.
Decidir cuánto tiempo quiere que lleve una fuerza bruta la contraseña de un usuario. Para una palabra de diccionario común, por ejemplo, la creación de su cuenta probablemente ya les advirtió que su contraseña era débil. Si es una de las 1000 palabras comunes, por ejemplo, y toma un atacante 0.1s para probar cada una, que las compra 100 (bueno, algunas palabras son más comunes ...). Si un usuario elige 'palabra de diccionario común' + 2 números, eso es más de dos horas. Si su base de datos de contraseñas está comprometida y el atacante solo puede obtener unos cientos de contraseñas por día, habrá comprado la mayoría de sus usuarios horas o días para cambiar sus contraseñas de manera segura. Es una cuestión de comprarles tiempo.
http://www.postgresql.org/docs/8.3/static/pgcrypto.html tiene algunas veces para descifrar contraseñas para que considere. Por supuesto, las contraseñas que enumeran allí son letras aleatorias. Palabras de diccionario ... Prácticamente hablando, no puede guardar al tipo cuya contraseña es 12345.
El costo frustra los ataques fuera de línea. Cuando está "en línea", puede usar una demora mínima entre intentos (por ejemplo, 5 segundos) para evitar un ataque de denegación de servicio. –
Duplicado en InformationSecurity: [Número recomendado de rondas para bcrypt] (http://security.stackexchange.com/q/17207/46416) –
Para cualquier persona interesada, acabo de escribir una pequeña herramienta CLI de Java para probar el rendimiento de bcrypt en los servidores (que obviamente es importante para equilibrar la seguridad, la carga del servidor y los tiempos de respuesta): https://github.com/cdraeger/hash-performance – Blacklight