Sí, esta es la pregunta de 'otro hashing del lado del cliente'. Pero, no te vayas todavía, creo que hay algo de valor aquí.
Me gustaría hacer algo para mitigar el efecto en la comunidad en general cuando me roben la base de datos de hash de contraseña. (Ver: LinkedIn, Match.com, Yahoo, etc ...)
En esos casos, el análisis estadístico de las contraseñas filtradas se ha utilizado para mejorar las heurísticas para detectar el craqueo de la contraseña de un usuario. Me gustaría ayudar a evitar que eso suceda.
Aquí está la idea: tome la contraseña de texto simple del usuario, haga un hash lento en el lado del cliente tantas veces como sea posible. Luego, use el hash como la contraseña pasada al servidor. Trate la contraseña-hash del cliente como si fuera una contraseña normal y vuelva a utilizar el hash lento en el lado del servidor.
Esto debería hacer que mi base de datos de contraseñas sea inmune a los ataques heurísticos. (Bueno, en realidad no es inmune, solo es costoso usar las heurísticas).
Sin embargo, mi preocupación es que la reducción de la entropía en la producción de hash del lado del cliente podría eliminar las ganancias que encontré al eliminar el valor de las heurísticas.
¿Cómo se puede cuantificar esta compensación? ¿Alguna idea sobre el enfoque?
Editar
Para ser claros, estoy tratando de hacer que los ataques heurísticos sean menos valiosos. es decir, quiero que 'Contraseña1' sea una contraseña tan buena como 'tqwe657fdh'. Es decir, un atacante tendrá que buscar el mismo espacio para descifrar cualquiera de los dos.
Otra edición
La discusión me ha ayudado a aclarar mis pensamientos:
Con las recientes filtraciones de muchas bases de datos de contraseñas grandes y el análisis resultante de las contraseñas y los patrones comunes, creo que las heurísticas utilizadas en los sistemas de descifrado de contraseñas deben haberse mejorado.
Los avances recientes con la ejecución de hash asistida por GPU ( enlace ) están cambiando el beneficio de desequilibrio de la CPU hacia el atacante. (De todos modos, ya estaba bastante desequilibrado. Es una tarea difícil manejar las contraseñas de hash lento en el hardware del servidor centralizado una vez que el sistema se acerca a la escala de Internet).
Quiero hacer dos cosas:
Elimine el beneficio que mi atacante recibe de las heurísticas, forzando así un verdadero ataque de fuerza bruta.
Disminuye el beneficio que mi base de datos de contraseñas tendrá para la comunidad cracker una vez que me sea robada.
Sospecho que mi idea podría ayudar, pero necesito una forma de cuantificar las compensaciones.