Curso MIT "Seguridad de sistemas informáticos". Lección 18: Navegación privada en Internet, Parte 2

Instituto de Tecnología de Massachusetts. Conferencia Curso # 6.858. "Seguridad de los sistemas informáticos". Nikolai Zeldovich, James Mickens. Año 2014


Computer Systems Security es un curso sobre el desarrollo e implementación de sistemas informáticos seguros. Las conferencias cubren modelos de amenazas, ataques que comprometen la seguridad y técnicas de seguridad basadas en trabajos científicos recientes. Los temas incluyen seguridad del sistema operativo (SO), características, gestión del flujo de información, seguridad del idioma, protocolos de red, seguridad de hardware y seguridad de aplicaciones web.

Lección 1: "Introducción: modelos de amenaza" Parte 1 / Parte 2 / Parte 3
Lección 2: "Control de ataques de hackers" Parte 1 / Parte 2 / Parte 3
Lección 3: “Desbordamientos del búfer: exploits y protección” Parte 1 / Parte 2 / Parte 3
Lección 4: “Separación de privilegios” Parte 1 / Parte 2 / Parte 3
Lección 5: “¿De dónde vienen los sistemas de seguridad?” Parte 1 / Parte 2
Lección 6: “Oportunidades” Parte 1 / Parte 2 / Parte 3
Lección 7: “Sandbox de cliente nativo” Parte 1 / Parte 2 / Parte 3
Lección 8: "Modelo de seguridad de red" Parte 1 / Parte 2 / Parte 3
Lección 9: "Seguridad de aplicaciones web" Parte 1 / Parte 2 / Parte 3
Lección 10: “Ejecución simbólica” Parte 1 / Parte 2 / Parte 3
Lección 11: "Ur / Lenguaje de programación web" Parte 1 / Parte 2 / Parte 3
Lección 12: Seguridad de red Parte 1 / Parte 2 / Parte 3
Lección 13: "Protocolos de red" Parte 1 / Parte 2 / Parte 3
Lección 14: "SSL y HTTPS" Parte 1 / Parte 2 / Parte 3
Lección 15: "Software médico" Parte 1 / Parte 2 / Parte 3
Lección 16: "Ataques de canal lateral" Parte 1 / Parte 2 / Parte 3
Lección 17: "Autenticación de usuario" Parte 1 / Parte 2 / Parte 3
Lección 18: "Navegación privada en Internet" Parte 1 / Parte 2 / Parte 3

¿Alguien ve esto como un problema potencial? El primer problema es que las personas siempre se quejan del rendimiento cuando se trata de seguridad. Cuando reinicia la memoria y su programa está limitado por las capacidades del dispositivo de entrada / salida, esto no es un problema, solo espera hasta que las partes mecánicas del disco duro o algo más funcionen.



Pero imagine que su programa está vinculado a un procesador y, posiblemente, interactúa muy intensamente con la memoria, asignando y liberando datos. En este caso, poner a cero la memoria puede reducir seriamente el rendimiento del sistema y será el precio de seguridad que no desea pagar. Esto generalmente no es un problema en la práctica. Pero, como todos sabemos, las personas valoran mucho el rendimiento, por lo que la opción de restablecer la memoria ciertamente se encontrará con objeciones.

Una alternativa a poner a cero la memoria puede ser encriptar los datos a medida que llegan para el almacenamiento permanente. Es decir, los datos se cifran antes de que la aplicación los escriba en el SSD o HDD. Luego, cuando los datos a petición del programa se devuelven del almacenamiento estable, se descifran dinámicamente antes de ingresar a la RAM. En este método de protección, es interesante que si tira la clave que utilizó para cifrar y descifrar datos, un atacante no podrá recuperar estos datos del disco. Esto supone que confías absolutamente en la criptografía.

Esto es muy, muy bueno, porque nos da la oportunidad de no recordar todos los lugares donde escribe estos datos cifrados. Puede preguntar, ¿por qué tirar las llaves, porque simplemente consideramos todos los datos cifrados como algo que puede seleccionarse nuevamente?

Como ejemplo, considere el sistema operativo Open BSD, que tiene una opción de cifrado de intercambio. De esa manera, puede asociar claves con diferentes secciones del archivo de página, es decir, sucede lo que mencioné. Por lo tanto, cada vez que inicia la computadora, este sistema operativo genera un montón de claves nuevas. Después de apagar o reiniciar la computadora, olvidará todas las claves que utilizó para cifrar el espacio de intercambio. Podemos decir que el intercambio ahora está disponible para su reutilización y dado que estas claves se olvidan, podemos suponer que el atacante no podrá acceder a las cosas almacenadas allí.



Estudiante: ¿cómo se asigna la entropía de estas claves y es posible descifrarlas?

Profesor: Esta es una buena pregunta. No sé qué recursos de entropía se utilizan aquí. Open BSD tiene paranoia sobre la seguridad. Por lo tanto, supongo que ella, por ejemplo, considera el grupo de entropía recopilado de la entrada de datos desde el teclado del usuario y otras cosas similares. No sé cómo este sistema operativo gestiona las claves. Pero tiene toda la razón en que si los recursos de entropía utilizados son predecibles, comprime el espacio de entropía de la clave, lo que lo hace más vulnerable.

En principio, este modelo solo ofrece cifrado de intercambio, es decir, se supone que las páginas RAM para claves nunca se descargan de la memoria. Esto es bastante fácil de hacer en el sistema operativo, si solo fija esta página en la memoria. Tampoco le ayudará a hacer algo con alguien que tenga contactos con el bus de memoria o con alguien que pueda "caminar" a través de la página de memoria del kernel o similar.

Estudiante: desde el punto de vista de la navegación, esto ayuda a proteger contra intrusos que vienen después de la navegación privada, porque si debe tirar la llave, entonces no queda en la memoria.

Profesor: absolutamente cierto. Lo bueno de esto es que el cifrado de intercambio, de hecho, no requiere cambios en las aplicaciones.

Estudiante: retrocediendo un poco: si observa los datos antes de que entren en la RAM, ¿quedarán restos de memoria?

Profesor: si entiendo su pregunta correctamente, le molesta que, aunque los datos están encriptados en el disco, se almacenan en texto claro en la memoria. Volver a la discusión sobre el cifrado de intercambio. La transferencia de datos cifrados al disco no protege contra un atacante que puede ver la RAM en tiempo real. Por lo tanto, si solo el atacante lo está molestando después de una sesión de navegación privada que no puede ver la RAM en tiempo real, esto funciona bien. Pero definitivamente tiene razón en que esto no proporciona, por falta de un término mejor, digamos esto, encriptación RAM. Hay algunos sistemas de investigación que intentan hacer algo como esto. Esto es un poco más complicado, porque en algún momento, cuando accede a su hardware, su procesador debe hacer algo con datos reales. Por ejemplo, si desea hacer algo con el comando agregar y necesita pasar operandos con texto sin formato.

También hay algunos sistemas de investigación interesantes que intentan hacer cálculos basados ​​en datos cifrados. Explota el cerebro como la película The Matrix. Pero basta con decir que la protección de datos en RAM suele ser mucho más débil que la protección de datos que residen en unidades estables. ¿Aún tienes preguntas?



Estudiante: hablamos de un atacante que actúa después de una sesión de navegación privada. Pero si tiene una pestaña de modo público y una pestaña de modo privado en su navegador, y después de cerrar la pestaña de navegación privada, la pestaña de navegación pública permanece abierta, ¿puede un hacker alcanzar los artefactos de memoria a través de ella?

Profesor: esta es una pregunta interesante, y al final de la conferencia hablaremos de un método de ataque similar. El hecho es que la mayoría de los modelos de amenazas en modo de navegación privada no implican la presencia de un atacante en tiempo real. En otras palabras, suponen que cuando está haciendo una navegación privada, al mismo tiempo, no hay otra persona que tenga abierta una pestaña de navegación pública o algo así. Pero en realidad tiene razón en que la forma en que a menudo se implementan los modos de navegación privados no está bien protegida.

Suponga que abre la pestaña para navegar en privado y luego de un tiempo la cierra para salir a tomar una taza de café. Sin embargo, Firefox, por ejemplo, guarda estadísticas como la asignación de memoria. Entonces, si la memoria para su pestaña de navegación privada se encuentra con toda la basura recolectada por el navegador, entonces puedo ver las URL que visitó, etc. en su pestaña. Pero, en resumen, la mayoría de los modelos de atacante no implican un atacante al mismo tiempo que usted está ocupado navegando en Internet de forma privada.

Por lo tanto, el cifrado de intercambio es algo útil, ya que le proporciona algunas características de seguridad bastante interesantes sin tener que cambiar el navegador ni ninguna de las aplicaciones que se ejecutan sobre él. En la práctica, el costo de usar un procesador al cifrar un intercambio es mucho menor que el costo real de realizar operaciones de E / S en general, especialmente si tiene un disco duro, porque compra su rendimiento con el disco. Este es el costo de partes puramente mecánicas, hardware, por lo que el cifrado de intercambio no es un gran éxito en el rendimiento.

Entonces, el siguiente tipo de atacante que veremos es un atacante web, que mencioné al comienzo de la conferencia. Aquí, se supone que el atacante controla el sitio web que el usuario está a punto de visitar en modo de navegación privada, pero este atacante no controla la computadora local del usuario. Al hacerlo, tenemos dos objetivos de seguridad para protegernos de los ataques web.

En primer lugar, no queremos que un atacante pueda identificar a los usuarios. La identificación significa que un atacante puede distinguir a un usuario de otro usuario que visita su sitio.

En segundo lugar, no queremos que el atacante pueda saber si el usuario está utilizando el modo de navegación privada o no. Como escribe un artículo de conferencia, la protección contra un atacante web es en realidad una tarea bastante dudosa.

Entonces, ¿qué significa identificar diferentes usuarios? Como dije, en un sentido global, puedes imaginar que un usuario se ve exactamente como todos los demás usuarios que visitan este sitio. Supongamos que un atacante web quisiera hacer una de dos cosas específicas. El primero se ve así: "Veo que varias personas visitaron mi sitio en modo de navegación privada, y usted fue el quinto, séptimo y octavo visitante". En otras palabras, esto significa identificación del usuario en el contexto de varias sesiones de navegación privadas.



La segunda cosa que un atacante podría desear es intentar establecer una conexión entre el usuario y las sesiones de navegación en los modos público y privado. Supongamos que una vez que voy a amazon.com en vista pública, y la segunda vez en vista privada. ¿Puede un atacante realmente descubrir que el mismo usuario realizó ambas visitas al sitio?

Estudiante: ¿ pero todo esto está relacionado con las direcciones IP?

Profesor: sí, eso es correcto. Esta es una suposición excelente, así que me atrevo a suponer que en nuestro caso el usuario no usa Tor, o algo así. Entonces, sí, podemos construir sobre la dirección IP del usuario. Es fácil de identificar por dirección IP. Y si un sitio se visita dos veces durante un corto período de tiempo desde la misma dirección IP, es muy probable que lo haya hecho el mismo usuario.

De hecho, sirve como motivación para usar cosas como Tor, discutiremos este tema en la próxima conferencia. Si no has oído hablar de Tor, diré que es básicamente una herramienta que intenta ocultar cosas como su dirección IP. Puede imaginar el navegador como una colección de capas, que se basan en Tor, y además tiene un modo de navegación privado. Esto puede proporcionarle tales ventajas que el modo privado no puede proporcionar en absoluto. Por lo tanto, Tor proporciona una cierta sensación de anonimato de una dirección IP, pero en realidad no puede proporcionar privacidad de datos, un momento específico de su vida o cosas similares. Puede considerar que "Tor" es una condición necesaria, pero no suficiente para la plena implementación del régimen de navegación privada en Internet.

Curiosamente, incluso si usa Tor, todavía hay formas en que un servidor web puede identificar a un usuario al observar las características únicas de este navegador.



Ahora te mostraré la última demostración de hoy. Veamos cómo uso un sitio llamado Panopticlick. Algunos de ustedes han oído hablar de este sitio. Este es un proyecto en línea lanzado por la EFF - Electronic Frontier Foundation, la Electronic Frontier Foundation. La idea principal del proyecto es que trata de identificarte como usuario analizando las diversas características de tu navegador web. Te mostraré exactamente lo que quiero decir. Vamos a este sitio, ves el botón "Probarme" y hago clic en él.



Aquí funciona principalmente un montón de código JavaScript, tal vez algunos applets y algunos Java.

Este sitio está tratando de tomar huellas digitales de mi navegador y descubrir cuánta información única tiene.

Permítame aumentar la fuente: verá que una de las cosas que quiere descubrir son los detalles de los complementos del navegador que uso. Entonces, básicamente, esta prueba ejecutará un código que vea si tengo instalado Flash, qué versión de este Flash, si Java está instalado y qué versión tiene.



Verá que todos estos complementos ni siquiera caben en la misma pantalla al mismo tiempo. Estos son todos los diversos complementos y formatos de archivo que admite mi navegador. En un sentido global, esto debería molestarlo si es una "persona de seguridad". Si realmente uso activamente todas estas cosas en un momento dado, ¡esto es solo una pesadilla!



En última instancia, el servidor web, o el atacante web, puede buscar el código que se muestra aquí y puede averiguar qué complementos utiliza su navegador. Ahora, si miras estas dos columnas a la izquierda, ¿qué es?



La primera columna son los bits de la información identificada. La siguiente columna es más interesante: muestra que solo uno de la cantidad dada de navegadores tiene el mismo conjunto de complementos, en este caso es 1 de 27679 navegadores. Así que esta es una forma bastante específica de tomar mis huellas digitales. Este número indica que hay muy, muy pocas personas cuyo navegador tiene exactamente el mismo conjunto de complementos y configuraciones de archivos.
Entonces, resultó que tienen razón, soy una persona completamente única, pero a la larga esto crea un gran problema de seguridad. Mira el resto de los resultados de la prueba.



Aquí está la resolución de pantalla y la profundidad de color de mi computadora portátil, una para 1.5 millones de computadoras. Este es un descubrimiento bastante impactante, porque significa que solo una persona en una muestra de un millón y medio de usuarios tiene tales características de pantalla.
Entonces estas cosas son aditivas de alguna manera. Cuantas más huellas digitales, más fácil es para un atacante descubrir que fuiste tú quien visitó su sitio. Y tenga en cuenta que esto fue hecho exclusivamente por el servidor. Simplemente fui a esta página e hice clic en un botón, y eso es lo que hicieron. Solo un segundo, quiero mostrar una cosa más. El sitio web de Panopticlick se conectó de forma privada. Ahora copiaré la dirección de la barra de direcciones y abriré la versión pública normal de Firefox. Después de eso volveré a ejecutar esta prueba.

Observo nuevamente: ahora estoy en modo de navegador público, y antes estaba en modo privado. Verá que si observa los complementos del navegador, el índice de unicidad de las huellas digitales del navegador sigue siendo casi el mismo: 27679.82 frente a 27679.68. Esta diferencia se hace mediante varios complementos, que pueden cargarse o no dependiendo de cómo se implemente el modo de privacidad. Pero mira, las huellas digitales siguen siendo fáciles. Observe el tamaño de la pantalla y la profundidad del color: estos indicadores no son diferentes en los modos de visualización públicos y privados.

Entonces, la capacidad de dejar huellas digitales en ambos modos es casi la misma. Esta es una de las razones por las que es tan difícil protegerse de un ataque web de este tipo, porque los navegadores en su configuración llevan mucha información para que un atacante la identifique.

Estudiante: Tengo curiosidad sobre el tamaño de la pantalla y las opciones de profundidad de color. ¿Cómo sucede esto? ¿Por qué son tan únicos? ¿Cuántos tamaños de pantalla y profundidades de color existen generalmente?

Profesor: Creo que en realidad está ocultando parte de la magia que Panopticlick usa para descubrir de qué se trata. A nivel mundial, ¿cómo funcionan muchas de estas pruebas? Hay algunas partes de su navegador que solo se pueden ver con el código JavaScript. Por lo tanto, puede imaginar que el código JavaScript mira a través de las propiedades del objeto de la ventana, que es una imagen tridimensional de JavaScript, y nota cómo el código dentro de la ventana denota este widget extraño, widget vecino, parte de texto, complementos, etc. Dichas páginas también usan comúnmente el hecho de que los applets de Java y los objetos Flash pueden buscar cosas más interesantes, como las fuentes que están disponibles en su computadora, y similares. Por lo tanto, personalmente creo que al determinar la unicidad del tamaño de la pantalla y la profundidad del color, sucede lo siguiente: la prueba lanza un applet que intentará solicitar su tarjeta gráfica o interfaces gráficas en Java, y alternativamente verificará varios aspectos de su trabajo en el proceso de visualización de la página del navegador.

Por lo tanto, creo que este indicador en realidad contiene más que solo el tamaño de la pantalla y la profundidad de color, simplemente reducen su nombre a esta forma.

Así es como funcionan todos estos trucos a un alto nivel. Entonces, ve un montón de información en la que puede profundizar mientras explora JavaScript. Luego, inicia un montón de complementos que generalmente pueden acceder a más cosas y ver qué pueden encontrar. Después de eso, puede obtener una idea general de lo que está sucediendo.

? . , Tor, Tor – , IP- , — . !

. , , -. , , , , Firefox v10.7. , Firefox, . .

: Tor? ?

: , . , , , , , -. - , - .



: , , - Tor, Firefox .

: , - Tor. , «» Tor. , — IP, — , , , -.

, -, , , Firefox, - . - , . , - Firefox 10.7. , Firefox 10.7. HTML , . .

: , , . Tor , Firefox.

: , . , , , , . , Tor , Tor, , Firefox Java, .

– Tor , «» . , . – , , .
, ? – . , , ? , - . . , , ?



, . , . , , , iframe URL-, , iframe . . , iframe, , , , .

, , , , , . , , , , . . , . JavaScript JavaScript, . .

: , , ?

: , . , , , . , , -. , - , .



, , . , Amazon.com , . , , cookie , -, .

: , IP-.

: , .

: , , , IP- . , , .

: , . , , -, . JavaScript, iframe foo.com, iframe . , , , .

. , iframe, , .

, . , .

IP-, , , Tor IP-.

54:00

MIT « ». 18: « », 3


.

Gracias por quedarte con nosotros. ¿Te gustan nuestros artículos? ¿Quieres ver más materiales interesantes? Apóyenos haciendo un pedido o recomendándolo a sus amigos, un descuento del 30% para los usuarios de Habr en un análogo único de servidores de nivel de entrada que inventamos para usted: toda la verdad sobre VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de $ 20 o cómo dividir el servidor? (las opciones están disponibles con RAID1 y RAID10, hasta 24 núcleos y hasta 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps hasta diciembre de forma gratuita al pagar por un período de seis meses, puede ordenar aquí .

Dell R730xd 2 veces más barato? Solo tenemos 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV desde $ 249 en los Países Bajos y los EE. UU. Lea sobre Cómo construir un edificio de infraestructura. clase utilizando servidores Dell R730xd E5-2650 v4 que cuestan 9,000 euros por un centavo?

Source: https://habr.com/ru/post/es430206/


All Articles