En una aplicación web que (como efecto secundario de la implementación del anti-patrón de contraseñas) almacena contraseñas, una recomendación es cifrarlas para almacenarlas (o hashes con sal unidireccionales costoso computacionalmente costosos). Sin embargo, hacer esto hace que el proceso del servidor pase la mayor parte del tiempo haciendo comparaciones de bcrypt con uso intensivo de la CPU, ya que el objetivo de usar bcrypt es que lleva tiempo probar una contraseña.
Mi pregunta es la siguiente: ¿es seguro almacenar en caché (en memoria) la respuesta de una comparación de bcrypt? No me preocupa pasar el tiempo una vez por proceso, pero una vez por cada solicitud única se convertirá en un cuello de botella de escalabilidad. Puntos de bonificación (?) Si puede arrojar algo de luz si es una práctica común hacerlo.
Cosas que he considerado:
- Si solo está en la memoria, entonces es más difícil atacar
- El almacén persistente es tan seguro como antes si está comprometido
- Bajar el factor de carga bcrypt hace que la base de datos de contraseñas sea más vulnerable, si está comprometida