¿Es una actualización de los algoritmos y / o repeticiones de estiramiento de claves una cosa?

2

Considera que en los años 90 estás delante de la curva, hasheado y procesado tus contraseñas con SHA y eres un sitio grande, millones de cuentas, etc.

Bueno, la web evoluciona y, con el tiempo, se esperan medidas de seguridad más avanzadas y comunes. Ampliación de teclas, hardware más avanzado, hardware más barato, etc.

Imaginemos que no todos sus clientes inician sesión cada año. No importa la frecuencia con la que inician sesión, si crearon la cuenta en los años 90 y quieren acceder a ella en 2014, eso está perfectamente bien. Pero quieres mejorar su seguridad.

Imagine una evolución de la seguridad en la que pasa de un simple hash SHA, a PBKDF, a Bcrypt, a Scrypt y al futureCrypt. A lo largo de esta evolución, aumentará las repeticiones y cualquier otro valor configurable que pueda surgir a medida que el hardware aumente en potencia y asequibilidad.

Supongo

1) ¿La gente hace esto, esto es una cosa?

Y

2) ¿Cuáles son las estrategias actuales o las estrategias teóricas para actualizar la seguridad de la contraseña de tal manera?

    
pregunta Andrew Hoffman 19.06.2014 - 16:46
fuente

2 respuestas

4

Esto se está haciendo y la estrategia más utilizada es esta:

  • Genera el hash con el algoritmo anterior sha1(password+salt)
  • Ahora implemente la nueva función de hashing (tomemos scrypt)
  • Tome la base de datos y ejecute su scrypt(hash) en todos los hashes de contraseña guardados
  • Implemente su código scrypt(sha1(password+salt)) para que también use este algoritmo para cambiar las contraseñas

Luego, puede ir un paso más allá y también implementar, de modo que cuando un usuario inicie sesión en su contraseña se cambie de forma subsiguiente, de manera que el hash de scrypt(password) (puede mantener una lista de identificadores de usuario que utilizan el algoritmo anterior y para autenticarlos, migre la contraseña después de iniciar sesión en el nuevo algoritmo y luego elimínelos de la lista). El beneficio aquí es que todas sus contraseñas estarán usando scrypt, incluso las que tienen cuentas inactivas.

    
respondido por el Lucas Kauffman 19.06.2014 - 17:02
fuente
6

Actualizar hashes de contraseñas es una cosa. De hecho, según la teoría de hashing de contraseñas , la iteración cuenta. una buena función de hashing de contraseñas (por ejemplo, bcrypt) es una compensación: hace que la función sea tan lenta como pueda tolerar en su contexto actual . Cuando compra hardware nuevo y más rápido, puede aumentar el número de iteraciones y, por lo tanto, debería hacerlo. La cuenta de iteraciones permite contrarrestar los efectos de la Ley de Moore , pero esto funciona solo mientras el conteo sea de hecho regularmente aumentado.

El método genérico es esperar a que el usuario regrese, y volver a escribir la contraseña con los nuevos parámetros (o incluso una nueva función) en ese punto en el que su servidor efectivamente obtiene la contraseña y puede trabajar en ello. Las personas que lo hacen a menudo lo combinan con una política de vencimiento (las cuentas a las que no se ha accedido en dos años están cerradas o al menos están "congeladas").

Si queremos hacer más, es decir, actualizar los hash de contraseña de forma sin conexión (sin esperar a que aparezca el usuario), entonces tenemos que poner las manos en el cifrado. Uno puede diseñar algunos mecanismos de hashing de anidamiento como se describe en esta respuesta , pero ese es un diseño criptográfico, por lo que uno debe ser muy cuidadoso y, básicamente, abstenerse de hacerlo. En general, "hash the hash" para (temporalmente) fortalecer un valor de hash hasta que el usuario regrese.

Para la competencia de hash de contraseñas en curso , la convocatoria de candidatos aparece como característica deseable:

  

Capacidad para transformar un hash existente en una configuración de costo diferente sin el conocimiento de la contraseña.

Tal característica requiere una estructura interna específica. Algunos candidatos de PHC lo ofrecen, por ejemplo. mía .

    
respondido por el Thomas Pornin 19.06.2014 - 17:04
fuente

Lea otras preguntas en las etiquetas