¿Cuál es la solución para manejar las excepciones en los esquemas de hashing de contraseñas?

0

Existe una técnica llamada hash de contraseña que describe la creación de contraseñas únicas basadas en una clave maestra única y un valor de hash estático y arbitrario.

Al usar esta técnica, el usuario solo tiene que recordar la clave maestra para tener una contraseña única para cada sitio / aplicación.

Hay muchos programas, sitios y extensiones de navegador gratuitos que implementan este sistema. Un ejemplo muy simple es éste .

Esta técnica parece ser útil, pero hay un caso común que no parece manejar bien. Ese caso es cuando el usuario tiene que cambiar la contraseña de un sitio (debido a una infracción de seguridad informada o un cambio forzado debido a la duración del tiempo). Una vez que el usuario cambie esa contraseña, no se ajustará al sistema hash.

La única solución que se me ocurre es que los usuarios cambien la clave maestra para generar una nueva contraseña, pero luego todas sus otras contraseñas no funcionarán con esa nueva clave maestra. Así que ahora tienen que recordar qué sitios usan qué clave maestra, lo que es casi tan malo como hacer que recuerden contraseñas diferentes.

¿Alguien tiene una solución para manejar este caso común?

    
pregunta RockPaperLizard 29.10.2014 - 20:20
fuente

2 respuestas

1

Para que quede claro, hay algo más que se llama hashing de contraseña que es completamente diferente a lo que usted describe, por lo que es una colisión de terminología, lo cual es desafortunado.

Para manejar "excepciones", debe tener algo de almacenamiento. Un método podría ser almacenar (por ejemplo, en un archivo local) un mapa desde el nombre del servidor a alguna cadena, por ejemplo. un entero El esquema sería:

  • El archivo local contiene líneas. Cada línea contiene un nombre de aplicación (por ejemplo, el nombre de un sitio web) y un entero.
  • Si el nombre de una aplicación no aparece en el archivo, entonces la contraseña de esa aplicación será una computadora hash sobre la concatenación (de alguna manera) de la contraseña maestra y el nombre de la aplicación.
  • Si el nombre de la aplicación aparece en el archivo, el valor entero se agrega a la contraseña maestra en la entrada de hash.

De esa manera, el tamaño del archivo local es proporcional al número de excepciones.

Por supuesto, aquí hay un amplio margen para el botín. En particular, cada contraseña generada puede usarse como prueba para un ataque de diccionario sin conexión en la contraseña maestra. Por lo tanto, la contraseña maestra debe ser stronge (es decir, más fuerte de lo que suele ser necesario para las contraseñas).

    
respondido por el Tom Leek 29.10.2014 - 20:30
fuente
1

Esta funcionalidad es similar a la de usar un algoritmo para generar información de contraseña. Ya que proporcionó un sitio de ejemplo: enlace , podemos describir cómo puede generar una nueva contraseña cuando se le solicite que la cambie.

  • Puede agregar un entero, una fecha u otro valor al 'parámetro' para iterarlo
  • Puedes tener varias llaves maestras (semi-derrota)
  • Puede hacer un hash de la contraseña de forma iterativa utilizando el hash anterior como un "parámetro" para la siguiente iteración de hash y dejando su clave maestra intacta.

Debe registrar los nombres y el número entero del sitio, la fecha, lo que tiene, las iteraciones de hashes o ambos. Como esas son las únicas dos entradas, debe modificar una o la otra al generar una nueva contraseña para el mismo sitio. La idea del hash iterativo es probablemente la mejor, ya que el atacante nunca debería conocer la clave, y solo tiene que hacer el hash varias veces según sea necesario.

Suficientemente fácil.

    
respondido por el Desthro 29.10.2014 - 23:29
fuente

Lea otras preguntas en las etiquetas