¿Es seguro usar SHA-3 en un creador de contraseñas como este?

3

Actualmente utilizo los algoritmos de hash SHA-3 para crear contraseñas a través de un conjunto de caracteres determinado. El flujo de usuario:

  • El usuario ingresa su Contraseña maestra (M), Nombre del sitio (S), Longitud de la contraseña (PL) y elige los caracteres que la contraseña debe tener (C).
  • sha (sha3 (M + S + C) + PL)
  • el resultado binario se asignará a los caracteres seleccionados.
    • si los caracteres de 'a' hasta 'z' se usan, 0000 0000 Byte será una 'a', un 0000 1111 Byte sería una 'p' y un 0001 1010 Byte será una 'a'

¿Es seguro usar SHA-3 o crearé un Loophole que se puede usar para "adivinar" las contraseñas o mucho peor: obtener la contraseña maestra?

Aquí hay un enlace a la Código fuente

    
pregunta Serverfrog 24.02.2017 - 15:55
fuente

2 respuestas

2

Desde una perspectiva de seguridad de la información, debe considerar su esquema público, según el principio de Kerchkoff , incluso más desde que reveló su código fuente. Por lo tanto, la seguridad de su contraseña generada se reduce a la seguridad de su entrada. El algoritmo elegido es irrelevante, ya que un atacante elegiría la entrada y usaría su algoritmo para generar la contraseña.

Entonces, evaluemos la seguridad de sus entradas:

  • Contraseña maestra: si un atacante la encuentra, todas sus contraseñas están en peligro. No reutilice sus contraseñas.
  • Nombre del sitio: esto es de conocimiento público, no aumenta la seguridad.
  • Longitud de la contraseña: contiene muy poca entropía. Es casi inútil.
  • Caracteres disponibles: supongo que siempre usa los mismos o utiliza todos los caracteres permitidos por el sitio web, ya que hacerlo sería muy inconveniente. Por lo tanto, es equivalente a una segunda contraseña maestra pequeña.

Entonces, básicamente, su esquema contiene información pública con una contraseña maestra. Un atacante solo necesita forzar con éxito una de sus contraseñas generadas para recuperar su contraseña maestra y luego poder encontrar fácilmente las otras contraseñas generadas.

Una mejor solución sería generar aleatoriamente tus contraseñas. De esta manera, no pueden filtrar información sobre los demás. A continuación, puede guardarlos en un archivo o base de datos cifrados. Solo tendría que recordar la contraseña maestra de la base de datos cifrada, sin tener que recordar la longitud de la contraseña o cómo se llamó al sitio web antes de cambiar su nombre. Los administradores de contraseñas le permiten hacer eso.

    
respondido por el A. Hersean 25.02.2017 - 16:26
fuente
-2

Tu propuesta no es segura. Según la hoja de referencia de almacenamiento de contraseña de OWASP , su función carece de las siguientes defensas:

  • factor de trabajo. Debe haber un costo asociado con la función de hash para mitigar los ataques de fuerza bruta.
  • sal. Esto es para evitar que dos o más personas con la misma contraseña en el mismo sitio tengan el mismo valor hash. Salt también agrega entropía adicional sin depender de la complejidad de la contraseña maestra.

¿Hay alguna razón por la que no esté utilizando las técnicas de expansión de clave de contraseña establecidas como PBKDF2?

    
respondido por el HTLee 25.02.2017 - 02:42
fuente

Lea otras preguntas en las etiquetas