¿Qué tan seguro es mi algoritmo de hash? [duplicar]

-4

Esta es probablemente la pregunta común en el intercambio de pila, pero necesito saber si esto es realmente seguro como parece.

  //Password hashing stage 1
  $a_password = sha1($a_password);
  $a_password = md5($a_password);
  $a_password = md5($a_password);
  //Password hashing stage 2
  $a_hash_user = sha1($a_username);
  $a_hash_user = md5($a_username);
  //Final stage
  $a_user_pass = $a_password.$a_username;
  $a_password_combined = md5($a_user_pass);
  //Final hash
  $a_password = $a_password.$a_hash_user.$a_user_pass.$a_password_combined;

Quiero crear un algoritmo de creación de contraseñas que no se pueda rastrear o que, al menos, sea difícil para quienes desean todas estas contraseñas.

Déjame saber lo que piensas sobre esto.

    
pregunta Stefan 07.12.2018 - 19:22
fuente

2 respuestas

8

Su algoritmo de hash parece ser para las contraseñas de hash. Consiste en dos pasos SHA1 y cuatro pasos MD5. Estos pasos se pueden ejecutar muy rápidamente en paralelo, lo que permite calcular en el orden de 2 × 10 9 hashes por segundo. Si un atacante tiene acceso a un hash de contraseña, puede forzarlo brutalmente con 2 × 10 9 conjeturas por segundo. Esto es bastante rápido.

En cambio, desea realizar en el orden de 100 000 iteraciones de hash para que un atacante pueda realizar aproximadamente 10 intentos por segundo.

    
respondido por el Sjoerd 07.12.2018 - 19:45
fuente
2

Esto es seguridad por oscuridad. En algunos casos, podría ser útil, siempre que no sea lo único en lo que se confíe y que todo esté también seguro por diseño. Pero en este caso específico, no veo ninguna seguridad por diseño. No veo nada como bcrypt u otros métodos de hash que se consideran seguros por diseño. Demonios, ni siquiera veo un simple sha256 simple, porque en su lugar estás usando sha1 y md5. Si quisieras una ofuscación más razonable, tendrías que comenzar desde algo seguro por diseño (como bcrypt, etc.) y luego agregar alguna ofuscación.

Pero en este caso, ¿vale la pena la ofuscación? ¿Qué amenaza va a mitigar? Va a mitigar la amenaza de que un atacante obtenga los hashes, pero no tenga ni sepa nada más. Lo más probable es que un atacante también intente hacer otras cosas: leer otros archivos, cargar archivos infectados, etc. En otras palabras, a menos que esté seguro de que su aplicación es perfectamente segura y que lo único que un atacante puede hacer es simplemente leyendo la base de datos, la amenaza contra la que está protegiendo no es coherente con todo el modelo de amenaza. Si es probable que el atacante solo pueda escribir en la base de datos, podría cambiar el correo electrónico de un administrador, restablecer la contraseña utilizando el correo electrónico del atacante y obtener acceso a la aplicación como administrador. Es solo un ejemplo.

En conclusión: lo que estás haciendo probablemente no valga la pena en absoluto, e incluso si lo fuera, lo estás haciendo mal al usar ofuscación sin confiar primero en la seguridad por diseño.

    
respondido por el reed 07.12.2018 - 19:40
fuente

Lea otras preguntas en las etiquetas