¿Hay alguna forma de verificar si la aplicación guarda la contraseña en texto sin cifrar o en formato hash? [duplicar]

3

Tengo cuatro tipos de contraseñas y las uso de acuerdo con la importancia de la aplicación web. Por lo tanto, si veo una aplicación que no usa SSL y tengo que crear una cuenta, usaré una contraseña básica que se usa para todas las aplicaciones no sensibles. Ahora, incluso si una aplicación utiliza HTTPS, soy escéptico sobre si las contraseñas se almacenan en texto sin formato en la base de datos y alguien puede encontrarlas en una tabla. Digamos que, de alguna manera, la base de datos fue hackeada y el atacante tiene todas las contraseñas.
Como mis otras tres contraseñas están algo relacionadas, quiero asegurarme de que mis contraseñas importantes no se compartan con una aplicación que guarda las contraseñas en texto sin formato.

Entonces, ¿hay una manera de encontrar información sobre el mecanismo de almacenamiento de contraseña de una aplicación?

    
pregunta one 21.11.2016 - 19:52
fuente

2 respuestas

5

No, no existe si la aplicación no es de código abierto.

La única forma segura de protegerse es usar una contraseña diferente para cada sitio web que use. Puedes usar varios administradores de contraseñas para eso.

Si está interesado en saber si un sitio almacena contraseñas de texto simple, intente llamar al servicio de asistencia y suplicarle que le proporcionen su contraseña, que ha olvidado convenientemente. Si te lo dan, ya sabes.

Suponiendo que almacenan contraseñas con hash, eso no es garantía de que su contraseña esté suficientemente protegida. Una gran cantidad de sitios parecen utilizar hashes sin sal de calidad cuestionable (md5, por ejemplo). Los hashes MD5 sin sal pueden forzarse bruscamente con buenas tasas de recuperación para contraseñas más simples, aunque las contraseñas largas, poco comunes o aleatorias deberían ser seguras.

    
respondido por el Pascal 21.11.2016 - 20:00
fuente
2

Podría usar un Ataque de tiempo * para determinar esta información.

Es posible que pueda distinguir un Hash de contraseña (lento / fuerte) de un hash débil (rápido) o de texto sin formato mediante la medición del tiempo de procesamiento del formulario de inicio de sesión (que probablemente sea un script muy simple). no envíe una contraseña y vea cuánto tiempo adicional se necesita cuando se incluye la contraseña. El script requerirá:

  1. un tiempo de búsqueda minúsculo para encontrar al usuario y su sal
  2. un tiempo adicional para hash la contraseña para la comparación

En mis recomendaciones sobre el hashing de contraseña , Sugiero que el Hash de contraseña (lento / seguro) debe tomar aproximadamente 100 ms (con protección DoS) en la plataforma de destino (sabiendo que se usaría hardware más rápido para la fuerza bruta), pero podría ser tan bajo como 10 ms o 1 ms (mucho más difícil a medida) y aún así ser considerado como razonablemente seguro. (por otros expertos en seguridad)

En las pruebas habrá varias consideraciones:

  • Qué tan consistente es el tiempo de respuesta en cada intento.
  • Un desarrollador de aplicaciones bien seguro se defenderá contra los ataques de tiempo de enumeración de usuarios procesando el hash con sal falso en el caso de que el nombre de usuario sea incorrecto, por lo que sería difícil observar la diferencia en el tiempo de procesamiento.

    (No espero demoras falsas cuando el nombre de usuario y la contraseña están totalmente en blanco, pero podría ser difícil distinguir la diferencia de demora entre # 1 y # 2 arriba)

  • Muchas aplicaciones tardan mucho menos de 100 ms en hash, por diversas razones, y esto dificulta la prueba de sincronización.

* La búsqueda de vulnerabilidades en el software de otras personas sin permiso es ilegal en muchas jurisdicciones. Aunque, en realidad, no creo que lo atraparan incriminated para probar el tiempo de respuesta de solo unos pocos intentos de inicio de sesión.

    
respondido por el George Bailey 21.11.2016 - 20:01
fuente

Lea otras preguntas en las etiquetas