Le vote du parti du parti du Congrès permettra aux FAI d'exploiter les données privées de votre famille sans votre consentement. Voir " Le Sénat met les bénéfices des FAI sur votre vie privée ".
Ce script est conçu pour vaincre cette violation en générant de grandes quantités de navigation Web réaliste et aléatoire pour polluer les données des FAI et les rendre efficacement inutiles en obstruant les données de navigation réelles.
Je paie beaucoup mon FAI pour l'utilisation des données chaque mois. Je n'utilise généralement pas toute la bande passante pour laquelle je paie. Si mon FAI va vendre des habitudes de navigation privées, je vais polluer la navigation de bruit et utiliser toute la bande passante pour laquelle je paie. Cette méthode accomplit cela.
Si tout le monde utilise toutes les données pour lesquelles ils ont payé pour polluer leur historique de navigation, alors peut-être que les FAI reconsidèrent le modèle commercial de vente de l'historique de navigation privée du client.
L'alternative de l'utilisation d'un VPN ou de Tor pousse simplement le problème au choix du fournisseur VPN, complique le réseautage et ajoute le vrai problème de navigation CAPTCHAS lorsqu'il apparaît comme un nœud de sortie TOR. En outre, le simple trafic crypté a trop d'informations exploitables dans les canaux latéraux et pourrait toujours être utilisé pour déterminer quand des membres de la famille spécifiques sont à la maison et les activités dans lesquelles ils sont engagés.
Ce crawler utilise Chromedriver avec la bibliothèque Python Selenium, utilise des listes noires pour des sites Web indésirables (voir le code pour plus de détails), ne télécharge pas d'images et respecte Robots.txt, qui offrent tous une bonne sécurité.
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
L'approche utilisée dans ce script est sensible à la fois aux anomalies d'attaque statistique et de trafic. L'article de Jon Brodkin sur la confidentialité par l'injection de bruit couvre plusieurs critiques valides: l'approche n'est pas garantie pour obscurcir les informations privées sensibles, et même si elle fonctionne initialement, elle peut ne pas évoluer. Les défauts et les suggestions connues d'améliorations sont accueillis dans les pages des problèmes.
Cependant, il existe de bonnes informations sur les raisons théoriques et probabilistes de suggérer une approche comme celle-ci pourrait fonctionner dans de nombreuses situations pratiques. La confidentialité par l'obscurcissement a été utilisée dans de nombreux contextes. Dans les sciences des données, Rubin a proposé une méthode statistiquement solide pour préserver la confidentialité du sujet en masquant des données privées avec des données synthétiques ("Limitation de divulgation statistique", Jos 9 (2): 461–468, 1993). Dans un joli papier pertinent pour ce dépôt, Ye et al. Décrivez un modèle de confidentialité côté client qui utilise l'injection de bruit ("Injection de bruit pour la protection de la vie privée de recherche", Proc. 2009 Intl. Conf. CSE ).
Voici deux arguments à l'arrière de l'enveloppe pour l'efficacité de cette approche dans le cas de l'intrusion de confidentialité des ISP. Ce ne sont pas des preuves, mais des modèles simples qui suggèrent un certain optimisme sont justifiés. L'efficacité réelle doit être déterminée en testant ces modèles dans le monde réel.
L'approche de Ye et al. Tente de minimiser les informations mutuelles entre les données de l'utilisateur et les données utilisateur avec un bruit injecté présenté à un serveur. Les informations mutuelles sont le chevauchement entre l'entropie des données utilisateur et l'entropie des données utilisateur avec du bruit injecté (zone violette ci-dessous). La quantité et la distribution du bruit injecté sont sélectionnées pour rendre ces informations mutuelles aussi petites que possible, ce qui rend difficile d'exploiter les données utilisateur du côté serveur.
L'exemple de l'article de Ye et al. Est des requêtes de recherche spécifiques. L'analogie dans ce dépôt est des domaines spécifiques. Les informations sur le domaine sont les données primaires divulguées aux FAI si les HTTP cryptés sont utilisés et sont donc pertinents. Le cas du trafic non crypté avec des termes et du contenu de requête explicites est discuté dans la section suivante sur le maximum de vraisemblance.
Ye et al. Montrez que les informations mutuelles disparaissent si:
Nombre d'appels de bruit ≥ (nombre d'appels utilisateur - 1) × nombre d'appels possibles
Pour cette application, le nombre d'appels possibles est le nombre de domaines qu'un utilisateur peut visiter (par jour), et le nombre d'appels est le nombre de visites effectuées. Nielson a rapporté en 2010 que la personne moyenne visite 89 domaines par mois. Pour être extrêmement conservateur en estimant (au-dessus) le nombre d'appels de bruit nécessaires pour obscurcir ces données de navigation, supposons que l'utilisateur moyen visite les domaines O (100) par jour, avec des demandes d'utilisateurs O (200) par jour, ou environ une toutes les cinq minutes sur une longue journée.
L'équation ci-dessus affirme que (200-1) × 100 ou environ vingt mille (20 000) appels de bruit sont nécessaires pour obtenir aucune information mutuelle entre les données utilisateur et l'utilisateur plus les données de bruit.
Cela équivaut à un appel de bruit environ toutes les cinq secondes, ce qui est très facile à réaliser dans la pratique, et se situe facilement dans une limite de bande passante nominale de 50 Go par mois.
Si le modèle théorique des informations côté client de Ye et al. Est valable dans la pratique, il est raisonnable de s'attendre à ce que les paramètres choisis dans ce script soient en mesure de réduire ou d'éliminer considérablement les informations mutuelles entre les données réelles du domaine utilisateur et les données de domaine présentées au FAI.
De plus, moins d'appels de bruit peuvent être utilisés si un modèle de dépendance est introduit entre l'utilisateur et les distributions de bruit.
Les appels HTTP non cryptés fuisent des données utilisateur hautement spécifiques au FAI. Les méthodes de publicité ciblée utilisent ces données capturées pour classer l'utilisateur et servir la publicité sur mesure en fonction de la catégorie de l'utilisateur. De manière probabiliste, cette approche dépend intrinsèquement de la recherche de "pics" spécifiques dans une distribution de requête des utilisateurs, puis de l'utilisation de ces pics pour trouver les catégories de consommateurs les plus probables pour l'utilisateur. L'injection d'un grand nombre d'appels non corrélés (ou meilleurs, anti-corrélés) peut entraver l'approche maximale de la vraisemblance utilisée pour classer l'utilisateur car il ajoute de nombreux pics supplémentaires tout au long de la distribution mesurée des intérêts des utilisateurs.
En outre, la bande passante de transmission de l'annonceur est très limitée - seulement tant de publicités tiendront sur une page Web. L'ajout d'appels de bruit non corrélés complique le problème de la sélection de l'annonce appropriée.
Les excellents articles de Kaveh Waddell et Jon Brodkin sur la vie privée des FAI dans l'Atlantique et l'ARS Technica abordent des critiques importantes de cette approche. Ceux-ci sont résumés ici avec une réponse à la fois afin que les utilisateurs soient conscients de ces problèmes et pour inciter les suggestions à les résoudre.
«Le masquage de l'histoire de la navigation d'une personne en superposant des copies des modèles de navigation d'autres personnes pourrait être plus utile.…« Ce serait un système de Tor où l'anonymat passe par une utilisation partagée. »» [Bruce Schneier]
«[Ne sous-estimez pas] la capacité des fournisseurs d'Internet… à voir à travers des tactiques de données-obstruction.» [Bruce Schneier]
"Les recherches sur Google aléatoires pourraient envoyer le programme dans un trou de lapin sombre, à l'insu de l'utilisateur." [Kenn White]
safe=active est ajouté aux requêtes de recherche. - Commentaire 2: Le trafic de l'extérieur TOR contient presque certainement un tel trafic, ce qui est un problème important pour les opérateurs de nœuds de sortie. En revanche, le bruit auto-généré est susceptible d'être - et en pratique semble être - un peu plus sûr.«Certaines informations sont sensibles même si elles sont entourées de bruit.… Imaginez que si les pirates ciblaient votre FAI, votre histoire de navigation a été divulguée, et cela vous a montré en visitant des sites Web controversés spécifiques.… Même si cela était entouré de bruit, il serait très difficile d'obtenir le genre de bruit qui vous donnerait une dénigabilité plausible.» [Jeremy Gillula]
Analyse d'autres approches d'obfuscations de données montrent la sensibilité aux attaques de classifère d'apprentissage automatique standard: Pedinti et Saxena ont démontré une classification significative des utilisateurs avec le plugin de navigateur de piste destiné à vaincre un moteur de recherche adversarial ("sur la confidentialité de la recherche Web basée sur l'obfuscation de requête: une étude de cas de trackmenot", dans Proc. Pets2010 , 2010). Le modèle contradictoire et les méthodes de formation utilisés dans cette analyse ne sont pas directement applicables au cas des intermédiaires ISP. Les caractéristiques clés de l'attaque de Pedinti et Saxena sont:
Aucune de ces caractéristiques d'attaque n'est nécessairement applicable à un modèle adversaire du FAI. Il est possible qu'un FAI puisse utiliser des données utilisateur historiques non polluées pour former un classificateur, cependant, cela suppose que les intérêts, les chiffres et les identités des utilisateurs dans une adresse IP de compte ne changent pas de mois en mois, un événement improbable pour la plupart des utilisateurs et des ménages. Sans données utilisateur non corrompues sur lesquelles se former, cet article illustre les difficultés de désanonymisation tierce même avec des quantités limitées de bruit. Il serait utile de quantifier les performances de classification avec et sans la possibilité de s'entraîner avec des données utilisateur non corrompues. Connaître la réponse des deux cas indiquerait des améliorations potentielles de l'approche d'obscurcissement.
La pollution des données est une composante de la privatisation de vos données personnelles. Installez les HTTPS de l'EFF partout et Badger de confidentialité sur tous les navigateurs. Voir également les repos OSXFORSTS et OSX-OpenVPN-Server pour bloquer la publicité, les trackers et les logiciels malveillants sur les appareils.
L'utilisation d'un proxy privatisant pour mettre en commun votre propre trafic personnel avec le trafic de pollution des données ajoute une autre couche d'obscurcissement avec le contrôle du trafic d'en-tête. Les en-têtes HTTP du trafic pollué apparaissent comme:
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
Après un certain temps, le rampage aléatoire ressemble à ceci:
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
La capture d'écran d'une page Web rampée au hasard ressemble à ceci. Notez qu'il n'y a pas d'images téléchargées.
driver.get_screenshot_as_file('his_all_time_greatest_hits.png') :

Selon votre installation Python (v. 3), les dépendances du module sont numpy , requests , selenium et fake_useragent , ainsi que chromedriver . La façon dont vous les installez dépend de votre système d'exploitation.
Cela implique de choisir un gestionnaire de packages Python (v. 3), généralement pip ou Anaconda .
J'aime pip , donc sur mes machines, je dirais:
sudo pip-3.7 install numpy requests selenium fake_useragent OpenSSL
Il est recommandé d'installer le binaire chromedriver directement à partir de [Chromedriver.Chromium.org] (http://chromedriver.chromium.org/downloads. Assurez-vous de vérifier l'ETAG de l'installation téléchargée.
La commande Macports Install est:
sudo port install chromedriver py37-numpy py37-requests py37-psutil py37-openssl psutil
C'est ce qui était également nécessaire sur les 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 est une autre bonne option.
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
Si vous êtes derrière un pare-feu, utilisez sudo -EH pour hériter des paramètres d'environnement http_proxy .
chromedriver nécessite des logiciels graphiques, virtuels ou autres, donc sur un ordinateur sans tête, vous aurez besoin du package système suivant et du package local.
Si vous n'utilisez pas VirtualEnv (ci-dessous), exécutez PIP en tant que sudo.
sudo apt-get install xvfb
pip install pyvirtualdisplay
Afin d'isoler les fichiers de bibliothèque PIP, VirtualEnv est pratique. Si vous préférez cette méthode, vous pouvez suivre les étapes ci-dessous:
pushd ~/.virtualenvs/ && virtualenv -p python3 isp-pollute && popd
workon isp-pollute
pip install numpy requests selenium fake_useragent psutil
sudo apt-get install chromedriver