¿El cifrado de una clave (almacenada en una cookie) aumenta la seguridad?

3

Escenario

  • La clave maestra se ingresa al iniciar sesión y luego se cifra con $server_key
  • La clave maestra ahora se almacena como $_COOKIE['encrypted_key'] variable para la persistencia (por lo que el usuario no tiene que ingresar cada carga de página)
  • $server_key se almacena dentro de un archivo de configuración en el servidor de aplicaciones
  • Los datos se descifran primero descifrando $_COOKIE['encrypted_key'] (usando $server_key ), por lo tanto, revelando la clave maestra
  • $_COOKIE['encrypted_key'] se destruye al salir del navegador

Treat

El atacante obtiene acceso al dispositivo / cookie del usuario y a los datos cifrados (pero no a los archivos de configuración del servidor de aplicaciones).

Pregunta

¿Tiene sentido cifrar la clave maestra con $server_key y luego almacenar $server_key dentro de un archivo de configuración en el servidor de aplicaciones?

Razonamiento

Ganar solo el $server_key o solo el $_COOKIE['encrypted_key'] no comprometerá nada. El atacante debe obtener ambos.

Actualizar

  • Esto está bajo HTTPS
  • El secuestro de la sesión sería difícil ya que verificamos la huella digital de la sesión por solicitud
pregunta IMB 12.09.2016 - 00:54
fuente

2 respuestas

6

Tu modelo de amenaza está incompleto. Estas son algunas de las cosas que te perdiste:

1) La clave maestra y la clave del servidor parecen ser valores estáticos. Esto significa que el valor de la cookie es constante y cualquier persona que tenga el valor de la cookie puede reproducirla en el servidor para robar (araña) todos los datos de texto sin formato para ese usuario.

1a) Las cookies también se almacenan en otras ubicaciones, como los proxies.

2) Si el servidor se ve comprometido, un atacante puede atacar con fuerza el espacio de la clave maestra para descifrar los datos del usuario por usuario. La posibilidad de éxito de esto depende completamente de la longitud de la clave maestra y del algoritmo de cifrado.

3) Un usuario puede derivar la clave del servidor. Como conocen la clave maestra y pueden ver la cookie, pueden forzar la clave del servidor sin conexión. Una vez más, el factor de éxito depende de la longitud de la clave y del algoritmo.

4) No está claro si el servicio se entrega a través de una conexión de texto sin cifrar. En el caso de este último, un atacante puede observar tanto la clave maestra como el valor de la cookie en la misma red. Si la conexión anterior puede ser degradada o pueden existir otras vulnerabilidades.

5) Si el atacante piratea el servidor, puede modificar el código de inicio de sesión para conservar una copia de todas las claves maestras que recibe. Es común que las infracciones pasen desapercibidas durante meses / años.

    
respondido por el wireghoul 12.09.2016 - 05:39
fuente
1
  

El propósito de $ server_key es anular las repeticiones de cookies, pueden reproducirse pero no conocen la $ server_key

El cifrado de la clave maestra con la clave del servidor no anula el ataque de reproducción. El atacante simplemente puede enviar el envío de la clave maestra cifrada a su servidor y descifrar los datos que el atacante deseaba. Su servidor se convierte en un agente confuso . El atacante no necesita comprometer el servidor u obtener la clave del servidor para hacer esto.

Para limitar este ataque, puede agregar una fecha de caducidad y una dirección IP dentro de la clave maestra cifrada, es decir, Cifrar (MasterKey + Caducidad + dirección IP), su servidor solo debe usar el token cifrado si no está vencido y la solicitud proviene de la dirección IP dada.

    
respondido por el Lie Ryan 13.09.2016 - 04:38
fuente

Lea otras preguntas en las etiquetas