Curso MIT "Seguridad de sistemas informáticos". Conferencia 19: "Redes anónimas", parte 3 (conferencia del creador de la red Tor)

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
Lección 19: "Redes anónimas" Parte 1 / Parte 2 / Parte 3

Suponga que usa la probabilidad bayesiana, argumentando de esta manera: “¿la corte habría dispuesto pruebas de que este tipo fue atrapado debido a un mal OPSEC? Sí lo hicieron. Es decir, necesito informes que digan que fue atrapado debido al incumplimiento de la seguridad de la información de las operaciones de Internet ". Por lo tanto, para la "doble construcción" necesitaría informes de que el tipo fue atrapado en un mal OPSEC, porque la evidencia de este tipo es bastante accesible en una investigación policial regular, sin mencionar la información obtenida de la inteligencia.

No podemos sacar conclusiones sobre este caso de ningún informe público, sin embargo, parece que este tipo fue detenido precisamente por el incumplimiento de las reglas de OPSEC, es decir, lo que estaría buscando, tratando de atrapar a alguien involucrado en cosas ilegales. Entonces, como dije antes, no use mi red para infringir ninguna ley. Además, si su vida o libertad depende del uso de Tor o cualquier otro producto de seguridad, no use estos productos de forma aislada.



Considere crear varias líneas de defensa si su vida o libertad están en juego, o si el colapso del sistema es completamente inaceptable para usted. Esto es cierto para Tor, TLS y PGP. El software es un trabajo en progreso.
Eso es todo lo que quería decir sobre los abusos en Internet. Me quedan 25 minutos para servicios ocultos.

El anonimato del encuestado es un problema mucho más complejo que el anonimato del iniciador. El anonimato del iniciador es lo que obtienes cuando Alice quiere comprar calcetines, pero al mismo tiempo permanece anónimo para el vendedor de calcetines.

El anonimato de la encuestada es cuando Alice quiere publicar sus poemas en Internet e inicia un servidor web con su poesía, pero no quiere que nadie descubra dónde está este servidor web, porque la poesía es muy incómoda. Entonces sí, de hecho, hay un servicio oculto con mis poemas malos. No, no creo que alguien ya los haya publicado. No, no le diré a nadie dónde está. Solo estoy esperando que se haga público.

Supongamos que Alice quiere publicar sus poemas. La pondré a la derecha porque ella es la demandada. Alice puede allanar el camino, esta línea en espiral muestra varios repetidores, a la red Tor, aquí a esta R, y recurrir a él con una solicitud: "¡por favor acepte estas conexiones!" Entonces, cualquiera que se conecte a este repetidor puede decir que quiere hablar con Alice. Hubo proyectos que funcionaron de esa manera.



Sin embargo, hay algunos problemas. Un problema es que este repetidor puede ser un hombre en el medio, que intercepta todo el tráfico si no hay una clave TLS conocida aquí. El segundo problema puede ser que este repetidor es propiedad de una persona que también está avergonzada por sus poemas y no quiere ser un distribuidor público de poesía, ¡porque es tan terrible!

También puede verse afectado por otras personas que poseen el relé R, que odian tanto la poesía que quieren censurar este compuesto. Finalmente, este relé R puede convertirse simplemente en el objetivo del ataque.

Por lo tanto, desea que Alice cambie entre relés diferentes todo el tiempo, y ninguno de ellos podría afectar su tráfico no cifrado. Es bastante factible.
Pero si tenemos muchos repetidores diferentes, ¿qué tiene que decir Alice a la gente? Debería haber algo como una clave pública, porque si solo accede a la red: "relé X, relé Y, relé Z", esto no funcionará, porque la red cambia cada 5 minutos, y obtener el correcto, el relé de trabajo es bastante difícil .

Supongamos que le dice la clave pública a todos los participantes en la red, y cuando viene a R, dice: "esta es Alice, lo probaré con mi clave pública". Por lo tanto, R sabe que la clave pública PKz lanza un servicio oculto específico: la poesía de Alice. Por lo tanto, si alguien más dice: "Oye, conéctame con la clave pública Z", puedes hacer un apretón de manos con Alice usando una clave compartida. Y este es el mismo apretón de manos que se usa en la cadena Tor.

Ahora Bob podrá leer los poemas de Alice estableciendo otra conexión a través de la red Tor. Conociendo la clave PKz, Bob podrá decirle al repetidor: "Oye, conéctame a Alice con este PKz". Después de que el repetidor hace un apretón de manos conjunto, Bob y Alice tendrán una clave común, que pueden usar para cifrar durante toda la conexión.



Hay algo que me perdí, a saber, ¿cómo sabe Bob cómo llegar hasta aquí? ¿Cómo reconoce este repetidor la clave pública PKz? Podemos agregar un sistema de directorio al sistema, donde Alice descarga anónimamente una declaración firmada que indica que PKz está en el relé X a través de Tor. En este caso, Bob le pide al sistema de directorio que le proporcione esta declaración firmada sobre PKz, gracias a lo cual Bob descubre dónde necesita hacerlo. para ir Podríamos hacerlo aún mejor: dejar que Alice proporcione otra clave pública, llamémosla PKw, y una declaración que carga en el directorio y dice que si desea hablar con el servicio de clave pública Z, entonces debe ir al relé Rx utilizando la clave pública W.



En este caso, la clave pública Z no se publica en el relé Rx. Podría seguir adelante y cifrar la expresión (Rx, PKw) con algún tipo de secreto común conocido por Alice y Bob. Si hace esto, el servicio de directorio y las personas que pueden comunicarse con el servicio de directorio no podrán aprender cómo conectarse a Alice usando esta clave PKz.

Estudiante: si esto no está encriptado, entonces el repetidor Rx puede descubrir que inicia el servicio para Alice, ¿verdad?

Nick Mathewson: no, no para Alice. Solo puede descubrir que usa la clave PKz si esta expresión no está encriptada. Tenemos una decisión sobre cómo crear un sistema de este tipo, aún no se ha construido, pero será genial.

Suponga que no desea utilizar un directorio centralizado para esto. En este caso, en realidad usamos DHT, que no es ideal y está sujeto a censura, pero tratamos de hacer que la posibilidad de usar la censura sea cada vez menos. Podría decirle más sobre esto, pero me temo que no tengo tiempo para cubrir los temas restantes.

Hay otro problema: si usa uno de estos directorios de servicios y tiene una lista completa de claves, puede conectarse a todos aquellos que no han cifrado sus conexiones para averiguar qué tienen allí. Esto se llama un ataque de enumeración o "ataque de enumeración". No mencionamos esto en nuestro periódico, no porque no nos moleste, sino porque aún no estamos listos para resistir tales ataques.

Espero que en 2014 encontremos una solución en la que Alice y Bob compartan la clave PKz, pero esta expresión (Rx, PKw) no está firmada con la clave PKz. Está firmado por PKz 1 , que se deriva de PKz y, por ejemplo, la fecha:

PKz 1 - > PKz, Fecha

Si conoce PKz y la fecha, puede obtener PKz 1 . Si, como Alice, conoces el secreto de SKz, puedes crear mensajes firmados por PKz 1 .



Pero si solo ve PKz 1 , incluso sabiendo la fecha, no puede volver a recibir PKz. Tenemos evidencia de la posibilidad de esta solución, y si desea saber cómo funciona, escríbame y se la enviaré. Este es un truco genial. No fuimos los primeros en tener esta idea. Pero esta es la forma en que vamos a resolver el problema del ataque de enumeración este año, si realmente encuentro tiempo para la implementación práctica de esta solución. Eso es todo por servicios ocultos.

Considere el tema de los ataques y la defensa. Hasta ahora, la categoría más grande de ataques que hemos visto son los ataques a nivel de aplicación. Si ejecuta la aplicación a través de Tor y envía tráfico sin cifrar, como una conexión HTTP normal, entonces el nodo de punto de salida hostil, como cualquier otro nodo que permita conexiones HTTP, puede monitorear y modificar este tráfico. Este es el ataque número 1 en nuestro sistema. Se puede resistir usando tráfico encriptado.

Afortunadamente, en los últimos años, el cifrado ha ido en aumento y la excelente autoridad de certificación gratuita ha cifrado más tráfico que EFF, Mozilla y Cisco informaron hace uno o dos días. Espero que en 2015 haya menos tráfico sin cifrar que este año. Entonces este enfoque resuelve este problema.

Los ataques más interesantes incluyen cosas como el etiquetado de tráfico o el etiquetado de tráfico. Cometimos un error en nuestra implementación de verificación de integridad anterior. Nuestra implementación temprana de la verificación de integridad terminó con la verificación de integridad en la sección entre el programa de Alice y el nodo del punto de salida, pero resultó que esto no es suficiente. Porque si el primer relé R1 "confunde" el tráfico de tal manera que crea un patrón que puede detectar el nodo del punto de salida, entonces para el primer y último relé servirá como una forma de descubrir que están en la misma ruta común, en la misma cadena e identificar Alice

Por supuesto, si el primer y el último relevo de alguna manera cooperan, en cualquier caso pueden determinar a Alice comparando el tráfico, pero esperamos que no sea fácil para ellos, y con el tiempo el proceso de correlación del tráfico se volverá más complicado de lo que pensamos.
De hecho, sería bueno terminar este tipo de ataque de una vez por todas. Para esto, tenemos dos soluciones. Uno de los resultados esperados de tales ataques es una falla periódica de las cadenas, porque el atacante en el primer concentrador cometió un error con respecto al control sobre el último concentrador.

Por lo tanto, cada cliente de Tor comprueba una tasa de rebote extraña. Una solución efectiva a largo plazo para el problema es garantizar que el "alboroto" con la plantilla en el primer concentrador no cree más de 1 bit de información en el último concentrador. No puede evitar enviar 1 bit de información, porque el primer concentrador siempre puede simplemente desconectar la conexión, pero puede limitar esta información a 1 bit. O mejor hasta 2 bits, porque entonces tendrán la opción de corromper los datos o desconectar la conexión. Tenía una idea de cómo hacer esto mejor, así que pensaré en este problema.

La denegación de servicio, o DOS, también es importante. El año pasado, hubo un artículo sobre lo que los autores llamaron un "ataque de francotiradores". Usted ve tráfico proveniente del nodo Tor que no controla y, por lo tanto, quiere expulsar a todos de este nodo. Para hacer esto, se conecta a este nodo, desborda todos los búferes de su memoria y se "bloquea". Después de eso, redirige el tráfico que le interesa al nodo que controla, y si cae en un nodo no controlado, repita esta técnica varias veces hasta lograr el resultado deseado.

Nuestras mejores soluciones están destinadas a eliminar la posibilidad de un ataque de DOS en la memoria, y nuestros parches prácticamente han eliminado esta posibilidad. Otra opción para resolver problemas de este tipo es asegurarse de que el repetidor tenga una gran capacidad de memoria. Por lo tanto, no use repetidores de pequeña capacidad en la red. También estamos haciendo esto: si intenta iniciar el sitio Tor en su teléfono, no recibirá autorización y no se incluirá en la lista de sitios confiables.

También estamos tratando de desarrollar algoritmos de planificación de la cadena, aunque es muy difícil tratar de desarrollar un diagrama de red de nodos que no controle, por lo que por ahora este es un problema no resuelto.

Ahora dime cuál es mejor: ¿te cuenta acerca de ataques interesantes o ataques importantes?

Estudiante: sobre los interesantes!

Nick Mathewson: bien. ¿Entonces dejar que aquellos que desean escribir un programa que use criptografía levanten la mano? ¡Bueno, eso es lo que tienes que aprender! Pero nunca confíes en la implementación de tu criptografía. Incluso si esto es correcto, todavía está mal. Hace mucho tiempo, tuvimos uno de los peores errores de seguridad. Consideramos que cada repetidor podría ser un "hombre en el medio" en cualquier cadena de nodos, porque asumimos que la implementación correcta del algoritmo Diffie-Hellman verificaría si 0 pasaba como una de las entradas.



Los autores de nuestra implementación Diffie-Hellman sugirieron que una aplicación adecuada nunca pasaría una implementación cero Diffie-Hellman.

¿Cómo funciona el algoritmo Diffie-Hellman correcto? Supongamos que tengo g x y usted tiene g y . Sé X, sabes Y, y ambos podemos calcular g xy . Pero si en cambio el "hombre en el medio" reemplaza mi valor de g con cero, entonces calculo 0 x , usted calcula 0 y , tendremos la misma clave, y podemos comunicarnos fácilmente entre nosotros, pero esta será la clave que el atacante conoce, porque que es 0.

La unidad funciona, P también funciona, P + 1 también funciona. Por lo tanto, solo debe asegurarse de que sus valores g x y g y estén en el rango de 2 a P-1 si implementa el algoritmo Diffie-Hellman en la forma z sub p.

Me gustaría hablar más sobre la censura. Después de todo, de hecho, esta es una de las áreas donde podemos hacer el mayor bien. Al principio, pensamos hacer que Tor pareciera un cliente web hablando con el servidor web a través de HTTPS, y dificultar el bloqueo. Resulta que es increíblemente difícil y probablemente no valga la pena.
Ahora estamos usando un enfoque que usa varios complementos que permiten usar repetidores no reportados como un puente, y el usuario puede usar este esquema para varias conversiones de tráfico. Logramos asegurarnos de que los nuevos repetidores se agreguen a la red más rápido de lo que los censores se dan cuenta de su bloqueo.



De hecho, este es el caso cuando ninguna de las soluciones es categóricamente viable. Supongo que no formulé mi pensamiento de esa manera. Sería más correcto decir que ninguno de estos complementos no es esencialmente bloqueable por ninguna tecnología moderna, pero son lo suficientemente buenos como para mantener el tráfico desbloqueado durante 1-2 años en la mayoría de los países o 6-7 meses en China.

Actualmente, China tiene los censores más competentes del mundo, en gran parte porque no utiliza la subcontratación. La mayoría de los otros países con censura agresiva en Internet transfieren funciones de censura a empresas europeas, americanas y asiáticas, cuyos intereses no son vender software efectivo para censurar Internet, sino obligar a sus clientes a participar constantemente en la carrera de actualización.

Por ejemplo, puede comprar su software censurado en los Estados Unidos. Técnicamente hablando, a las compañías estadounidenses no se les permite hacer programas de censura para terceros países, pero en los EE. UU. Han desarrollado un firewall corporativo que escala a 10 millones de usuarios. Creo que esto no es ético, pero de nuevo, no soy miembro de organizaciones políticas ni filósofo.

Paul Cyverson, uno de los autores de Tor, es licenciado en filosofía, pero ni siquiera él puede responder a estas preguntas. Pero pasa mucho tiempo para no responderlas.
Entonces, ¿dónde me detuve? 90 minutos es mucho tiempo. Censurado! Entonces, Tor ha eludido repetidamente la censura de varios desarrolladores. Intentan bloquear las versiones más recientes de Tor, pero al mismo tiempo hacen un bloqueo bastante débil. Por lo tanto, si cambiamos 1 bit en algún lugar del mismo identificador de nodo, podemos omitir fácilmente dicho bloqueo.

No podemos probar que específicamente hagan que Tor evite el bloqueo, es decir, venden programas de bloqueo que no funcionan, para que luego puedan vender una actualización tras otra. Pero nos parece que es así. – , , .

, , , . , , . , «» – , , .

, – . Tor — , . , , . freehaven.net/anonbib/ , .

I2P, Gnunet, Freedom — «», , , Mixmaster, Mixminion, Sphynx Y, Sphinx I – - , DC-net, DC-net . , . , Tor — , , .
— . , — , , , , — , , . . , . , , , , , . , : « , ». , 10 , .



, Tor. , :

PKz 1 → PKz, Date

, , . , , .

. 2003 RSA-1024, . RSA-1024 Ed25519. , , .

path selection, . 5-6 , . .

, - . , , , , - . , - - , 2015 . - – , !

, . , . . 10 20 . , , , 100 , - .

, , , . — , .
, , 100 – - . , , , - .



- , . , , , , .
, , .

- , , - , . : «, , !». , 2 , 6. , , , - .

, , , . «», , - , . , , , - .

, . ? No? , . , . , 12:25, . . , , !


.

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 Cores) 10GB DDR4 240GB SSD 1Gbps , .

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/es431266/


All Articles