El ISP (aquí, el punto de acceso WiFi) es lo que le entrega las páginas. Por supuesto, es trivial para un ISP leer tráfico no seguro:
ConsideremosahorauncasoenelqueelenvíodecredencialesestáprotegidoconHTTPS(porloqueelISPnopuededetectarlosinmediatamente),perolapáginadeiniciodesesióndeHTTPScargaunscriptnoseguro,helper.js
.ElISPpuedeinyectarcualquiercomportamientoenesescriptquenoseaHTTPSantesdequefinalmentesirvaelscriptalnavegador.Porejemplo,elISPpuedeinyectarlasinstrucciones," Cuando esta página envíe credenciales, envíe una copia de ellas a evil.example.com
. " El diagrama a continuación muestra las solicitudes y respuestas seguras en verde y las solicitudes / respuestas inseguras. en otros colores:
Cuandosunavegadorsolicitahelper.js
atravésdeHTTP,elISPmaliciosorespondeconunrecursoquetieneelcontenidoincorrecto.Sunavegadornotieneideadecómodeberíaserhelper.js
,ysinningunamedidadevalidacióndeintegridad(comoHTTPS),elnavegadornotieneideadequealgoestémal.Sunavegadorasumequesehaservidocorrectamentehttp://tmail.com/helper.js
,porqueesoesloquesolicitóyelISPledevolvióunarespuestasinningunaqueja(porejemplo,larespuestafueHTTP200
para/helper.js
).Elhechodequeloquesunavegadorobtuvoesdiferentedeloqueelservidorrealenvióestotalmenteirrelevante,yaquesunavegadornotieneformadedetectarqueocurrióestadiferencia.
Segúnsuscomentarios,parecequepiensaquelamodificacióndeunrecursosolosepuedehacerredireccionandoelnavegadoraotrorecurso.Estoesincorrecto.ConsidereBobelnavegador,IggyelISPydosservidores,AliceyMallory.
Primero,consideraelcasohonesto:
Ahora consideremos un caso deshonesto:
En este caso, la barra de direcciones del navegador sería diferente de la que escribiste originalmente: mallory.com/favoritefood
en lugar de alice.com/favoritefood
.
Ahora considere este caso en su lugar:
No hay otros recursos involucrados. http://alice.com/favoritefood
es el único recurso que se busca aquí; Iggy simplemente mintió acerca de cuáles eran los contenidos del recurso. No hay forma de que Bob detecte que Iggy está mintiendo, porque no hay un sistema de validación de integridad en su lugar.
Un último intento de explicación: supongamos que el ISP es honesto pero equivocadamente cambió un solo bit al entregar el contenido del archivo HTML. Seguramente usted no esperaría que tal error cause que la página web se cargue bajo un dominio diferente. Ahora suponga que el ISP honesto volcó erróneamente dos bits en lugar de uno solo: una vez más, tal error nunca haría que el dominio o la ruta de recursos cambiaran. Ahora supongamos que el ISP volcó dos mil bits por un error honesto (tal vez el ISP tiene un interruptor defectuoso en algún lugar, o el router WiFi fue alcanzado por rayos cósmicos): nuevamente, no es necesario que cambie el dominio. Ahora supongamos que el cambio se realizó maliciosamente en lugar de por error: nuevamente, el cambio en la intención no causa ningún cambio en lo que realmente está sucediendo. La ruta y el origen del recurso, tal como se identifican en la barra de direcciones del navegador, se mantienen sin cambios, mientras que el ISP es libre de cambiar el contenido del recurso (de manera honesta o deshonesta) sin ser detectado.