Autenticación del servicio web mediante PBKDF2 y un Salt público: ¿es necesario cambiar el Salt en cada solicitud?

1

He implementado la autenticación PBKDF2 para algunos servicios web.

Al cliente se le proporciona la siguiente información, para que pueda duplicar la función PBKDF2:

  • el algoritmo de hash (SHA256)
  • una contraseña secreta que tiene 30 bytes de longitud
  • el número de iteraciones (4096)
  • la longitud de hash (32)

Se espera que el cliente genere un sal aleatorio criptográficamente seguro y lo use en la función PBKDF2. El hash PBKDF2 resultante y una codificación base64 de la sal se agregan a un encabezado de Autorización X en cada solicitud.

por ejemplo Autorización X: 882fac38qkf98ff1ed29W4bd2f95P214 = & & = 2c55a195

Todas las solicitudes se realizan a través de https: //. Siempre he tenido la impresión de que debería generarse una nueva sal en cada solicitud, ya que esto evita los ataques de la tabla del arco iris ... ¿pero es realmente necesario?

Digamos que alguien rompe la capa TLS, para que puedan ver el hash de la contraseña y la sal que se usó. Tienen la intención de romper esta contraseña y, por lo tanto, crean una tabla de arco iris utilizando esta sal visible. Dudo que vayan a descifrar una contraseña de 30 bytes, pero si lo hacen, ahora tienen la contraseña que le enviamos al cliente.

En este punto, con la contraseña, pueden realizar cualquier solicitud que deseen. No importa si se usa una nueva sal en futuras solicitudes. No es necesario crear otra tabla de arco iris para descifrarlas, porque ya tenemos la contraseña.

¿Hay algo que estoy pasando por alto o malentendido? ¿Es beneficioso generar un nuevo salt y ejecutar la función PKDF2 en cada solicitud?

    
pregunta Sno 14.03.2018 - 10:39
fuente

2 respuestas

3

El punto de usar sal es prevenir ataques de fuerza bruta contra múltiples contraseñas a la vez. Si todos tienen diferentes sales, su diccionario o tabla de arco iris solo es válido para una sal específica.

Por lo tanto, usar diferentes sales para la misma contraseña no es útil.

N.B .: Si alguien puede romper las conexiones TLS, probablemente atacarán algo más interesante que tu aplicación web. ;)

    
respondido por el Elias 14.03.2018 - 10:58
fuente
0

¿Honestamente? No hay necesidad, es solo una sobrecarga de procesamiento adicional. Si creas una sal única, puedes usarla para todas tus comunicaciones y la única forma de romperla sería que el atacante obtuviera tu sal, luego usara la sal para atacar tu contraseña. Si usaste una contraseña compleja, hay pocas posibilidades de que suceda algo.

    
respondido por el Nick W. 14.03.2018 - 14:03
fuente

Lea otras preguntas en las etiquetas