¿Es seguro registrar una contraseña con hash?

3

Estoy creando un módulo de inicio de sesión para Wildfly extendiendo org.jboss.security.auth.spi.DatabaseServerLoginModule y usando log4j2 para la depuración.

Me he acostumbrado a utilizar los métodos Logger.entry () y Logger.exit () de log4j2 para el registro de nivel TRACE, y el método exit () tiene la opción de incluir el valor de retorno de un método.

En este caso en particular, estoy sobrescribiendo el método createPasswordHash () de DatabaseServerLoginModule y me pregunto si necesito omitir el valor de retorno en log.exit (), pero sería realmente útil ver que los hashes son utilizado para iniciar sesión coincide (o no) con los hashes que estoy creando para registrarme.

Huele mal, pero por mi cuenta no puedo encontrar ninguna razón para no hacerlo ya que alguien con acceso a los registros aún no sabría qué algoritmo hash usé, cuántas iteraciones, sal, etc. Pero, de nuevo, no soy el pirata informático que intenta entrar en esta cuenta.

    
pregunta Michael Guinn 01.12.2015 - 01:51
fuente

2 respuestas

9
  

¿Es seguro registrar una contraseña con hash?

No hagas esto.

A menos que proteja sus registros en la misma medida que su base de datos (lo que sería muy inusual y probablemente difícil), estará debilitando su seguridad.

Si tiene un esquema de hashing seguro (hash lento, sal buena, etc.) el impacto en la seguridad debería ser mínimo, pero dudo que un impacto valga la conveniencia menor que mencionó.

  

alguien con acceso a los registros todavía no sabría qué hash   Algoritmo que utilicé, cuántas iteraciones, sal, etc.

No desea depender de que los parámetros de su esquema de hash permanezcan en secreto para la seguridad.

La información es muy valiosa para un atacante. Aún no saben estas cosas, pero un hash podría ayudarlos a resolverlo. Por ejemplo:

  1. La longitud y el aspecto del hash pueden dar algunas pistas sobre el algoritmo
  2. Es posible que puedan estimar el número de iteraciones (al menos dentro de un rango de fuerza bruta) por el tiempo que el servidor tarda en completar la solicitud
  3. Si conocen una contraseña (p. ej., la suya propia), esto puede dejar al salt como el único desconocido

Puede ser computacionalmente factible que la fuerza bruta de la sal confirme todos los supuestos que hicieron anteriormente.

Tal vez un atacante no pueda hacer nada útil con esta información, pero tal vez les ayude, realmente no quiere regalar más de lo necesario.

Quién sabe, tal vez comprometan su base de código al mismo tiempo que comprometen sus registros (no es improbable), o tal vez se descubra una debilidad en su algoritmo de hashing en el futuro.

    
respondido por el thexacre 01.12.2015 - 03:58
fuente
1

La respuesta de thexacre ya contiene los argumentos más importantes. Quiero añadir una más:

Incluso si asume que las contraseñas con hash son seguras ahora (no debería), nunca se sabe lo que depara el futuro. Se puede descubrir una debilidad en su algoritmo o implementación de hash que hace que las contraseñas de hash sean crackeables. Entonces, no solo tendrá que preocuparse por proteger los hashes en la base de datos con una nueva estrategia, sino también en los archivos de registro, incluidos todos los archivos de registro existentes.

    
respondido por el Florian Sander 01.12.2015 - 07:37
fuente

Lea otras preguntas en las etiquetas