¿SSL / TLS (https) oculta las direcciones URL a las que se accede [duplicado]

60

Supongamos que escribo esto en mi navegador

https://www.mysite.com/getsecret?username=alice&password=mysecret

y un atacante está observando todo el tráfico de mi a mi ISP.

¿Qué información está protegida por HTTPS? ¿Se revela la URL? ¿Se revelan los parámetros de la solicitud de obtención?

También, ¿HTTPS proporciona integridad para la url?

Intenté ver varios artículos HTTPS y la especificación TLS, pero no pude resolver esto.

[EDIT:] Está bien si solo se revela el nombre de dominio del servidor. Sin embargo, ninguna parte de ?username=alice&password=mysecret debe ser revelada.

    
pregunta Jus12 29.09.2011 - 14:45
fuente

6 respuestas

55

El protocolo HTTPS es equivalente a usar HTTP en un SSL o TLS (a través de TCP).

Por lo tanto, primero se abre al servidor una conexión TCP (en el puerto 443). Esto suele ser suficiente para revelar el nombre de host del servidor (es decir, www.mysite.com en su caso) al atacante. La dirección IP se observa directamente, y:

  1. usualmente hiciste una consulta de DNS sin cifrar antes,
  2. muchos servidores HTTPS sirven solo un dominio por dirección IP,
  3. El certificado del servidor se envía sin formato y contiene el nombre del servidor (entre varios, tal vez),
  4. en las versiones más nuevas de TLS, hay una indicación del nombre del servidor, por la cual el cliente le indica al servidor qué nombre de host desea, de modo que el servidor pueda presentar el certificado correcto, si tiene varios. (Esto se hace para poder alejarse de 2.)

Entonces tiene lugar un apretón de manos TLS. Esto incluye la negociación de una suite de cifrado y luego un intercambio de claves. Suponiendo que al menos uno de su navegador y el servidor no incluyó el cifrado NONE en las suites aceptadas, todo lo que sigue al intercambio de claves está cifrado.

Y suponiendo que no haya un ataque de hombre en el medio exitoso (es decir, un atacante que intercepte la conexión y presente un certificado de servidor falsificado que su navegador acepta), el intercambio de claves es seguro y ningún intruso puede descifrar nada que luego se envía entre usted y el servidor, y además, ningún atacante puede cambiar ninguna parte del contenido sin que esto se note. Esto incluye la URL y cualquier otra parte de la solicitud HTTP, así como la respuesta del servidor.

Por supuesto, como D.W. Las menciones, la longitud de la solicitud (que no contiene muchos más datos variables que la URL, tal vez algunas cookies) y la respuesta se pueden ver desde el flujo de datos cifrados. Esto podría subvertir el secreto, especialmente si solo hay un pequeño número de recursos diferentes en el servidor. También cualquier solicitud de recursos de seguimiento.

Su contraseña en la URL (o en cualquier otra parte de la solicitud) aún debe ser segura, aunque se puede conocer, como máximo,

    
respondido por el Paŭlo Ebermann 29.09.2011 - 15:15
fuente
24

Como @ Pa @lo Ebermann y @Jeff Ferland le han dicho, la solicitud GET está cifrada bajo SSL y por lo tanto es segura. Sin embargo, no olvide que muchos servidores web registran las solicitudes y los parámetros de GET, y que cualquier credencial u otra información confidencial que envíe a través de GET podría escribirse en un registro en algún lugar. Por ese motivo, debe usar POST (que también se cifrará bajo SSL) al enviar datos confidenciales.

Esto cae en la categoría de "el cifrado no es una seguridad mágica que resuelva todos tus problemas".

    
respondido por el gowenfawr 30.09.2011 - 02:03
fuente
22

Debes asumir que la URL no está protegida, es decir, que un interceptor pasivo puede ser capaz de saber qué URL estás visitando.

Me doy cuenta de que esto contradice lo que otras personas afirman, así que es mejor que explique.

Es cierto que todo después del nombre de dominio se envía encriptado. Por ejemplo, si la url es https://www.example.com/foo/bar.html , entonces el atacante puede ver www.example.com , mientras que la solicitud HTTP ( GET /foo/bar.html HTTP/1.0 ) está cifrada. Esto evita que un intruso vea directamente la parte de la ruta de la URL. Sin embargo, la longitud de la parte de la ruta de la URL puede ser visible para el intruso. Además, otra información, como la longitud de la página que visitó, también puede ser visible para el intruso. Este es un pie en la puerta para el atacante. Ha habido algunas investigaciones que usan este pie en la puerta para saber qué URL está visitando , si el atacante puede espiar su tráfico https.

Si bien no hay garantía de que estos ataques tengan éxito, sugiero que sería prudente suponer lo peor: suponer que un intruso puede ser capaz de saber qué URL está visitando. Por lo tanto, debe no asumir que SSL / TLS se esconde de un espionaje en las páginas que está visitando.

Sí, https proporciona integridad para la URL que visitó.

P.S. Otra precaución: en la práctica, sslstrip y otros ataques de intermediarios pueden tener éxito contra muchos o la mayoría de los usuarios, si el sitio web no está utilizando HSTS . Esos ataques pueden violar tanto la confidencialidad como la integridad de la URL. Por lo tanto, si los usuarios visitan sitios web que no usan HSTS a través de una red insegura (por ejemplo, Wifi abierto), debe tener cuidado de que un atacante pueda saber qué páginas visitan los usuarios. Una mitigación parcial contra la amenaza sslstrip es que los usuarios use HTTPS Everywhere y para que los sitios adopten HSTS.

    
respondido por el D.W. 30.09.2011 - 10:08
fuente
10

Las siguientes cosas se perderán antes de que comience la sesión:

  • Dirección IP del servidor
  • Certificado del servidor
    • Eso incluirá el nombre de dominio publicado en el certificado, aunque no garantiza que coincidirá con lo que usaste.
  • Tus consultas de DNS

No se envían al servidor datos o solicitudes que no estén relacionados con la creación de la conexión SSL ( GET ... ) antes de que comience la sesión SSL. La URL se envía como parte de la solicitud de la página y está protegida igual que cualquier tráfico que sea parte de la sesión.

    
respondido por el Jeff Ferland 29.09.2011 - 15:25
fuente
10

Sí y no.

La url está cifrada correctamente, por lo que los parámetros de consulta nunca deben revelarse directamente.

Sin embargo, el análisis de tráfico puede obtener la longitud de la URL a menudo, y conocer el servidor y la longitud de la URL a menudo es suficiente para escuchar a qué páginas se accede, especialmente si se supone que se hace clic en los enlaces de una página. Google para "exploración de ssl de análisis de tráfico" o algo similar si el tema le interesa.

En su caso de uso, esto es de importancia marginal. El uso inteligente del análisis de tráfico puede revelar la longitud del nombre de usuario y / o la longitud de la contraseña, dependiendo de si las otras URL también contienen el nombre de usuario. Si coloca el nombre de usuario / contraseña a una longitud constante, puede evitar estos ataques, pero puede que no valga la pena.

    
respondido por el Nakedible 30.09.2011 - 09:46
fuente
8

Las pilas TLS están comenzando a enviar la Indicación del nombre del servidor (SNI, enlace ; enlace ). Eso se envía de forma clara, lo que significa que los espías pueden ver el nombre del servidor que escribe en la barra de direcciones.

    
respondido por el Steve Dispensa 30.09.2011 - 03:34
fuente

Lea otras preguntas en las etiquetas