Si las contraseñas se almacenan en hash, ¿cómo sabría una computadora que su contraseña es similar a la última si intenta restablecerla?

11

Si las contraseñas se almacenan en hash, ¿cómo sabría una computadora que su contraseña es similar a la última si intenta restablecerla? ¿No serían las dos contraseñas totalmente diferentes ya que una es hash y no se puede revertir?

Bob Larry
fuente
55
La computadora no sabría si son similares. Solo sabría si fueran idénticos (cifrando la nueva contraseña y comparándola con el hash almacenado de la contraseña original).
Robert Harvey
Sin embargo, hay formas de generar un hash que capture parte de las características de la contraseña. La disponibilidad de tales hashes, sin embargo, es una gran escapatoria, porque los descifradores de contraseñas también pueden hacer uso de dicha información para reducir la búsqueda de fuerza bruta de contraseñas en muchos órdenes de magnitud.
rwong
Si necesita comparar contraseñas, no usará hashes. Es probable que use AES u otras formas de cifrado simétrico
Laiv

Respuestas:

15

Una forma de implementar esto es si restablece la contraseña, por lo general también se le pide que ingrese su contraseña anterior. Simplemente puede usar una comparación de similitud de cadena regular en esa situación porque tiene ambas contraseñas en forma de texto sin formato en ese punto.

Otra forma de implementar esto es normalizar la contraseña, por ejemplo, los caracteres acentuados se normalizan a los alfabetos ingleses más cercanos, intentar transcribir el texto fonéticamente, eliminar números, etc., y calcular previamente varias versiones de los hashes que se generan a partir de la contraseña que había sido normalizado de diferentes maneras. Tenga en cuenta que esto debilita el mecanismo de hash en una cantidad no especificada. No lo consideraría una buena práctica de seguridad.

Lie Ryan
fuente
"Restablecer contraseña" generalmente se refiere a "Olvidé mi contraseña y quiero restablecerla", por lo que no se le pedirá la contraseña anterior. Sin embargo, la segunda mitad de su respuesta es precisa.
casablanca
3
@casablanca: hay muchos sistemas por ahí que tienen que "restablecer" su contraseña cada X días ...
llama
1
@casablanca: la primera mitad también es precisa, "restablecer la contraseña" puede tener ambos significados, la terminología no es tan rígida. Necesitamos preguntarle al OP qué significan precisamente.
Doc Brown
12

La respuesta simple es que un sistema seguro no sabe si son similares.

Pero algunos sistemas reducen intencionalmente la seguridad de una contraseña específica de alguna manera para evitar que las nuevas contraseñas sean viejas o similares. La compensación de costo beneficio es que se creará una nueva contraseña antes de que alguien descifre maléficamente la contraseña actual incluso con la información de similitud.

  • Pueden almacenar los últimos N hashes de contraseñas que haya utilizado. Si ingresa una contraseña antigua, es aparente porque el nuevo hash de contraseña coincide con un hash de contraseña anterior.
  • El mecanismo de hash utilizado podría contener un mecanismo de clavado de pulgar, o una miniatura de hash podría almacenarse junto al hash. Esencialmente, ciertos patrones de bits dentro de la miniatura hash expresan un conjunto de patrones de bits muy similares en el valor subyacente.
  • Del mismo modo, podrían mantener las estadísticas al margen de su contraseña, lo que permitiría una medida precisa de similitud.

En general, cada una de estas técnicas reduce la seguridad de las contraseñas.

  • Mantener contraseñas antiguas reduce la seguridad de esas contraseñas. Si alguna de esas contraseñas se descifra, existe una alta probabilidad de que la contraseña actual sea similar a ellas, la mayoría de las personas solo cambian un número.

  • El enclavamiento del pulgar y las estadísticas pueden eliminar las suposiciones de contraseña incorrecta más rápidamente que intentar descifrar la suposición y comparar. Esto se debe a que los hash, particularmente los hash seguros, son complicados de calcular y requieren esfuerzo, incluso si el hardware se acelera. Si bien un cálculo más simple que dice 'definitivamente no' o 'tal vez' puede eliminar la mayoría de esas suposiciones, después de todas las comprobaciones de similitud están destinadas a evitar que use contraseñas similares, no el uso de una contraseña completamente nueva que no se parece en nada a la anterior.

En resumen, desconfíe de cualquier sitio que indique una medida de similitud con su contraseña actual / anterior. A menos que estén diciendo que la nueva contraseña es la contraseña anterior.

Kain0_0
fuente
7

Si las contraseñas se almacenan en hash, ¿cómo sabría una computadora que su contraseña es similar a la última si intenta restablecerla? ¿No serían las dos contraseñas totalmente diferentes ya que una es hash y no se puede revertir?

Usted genera múltiples contraseñas similares a la que ingresó el usuario y verifica si alguno de sus valores hash coincide con el de la contraseña anterior.

Jörg W Mittag
fuente
Sí, las personas son bastante predecibles en el tipo de cambios que harán, por lo que esta podría ser una forma decente de hacerlo.
cyborg
Eso explotaría muy rápido en términos de procesamiento necesario con solo las contraseñas más cortas. Así que no creo que esta sea una práctica real.
Martin Maat
Trabajé en un lugar durante bastante tiempo, y cuando dejé mi contraseña era supersecurepassword39. (Solo los dos últimos dígitos son verdaderos). Es obvio si una contraseña comienza o termina con un número para ver si se utilizó el número anterior.
gnasher729
@MartinMaat ¿Sin embargo? Puede detectar, por ejemplo, agregar o incrementar un número eludiendo los caracteres uno por uno de la contraseña original. Es decir, para "contraseña", hash "assword" (heehee), "pssword", "pasword", etc. Incluso podría salirse con la suya usar un debilitador debido a la complejidad adicional de tener que probar 256 permutaciones de cada uno si sucede que fuerza bruta el hash secundario. (Más si los almacena en orden aleatorio y no sabe qué personaje se elidió en cuál, entonces es 256 * N para cada uno.)
millimoose
Sí hace que configurar una nueva contraseña sea N veces más costoso cuando N es la longitud de la contraseña, sin incluir las comprobaciones de similitud que deberían ser mucho menos costosas que el hash. Pero usa contraseñas hash cada vez que un usuario inicia sesión, y esto probablemente ocurre con mucha más frecuencia que los cambios de contraseña, por lo que dudo que la carga adicional sea tan notable.
millimoose
2

Otro patrón es que su sistema tiene algunos subconjuntos característicos de su contraseña y almacena esos hash para verificar si los subconjuntos de la nueva contraseña coinciden con alguno de los antiguos, es decir: contraseña: "Admin2018" y subconjunto: "Admin" = no puede ingresar "Admin2019" como uno nuevo.

Lukasz Matysiak
fuente
1

Una forma sería almacenar las últimas cinco contraseñas hash en una tabla como 'Historial de contraseñas' y cuando el usuario esté tratando de establecer una nueva contraseña, descifrarla y compararla con las contraseñas hash de la tabla.

SKDev
fuente