¿Están encriptados los encabezados HTTPS?

600

Al enviar datos a través de HTTPS, sé que el contenido está encriptado, sin embargo, escucho respuestas mixtas sobre si los encabezados están encriptados o cuánto del encabezado está encriptado.

¿Qué cantidad de encabezados HTTPS están encriptados?

Incluyendo URL de solicitud GET / POST, cookies, etc.

Dan Herbert
fuente
99
Los encabezados HTTP sobre HTTPS están encriptados, y tampoco están comprimidos por HTTP (incluso si el cuerpo lo está). Esto los hace menos vulnerables a los ataques relacionados con la compresión como BEAST
Neil McGuigan

Respuestas:

552

Todo el lote está encriptado : todos los encabezados. Es por eso que SSL en vhosts no funciona demasiado bien: necesita una dirección IP dedicada porque el encabezado Host está encriptado.

El estándar de Identificación de nombre de servidor (SNI) significa que el nombre de host puede no estar encriptado si está utilizando TLS. Además, ya sea que esté utilizando SNI o no, los encabezados TCP e IP nunca se cifran. (Si lo fueran, sus paquetes no serían enrutables).

Greg
fuente
3
@Greg, dado que la puerta de enlace vhost está autorizada, ¿no podría desencriptar la puerta de enlace, observar el encabezado del Host y luego determinar a qué host enviar los paquetes?
Pacerier
2
La URL de Afaik en sí no está encriptada.
Teddy
44
@Teddu, ¿qué quieres decir con "la URL en sí no está encriptada"? Está encriptado, ya que es parte del encabezado.
Dmitry Polushkin
1
Si Fiddler se usa para capturar la comunicación https, todavía muestra algunos encabezados, ¿por qué? Especialmente, cuando la conexión a Internet es a través de un proxy que requiere autenticación, muestra el encabezado de Autorización de proxy cuando la solicitud se reenvía después de recibir 407 en el primer envío.
Bochen Lin el
1
@Bochen de la misma manera que Pegasus lo hace. Si está en cualquier extremo del túnel HTTPS, puede ver todo. De la misma manera puedo ver cualquier cosa en las herramientas del navegador.
Nux
97

Los encabezados están completamente encriptados. La única información que pasa por la red 'en claro' está relacionada con la configuración de SSL y el intercambio de claves D / H. Este intercambio está cuidadosamente diseñado para no proporcionar ninguna información útil a los espías, y una vez que ha tenido lugar, todos los datos se cifran.

mdb
fuente
44
No toda la configuración SSL involucra DH
Dori
30
Para ser un poco pedante: la dirección IP del cliente y el servidor, el nombre de host del servidor y las señales sobre sus implementaciones SSL son útiles para los espías y son visibles.
Poolie
66

Nueva respuesta a la vieja pregunta, lo siento. Pensé en agregar mis $ .02

El OP preguntó si los encabezados estaban encriptados.

Ellos son: en tránsito.

NO son: cuando no están en tránsito.

Por lo tanto, la URL de su navegador (y el título, en algunos casos) puede mostrar la cadena de consulta (que generalmente contiene los detalles más confidenciales) y algunos detalles en el encabezado; el navegador conoce cierta información de encabezado (tipo de contenido, unicode, etc.); y el historial del navegador, la administración de contraseñas, los favoritos / marcadores y las páginas en caché contendrán la cadena de consulta. Los registros del servidor en el extremo remoto también pueden contener una cadena de consulta, así como algunos detalles de contenido.

Además, la URL no siempre es segura: el dominio, el protocolo y el puerto son visibles; de lo contrario, los enrutadores no saben dónde enviar sus solicitudes.

Además, si tiene un proxy HTTP, el servidor proxy conoce la dirección, generalmente no conoce la cadena de consulta completa.

Entonces, si los datos se mueven, generalmente están protegidos. Si no está en tránsito, no está encriptado.

No es para elegir, pero los datos al final también se descifran y se pueden analizar, leer, guardar, reenviar o descartar a voluntad. Y, el malware en cualquier extremo puede tomar instantáneas de datos que ingresan (o salen) del protocolo SSL, como Javascript (incorrecto) dentro de una página dentro de HTTPS que puede realizar subrepticiamente llamadas http (o https) a sitios web de registro (desde el acceso al disco duro local) a menudo está restringido y no es útil).

Además, las cookies tampoco están encriptadas bajo el protocolo HTTPS. Los desarrolladores que deseen almacenar datos confidenciales en cookies (o en cualquier otro lugar) deben usar su propio mecanismo de cifrado.

En cuanto a la memoria caché, la mayoría de los navegadores modernos no almacenarán en la memoria caché las páginas HTTPS, pero ese hecho no está definido por el protocolo HTTPS, depende completamente del desarrollador de un navegador para asegurarse de no almacenar en caché las páginas recibidas a través de HTTPS.

Entonces, si está preocupado por el rastreo de paquetes, probablemente esté bien. Pero si le preocupa el malware o alguien que está revisando su historial, marcadores, cookies o caché, aún no está fuera del agua.

Andrew Jennings
fuente
20
Sé que las buenas respuestas están en la cima, pero esto nuevamente inserta información defectuosa . El dominio no es visible, a menos que se use SNI. El protocolo, que no sea IP y TCP, no es visible. No puede saber si estoy usando HTTP 1.1, SPDY o HTTP2. Lo que es visible en los dos puntos finales es irrelevante, ya que el objetivo del cifrado no es hacer que las cosas sean invisibles, sino hacer que las cosas solo sean visibles para las partes confiables. Por lo tanto, los puntos finales están implícitos en la pregunta y se pueden eliminar aproximadamente 2/3 de su respuesta. La información del proxy debe ser: si usa un proxy HTTPS, entonces tiene acceso a todo .
Melvyn
66
Su enlace dice específicamente que las cookies están encriptadas: "La conexión del visitante está encriptada, ocultando URL, cookies y otros metadatos confidenciales".
DylanYoung
1
Si, eso es correcto. Las cookies se encriptan mientras están en tránsito, pero una vez que llegan al navegador, no están encriptadas por el protocolo SSL. Es posible que un desarrollador encripte los datos de las cookies, pero eso está fuera del alcance de SSL.
Andrew Jennings
44
@DylanYoung SSL = capa de conexión segura ; TLS = seguridad de la capa de transporte . El cifrado está en el nivel de socket (conexión) o, para decirlo de otra manera, en el nivel de transporte, no mientras está almacenado en el navegador por base de datos de dominio.
curioso
@Wigwam Las cookies HTTP sensibles a la seguridad son casi siempre referencias opacas (generalmente es un número aleatorio criptográficamente fuerte) a un registro en la base de datos del servidor de sesiones autenticadas. Como tal, encriptar este identificador sin sentido traería mayor complejidad adicional.
curioso
53

HTTP versión 1.1 agregó un método HTTP especial, CONNECT, destinado a crear el túnel SSL, que incluye el protocolo de enlace de protocolo y la configuración criptográfica necesarios.
A partir de entonces, las solicitudes regulares se envían envueltas en el túnel SSL, encabezados y cuerpo inclusive.

Ávido
fuente
¿Cuándo se usa CONNECT para crear el túnel SSL?
curioso
47

Con SSL, el cifrado está en el nivel de transporte, por lo que se lleva a cabo antes de enviar una solicitud.

Entonces, todo en la solicitud está encriptado.

soplar el dardo
fuente
Dado que SSL tiene lugar en la capa de transporte y la asignación de la dirección de destino en paquetes (en el encabezado) tiene lugar en la capa de red (que está debajo del transporte), ¿cómo se encriptan los encabezados?
Prateek Joshi
@PrateekJoshi Debido a que los encabezados HTTP viven en la capa de aplicación y, por lo tanto, están encriptados de manera predeterminada debido a que se encripta una capa inferior / ancestral.
Aquarelle
40

HTTPS (HTTP sobre SSL) envía todo el contenido HTTP a través de un túnel SSL, por lo que el contenido y los encabezados HTTP también están encriptados.

CMS
fuente
21

Sí, los encabezados están encriptados. Está escrito aquí .

Todo en el mensaje HTTPS está encriptado, incluidos los encabezados y la carga de solicitud / respuesta.

pulsación de tecla
fuente
37
Wikipedia no es la especificación, que es lo que debería citar.
Aran Mulholland
8

la URL también está encriptada, realmente solo tiene la IP, el puerto y, si es SNI, el nombre de host que no está encriptado.

xxiao
fuente
Incluso si SNI no es compatible, un intermediario capaz de interceptar conexiones HTTP a menudo también podrá monitorear las preguntas de DNS (la mayoría de las intercepciones se realizan cerca del cliente, como en un enrutador de usuario pirateado). Así podrán ver los nombres DNS.
curioso