A votação da linha do partido do Congresso permitirá que os ISP explorem os dados privados de sua família sem o seu consentimento. Consulte " O Senado coloca os lucros do ISP sobre sua privacidade ".
Esse script foi projetado para derrotar essa violação, gerando grandes quantidades de navegação realista e aleatória da Web para poluir os dados do ISP e torná -lo efetivamente inútil, ofuscando os dados reais de navegação.
Pago muito meu ISP pelo uso de dados todos os meses. Normalmente, não uso toda a largura de banda pela qual pago. Se meu ISP vender hábitos privados de navegação, vou poluir a navegação com ruído e usará toda a largura de banda pela qual pago. Este método realiza isso.
Se todos usarem todos os dados que pagaram para poluir seu histórico de navegação, talvez os ISPs reconsiderem o modelo de negócios de vender o histórico de navegação privado do cliente.
A alternativa de usar uma VPN ou Tor apenas empurra o problema para a escolha do provedor da VPN, complica a rede e adiciona a questão real de navegar no captchas ao aparecer como um nó de saída do TOR. Além disso, apenas o tráfego criptografado tem muitas informações exploráveis de canal lateral e ainda pode ser usado para determinar quando membros específicos da família estão em casa e as atividades em que estão envolvidos.
Este rastreador usa o Chromedriver com a Biblioteca Python Selenium, usa listas negras para sites indesejáveis (consulte o código para obter detalhes), não baixa imagens e respeita robots.txt, que fornece uma boa segurança.
python3 isp_data_pollution.py
python3 isp_data_pollution.py --help
python3 isp_data_pollution.py -bw 1024 # 1 TB per month
python3 isp_data_pollution.py -g # print debugging statements
A abordagem usada neste script é suscetível a ataques estatísticos e anomalias de trânsito. O artigo de Jon Brodkin sobre privacidade por meio de injeção de ruído abrange várias críticas válidas: a abordagem não é garantida para ofuscar informações privadas sensíveis e, mesmo que funcione inicialmente, não pode escalar. Falhas e sugestões conhecidas para melhorias são bem -vindas nas páginas de questões.
No entanto, existem boas razões teóricas e probabilísticas para sugerir uma abordagem como essa poderia funcionar em muitas situações práticas. A privacidade através da ofuscação tem sido usada em muitos contextos. Nas ciências dos dados, Rubin propôs um método estatisticamente sólido para preservar a confidencialidade do sujeito, mascarando dados privados com dados sintéticos ("Limitação de divulgação estatística", Jos 9 (2): 461-468, 1993). Em um bom artigo relevante para este repo, Ye et al. Descreva um modelo de privacidade do lado do cliente que usa injeção de ruído ("Injeção de ruído para proteção de privacidade de pesquisa", Proc. 2009 Intl. Conf. CSE ).
Aqui estão dois argumentos de back-of-end-envelope para a eficácia dessa abordagem no caso de intrusão de privacidade do ISP. Essas não são provas, mas modelos simples que sugerem que algum otimismo é justificado. A eficácia real deve ser determinada testando esses modelos no mundo real.
A abordagem de Ye et al. Tenta minimizar as informações mútuas entre dados e dados do usuário com ruído injetado apresentado a um servidor. Informações mútuas são a sobreposição entre a entropia dos dados do usuário e a entropia dos dados do usuário com ruído injetado (área roxa abaixo). A quantidade e a distribuição do ruído injetado são selecionadas para tornar essas informações mútuas o mais pequeno possível, dificultando a exploração dos dados do usuário no lado do servidor.
O exemplo no artigo de Ye et al. São consultas de pesquisa específicas. A analogia neste repositório são domínios específicos. As informações do domínio são os dados primários vazados para os ISPs se https criptografados forem usados e, portanto, for relevante. O caso de tráfego não criptografado com termos e conteúdo explícitos de consulta é discutido na próxima seção sobre a máxima probabilidade.
Ye et al. Mostre que a informação mútua desaparece se:
Número de chamadas de ruído ≥ (número de chamadas de usuário - 1) × número de chamadas possíveis
Para este aplicativo, o número de chamadas possíveis é o número de domínios que um usuário pode visitar (por dia) e o número de chamadas é o número de visitas feitas. Nielson informou em 2010 que a pessoa média visita 89 domínios por mês. Para ser extremamente conservador em (acima) estimar o número de chamadas de ruído necessárias para obscurecer esses dados de navegação, suponha que o usuário médio visite os domínios O (100) por dia, com solicitações de usuário de O (200) por dia ou cerca de uma a cada cinco minutos durante um longo dia.
A equação acima afirma que (200-1) × 100 ou cerca de vinte mil (20.000) chamadas de ruído são necessárias para obter zero informações mútuas entre os dados do usuário e os dados de ruído do usuário mais.
Isso equivale a uma chamada de ruído a cada cinco segundos, o que é muito fácil de alcançar na prática, e facilmente se enquadra em um limite nominal de largura de banda de 50 GB por mês.
Se o modelo teórico de informações do lado do cliente de Ye et al. For válido na prática, é razoável esperar que os parâmetros escolhidos nesse script sejam capazes de reduzir ou eliminar bastante as informações mútuas entre os dados reais do domínio do usuário e os dados do domínio apresentados ao ISP.
Além disso, menos chamadas de ruído podem ser usadas se um modelo de dependência for introduzido entre as distribuições de usuário e ruído.
HTTP não criptografado CHAMPLOTE DATOS DE USUÁRIO PARA O ISP. Os métodos de publicidade direcionados usam esses dados capturados para classificar o usuário e servir publicidade personalizada com base na categoria do usuário. Provavelmente, essa abordagem depende inerentemente de encontrar "picos" específicos em uma distribuição de consultas de usuários e, em seguida, usar esses picos para encontrar as categorias de consumidores mais prováveis para o usuário. A injeção de um grande número de chamadas não correlacionadas (ou melhores, anticorrelacionadas) pode prejudicar a abordagem de probabilidade máxima usada para classificar o usuário, pois adiciona muito mais picos ao longo da distribuição medida dos interesses do usuário.
Além disso, a largura de banda de transmissão do anunciante é altamente restrita - apenas muitos anúncios se encaixam em uma página da web. A adição de chamadas de ruído não correlacionada complica o problema de selecionar o anúncio apropriado.
Os excelentes artigos de Kaveh Waddell e Jon Brodkin sobre a privacidade do ISP no Atlântico e da ARS Technica abordam críticas importantes dessa abordagem. Eles estão resumidos aqui, juntamente com uma resposta, para que os usuários estejam cientes desses problemas e solicitem sugestões para resolvê -los.
“Mascarar a história de navegação de uma pessoa em camadas em cópias dos padrões de navegação de outras pessoas pode ser mais útil.… 'Seria um sistema semelhante ao Tor onde o anonimato vem através do uso compartilhado.'” [Bruce Schneier]
"[Não subestime] a capacidade dos provedores de Internet ... de ver através de táticas de obscação de dados." [Bruce Schneier]
"Pesquisas aleatórias do Google podem enviar o programa em uma toca escura de coelho, sem o conhecimento do usuário." [Kenn White]
safe=active é adicionado às consultas de pesquisa. -Comentário 2: o tráfego do nó de saída do Tor quase certamente contém esse tráfego, que é uma questão importante para os operadores de saída de saída. Por outro lado, é provável que o ruído auto-gerado seja-e na prática parece ser-muito mais segura."Algumas informações são sensíveis, mesmo que estejam cercadas por barulho. ... Imagine que os hackers direcionassem seu ISP, seu histórico de navegação vazou e mostrou que você visitava sites controversos específicos. ... mesmo que isso estivesse cercado por barulho, seria muito difícil obter o tipo de barulho que lhe daria uma denutabilidade plausível." [Jeremy Gillula]
Análise de outras abordagens de ofuscação de dados mostram suscetibilidade a ataques de classificadores de aprendizado de máquina prontos para uso: Pedinti e Saxena demonstraram classificação significativa do usuário com o plug-in do navegador Trackmenot destinado a derrotar um mecanismo de pesquisa adversário ("Sobre a privacidade da pesquisa da web baseada na consulta: um estudo de caso de trackmenot ". O modelo adversário e os métodos de treinamento usados nesta análise não são diretamente aplicáveis ao caso de intermediários do ISP. Os principais recursos do ataque de Pedinti e Saxena são:
Nenhum desses recursos de ataque é necessariamente aplicável a um modelo adversário do ISP. É possível que um ISP possa usar dados históricos do usuário não poluído para treinar um classificador, no entanto, isso presume que os interesses, números e identidades dos usuários em um endereço IP da conta não mudem de mês a mês, um evento improvável para a maioria dos usuários e famílias. Sem dados de usuário não corrompidos para treinar, este artigo ilustra as dificuldades de desanimização de terceiros, mesmo com quantidades limitadas de ruído. Seria útil quantificar o desempenho da classificação com e sem a capacidade de treinar com dados de usuário não corrompidos. Saber a resposta para ambos os casos apontaria para possíveis melhorias na abordagem de ofuscação.
A poluição dos dados é um componente de privatizar seus dados pessoais. Instale o HTTPS da EFF em todos os lugares e o Badger de Privacidade em todos os navegadores. Consulte também o Repos OSXFortress e OSX-OpenVPN-Server para bloquear publicidade, rastreadores e malware entre dispositivos.
O uso de um proxy privatizador para agrupar seu próprio tráfego pessoal com o tráfego de poluição dos dados adiciona outra camada de ofuscação ao controle de tráfego do cabeçalho. Os cabeçalhos HTTP do tráfego poluído aparecem como:
GET /products/mens-suits.jsp HTTP/1.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Accept-Language: en-US,*
Host: www.bananarepublic.com
Connection: keep-alive
Depois de um tempo de rastejamento aleatório, se parece com o seguinte:
This is ISP Data Pollution ??, Version 1.1
Downloading the blacklist… done.
Display format:
Downloading: website.com; NNNNN links [in library], H(domain)= B bits [entropy]
Downloaded: website.com: +LLL/NNNNN links [added], H(domain)= B bits [entropy]
http://eponymousflower.blogspot.com/2017/02/lu…: +6/32349 links, H(domain)=6.8 b
A captura de tela de uma página da web rastejada aleatoriamente se parece com isso. Observe que não há imagens baixadas.
driver.get_screenshot_as_file('his_all_time_greatest_hits.png') :

Dependendo da instalação do seu Python (v. 3), as dependências do módulo são numpy , requests , selenium e fake_useragent , bem como chromedriver . Como você as instala depende do seu sistema operacional.
Isso envolve a escolha de um gerenciador de pacotes Python (v. 3), normalmente pip ou Anaconda .
Eu gosto de pip , então em minhas máquinas, eu diria:
sudo pip-3.7 install numpy requests selenium fake_useragent OpenSSL
Recomenda -se que o binário chromedriver seja instalado diretamente em [chromedriver.chromium.org] (http://chromedriver.chromium.org/downloads. Certifique -se de verificar o ETAG da instalação baixada.
O comando de instalação de Macports é:
sudo port install chromedriver py37-numpy py37-requests py37-psutil py37-openssl psutil
Isso é o que também foi necessário no macOS:
sudo port install chromedriver
sudo -H pip-3.7 install selenium fake_useragent
# if chromedriver fails to install because of an Xode configuration error: test with
/usr/bin/xcrun -find xcrun
# then do this:
cd /Applications/Xcode.app/Contents/Developer/usr/bin/
sudo ln -s xcodebuild xcrun
Homebrew é outra boa opção.
sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm
sudo yum -y groupinstall development
sudo yum -y install python34 python34-pip python34-devel python34-pyflakes openssl-devel
sudo pip3 install --upgrade pip
sudo pip3 install numpy psutil requests selenium fake_useragent pyopenssl
sudo apt-get install git
git clone https://github.com/essandess/isp-data-pollution.git
cd isp-data-pollution/
sudo apt install python3-pip
pip3 install --upgrade pip
pip3 install numpy
pip3 install psutil
sudo -H pip3 install psutil --upgrade
sudo -H pip3 install --upgrade pip
sudo -H pip3 install selenium
sudo -H pip3 install fake_useragent
sudo -H pip3 install pyopenssl
sudo apt-get install fontconfig
sudo apt-get install libfontconfig
sudo apt-get install build-essential chrpath libssl-dev libxft-dev
sudo apt-get install libfreetype6 libfreetype6-dev
sudo apt-get install libfontconfig1 libfontconfig1-dev
#! Please update these commands for chromedriver
# export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64"
# sudo mv $PHANTOM_JS /usr/local/share
ls /usr/local/share
# sudo ln -sf /usr/local/share/$PHANTOM_JS/bin/phantomjs /usr/local/bin
# phantomjs --version
python3 isp_data_pollution.py
Se você estiver por trás de um firewall, use sudo -EH para herdar configurações de ambiente http_proxy .
chromedriver requer algum software gráfico, virtual ou não; portanto, em um computador sem cabeça, você precisará do seguinte pacote do sistema e pacote local.
Se você não estiver usando o VirtualEnv (abaixo), execute o PIP como sudo.
sudo apt-get install xvfb
pip install pyvirtualdisplay
Para isolar os arquivos da biblioteca PIP, o VirtualENV é conveniente. Se você preferir esse método, poderá seguir as etapas abaixo:
pushd ~/.virtualenvs/ && virtualenv -p python3 isp-pollute && popd
workon isp-pollute
pip install numpy requests selenium fake_useragent psutil
sudo apt-get install chromedriver