Curso MIT "Segurança de sistemas de computadores". Palestra 19: “Redes Anônimas”, parte 3 (palestra do criador da rede Tor)

Instituto de Tecnologia de Massachusetts. Curso de Aula nº 6.858. "Segurança de sistemas de computador". Nikolai Zeldovich, James Mickens. 2014 ano


Computer Systems Security é um curso sobre o desenvolvimento e implementação de sistemas de computador seguros. As palestras abrangem modelos de ameaças, ataques que comprometem a segurança e técnicas de segurança baseadas em trabalhos científicos recentes. Os tópicos incluem segurança do sistema operacional (SO), recursos, gerenciamento de fluxo de informações, segurança de idiomas, protocolos de rede, segurança de hardware e segurança de aplicativos da web.

Palestra 1: “Introdução: modelos de ameaças” Parte 1 / Parte 2 / Parte 3
Palestra 2: “Controle de ataques de hackers” Parte 1 / Parte 2 / Parte 3
Aula 3: “Estouros de Buffer: Explorações e Proteção” Parte 1 / Parte 2 / Parte 3
Palestra 4: “Separação de Privilégios” Parte 1 / Parte 2 / Parte 3
Palestra 5: “De onde vêm os sistemas de segurança?” Parte 1 / Parte 2
Palestra 6: “Oportunidades” Parte 1 / Parte 2 / Parte 3
Palestra 7: “Sandbox do Cliente Nativo” Parte 1 / Parte 2 / Parte 3
Aula 8: “Modelo de Segurança de Rede” Parte 1 / Parte 2 / Parte 3
Aula 9: “Segurança de aplicativos da Web” Parte 1 / Parte 2 / Parte 3
Palestra 10: “Execução Simbólica” Parte 1 / Parte 2 / Parte 3
Aula 11: “Linguagem de Programação Ur / Web” Parte 1 / Parte 2 / Parte 3
Aula 12: Segurança de rede Parte 1 / Parte 2 / Parte 3
Aula 13: “Protocolos de Rede” Parte 1 / Parte 2 / Parte 3
Palestra 14: “SSL e HTTPS” Parte 1 / Parte 2 / Parte 3
Palestra 15: “Software Médico” Parte 1 / Parte 2 / Parte 3
Palestra 16: “Ataques de Canal Lateral” Parte 1 / Parte 2 / Parte 3
Palestra 17: “Autenticação de Usuário” Parte 1 / Parte 2 / Parte 3
Palestra 18: “Navegação Privada na Internet” Parte 1 / Parte 2 / Parte 3
Palestra 19: “Redes Anônimas” Parte 1 / Parte 2 / Parte 3

Suponha que você use a probabilidade bayesiana, argumentando da seguinte maneira: “o tribunal teria providenciado evidências de que esse cara foi pego por causa de um mau OPSEC? Sim eles fizeram. Ou seja, preciso de relatórios que digam que ele foi pego devido à não conformidade com a segurança da informação das operações da Internet. ” Assim, para a "construção dupla", eu precisaria de relatórios de que o cara foi pego em uma OPSEC ruim, porque evidências desse tipo são bastante acessíveis em uma investigação policial regular, sem mencionar as informações obtidas da inteligência.

Não podemos tirar conclusões sobre esse caso a partir de nenhum relatório público, no entanto, parece que esse cara foi detido precisamente por não observar as regras da OPSEC, ou seja, o que você procuraria, tentando pegar alguém que está envolvido em coisas ilegais. Portanto, como disse anteriormente, não use minha rede para violar nenhuma lei. Além disso, se sua vida ou liberdade depender do uso do Tor ou de qualquer outro produto de segurança, não os utilize isoladamente.



Considere criar várias linhas de defesa se sua vida ou liberdade estiver em risco ou se o colapso do sistema for completamente inaceitável para você. Isso é verdade para Tor, TLS e PGP. Software é um trabalho em andamento.
Era tudo o que eu queria dizer sobre abusos na Internet. Eu tenho 25 minutos restantes para serviços ocultos.

O anonimato do entrevistado é um problema muito mais complexo do que o anonimato do iniciador. O anonimato do iniciador é o que você obtém quando Alice deseja comprar meias, mas, ao mesmo tempo, permanece anônimo para o vendedor de meias.

O anonimato do entrevistado é quando Alice deseja publicar seus poemas na Internet e inicia um servidor da Web com sua poesia, mas não quer que ninguém descubra onde está esse servidor da Web, porque a poesia é muito estranha. Então, sim, de fato, há um serviço oculto com meus poemas ruins. Não, não acho que alguém já os tenha publicado. Não, não vou contar a ninguém onde ele está. Só estou esperando que seja tornado público.

Suponha que Alice queira publicar seus poemas. Vou colocá-la à direita, porque ela é a entrevistada. Alice pode abrir o caminho - essa linha espiral mostra vários repetidores - para a rede Tor, aqui para este R, e se dirigir a ele com um pedido: "por favor aceite essas conexões!" Então agora quem se conecta a esse repetidor pode dizer que quer conversar com Alice. Havia projetos que funcionavam dessa maneira.



No entanto, existem alguns problemas. Um problema é que esse repetidor pode ser um homem intermediário, que intercepta todo o tráfego se não houver uma chave TLS conhecida aqui. O segundo problema pode ser o fato de esse repetidor pertencer a uma pessoa que também tem vergonha de seus poemas e não quer ser um distribuidor público de poesia, porque é muito terrível!

Também pode ser afetado por outras pessoas que possuem o revezamento R, que odeiam tanto a poesia que desejam censurar esse composto. Finalmente, este relé R pode simplesmente se tornar o alvo do ataque.

Portanto, você deseja que Alice alterne entre diferentes retransmissões o tempo todo, e nenhum deles pode afetar o tráfego não criptografado. É bastante factível.
Mas se temos muitos repetidores diferentes, o que Alice tem a dizer às pessoas? Deve haver algo como uma chave pública, porque se ela acessar a rede: “retransmitir X, retransmitir Y, retransmitir Z”, isso não funcionará, porque a rede muda a cada 5 minutos e é muito difícil obter a retificação correta e funcionando. .

Suponha que ela diga a chave pública a todos os participantes da rede e, quando ela vier aqui para R, ela diz: "essa é Alice, vou provar isso com minha chave pública". Assim, R sabe que a chave pública PKz lança um serviço oculto específico - a poesia de Alice. Portanto, se alguém disser: "Ei, conecte-me com a chave pública Z", você poderá fazer um aperto de mão com Alice usando uma chave compartilhada. E este é o mesmo aperto de mão usado na cadeia Tor.

Agora, Bob poderá ler os poemas de Alice estabelecendo outra conexão através da rede Tor. Conhecendo a tecla PKz, Bob poderá dizer ao repetidor: "Ei, conecte-me a Alice com este PKz". Depois que o repetidor faz um aperto de mão conjunto, Bob e Alice terão uma chave comum, que eles podem usar para criptografar por toda a conexão.



Há algo que eu perdi, a saber, como Bob sabe como chegar aqui? Como esse repetidor reconhece a chave pública PKz? Podemos adicionar algum sistema de diretório ao sistema, onde Alice baixa anonimamente uma declaração assinada, informando que PKz está no relé X via Tor. Nesse caso, Bob pede ao sistema de diretório que forneça essa declaração assinada sobre PKz, para que Bob descubra onde ele precisa. para ir. Poderíamos melhorar ainda mais - deixe Alice fornecer outra chave pública, vamos chamá-la de PKw, e o aplicativo que ela carrega no diretório e que diz que se você deseja conversar com o serviço de chave pública Z, deve ir ao retransmissor Rx usando a chave pública W.



Nesse caso, a chave pública Z não é publicada no relé Rx. Você pode ir em frente e criptografar a expressão (Rx, PKw) com algum tipo de segredo comum conhecido por Alice e Bob. Se você fizer isso, o serviço de diretório e as pessoas que podem entrar em contato com o serviço de diretório não poderão aprender como se conectar a Alice usando essa chave PKz.

Aluno: se não estiver criptografado, o repetidor Rx poderá descobrir que inicia o serviço para Alice, certo?

Nick Mathewson: não, não para Alice. Ele só pode descobrir que usa a chave PKz se essa expressão não estiver criptografada. Temos uma decisão sobre como criar um sistema desse tipo, ele ainda não foi construído, mas será legal.

Suponha que você não queira usar um diretório centralizado para isso. Nesse caso, na verdade usamos DHT, o que não é o ideal e está sujeito à censura, mas tentamos tornar cada vez menos a possibilidade de usar a censura. Eu poderia lhe contar mais sobre isso, mas tenho medo de não ter tempo para cobrir os tópicos restantes.

Há outro problema: se você usar um desses diretórios de serviço e tiver uma lista completa de chaves, poderá se conectar a todos aqueles que não criptografaram suas conexões para descobrir o que eles têm lá. Isso é chamado de ataque de enumeração ou "ataque de enumeração". Não mencionamos isso em nosso jornal, não porque isso não nos incomoda, mas porque ainda não estamos prontos para suportar tais ataques.

Espero que em 2014 encontre uma solução na qual Alice e Bob compartilhem a chave PKz, mas essa expressão (Rx, PKw) não seja assinada com a chave PKz. É assinado por PKz 1 , que é derivado de PKz e, digamos, a data:

PKz 1 - > PKz, Data

Se você conhece PKz e a data, pode obter PKz 1 . Se, como Alice, você conhece o segredo do SKz, pode criar mensagens assinadas pelo PKz 1 .



Mas se você vir apenas PKz 1 , mesmo sabendo a data, não poderá receber novamente o PKz. Temos evidências da possibilidade dessa solução e, se você quiser saber como ela funciona, escreva para mim e eu as enviarei. Este é um truque legal. Não fomos os primeiros a ter essa ideia. Mas é dessa maneira que vamos resolver o problema do ataque de enumeração este ano, se eu realmente encontrar tempo para a implementação prática dessa solução. Isso é tudo para serviços ocultos.

Considere a questão dos ataques e defesa. Até agora, a maior categoria de ataques que vimos são os ataques no nível do aplicativo. Se você executar o aplicativo através do Tor e ele enviar tráfego não criptografado, como uma conexão HTTP normal, o nó do ponto de saída hostil, como qualquer outro nó que permita conexões HTTP, poderá monitorar e modificar esse tráfego. Este é o ataque número 1 em nosso sistema. Pode ser resistido usando tráfego criptografado.

Felizmente, nos últimos anos, a criptografia tem aumentado e mais tráfego está sendo criptografado pela excelente autoridade de certificação gratuita que a EFF, Mozilla e Cisco relataram um ou dois dias atrás. Espero que em 2015 haja menos tráfego não criptografado do que este ano. Portanto, essa abordagem resolve esse problema.

Ataques mais interessantes incluem coisas como marcação de tráfego ou marcação de tráfego. Cometemos um erro em nossa implementação anterior de verificação de integridade. Nossa implementação inicial da verificação de integridade terminou com a verificação de integridade na seção entre o programa de Alice e o nó do ponto de saída, mas verificou-se que isso não é suficiente. Como se o primeiro relé R1 “confundir” o tráfego de tal maneira que crie um padrão que possa detectar o nó do ponto de saída, então, para o primeiro e o último relés, ele servirá como uma maneira de descobrir se eles estão no mesmo caminho comum, na mesma cadeia e identificar Alice

É claro que, se o primeiro e o último relés cooperarem de alguma forma, eles poderão determinar Alice comparando o tráfego, mas esperamos que não seja fácil para eles e, com o tempo, o processo de correlação do tráfego se tornará mais complicado do que pensamos.
De fato, seria bom encerrar esse tipo de ataque de uma vez por todas. Para isso, temos duas soluções. Um dos resultados esperados desses ataques é uma falha periódica das cadeias, porque o invasor no primeiro hub cometeu um erro em relação ao controle sobre o último hub.

Portanto, cada cliente Tor verifica uma taxa de rejeição estranha. Uma solução eficaz a longo prazo para o problema é garantir que o "barulho" com o modelo no primeiro hub não crie mais de 1 bit de informações no último hub. Você não pode evitar o envio de 1 bit de informações, porque o primeiro hub sempre pode simplesmente desconectar a conexão, mas você pode limitar essas informações a 1 bit. Ou melhor, até 2 bits, porque eles terão a opção de corromper os dados ou desconectar a conexão. Eu tinha uma ideia da melhor maneira de fazer isso, então pensarei nesse problema.

A negação de serviço, ou DOS, também é importante. No ano passado, havia um artigo sobre o que os autores chamavam de "ataque de atirador de elite". Você vê o tráfego vindo do nó Tor que você não controla e, portanto, deseja expulsar todos desse nó. Para fazer isso, você se conecta a esse nó, sobrecarrega todos os buffers de sua memória e ele "trava". Depois disso, você redireciona o tráfego de seu interesse para o nó que controla e, se ele cair em um nó não controlado, repita essa técnica várias vezes até que o resultado desejado seja alcançado.

Nossas melhores soluções visam eliminar a possibilidade de um ataque do DOS na memória e nossos patches praticamente eliminaram essa possibilidade. Outra opção para solucionar problemas desse tipo é garantir que o repetidor tenha uma grande capacidade de memória. Portanto, não use repetidores de pequena capacidade na rede. Também estamos fazendo isso - se você tentar iniciar o site Tor no seu telefone, ele não receberá autorização e não será incluído na lista de sites confiáveis.

Também estamos tentando desenvolver algoritmos de planejamento em cadeia, embora seja muito difícil tentar desenvolver um diagrama de rede de nós que você não controla, portanto, por enquanto, esse é um problema não resolvido.

Agora me diga o que é melhor - fale sobre ataques interessantes ou ataques importantes?

Estudante: sobre os interessantes!

Nick Mathewson: bom. Então deixe aqueles que gostariam de escrever um programa que usa criptografia levantem suas mãos? Bem, é isso que você precisa aprender! Mas nunca confie na implementação da sua criptografia. Mesmo que isso esteja correto, ainda está errado. Há muito tempo, tivemos um dos piores erros de segurança. Nós pensamos que cada relé poderia ser um "homem do meio" em qualquer cadeia de nós, porque assumimos que a implementação correta do algoritmo Diffie-Hellman verificaria se 0 passou como uma das entradas.



Os autores de nossa implementação Diffie-Hellman sugeriram que um aplicativo adequado nunca passaria uma implementação zero de Diffie-Hellman.

Como o algoritmo Diffie-Hellman correto funciona? Suponha que eu tenha g x e você tenha g y . Eu conheço X, você conhece Y, e nós dois podemos calcular g xy . Mas se, em vez disso, o "homem do meio" substituir meu valor g por zero, então eu calcular 0 x , você calcular 0 y , teremos a mesma chave e poderemos nos comunicar facilmente um com o outro, mas essa será a chave conhecida pelo atacante, porque o que é 0.

A unidade funciona, P também funciona, P + 1 também funciona. Portanto, você só precisa garantir que seus valores de g x e g y estejam no intervalo de 2 a P-1 se você implementar o algoritmo Diffie-Hellman na forma z sub p.

Eu gostaria de falar mais sobre censura. Afinal, de fato, esta é uma das áreas em que podemos tirar o máximo proveito do bem. No começo, pensamos em fazer o Tor parecer um cliente da web falando com o servidor da web por HTTPS e dificultar o bloqueio. Acontece que é fantasticamente difícil e provavelmente não vale a pena.
Agora, estamos usando uma abordagem usando vários plugins que permitem o uso de repetidores não relatados como uma ponte, e o usuário pode usar esse esquema para várias conversões de tráfego. Conseguimos garantir que novos repetidores sejam adicionados à rede mais rapidamente do que os censores percebem seu bloqueio.



De fato, esse é o caso quando nenhuma das soluções é categoricamente viável. Acho que não formulei meu pensamento dessa maneira. Seria mais correto dizer que nenhum desses plug-ins é essencialmente imune a qualquer tecnologia moderna, mas eles são bons o suficiente para manter o tráfego desbloqueado por 1-2 anos na maioria dos países ou 6-7 meses na China.

Atualmente, a China possui os censores mais competentes do mundo, em grande parte porque não usa terceirização. A maioria dos outros países com censura agressiva na Internet transfere funções de censura para empresas européias, americanas e asiáticas, cujos interesses não são realmente vender software eficaz de censura na Internet, mas forçar seus clientes a participar constantemente da corrida de atualização.

Por exemplo, você pode comprar seu software censurado nos Estados Unidos. Tecnicamente, as empresas norte-americanas não estão autorizadas a fazer programas de censura para países terceiros, mas nos EUA desenvolveram um firewall corporativo que pode chegar a 10 milhões de usuários. Eu acho isso antiético, mas, novamente, eu não sou membro de organizações políticas e nem filósofo.

Paul Cyverson, um dos autores de Tor, é formado em filosofia, mas mesmo ele não pode responder a essas perguntas. Mas ele gasta muito tempo para não respondê-las.
Então, onde eu parei? 90 minutos é muito tempo. Censurado! Portanto, Tor tem repetidamente contornado a censura de vários desenvolvedores. Eles tentam bloquear as versões mais recentes do Tor, mas ao mesmo tempo fazem um bloco bastante fraco. Portanto, se alterarmos 1 bit em algum lugar no mesmo identificador de nó, podemos ignorar facilmente esse bloqueio.

Não podemos provar que eles especificamente fazem com que o Tor ignore o bloqueio, ou seja, eles vendem programas de bloqueio que não funcionam, para que posteriormente possam vender uma atualização após a outra. Mas parece-nos que é assim. – , , .

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

, – . 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. , , , - .

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

, . ? Não? , . , . , 12:25, . . , , !


.

Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps da US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até janeiro de graça quando pagar por um período de seis meses, você pode fazer o pedido aqui .

Dell R730xd 2 vezes mais barato? Somente nós temos 2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?

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


All Articles