¿Cómo se asegura el navegador de que se está comunicando con el servidor correcto?
¿Cómo se asegura el navegador de que se está comunicando con el servidor correcto?
TL; DR: la autenticación del servidor solo se realiza con HTTPS, pero ni HTTP ni otros protocolos compatibles con el navegador. Sin una autenticación adecuada, los ataques dañinos como el rastreo o la manipulación del tráfico son fáciles.
En general, el navegador hace uso de las funciones del sistema operativo y la infraestructura subyacentes para buscar la dirección IP del dominio dado en la URL (búsqueda de DNS). Luego se conecta a esta dirección IP e intercambia los datos.
Este proceso puede ir mal en varios lugares. Por ejemplo, un atacante podría alterar la búsqueda de DNS para que la IP devuelta por la búsqueda no sea la dirección IP del servidor deseado, sino un sistema controlado por un atacante. Un atacante también podría alterar el enrutamiento del tráfico para que el tráfico destinado a los fines de IP del objetivo agregue un sistema que el atacante controla o pasa a través de dicho sistema.
Al hacer esto, un atacante podría lograr un rastreo pasivo del tráfico, por ejemplo para robar credenciales como contraseñas, manipulación activa del tráfico como personas en el medio, por ejemplo, para inyectar anuncios o la entrega de malware o el atacante podría incorporar completamente el sistema objetivo para servir contenido diferente.
El tráfico HTTP normal (y también el tráfico FTP) no brinda mucha protección a esto. Es posible que se use DNSSec en la red para evitar la falsificación de DNS, pero DNSSec no se emplea para todos los dominios y rara vez se aplica, es decir, la mayoría de las configuraciones aceptarán respuestas de DNS sin firmar (y, por lo tanto, pueden manipularse). E incluso si se usa DNSSec para garantizar que aún se podrían realizar los ataques de dirección IP de destino adecuados contra el enrutamiento.
Solo cuando se usa HTTPS (es decir, https://..
URL's) se realiza una autenticación adecuada del servidor seguida de un cifrado del tráfico entre el navegador y el servidor. Si se hace correctamente, esto evita todos los escenarios descritos, es decir, olfateando, el hombre activo en el medio e incorporando la identidad del objetivo sin importar cómo se realice exactamente el ataque.
Un punto esencial aquí es la autenticación adecuada del servidor durante el protocolo inicial de TLS (antes de intercambiar datos de la aplicación) que se basa en la verificación de certificados. No es necesario volver a explicar cómo se hace esto, ya que hay respuestas excelentes sobre esto en este sitio, como Marco de certificado SSL 101: ¿Cómo verifica realmente el navegador la validez de un certificado de servidor dado? .
Lea otras preguntas en las etiquetas web-browser server