Curso MIT "Segurança de sistemas de computadores". Aula 18: Navegação Privada na Internet, Parte 2

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

Alguém vê isso como um problema em potencial? O primeiro problema é que as pessoas sempre reclamam de desempenho quando se trata de segurança. Quando você redefine a memória e seu programa é limitado pelos recursos do dispositivo de entrada / saída, isso não é um problema, basta aguardar até que as partes mecânicas do disco rígido ou outra coisa funcionem.



Mas imagine que seu programa esteja vinculado a um processador e, possivelmente, interaja intensivamente com a memória, alocando e liberando dados. Nesse caso, zerar a memória pode reduzir seriamente o desempenho do sistema e será o preço da segurança que você não deseja pagar. Isso geralmente não é um problema na prática. Mas como todos sabemos, as pessoas valorizam muito o desempenho, portanto a opção de redefinir a memória certamente encontrará objeções.

Uma alternativa para zerar a memória pode ser criptografar os dados à medida que chegam para armazenamento permanente. Ou seja, os dados são criptografados antes que o aplicativo os grave no SSD ou no HDD. Então, quando os dados a pedido do programa são retornados do armazenamento estável, eles são descriptografados dinamicamente antes de entrar na RAM. Nesse método de proteção, é interessante que se você jogar fora a chave usada para criptografar e descriptografar dados, um invasor não poderá recuperar esses dados do disco. Isso pressupõe que você confia absolutamente na criptografia.

Portanto, isso é muito, muito bom, porque nos dá a oportunidade de não lembrar de todos os lugares onde você escreve esses dados criptografados. Você pode perguntar, por que jogar fora as chaves, porque simplesmente consideramos todos os dados criptografados como algo que pode ser selecionado novamente?

Como exemplo, considere o sistema operacional Open BSD, que possui uma opção de criptografia de troca. Dessa forma, você pode associar chaves a diferentes seções do arquivo de paginação, ou seja, o que eu mencionei acontece. Portanto, toda vez que você inicializa o computador, esse sistema operacional gera um monte de novas chaves. Depois que o computador for desligado ou reiniciado, ele esquecerá todas as chaves usadas para criptografar o espaço de troca. Podemos dizer que a troca agora está disponível para reutilização e, como essas chaves são esquecidas, podemos assumir que o invasor não poderá acessar as coisas armazenadas lá.



Aluno: como é atribuída a entropia dessas chaves e é possível decifrá-las?

Professor: Essa é uma boa pergunta. Não sei quais recursos de entropia são usados ​​aqui. O Open BSD tem paranóia sobre segurança. Portanto, suponho que ela, por exemplo, considere o pool de entropia coletado da entrada de dados do teclado do usuário e outras coisas semelhantes. Não sei como esse sistema operacional gerencia chaves. Mas você está absolutamente certo de que, se os recursos de entropia utilizados são previsíveis, ele comprime o espaço de entropia da própria chave, o que a torna mais vulnerável.

Em princípio, esse modelo oferece apenas criptografia de troca, ou seja, supõe-se que as páginas de RAM das chaves nunca sejam descarregadas da memória. Isso é muito fácil de fazer no sistema operacional, se você apenas fixar esta página na memória. Também não ajudará você a fazer algo com alguém que tenha contatos com o barramento de memória ou com alguém que possa "percorrer" a página de memória do kernel ou algo semelhante.

Aluno: do ponto de vista da navegação, isso ajuda a proteger contra invasores que vêm depois da navegação privada, porque se você deve jogar fora a chave, ela não fica na memória.

Professor: absolutamente verdade. O bom disso é que a criptografia de troca, na verdade, não requer alterações nos aplicativos.

Aluno: voltando um pouco - se você olhar os dados antes que eles entrem na RAM, restará algum artefato de memória?

Professor: se eu entendi sua pergunta corretamente, incomoda que, embora os dados sejam criptografados no disco, eles são armazenados em texto não criptografado na memória. Voltar à discussão sobre criptografia de troca. A transferência de dados criptografados para o disco não protege contra um invasor que pode visualizar a RAM em tempo real. Portanto, se apenas o invasor o estiver incomodando após uma sessão de navegação privada que não pode visualizar a RAM em tempo real, isso funcionará bem. Mas você está definitivamente certo de que isso não fornece - por falta de um termo melhor, digamos isso - criptografia de RAM. Existem alguns sistemas de pesquisa que estão tentando fazer algo assim. Isso é um pouco mais complicado, porque em algum momento, quando você acessa seu hardware, seu processador deve fazer algo com dados reais. Por exemplo, se você deseja fazer algo com o comando add e precisa passar operandos com texto sem formatação.

Existem também alguns sistemas de pesquisa interessantes que tentam fazer cálculos com base em dados criptografados. Explode o cérebro como o filme Matrix. Mas basta dizer que a proteção de dados na RAM geralmente é muito mais fraca que a proteção de dados que residem em unidades estáveis. Ainda tem dúvidas?



Aluno: falamos sobre um invasor que atua após uma sessão de navegação privada. Mas se você tiver uma guia Modo público e uma guia Modo privado no seu navegador, e depois que você fechar a guia Navegação particular, a guia Navegação pública permanecerá aberta. Um hacker pode acessar artefatos de memória através dele?

Professor: essa é uma pergunta interessante e, ao final da palestra, falaremos sobre um método semelhante de ataque. O fato é que a maioria dos modelos de ameaças no modo de navegação privada não implica a presença de um invasor em tempo real. Em outras palavras, eles assumem que quando você está fazendo uma navegação privada, ao mesmo tempo, não há outra pessoa que tenha uma guia de navegação pública aberta ou algo parecido. Mas você está certo de que a maneira como os modos de navegação privada são frequentemente implementados não é bem protegida.

Suponha que você abra a guia para navegação privada e, depois de um tempo, feche-a para tomar uma xícara de café. No entanto, o Firefox, por exemplo, salva estatísticas como alocação de memória. Portanto, se a memória da sua guia de navegação privada estiver com todo o lixo coletado pelo navegador, eu posso ver os URLs que você visitou e assim por diante na sua guia. Mas, em resumo, a maioria dos modelos de invasores não implica um invasor ao mesmo tempo em que você está ocupado navegando na Internet em particular.

Portanto, a criptografia de troca é uma coisa útil, pois fornece alguns recursos de segurança bastante interessantes sem a necessidade de alterar o navegador ou qualquer um dos aplicativos em execução. Na prática, o custo do uso de um processador ao criptografar uma troca é muito menor do que o custo real da execução de operações de E / S em geral, especialmente se você tiver um disco rígido, porque compra seu desempenho com o disco. Esse é o custo de peças puramente mecânicas, de hardware; portanto, a criptografia de troca não é um grande sucesso no desempenho.

Portanto, o próximo tipo de invasor que examinaremos é um invasor da Web, que mencionei no início da palestra. Aqui, supõe-se que o invasor controla o site que o usuário está prestes a visitar no modo de navegação privada, mas esse invasor não controla o computador local do usuário. Ao fazer isso, temos dois objetivos de segurança para nos proteger contra ataques na web.

Primeiro de tudo, não queremos que um invasor possa identificar usuários. Identificação significa que um invasor pode distinguir um usuário de outro usuário visitando seu site.

Em segundo lugar, não queremos que o invasor possa saber se o usuário está usando o modo de navegação privada ou não. Como escreve um artigo de palestra, proteger contra um invasor da Web é na verdade uma tarefa bastante desonesta.

Então, o que significa identificar usuários diferentes? Como eu disse, em um sentido global, você pode imaginar que um usuário se parece exatamente com todos os outros usuários que visitam este site. Suponha que um invasor da Web possa querer fazer uma de duas coisas específicas. O primeiro é assim: "Vejo que várias pessoas visitaram meu site no modo de navegação privada e você foi o quinto, sétimo e oitavo visitantes." Em outras palavras, isso significa identificação do usuário no contexto de várias sessões de navegação privada.



A segunda coisa que um invasor pode querer é tentar estabelecer uma conexão entre o usuário e as sessões de navegação nos modos público e privado. Suponha que uma vez eu vá para amazon.com em exibição pública e a segunda vez em exibição privada. Um invasor pode realmente descobrir que o mesmo usuário fez as duas visitas ao site?

Aluno: mas isso tudo está vinculado a endereços IP?

Professor: sim, está certo. Esta é uma excelente suposição, por isso ouso supor que, no nosso caso, o usuário não use o Tor, ou algo assim. Então, sim, podemos desenvolver o endereço IP do usuário. É fácil identificar pelo endereço IP. E se um site for visitado duas vezes durante um curto período de tempo a partir do mesmo endereço IP, é altamente provável que o mesmo usuário o tenha feito.

De fato, serve de motivação para o uso de coisas como Tor. Discutiremos esse tópico na próxima palestra. Se você nunca ouviu falar do Tor, direi que é basicamente uma ferramenta que tenta ocultar coisas como o seu endereço IP. Você pode imaginar o navegador como uma coleção de camadas, que são baseadas no Tor e, além disso, você tem um modo de navegação privado. Isso pode lhe proporcionar vantagens que o modo privado não pode oferecer. Portanto, o Tor fornece um certo senso de anonimato de um endereço IP, mas não é realmente capaz de fornecer privacidade de dados, um momento específico de sua vida ou coisas semelhantes. Você pode considerar o "Tor" uma condição necessária, mas não suficiente, para a plena implementação do regime de navegação privada na Internet.

Curiosamente, mesmo se você usa o Tor, ainda existem maneiras de um servidor Web identificar um usuário observando as características exclusivas desse navegador.



Agora vou mostrar a última demonstração de hoje. Vamos ver como eu uso um site chamado Panopticlick. Alguns de vocês já ouviram falar deste site. Este é um projeto online lançado pela EFF - Electronic Frontier Foundation, a Electronic Frontier Foundation. A idéia principal do projeto é que ele tente identificá-lo como usuário, analisando as várias características do seu navegador da web. Eu vou te mostrar exatamente o que eu quero dizer. Vamos a este site, você vê o botão "Teste-me" e eu clico nele.



Principalmente um monte de código JavaScript funciona aqui, talvez alguns applets e alguns Java.

Este site está tentando tirar impressões digitais do meu navegador e descobrir quanta informação exclusiva ele possui.

Deixe-me aumentar a fonte - você vê que uma das coisas que ele deseja descobrir são os detalhes dos plugins de navegador que eu uso. Então, basicamente, esse teste executará um código que verifica se eu tenho o Flash instalado, qual versão deste Flash, se o Java está instalado e qual versão ele possui.



Você vê que todos esses plugins nem se encaixam na mesma tela ao mesmo tempo. Esses são os vários plugins e formatos de arquivo que meu navegador suporta. Em um sentido global, isso deve incomodá-lo se você é uma "pessoa de segurança". Se eu realmente usar ativamente todas essas coisas em um determinado momento, isso será apenas um pesadelo!



Por fim, o servidor da Web, ou o invasor da Web, pode procurar o código mostrado aqui e descobrir quais plug-ins o navegador usa. Agora, se você olhar essas duas colunas à esquerda, o que é?



A primeira coluna são os bits das informações identificadas. A próxima coluna é mais interessante - mostra que apenas um dentre o número especificado de navegadores possui o mesmo conjunto de plug-ins; nesse caso, é 1 em 27679 navegadores. Portanto, esta é uma maneira bastante específica de tirar minhas impressões digitais. Esse número indica que existem muito poucas pessoas cujo navegador possui exatamente o mesmo conjunto de plugins e configurações de arquivo.
Então, como se viu, eles estão certos, sou uma pessoa completamente única, mas, a longo prazo, isso cria um grande problema de segurança. Veja o restante dos resultados do teste.



Aqui está a resolução da tela e a profundidade de cores do meu laptop, uma para 1,5 milhão de computadores. Essa é uma descoberta bastante chocante, porque significa que apenas uma pessoa em uma amostra de um milhão e meio de usuários tem essas características de tela.
Então, essas coisas são aditivas de certa forma. Quanto mais impressões digitais, mais fácil é para um invasor descobrir que foi você quem visitou o site dele. E observe que isso foi feito exclusivamente pelo servidor. Acabei de acessar esta página e clicar em um botão, e é isso que eles precisam. Só um segundo, quero mostrar mais uma coisa. O site Panopticlick foi logado em particular. Agora vou copiar o endereço da barra de endereços e abrir a versão pública comum do Firefox. Depois disso, executarei este teste novamente.

Percebo novamente - agora estou no modo de navegador público e, antes disso, estava no modo privado. Você vê que, se observar os plug-ins do navegador, o índice de exclusividade das impressões digitais do navegador permanece quase o mesmo - 27679.82 contra 27679.68. Essa diferença é feita por vários plugins, que podem ou não carregar dependendo de como o modo de privacidade é implementado. Mas veja - as impressões digitais ainda são fáceis. Observe o tamanho da tela e a profundidade da cor - esses indicadores não são diferentes nos modos de visualização público e privado.

Portanto, a capacidade de deixar impressões digitais nos dois modos é praticamente a mesma. Esse é um dos motivos pelos quais é tão difícil se proteger de um ataque da Web, porque os próprios navegadores em sua configuração carregam muitas informações para sua identificação por um invasor.

Aluno: Estou curioso sobre as opções de tamanho da tela e profundidade de cor. Como isso acontece? Por que eles são tão únicos? Quantos tamanhos de tela e profundidades de cor geralmente existem?

Professor: Eu acho que ele está realmente escondendo parte da mágica que Panopticlick usa para descobrir o que é. Globalmente, como muitos desses testes funcionam? Existem algumas partes do seu navegador que só podem ser visualizadas usando o código JavaScript. Portanto, você pode imaginar que o código JavaScript examina as propriedades do objeto window, que é uma imagem tridimensional do JavaScript, e percebe como o código dentro da janela denota esse widget estranho, widget vizinho, parte do texto, plugins e assim por diante. Essas páginas também costumam usar o fato de que os applets Java e objetos Flash podem procurar coisas mais interessantes, como fontes disponíveis no seu computador, etc. Portanto, acredito pessoalmente que, ao determinar a exclusividade do tamanho da tela e da profundidade de cor, acontece o seguinte: o teste inicia um applet que tentará solicitar sua placa gráfica ou interfaces gráficas em Java e verificar alternadamente vários aspectos de seu trabalho no processo de exibição da página do navegador.

Portanto, acho que esse indicador realmente contém mais do que apenas o tamanho da tela e a profundidade de cor, eles simplesmente reduzem seu nome a esse formulário.

Veja como todos esses truques funcionam em alto nível. Então, você vê um monte de informações que você pode descobrir enquanto explora o JavaScript. Em seguida, você lança vários plugins que geralmente podem acessar mais coisas e ver o que podem encontrar. Depois disso, você pode obter uma imagem geral do que está acontecendo.

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


.

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 de 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) 10 GB DDR4 240 GB SSD de 1 Gbps até dezembro 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/pt430206/


All Articles