Die Parteilinie des Kongresses ermöglicht es ISPs, die privaten Daten Ihrer Familie ohne Ihre Zustimmung auszunutzen. Siehe " Senat setzt ISP -Gewinne über Ihre Privatsphäre ".
Dieses Skript soll diesen Verstoß besiegen, indem große Mengen realistischer, zufälliger Web -Browsen generiert werden, um die ISP -Daten zu verschmutzen und sie effektiv nutzlos zu machen, indem tatsächliche Browserdaten verschleiert werden.
Ich zahle meinem ISP jeden Monat viel für die Datennutzung. Ich benutze normalerweise nicht die Bandbreite, für die ich bezahle. Wenn mein ISP private Browsing -Gewohnheiten verkaufen will, werde ich mit Geräuschen das Browsen verschmutzen und die gesamte Bandbreite verwenden, für die ich bezahle. Diese Methode erreicht dies.
Wenn jeder alle Daten verwendet, für die er bezahlt hat, um seine Browserhistorie zu verschmutzen, werden ISPs vielleicht das Geschäftsmodell des Verkaufs des privaten Browserhistoriums des Kunden überdenken.
Die Alternative zur Verwendung eines VPN oder TOR drückt das Problem lediglich auf die Wahl des VPN -Anbieters, kompliziert die Vernetzung und fügt das eigentliche Problem des Navigierens von Captchas hinzu, wenn er als TOR -Exit -Knoten angezeigt wird. Der lediglich verschlüsselte Verkehr hat auch zu viel ausnutzbare Nebenkanalinformationen und kann weiterhin verwendet werden, um zu bestimmen, wann bestimmte Familienmitglieder zu Hause sind und welche Aktivitäten, mit denen sie engagiert sind.
Dieser Crawler verwendet Chromedriver mit der Python Selenium Library, verwendet Blacklists für unerwünschte Websites (siehe Code für Details), lädt keine Bilder herunter und respektiert Robots.txt, die alle eine gute Sicherheit bieten.
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
Der in diesem Skript verwendete Ansatz ist sowohl für statistische Angriffe als auch für Verkehrsanomalien anfällig. Jon Brodkins Artikel über Privatsphäre durch Rauscheinspritzung deckt mehrere gültige Kritikpunkte ab: Der Ansatz kann nicht garantiert sensible private Informationen verschleiern, und selbst wenn er ursprünglich funktioniert, kann dies möglicherweise nicht skaliert werden. Bekannte Fehler und Verbesserungsvorschläge werden auf den Themenseiten begrüßt.
Es gibt jedoch gute Informationen theoretischer und probabilistischer Gründe, einen solchen Ansatz in vielen praktischen Situationen vorzuschlagen. Die Privatsphäre durch Verschleierung wurde in vielen Kontexten verwendet. In den Datenwissenschaften schlug Rubin eine statistisch fundierte Methode vor, um die Vertraulichkeit der Subjekte zu bewahren, indem private Daten mit synthetischen Daten maskiert wurden ("statistische Offenlegungsbeschränkung", JOS 9 (2): 461–468, 1993). In einem schönen Papier, das für dieses Repo relevant ist, haben Ye et al. Beschreiben Sie ein kundensseitiges Datenschutzmodell, das Rauschinjektion verwendet ("Rauschinjektion für den Schutz des Datenschutzes durch den Suchschutz", Proc. 2009 Intl. Conf. CSE ).
Hier sind zwei Argumente des Umschlags für die Wirksamkeit dieses Ansatzes im Fall des Eindringens der Privatsphäre von ISP. Dies sind keine Beweise, aber einfache Modelle, die auf einen gewissen Optimismus hinweisen, sind gerechtfertigt. Die tatsächliche Wirksamkeit muss durch Testen dieser Modelle in der realen Welt bestimmt werden.
Der Ansatz von Ye et al. Gegenseitige Informationen sind die Überlappung zwischen der Entropie der Benutzerdaten und der Entropie der Benutzerdaten mit injiziertem Rauschen (lila Bereich unten). Die Menge und Verteilung von injiziertem Rauschen wird ausgewählt, um diese gegenseitigen Informationen so klein wie möglich zu gestalten, wodurch es schwierig ist, Benutzerdaten auf der Serverseite auszunutzen.
Das Beispiel in Ye et al. Papier ist spezifische Suchanfragen. Die Analogie in diesem Repo sind spezifische Domänen. Domäneninformationen sind die primären Daten, die an ISPs weitergegeben sind, wenn verschlüsseltes HTTPS verwendet wird und daher relevant ist. Der Fall eines unverschlüsselten Verkehrs mit expliziten Abfragebedingungen und -inhalten wird im nächsten Abschnitt über die maximale Wahrscheinlichkeit erörtert.
Ye et al. Zeigen Sie, dass die gegenseitigen Informationen verschwinden, wenn:
Anzahl der Rauschaufrufe ≥ (Anzahl der Benutzeraufrufe - 1) × Anzahl möglicher Anrufe
Für diese Anwendung ist die Anzahl der möglichen Anrufe die Anzahl der Domänen, die ein Benutzer (pro Tag) besuchen könnte, und die Anzahl der Anrufe ist die Anzahl der getätigten Besuche. Nielson berichtete 2010, dass die durchschnittliche Person 89 Domänen pro Monat besucht. Um in (Over) äußerst konservativ zu sein, schätzt die Anzahl der Geräuschaufrufe, die zur Verdeckung dieser Browserdaten erforderlich sind, an, dass der durchschnittliche Benutzer O (100) -Domänen pro Tag mit O (200) Benutzeranfragen pro Tag oder etwa alle fünf Minuten über einen langen Tag.
In der obigen Gleichung wird behauptet, dass (200-1) × 100 oder etwa zwanzigtausend (20.000) Rauschaufrufe erforderlich sind, um keine gegenseitigen Informationen zwischen Benutzerdaten und den Benutzer plus Rauschdaten zu erzielen.
Dies entspricht einem Geräuschaufruf etwa alle fünf Sekunden, was in der Praxis sehr leicht zu erreichen ist und leicht innerhalb einer nominalen Bandbreitengrenze von 50 GB pro Monat fällt.
Wenn Ye et al. In der Praxis gültig ist, ist es vernünftig zu erwarten, dass die in diesem Skript ausgewählten Parameter die gegenseitigen Informationen zwischen den tatsächlichen Benutzerdomänendaten und den dem ISP dargestellten Domänendaten erheblich reduzieren oder beseitigen können.
Darüber hinaus können weniger Rauschaufrufe verwendet werden, wenn ein Abhängigkeitsmodell zwischen Benutzer- und Rauschverteilungen eingeführt wird.
Unbekundetes HTTP -Aufruf löst hochspezifische Benutzerdaten an den ISP. Ziehte Werbemethoden verwenden diese erfassten Daten, um den Benutzer zu klassifizieren und maßgeschneiderte Werbung basierend auf der Kategorie des Benutzers zu servieren. Wahrscheinlich hängt dieser Ansatz von Natur aus davon ab, bestimmte "Peaks" in einer Abfrageverteilung der Benutzer zu finden und diese Peaks zu verwenden, um die wahrscheinlichsten Verbraucherkategorien für den Benutzer zu finden. Eine große Anzahl unkorrelierter (oder besserer, anti-korrelierter) Anrufe kann den Maximum-Likelihood-Ansatz behindern, der verwendet wird, um den Benutzer zu klassifizieren, da er in der gemessenen Verteilung der Benutzerinteressen viele weitere Peaks hinzufügt.
Darüber hinaus ist die Übertragungsbandbreite des Werbetreibenden sehr eingeschränkt - nur so viele Anzeigen passen auf eine Webseite. Durch Hinzufügen unkorrelierter Rauschaufrufe wird das Problem der Auswahl der entsprechenden Anzeige kompliziert.
Sowohl Kaveh Waddells als auch Jon Brodkins hervorragende Artikel über die Privatsphäre der ISP in Atlantic und ARS Technica sprechen wichtige Kritik an diesem Ansatz an. Diese werden hier zusammen mit einer Antwort zusammengefasst, damit die Benutzer diese Probleme kennen und Vorschläge auffordern, sie anzugehen.
"Das Durchsuchen einer Person durch die Browsergeschichte durch die Durchführung von Kopien der Browsermuster anderer Menschen ist möglicherweise nützlicher. ..." Es wäre ein torartiges System, bei dem Anonymität durch gemeinsame Nutzung erfolgt " [Bruce Schneier]
"[Nicht unterschätzen] Die Fähigkeit der Internetanbieter, die Daten-Obfuskations-Taktik durchzusehen." [Bruce Schneier]
"Zufällige Google -Suche könnte das Programm ohne Wissen des Benutzers ein dunkles Kaninchenloch schicken." [Kenn White]
safe=active zu Suchabfragen hinzugefügt. -Kommentar 2: Der Traffic-Knoten-Traffic von TOR enthält mit ziemlicher Sicherheit einen solchen Datenverkehr, was ein wichtiges Problem für Operatoren von Exit-Knoten ist. Im Gegensatz dazu ist es wahrscheinlich, dass selbst erzeugte Rauschen-und in der Praxis zu sein scheint-viel sicherer."Einige Informationen sind sensibel, auch wenn sie von Lärm umgeben sind. Stellen Sie sich vor, Hacker haben Ihren ISP abzielen, Ihre Browserhistorie wurde durchgesickert, und es zeigte, dass Sie spezifische kontroverse Websites besuchen. Auch wenn dies von Lärm umgeben wäre, wäre es sehr schwierig, die Art von Geräuschen zu erhalten, die Ihnen plausible Denabilität geben würden." [Jeremy Gillula]
Die Analyse anderer Datenverzögerungsansätze zeigen Anfälligkeit für Off-the-Shelf-Angriffe für maschinelles Lernen: Pedinti und Saxena zeigten eine sinnvolle Benutzerklassifizierung mit dem TrackMenot-Browser-Plugin, um eine kontroverse Suchmaschine zu besiegen ("Über die Privatsphäre der Websuche basierend auf der Abfrageverzerrung . Die in dieser Analyse verwendeten kontroversen Modell- und Trainingsmethoden sind nicht direkt für den Fall von ISP -Vermittlern anwendbar. Die wichtigsten Merkmale des Angriffs von Pedinti und Saxena sind:
Keines dieser Angriffsmerkmale ist notwendigerweise für ein isp -kontroverse Modell anwendbar. Es ist möglich, dass ein ISP historische nicht verschmutzte Benutzerdaten verwenden kann, um einen Klassifikator zu schulen. Dies geht jedoch davon aus, dass die Interessen, Zahlen und Identitäten der Benutzer an einer Konto-IP-Adresse von Monat zu Monat nicht ändern, ein unwahrscheinliches Ereignis für die meisten Benutzer und Haushalte. Ohne nicht festgelegte Benutzerdaten, die zu trainieren sind, zeigt dieses Papier die Schwierigkeiten der De-Anonymisierung von Drittanbietern auch mit begrenzten Geräuschmengen. Es wäre nützlich, die Klassifizierungsleistung mit und ohne die Fähigkeit zu quantifizieren, mit nicht behinderten Benutzerdaten zu trainieren. Wenn Sie die Antwort für beide Fälle kennen, würde dies auf mögliche Verbesserungen des Verschleierungserscheinungsansatzes hinweisen.
Die Datenverschmutzung ist ein Bestandteil der Privatisierung Ihrer persönlichen Daten. Installieren Sie die HTTPS des EFF überall und den Privatsphäre in allen Browsern. Sehen Sie auch die Repos OSXFortress und OSX-OpenVPN-Server, um Werbung, Tracker und Malware auf Geräten zu blockieren.
Die Verwendung eines privatisierenden Proxy, um Ihren eigenen persönlichen Datenverkehr mit dem Datenverschmutzungsverkehr zu bündeln, fügt eine weitere Schicht der Verschleierung mit Header -Verkehrskontrolle hinzu. HTTP -Header aus dem verschmutzten Verkehr erscheinen als:
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
Nach einer Weile des zufälligen Krabbelns sieht folgender aus:
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
Der Screenshot einer zufällig krocheten Webseite sieht so aus. Beachten Sie, dass es keine heruntergeladenen Bilder gibt.
driver.get_screenshot_as_file('his_all_time_greatest_hits.png') :

Abhängig von Ihrer Installation von Python (Vers 3) sind die Modulabhängigkeiten numpy , requests , selenium und fake_useragent sowie chromedriver . Wie Sie diese installieren, hängt von Ihrem Betriebssystem ab.
Dies beinhaltet die Auswahl eines Python -Paketmanagers (v. 3), normalerweise pip oder Anaconda .
Ich mag pip , also würde ich auf meinen Maschinen sagen:
sudo pip-3.7 install numpy requests selenium fake_useragent OpenSSL
Es wird empfohlen, die chromedriver -Binärin direkt von [chromedriver.chromium.org] (http://chromedriver.chromium.org/downloads zu) installiert. Stellen Sie sicher, dass Sie den ETAG der heruntergeladenen Installation überprüfen.
Der Befehl macports install ist:
sudo port install chromedriver py37-numpy py37-requests py37-psutil py37-openssl psutil
Dies war auch für macOS notwendig:
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 ist eine weitere gute 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
Wenn Sie hinter einer Firewall stehen, verwenden Sie sudo -EH um die Umgebungseinstellungen http_proxy zu erben.
chromedriver benötigt eine grafische Software, virtuell oder auf andere Weise. Auf einem kopflosen Computer benötigen Sie das folgende Systempaket und das lokale Paket.
Wenn Sie Virtualenv (unten) nicht verwenden, führen Sie PIP als sudo aus.
sudo apt-get install xvfb
pip install pyvirtualdisplay
Um PIP -Bibliotheksdateien zu isolieren, ist Virtualenv bequem. Wenn Sie diese Methode bevorzugen, können Sie die folgenden Schritte ausführen:
pushd ~/.virtualenvs/ && virtualenv -p python3 isp-pollute && popd
workon isp-pollute
pip install numpy requests selenium fake_useragent psutil
sudo apt-get install chromedriver