web-dev-qa-db-ja.com

ブラウザのフィンガープリントと戦う方法は?

https://panopticlick.eff.org/ 、別名「あなたのブラウザはどれほどユニークで追跡可能か」。例えば、それは通常私にユニークなスコアを与えます。最大のエントロピー値は、navigator.pluginsとフォントからJavaおよびflashを介して取得されますが、 リンクされたpdf は、これらの一般的なプラグインを無効にすると実際に一意性が高まることを示しています、ユーザーエージェントを変更するだけでなく、cssイントロスペクションを介してフォントを検出することもできます。

ブラウザのフィンガープリントを対策するために、どのような手順を実行できますか?

71
n611x007

EFFが使用するフィンガープリント技術は、Webサイトが適切に動作するために使用する「通常の」JavaScript関数に他なりません。正しくない情報を外部に報告することは可能ですが、その場合、「遅れる」というリスクがあります。

  • 送信する必要がある誤った情報changesと一緒に送信しないため、一意であり、疑わしいものになります。
  • 検出手法が変化し、気づかないため、再びユニークになる。

または本当に厄介なナビゲーションを持っています。

Tor、VPN、またはオープンシェルをどこでも使用してIPアドレスをトンネリングできると仮定すると、私の意見で「最も安全な」方法は、仮想マシンを起動し、そこにWindows 7をインストールし、それを任意のマシンに使用することです。プライバシーに配慮した操作。マシンに異常なものをインストールしないでください。そうすることで、類似のマシンの群れの1つである純正のWindows 7マシンであることが間違いなく報告されます。

また、本当のシステム内で絶縁されているマシンの利点があり、フラッシュでスナップショット/再インストールできる。あなたがたまにできること-以前にすべてのナビゲーションを行った「あなた」disappearsと、新鮮な「あなた」がきれいな履歴とともに表示されます。

これは、「きれいな」スナップショットを保持し、ホームバンキングなどの機密性の高い操作の前に常に復元できるという点で、非常に便利です。一部のVMは「サンドボックス化」も許可します。つまり、VMで行われた処理は何も行われず、実際にはコンテンツが永続的に変更されます。パワーダウン。

その他の手法はそれほど煩わしくなく、ブラウザや、ヘッダーをサニタイズするだけでなく、ある種の匿名化プロキシでもかなりの作業が必要になります。 そしてあなたのJavascript応答(そしてフォントも!)しかし、信じられない方法でそれを行うには

私の意見では、作業の総量が同じ(またはそれ以上)であるだけでなく、はるかに複雑で安定性の低い種類の作業になるでしょう。

最も一般的なOSをインストールし、バンドルされているブラウザーとソフトウェアを使い続け、それをひっくり返す誘惑に抵抗し、そのマシンに文字通り数十万インストールされたばかりで維持されていない類似のコンピュータはインターネット上の私のものではないマシンですか?

更新-ブラウズ動作およびサイドチャネル

今、私は仮想Windows 7マシンをインストールしました。JoeQ. Averageが行うように、Windows 10にアップグレードしました。私はTorやVPNを使用していません。外部サイトから見えるのは、私がイタリアのフィレンツェから接続しているということだけです。私とまったく同じように3万の接続があります。私のプロバイダーを知っていても、それでも約9000人の候補者が残っています。これは十分に匿名ですか?

そうではないことがわかりました。十分なアクセス権があり、調査可能な相関がまだ存在する可能性があります。たとえば、私はオンラインゲームをプレイしていて、タイピングがすぐに送信されます(文字はバッファリングされ、ラインバッファリングされません)。 指紋のダイグラムとトライグラムの遅延 が可能になり、コーパスが十分に大きい場合は、オンラインユーザーAがオンラインユーザーBと同じ人物であることを確認します(もちろん、同じオンラインゲーム内で)。同じ問題が他の場所でも発生する可能性があります。

私はインターネットをサーフィンするとき、いつも同じサイトに同じ順序でアクセスする傾向があります。そしてもちろん、私はいくつかのサイトで自分の「個人ページ」をヒットしました。定期的にスタックオーバーフロー。画像のカスタムディストリビューションが既にブラウザにあり、まったくダウンロードされないか、HTTP If-Modified-SinceまたはIf-None-Matchリクエストでバイパスされます。この習慣とブラウザの有用性の組み合わせ 署名も構成します

Webサイトで利用できるタグ付け方法は豊富にあるため、Cookieとパッシブデータのみが収集されたと想定するのは安全ではありません。たとえば、サイトがTracking-ff0a7a.otfと呼ばれるフォントをインストールする必要があることを宣伝すると、ブラウザはフォントを忠実にダウンロードします。このファイルは、キャッシュのクリア時に必ずしも削除されるとは限りません。その後のアクセスで、ファイルが再ダウンロードされないことは、私がすでにサイトにアクセスしたことの証拠になります。フォントはすべてのユーザーで同じにすることはできませんが、グリフの一意の組み合わせを含めることができます(たとえば、文字「1」には「d」を含めることができ、「2」には「e」を含めることができ、「4」には「d」を含めることができます"再び-またはこれはめったに使用されないフォントコードポイントで実行できます)、およびHTML5を使用して、非表示のキャンバスにグリフ文字列" 12345678 "を描画し、 結果を画像としてアップロードする を使用できます。この画像は、私に固有の「デッドビーフ」という16進数シーケンスを綴ります。そしてこれは、すべての意図と目的にとって、Cookieです。

これと戦うために、私は次のことをする必要があるかもしれません:

  • 各ブラウジングセッション後にVMを完全に再スナップショットします(実行するときにモデムをリセットします)。常に同じVMを維持するだけでは十分ではありません。
  • いくつかの異なる仮想マシン、またはブラウザー、およびよく知られたプロキシサービスまたはTorを使用する(匿名目的で、自分に固有の、または私が唯一のフィレンツェユーザーであるプロキシを使用することは私にはできません) )。
  • ブラウザのキャッシュを定期的に空にするかサニタイズし、常にnotを開くことを忘れないでください。たとえば、 [〜#〜] xkcd [〜#〜] の直後 Questionable内容
  • 匿名性を必要とするサービスと気にしないサービスに2つ以上の異なる「ペルソナ」を採用し、それらを別々のVMに分離するように注意してください-1つのスリップだけで、もう1つであると信じてログに記録します、常識的な十分な外部機関によって永続的なリンクが確立される可能性があるため。

オーディオ指紋

これは非常に 独創的な方法 システムを「フィンガープリント」する方法であり、基本的にoffオーディオシステムをオンにしてから、HTML5を介してサウンドを仮想的に再生して分析します。結果は、ブラウザではなくハードウェアに関連付けられている、基になるオーディオシステムによって異なります。もちろん、ランダムノイズを注入することでこれに対抗する方法があります プラグインを使用 ですが、このようなプラグインを使用しているのはあなただけなので、この行為は邪魔になるかもしれません(したがって、 「平均的な」構成に一致するプールの中でノイズの多いオーディオチャネルを持っている)。

私が機能していることがわかったより良い方法ですが、これを実験して自分で確認する必要があるのは、2つの異なるVMエンジンまたは構成を使用することです。たとえば、4 GBと8 GBのRAMと2つの異なるICH7 AC97オーディオ設定を使用する2つの異なるVMの同じDell Precision M6800に 2つの異なるフィンガープリント があります(追加のRAMが利用可能になると、ドライバーはさまざまなサンプリング戦略を採用し、その結果、わずかに異なるフィンガープリントが生成されます。私はVMwareを使用して3番目のVMをセットアップできると思います。サウンドを無効にして4番目のセットアップを行うこともできます。

私が行うことではありませんが、私が取得した指紋がdidであるかどうかが、それがVM(すべてのWindows 7 VirtualBoxenにはフルバッファーのハッシュとして50b1f43716da3103fd74137f205420a8c0a845ecがありますか?すべてのM6800を実行しますか?)

上記のすべては、匿名性を求める正当な理由があることを示しています。それを確実に達成することは、後部の王室の痛みになるからです。

35
LSerni

フィンガープリント中に、次のことが行われます。

  1. IPアドレス/サブネット/国/地域
  2. ユーザーエージェント
  3. その他のHTTPヘッダー

これで、IPアドレスとして、次を使用できます。

  • Tor
  • I2P
  • OpenVPNのようなパブリックVPNサービス。他の多くのユーザーも同様で、複数のネットワークにノードを持っています。

ユーザーエージェントの場合:

  • オンライン匿名プロキシ
  • User-Agentといくつかの一般的なヘッダーを設定する独自のプロキシサーバー
  • ヘッダーを変更するブラウザープラグイン
  • リモートの匿名サービスでブラウザーを実行するブラウザープラグイン

ただし、常に何らかの方法でフィンガープリントと識別が行われます。通常は同じサブネットから接続し、同じブラウザを使用するためです。したがって、これら2つを回避することは非常に困難です。無限の数のネットワーク上にVPNサーバーと、User-Agentジェネレーター、および毎日または起動するたびに異なる値を設定するヘッダー難読化が必要になるためです。

私自身、無料のOpenVPNサーバーでAmazon EC2の無料のマイクロインスタンスを使用しており、毎日異なるリージョンで自動停止と自動起動を行っています(AWS APIを介して設定するスクリプトで新しいサーバーを起動します) 、Route 53 APIを介してDNSを更新します。 SQUIDをプロキシとして使用しており、広告、追跡、その他いくつかのことをブロックする多くのルールがあります。これらのVPNサーバーはネットワークで機能しているため、完全なBGPテーブルも含まれていますが、隠蔽を行わない場合は、これは必要ありません。

実際に再起動せずに、EC2インスタンスのIPアドレスを変更することもできます。 AWS APIを使用してElastic IPを解放し、新しいIPを割り当てて追加できます。同時にUser-Agentを変更すると、フィンガープリントを回避できます。

http://aws.Amazon.com/

http://aws.Amazon.com/articles/1346

http://www.squid-cache.org/

例えばこれを見てください:

https://calomel.org/squid_ua_random.html

実際、毎日異なるIP番号とユーザーエージェントを使用している場合、Googleは私を認識できません。そのため、「自分を追跡」していない広告が表示されます。

ps。新しいインスタンスを追加する場合、少なくとも20GBのEBSルートボリュームが必要です。次に、yum install squidまたはapt-get install squid、/ etc /を介して設定すれば、完了です。 IPアドレスを変更する場合は、Elastic IPを変更するだけです。これは、新しいインスタンスにアクセスする方法とインターネットにアクセスする方法の両方で機能します。

そして、あなたはこれだけが必要になります:

http://openvpn.net/

時々インスタンスを更新することを忘れないでくださいyum update

自動で動作するAMIイメージを作成できます。単にインスタンスを起動するだけで、OpenVPNがセットアップされ、AWS APIを介してIP、DNS、SQUIDなどが構成されます。AmazonにはすでにいくつかのAMIがあるかもしれません。

これを見てください:

http://n00dlestheindelible.blogspot.co.uk/2010/05/secure-anonymous-browsing-with-your-own.html

一部のWebサイトでは、VPNを介して作業することに不満があります。たとえば、音楽やビデオを配信するいくつかのサイト。ほとんどのサイトは問題なく動作しますが、例外はほとんどありません。

17
Andrew Smith

ブラウザのフィンガープリントの形式を回避するための技術的な要件は、ブラウザから返される可能性のあるすべての識別特性がランダム化されているため、ブラウザが特定の特性セットを返す確率は、ブラウザの母集団でその特性セットを観察する確率に近いことです。匿名性を維持したい。

これを分解すると、単一の特性(たとえば、User-Agentヘッダー)のみを処理し、匿名性を維持したいとします。説明のために、User-Agentには1から50の番号が付けられた50の可能な値があると仮定します。

1つの可能な戦略は、ブラウザーの人口に従って観察されるように、最も一般的に発生するUser-Agentの値を使用することです。次の図に示すように、特定の状況下では、これは不十分な戦略になる可能性があります。

figure-a

この図によると、ブラウザの母集団で最も一般的に発生するUser-Agent値は、残りの値よりも発生する可能性がほんのわずかだけ高くなります。最も一般的な値(25)を単純に使用した場合、フィンガープリントサービスは(一貫して)母集団のブラウザーの2.4%の(比較的小さい)サブセットに属していると推測できます。したがって、私たちは匿名性を危うくしています。

次の図に示すように、ブラウザの数に関係なく単にランダムに値を生成すると、匿名性が大幅に損なわれる可能性があることに注意してください。

figure-b

図によると、ブラウザから返されるUser-Agentの値は(均一に)ランダム化されています。ただし、値が母集団で発生することはないため、この場合の(適度に洗練された)フィンガープリントサービスは、ブラウザーの種類がまれであることを一貫して推測できます。これは、それ自体が潜在的な識別特性です!したがって、匿名性が損なわれます。

匿名性が維持されることを保証する唯一の戦略は、次の図に示すように、ブラウザーの母集団で観察される値の分布を一致させることです。

figure-c

ブラウザから返されるUser-Agentの値がランダム化され、各値の確率がブラウザの母集団でその値を観察する確率と一致するようにすることで、ブラウザの母集団の特定のサブセットで特定することを約束することはありません。ブラウザでまれに発生するUser-Agentバージョンを使用していないこと。このようにして、匿名性が維持されます。

多くの潜在的な識別ブラウザーの特性が存在する現実のシナリオでは、匿名性を維持するには、各特性の確率が母集団の確率と一致することを特性ごとに個別に確認するだけでは不十分であることに注意してください。 、したがって私たちの匿名性を損なう。これにより、最終的にブラウザが一意に識別可能になる可能性があります。むしろ、ブラウザの母集団におけるブラウザ特性の共同分布、つまり、ブラウザ特性のセットの値を観察する確率に、上記の考慮事項を適用する必要があります。

6
user92403

今日使用されている指紋は、ブラウザの詳細を最大限に活用して、できるだけ多くのエントロピーを生成することに依存しています。キャンバス上での正確な(ハードウェアとドライバーのバージョンに依存する)レンダリングのような、微妙ですが短期間の安定した詳細も利用されます。収集された情報は、すべての詳細に応じて、十分に長いハッシュ値を生成することによって圧縮される可能性があります。すべての詳細を長い文字列に追加するか、詳細に応じて実際に何かをキャンバスに描画し、それにハッシュ関数を適用します。

ただし、情報が圧縮されて完全に格納されていない限り、フィンガープリントは正面攻撃によって防御できます。フィンガープリントをできるだけユニークにしようとする代わりに、できるだけユニークにしようとすることができます。例えば。接続ごとに固有。

これは、依存するWebページでは非常に悪い習慣となる詳細を改ざんすることで簡単に実現できます。

  • バージョン番号の最も重要でない数字
  • 珍しいフォントを隠す
  • プラグイン詳細説明文字列
  • ...

この攻撃を回避するには、指紋がランダムな部分を回避するのに十分あいまいである必要があります。つまり、データ全体をハッシュ化できず、多くの情報を転送して保存する必要があります。

ランダムな部分をマスキングして攻撃を回避することは、Webページも強く依存する詳細のみを使用することを意味し、フィンガープリンティングアルゴリズムの永続的な適応が必要になります。必然的に非ランダムな詳細の量は、標準化によって多少制限されます。ただし、適切に選択されていれば、一意の識別が可能です。

2
dronus

Panopticlickサイトには、追跡を回避するための「 自己防衛 」の推奨事項があります。

推奨事項の1つは、トーボタンを使用することです。 torbrowser design docs は、ブラウザーのフィンガープリントと追跡を回避しようとする方法を詳しく説明しています。

これらのアプローチはすべて、できるだけ多くの他の人のように見えるようにプロファイルを正規化しようとしています。

1
shamer

PS:質問が古くなっていることに気づかなかった。

私は技術的にこれに答える資格がないかもしれませんが、OPは

技術オプション

私が知っていることをお手伝いできます。

EFFには、いくつかのツールについて説明する記事があります ここ

他の答えにはたくさんの説明があります、私はツールのみをリストします(おそらくいくつかの説明のみで)

ツールはクロム用です。Firefoxユーザーはこの回答を編集してプラグインを追加できます(ほとんどのツールはFirefoxでも使用できます)。

これで、ブラウザーのフィンガープリントを処理するだけで済むので、次のツールの組み合わせを使用できます。

  • Canvas Defender このプラグインは、新しいセッションごとに、またはリクエストによってブラウザのキャンバスフィンガープリントにランダムハッシュを追加することにより、キャンバスフィンガープリントを非表示にします。これにより、トラッカーはブロックする代わりに偽のフィンガープリントを取得します(ブロックすると、群衆が目立ちます)。
  • Chromeのユーザーエージェントスイッチャー Canvas Defenderでこのツールを使用して、群集の中でさらに非表示にするこのプラグインにより、ユーザーエージェントを変更できるため、Linuxまたはまれに使用されるブラウザーを使用する場合は非表示にできます。
  • ScriptSafe これはNoScriptツールに似ていますが、Criumの場合、有害なJavaScriptが実行されないようにし、トラッカーのユーザーを特定するためにユーザーに関するデータを収集しません。
  • Flashcontrol 許可されていない限り、これはFlashコンテンツをブロックします。古いFlashを使用して、あなたを追跡したり、ハッキングしたりすることができます。
  • WebGLを無効にする このツールは、実際のWebGLフィンガープリントを非表示にするのに役立ちます(これにより、トラッカーに0000000000フィンガープリントが提供されますが、目立つようになります)ツールの作成者は非表示にするように作成しませんでしたが、ブラウザがクラッシュする原因となったWebGL機能を単にブロックするだけです。

最後に、このツールを使用すると、最初はブラウザーが使用できなくなる可能性があるため、目標を最もよく満たすために少し調整する必要があります。

1
cloud em

企業は指紋を部分的に使用して、クリック詐欺を取り除きます。 AudioContextは非常に強力な指紋技術ですが、まだ広く使用されていません。あなたは現在それを取り除くためにソースからブラウザを構築する必要があるでしょう。

指紋が嫌いな場合は、iOSデバイスを(プライベートモードで)使用することができます。これは、iPhoneはすべて同じように見える傾向があり、Appleにプライバシー保護が組み込まれているためです。 。

グーグルは反対側にいる、彼らは広告のユーザーを識別するために歩くパターンを使用する方法を研究しています。 Google Analyticsは最も普及しているスクリプトとCookie(他の回答を参照)であるため、できるだけGoogleを避けようとしています(Startpage.comを使用)。

プライバシーが気になる場合は、足で投票してください。フィンガープリントを使用してコンテンツをブラウジング動作に合わせて調整するニュースやメディアに特に注意してください。自由(民主主義の場合と同様)が危機に瀕しています。

Stackexchangeは追跡しているajax.googleapisを使用します。 Googleのような他の会社もあります。scorecardresearch、newrelic、optimizelyなどです。これらも普及しているトラッカースクリプトです。プライバシーアナグマでは、ほぼすべてのCookieをブロックしています。それは本当に害はありません。一部のWebサイト(Cookieウォールまたは電子メール)に対してCookieを許可する必要があります。 GmailはCookieとJavaScriptなしで使用できます。非常に頻繁にブラウザをクリアしてください。あなたはそれのこつを得ます。

双方を助けるW3研究所が必要です。クリック詐欺(ボット)を減らし、プライバシーを保護します。

0
imonaboat