Seguridad de contraseña

12

Se me solicitó en la página de inicio de sesión de un sitio web para cambiar primero mi contraseña. Después de escribir una nueva contraseña, la página web me dijo que la nueva contraseña no era lo suficientemente diferente de la anterior. ¿Significa esto que la empresa que administra el sitio web no almacena las contraseñas de manera segura? ¿O hay una manera de almacenar las contraseñas con hash y aún poder descubrir que la contraseña anterior solo difiere 1 carácter de la nueva?

    
pregunta Robert 30.12.2013 - 20:58
fuente

4 respuestas

21

Como acaba de ingresar su contraseña anterior para iniciar sesión, un sitio puede guardar esa contraseña para comparar, muy brevemente, solo hasta que haya completado el cambio de contraseña en la página siguiente. Este es un principio bastante seguro, y es así como la utilidad UNIX passwd detecta contraseñas nuevas demasiado similares .

Debido a que generalmente se requiere que solicite la contraseña actual del usuario cuando cambie la contraseña , este enfoque de similitud -la detección se puede aplicar fácilmente en la mayoría de los escenarios de cambio de contraseña.

Para completar, aquí hay otras posibilidades menos probables:

  1. El sitio almacena su contraseña en texto plano.

  2. El sitio utiliza un hash con algún tipo de debilidad que permite comparaciones significativas (por ejemplo, estimaciones de la distancia de Levenshtein ) de contraseñas hash. Si este es el caso, es una debilidad sustancial, y no es mucho mejor que almacenar su contraseña en texto sin formato.

  3. Alternativamente, la contraseña puede almacenarse en una transformación reversible, por ejemplo, encriptación. Esta no es una buena forma de proteger contraseñas: abre la posibilidad de que la contraseña se comprometa a través de un compromiso clave, y no ofrece beneficios significativos porque no es necesario hacer que las transformaciones de contraseña seguras sean reversibles (por lo que usualmente usamos hashes).

  4. Cuando ingresa una nueva contraseña, el sitio contiene un conjunto de pequeñas transformaciones de su nueva contraseña para ver si alguna de ellas coincide con su hash de contraseña anterior. Esto podría hacerse de manera segura.

    Por ejemplo, supongamos que el sitio conoce su hash de contraseña anterior, Q . Cuando ingresa una nueva contraseña p , el sitio calcula los hashes de las contraseñas que están muy cerca de p . Suponiendo que su nueva contraseña es xyzzy , el sitio podría probar el hashing ayzzy , byzzy , cyzzy , etc., para ver si alguna de ellas coincide con el hash antiguo Q .

    Esto parece un esfuerzo sustancial, especialmente si el sitio utiliza un algoritmo de hash que es adecuado para contraseñas (es decir, en particular, uno que es lento de computar). Por lo tanto, incluso si este caso fuera cierto, parece sugerir que el sitio utiliza un algoritmo de hashing poco adecuado para proteger las contraseñas.

Por supuesto, no podemos saber cuál de estas posibilidades es verdadera, todas podrían resultar fácilmente en el comportamiento que usted describe.

    
respondido por el apsillers 30.12.2013 - 21:22
fuente
3
  

¿Esto significa que la empresa que administra el sitio web no almacena las contraseñas de manera segura?

Una posible forma de hacerlo es comparando su nueva contraseña con la contraseña anterior que proporcionó en la misma página (o la anterior) para iniciar sesión en este sitio web. Tenga en cuenta que aunque el sitio web almacena el hash de la contraseña, su contraseña de texto sin formato se envía al sitio web cada vez que inicia sesión. Para la función de cambio de contraseña, podrían guardarla temporalmente en la sesión para realizar estos cálculos de "cómo son las contraseñas".

Si es así como lo hacen, no veo ningún problema con eso. Sin embargo, si realmente están invirtiendo las contraseñas por algún medio, entonces definitivamente no lo están haciendo de la manera correcta.

  

¿O hay una manera de almacenar las contraseñas con hash y aún poder descubrir que la contraseña anterior solo difiere 1 carácter de la nueva?

No, no hay forma de recuperar la contraseña de texto sin formato o calcular la longitud del texto sin formato a partir de su hash (dado su hash usando un algoritmo de hashing bueno y no se puede forzar con fuerza)

    
respondido por el CodeExpress 30.12.2013 - 21:22
fuente
0

Hashing es un proceso en el que el cambio más pequeño da un resultado completamente diferente y no es reversible. La única forma en que podrían comparar su contraseña anterior con su nueva contraseña sería si almacenan sus contraseñas sin que se las borre.

Esto no significa que estén almacenando sus contraseñas de forma insegura: el hashing es solo un método de almacenamiento seguro de contraseñas. Las contraseñas de hash no son garantía de seguridad de todos modos, con las tablas de hash y las tablas de rainbow las contraseñas de hash se pueden descifrar con relativa facilidad. Siempre que estén almacenados encriptados y que los controles a su alrededor sean sólidos, entonces usted es lo más seguro posible.

Todo depende de qué tan bien la compañía en cuestión haya desarrollado su producto, y eso no se puede responder aquí.

    
respondido por el GdD 30.12.2013 - 21:20
fuente
-1

Es probable que las contraseñas estén encriptadas. Dependiendo de la implementación del cifrado, su contraseña es segura. Entonces, no, dada esa información, no puede concluir que sus contraseñas se almacenan en un asunto inseguro.

Teóricamente, al menos, el servidor puede almacenar solo el hash. Luego, cuando venga con su nueva contraseña, tendrán variaciones de su contraseña para ver si alcanzaron su contraseña original. Es un poco exagerado, pero ciertamente es posible.

    
respondido por el Rubber Duck 30.12.2013 - 21:18
fuente

Lea otras preguntas en las etiquetas