議会の党線投票により、ISPはあなたの同意なしにあなたの家族の個人データを悪用することができます。 「上院はあなたのプライバシーよりもISPの利益を置く」を参照してください。
このスクリプトは、ISPデータを汚染し、実際のブラウジングデータを難読化することで効果的に役に立たない、大量の現実的でランダムなWebブラウジングを生成することにより、この違反を打ち負かすように設計されています。
私は毎月データの使用にISPに多額の支払いをしています。私は通常、私が支払うすべての帯域幅を使用しません。私のISPがプライベートブラウジングの習慣を販売する場合は、ノイズで閲覧を汚染し、支払うすべての帯域幅を使用します。この方法はこれを達成します。
誰もが閲覧履歴を汚染するために支払ったすべてのデータを使用している場合、おそらくISPは顧客のプライベートブラウジング履歴を販売するビジネスモデルを再考するでしょう。
VPNまたはTORを使用する代替手段は、問題をVPNプロバイダーの選択に押し進め、ネットワーキングを複雑にし、TOR Exitノードとして表示されるときにCaptChasをナビゲートするという実際の問題を追加します。また、暗号化されたトラフィックには、搾取可能なサイドチャネル情報が多すぎるだけでなく、特定の家族が自宅にいる時期、およびそれらが従事する活動を決定するために使用できます。
このクローラーは、Python Seleniumライブラリを使用してChromedriverを使用し、望ましくないWebサイトにブラックリストを使用し(詳細についてはコードを参照)、画像をダウンロードせず、すべてが優れたセキュリティを提供するrobots.txtを尊重します。
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
このスクリプトで使用されているアプローチは、統計的攻撃とトラフィックアノマリーの両方に影響を受けやすくなります。ジョンブロドキンのプライバシーに関するノイズインジェクションに関する記事は、いくつかの有効な批評をカバーしています。このアプローチは、敏感な個人情報を難読化することは保証されていません。既知の欠陥と改善の提案は、問題ページで歓迎されています。
ただし、このようなアプローチが多くの実際的な状況で機能する可能性があることを示唆する優れた情報理論的および確率的理由があります。難読化によるプライバシーは、多くのコンテキストで使用されています。データ科学では、ルービンは、合成データ(「統計的開示制限」、 Jos 9 (2):461–468、1993)で個人データをマスキングすることにより、被験者の機密性を維持するための統計的に健全な方法を提案しました。このレポに関連する素敵な論文では、Ye et al。ノイズインジェクションを使用するクライアント側側のプライバシーモデル(「検索プライバシー保護のためのノイズインジェクション」、 Proc。2009Intl。Conf。CSE )を説明してください。
ISPプライバシー侵入の場合のこのアプローチの有効性に関する2つのエンベロープの議論を次に示します。これらは証拠ではありませんが、楽観主義が正当化されることを示唆する単純なモデルです。実際の有効性は、実世界でこれらのモデルをテストすることにより決定する必要があります。
Ye et al。のアプローチは、ユーザーデータとユーザーデータの間の相互情報を最小化しようとします。相互情報は、ユーザーデータのエントロピーと、注入されたノイズを使用したユーザーデータのエントロピーとの間の重複です(下の紫色の領域)。注入ノイズの量と分布は、この相互情報を可能な限り小さくするために選択されているため、サーバー側のユーザーデータを悪用することが困難になります。
Ye et al。の論文の例は、特定の検索クエリです。このリポジトリの類推は特定のドメインです。ドメイン情報は、暗号化されたHTTPSが使用される場合、ISPにリークされる主要なデータであり、したがって関連性があります。明示的なクエリの用語とコンテンツを備えた暗号化されていないトラフィックのケースについては、次のセクションで最尤について説明します。
Ye et al。次の場合、相互情報が消えることを示します。
ノイズコール数≥(ユーザーコール数-1)×可能な呼び出しの数
このアプリケーションの場合、可能な呼び出しの数は、ユーザーが訪問する可能性のあるドメインの数(1日あたり)であり、通話の数は行われた訪問数です。 Nielsonは2010年に、平均的な人が月に89のドメインを訪れると報告しました。このブラウジングデータを不明瞭にするために必要なノイズコールの数を推定する(オーバー)非常に保守的であるために、平均的なユーザーが1日あたりO (100)ドメインを訪問し、1日あたりのユーザー要求、または長い日に約5分ごとに1日に訪問すると仮定します。
上記の方程式は、ユーザーデータとユーザーとノイズデータの間で相互情報がゼロに達するには、(200-1)×100または約2万(20,000)のノイズコールが必要であると主張しています。
これは、約5秒ごとに1回のノイズコールに相当します。これは実際には非常に簡単に達成でき、1か月あたり50 GBという名目帯域幅の制限に簡単に該当します。
Ye et al。のクライアント側の情報理論モデルが実際に有効である場合、このスクリプトで選択されたパラメーターが、実際のユーザードメインデータとISPに提示されたドメインデータ間の相互情報を大幅に削減または排除できることを期待することは合理的です。
さらに、ユーザーとノイズ分布の間に依存関係モデルが導入されている場合、ノイズコールを使用する可能性があります。
暗号化されていないHTTPは、ISPに非常に固有のユーザーデータを漏らします。ターゲットを絞った広告方法では、このキャプチャされたデータを使用してユーザーを分類し、ユーザーのカテゴリに基づいてテーラード広告を提供します。確率的には、このアプローチは、ユーザーのクエリ分布で特定の「ピーク」を見つけることに本質的に依存し、これらのピークを使用してユーザーの最も可能性の高い消費者カテゴリを見つけることに依存します。多数の無相関(またはより良い、反相関)コールを注入すると、ユーザーの関心の測定された分布全体にさらに多くのピークを追加するため、ユーザーを分類するために使用される最大尤度アプローチが妨げられる可能性があります。
さらに、広告主の送信帯域幅は非常に制約されています。そのため、多くの広告がWebページに適合します。相関していないノイズコールを追加すると、適切な広告を選択する問題が複雑になります。
Kaveh WaddellとJon BrodkinのAtlanticとArs TechnicaのISPプライバシーに関する優れた記事の両方で、このアプローチの重要な批判に取り組んでいます。これらは、ユーザーがこれらの問題を認識し、それらに対処するための提案を促すことの両方とともに、応答とともにここで要約されています。
「他の人のブラウジングパターンのコピーを重ねて人のブラウジングの履歴をマスキングする方が便利かもしれません。…「それは匿名性が共有された使用法を通してもたらされるTORのようなシステムでしょう。」 [Bruce Schneier]」
「[過小評価しないでください]インターネットプロバイダーの能力…データ観測戦術を確認する。」 [ブルース・シュナイヤー]
「ランダムなGoogle検索では、ユーザーの知識がなくても、プログラムを暗いウサギの穴に送る可能性があります。」 [ケン・ホワイト]
safe=active検索クエリに追加されます。 - コメント2:TOR EXITノードトラフィックには、ほぼ間違いなくそのようなトラフィックが含まれています。これは、出口ノードオペレーターにとって重要な問題です。対照的に、自己生成ノイズは、より安全である可能性が高く、実際にはそうであるように見えます。「ノイズに囲まれていても、いくつかの情報は敏感です。…ハッカーがISPを標的にした場合、閲覧履歴が漏れていると想像してください。特定の物議を醸すWebサイトを訪問したことを示しました。 [ジェレミー・ギルラ]
他のデータの分析難読化アプローチは、既製の機械学習分類攻撃に対する感受性を示しています:PedintiとSaxenaは、敵対的な検索エンジンを打ち負かすことを目的としたTrackMenotブラウザープラグインを使用して意味のあるユーザー分類を実証しました(「クエリ障害に基づくWeb検索のプライバシーについて:TrackMenotのケーススタディ)。この分析で使用される敵対モデルとトレーニング方法は、ISP仲介者の場合に直接適用できません。 PedintiとSaxenaの攻撃の主な機能は次のとおりです。
これらの攻撃機能のいずれも、ISP敵対モデルに必ずしも適用できません。 ISPは、履歴のない未使用のユーザーデータを使用して分類器をトレーニングできる可能性がありますが、これはアカウントIPアドレスでのユーザーの関心、数字、およびアイデンティティが月ごとに変更されず、ほとんどのユーザーや世帯にとってありそうもないイベントではないと推測します。腐敗していないユーザーデータをトレーニングすることなく、このペーパーでは、ノイズが限られている場合でも、サードパーティの匿名化の難しさを示しています。腐敗していないユーザーデータでトレーニングする能力のある場合と使用して、分類パフォーマンスを定量化することは便利です。両方のケースの答えを知ることは、難読化アプローチの潜在的な改善を示しています。
データ汚染は、個人データを民営化するための要素の1つです。すべてのブラウザにEFFのHTTPSとプライバシーアナグマをどこにでもインストールします。また、デバイス全体の広告、トラッカー、マルウェアをブロックするために、OSXFortressとOSX-Openvpn-Serverのレポスを参照してください。
民営化プロキシを使用して、データ汚染トラフィックであなた自身の個人トラフィックをプールすると、ヘッダートラフィックコントロールを使用して難読化の別の層が追加されます。汚染されたトラフィックからのHTTPヘッダーが次のように表示されます。
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
しばらくして、ランダムなクロールが次のようになります:
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
ランダムにクロールされたWebページのスクリーンショットは、このように見えます。ダウンロードされた画像はないことに注意してください。
driver.get_screenshot_as_file('his_all_time_greatest_hits.png') :

Python(v。3)のインストールに応じて、モジュールの依存関係はnumpy 、 requests 、 selenium 、 fake_useragent 、およびchromedriverです。これらのインストール方法は、OSによって異なります。
これには、Python(v。3)パッケージマネージャー、通常はpipまたはAnaconda選択が含まれます。
私はpipが好きなので、私のマシンで私は言うでしょう:
sudo pip-3.7 install numpy requests selenium fake_useragent OpenSSL
chromedriverバイナリは[Chromedriver.chromium.org](http://chromedriver.chromium.org/downloadsから直接インストールすることをお勧めします。ダウンロードされたインストールのETAGを確認してください。
MacPortsインストールコマンドは次のとおりです。
sudo port install chromedriver py37-numpy py37-requests py37-psutil py37-openssl psutil
これが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はもう1つの良い選択肢です。
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
ファイアウォールの後ろにいる場合は、 sudo -EHを使用してhttp_proxy環境設定を継承します。
chromedriverには、仮想またはその他のグラフィカルソフトウェアが必要なため、ヘッドレスコンピューターでは、次のシステムパッケージとローカルパッケージが必要です。
virtualenv(下)を使用していない場合は、pipをsudoとして実行します。
sudo apt-get install xvfb
pip install pyvirtualdisplay
PIPライブラリファイルを分離するために、Virtualenvは便利です。この方法を好む場合は、以下の手順に従うことができます。
pushd ~/.virtualenvs/ && virtualenv -p python3 isp-pollute && popd
workon isp-pollute
pip install numpy requests selenium fake_useragent psutil
sudo apt-get install chromedriver