¿Cómo puedo identificar y usar la función hash dado el texto suficiente y su hash?

1

Por lo tanto, tengo este programa antiguo actualmente en uso, ya que tengo acceso a la base de datos, he adoptado todos los datos que necesito, excepto las contraseñas de los usuarios ...

Ahora los usuarios me proporcionarán la contraseña de texto sin formato y tendrán que marcarlos antes de encontrarlos en la base de datos

Tengo acceso a la versión binaria y puedo generar hash desde cualquier texto

Estoy seguro de que solo se usa el texto de la contraseña cuando se realiza el hash porque diferentes nombres de usuarios con la misma contraseña obtienen el mismo hash.

Un hash es de longitud fija, independientemente del texto de la contraseña.

Ya he probado todos los algoritmos de hash populares, pero ningún hash proporcionado coincide con el valor que crea este programa.

Sí, podría descompilar este programa y echar un vistazo ... pero probablemente sea ilegal o imposible

    
pregunta konzo 11.03.2016 - 11:12
fuente

2 respuestas

5

En última instancia, la ingeniería inversa es el método más completo, y ciertamente es posible. También hay un sitio dedicado de intercambio de pila para ingeniería inversa. Podría decirse que al probar contraseñas conocidas y verificar los valores hash resultantes, ya ha comenzado a aplicar ingeniería inversa a esa pieza de software binario. No hay nada cualitativamente especial para la descompilación: lo que constituye ingeniería inversa es el intento de comprensión, y usted ha dado el primer paso en ese camino.

En cuanto a la legalidad, depende mucho de la jurisdicción. Lo que tradicionalmente se dice es que la ingeniería inversa para fines de interoperabilidad es un juego justo en Europa (siempre y cuando solo uses, no publiques, tus hallazgos) pero quizás no en los EE. UU. Las leyes sobre ese tema tienden a cambiar rápidamente, con cosas como DMCA , así que no confíe demasiado en la fiabilidad. de la Tradicion.

Yo sugiero que use el software binario para verificar la contraseña de cada usuario cuando ese usuario inicie sesión, pero luego, ya que tiene la contraseña disponible en ese punto, vuelva a copiarla con otro, seguro y la función de hashing de contraseña completamente especificada (por ejemplo, bcrypt); ese nuevo hash se usará para verificar más intentos de inicio de sesión para ese usuario.

De esa manera, puede mover gradualmente todos los hashes de contraseña a un nuevo sistema, y después de un tiempo podrá retirar el sistema anterior con el hashing binario. En cualquier caso, ese hash antiguo es débil, ya que no tiene sal (un atacante que puede ver la base de datos podrá acelerar mucho los ataques a través del paralelismo), por lo que debe elaborar un plan de transición a un sistema más seguro. / p>     

respondido por el Thomas Pornin 11.03.2016 - 15:44
fuente
0

IANAL, pero no veo que esto sea ilegal. Parece que eres el desarrollador a cargo de reemplazar el software antiguo con una versión más nueva que no comparte binario, pero comparte la base de datos (incluido el hash de contraseña). No está intentando descifrar las contraseñas (o si lo está, la pregunta de si la descompilación es ilegal realmente no se presentaría;)).

Siempre que todas las demás legalidades estén en orden (es decir, su empresa o usted es el propietario de la licencia para usar ese software, usted es el propietario de los datos, etc.), entonces es seguro que es un buen uso para descompilar el algoritmo hash, solo para ver cuál es.

Si encuentra que es un algoritmo disponible gratuitamente (cualquier función hash estándar antigua) con un sal fijo, simplemente continúe desde allí. Si es un algoritmo hash "especial", entonces puede pensar si lo reutiliza. Entonces se enfrenta a la lata de gusanos que es la discusión sobre los algoritmos de derechos de autor ...

    
respondido por el AnoE 11.03.2016 - 15:42
fuente

Lea otras preguntas en las etiquetas