Firefox、ユーザーを追跡する「キャンバスフィンガープリント」対策を導入

2017.11.07

リリースが予定されている Firefox 58 は、主要なブラウザの中で最初にキャンバスフィンガープリント対策を講じたブラウザになりそうです。キャンバスフィンガープリントとは、Cookie を使用せずにインターネット上でユーザーを追跡する技術です。



キャンバスフィンガープリントが機能するためには、Web サイトがユーザーの許可なく HTML の <canvas> 要素からデータを抽出できる必要があります。しかし、Firefox ユーザーは将来的に、Tor ブラウザ(リンク先:英語)のユーザーと同様、データが抽出される前に抽出を許可するかどうかを選択できるようになります。



このように Tor ブラウザと挙動が似ているのは偶然ではありません。プライバシーを何よりも重視する Tor ブラウザのベースとなっているのは、Firefox ESR (延長サポート版) です。また、しばらく前から少しずつですが Tor ブラウザの機能や設定が逆流する形で Firefox に採用されるケースが続いています。



今回の機能については、Firefox に導入されるまで 4年の歳月がかかっています(リンク先:英語)

時間はかかりましたが、この機能が採用されたことは朗報です。その理由をご説明します。



ブラウザフィンガープリント


ブラウザフィンガープリントは、ユーザーに拒否する機会を与えずにユーザーを追跡したいと考える企業から近年注目を集めている手法です。

ブラウザフィンガープリントは、ユーザーのブラウザに組み込まれているビーコン (Cookie、Flash LSO (ローカル共有オブジェクト)、DOM ストレージ値など) を追跡するのではなく、ブラウザそのものを追跡します。



ビーコンはブロックや削除することできますが、フィンガープリントはできません。

フィンガープリントには、バージョン番号、オペレーティングシステム、画面解像度、言語、ブラウザプラグインのリスト、インストール済みのフォントのリストなど、ブラウザから収集された情報が使用されます。



フィンガープリントの構成要素として使用されるデータは数多くありますが、使用される要素が多ければ多いほど、また、各要素に利用可能なエントロピーが多ければ多いほど、より簡単にユーザーのブラウザを特定できるようになります。

最もよく使用される要素の 1 つが、HTML の <canvas> 要素です。



キャンバスフィンガープリント

<canvas> 要素は、その名のとおりブラウザが描画することのできるキャンバスのようなものです。

キャンバスフィンガープリントでは、ユーザーのブラウザは非表示の canvas 要素で何か (おそらくは単語と画像の組み合わせ) をレンダリングするよう指示されます。レンダリングで生成された画像は、キャンバスから抽出され、ハッシュ関数を経由して、ID を生成します。



グラフィックカードとオペレーティングシステムが違えば、処理方法も若干異なります。つまり、同じ Web サイトにアクセスしてきた 2 つのブラウザに同じ描画命令を与えても、描かれる絵はわずかに異なります。



命令が複雑であれば、ブラウザごとに差異を生じさせることができます。そのため、キャンバスフィンガープリントはフィンガープリント作成における強力な要素になり得ます。

命令が複雑になればなるほど、簡単にブラウザの違いを見分けられるようになりますが、次のような単純なテストでもその基本原理は明らかです。



次の 2 つの画像は、筆者のコンピュータにインストールされている Firefox (左) と Safari (右) でレンダリングした「T」の文字です (画像の下にあるのはそれぞれのハッシュ値です)。目で見ても違いは分かりますが、フィンガープリントにとって重要なのは、この 2 つの文字がまったく同じではなく、そのために異なるハッシュ値が生成される点です。


T rendered by Firefox 33 on OS X55b2257ad0f20ecbf927fb66a15c61981f7ed8fc


T rendered by Safari 8 on OS X17bc79f8111e345f572a4f87d6cd780b445625d3


正しい方向に一歩進んだ Firefox


フィンガープリントは、最新のブラウザの特長である複雑性、カスタマイズ性、オープン性を逆手に取った手法であるため、阻止するのは容易ではありません。よりパーソナライズされたブラウザであればあるほど、また、情報の共有に積極的であればあるほど、大勢のブラウザの中で特定されやすくなります。



既知のフィンガープリントスクリプトを傍受するプラグインが役立つこともありますが、一方でブラウザのフィンガープリントにエントロピーが追加されるため、状況を悪化させる可能性もあります。



特定の機能の有用性と悪用される可能性との間でバランスを取る必要があります。また、ブラウザベンダーはブラウザの機能が実際にどのように使用されているかを常に把握していなければなりません。



その典型的な例が Battery Status API(リンク先:英語) です。この機能は、「Web開発者が電力効率の高い Web コンテンツやアプリケーションを開発できるように」するためのものです。ユーザーのバッテリーの充電レベルが、14,172,310 段階のどのレベルに該当するのかを判断するこの機能は、開発者の注目をほとんど集めていませんが、フィンガープリント技術の 1 つとして熱狂的に受け入れられています。



Firefox は約 1 年前にこの機能を使用しないことを即座に決定(リンク先:英語)しました。



Firefox の開発者はキャンバスフィンガープリント対策として、この機能を完全排除するのではなく、Tor ブラウザと同じく現実的なオプトインアプローチを採用することにしました。なぜなら、キャンバスフィンガープリントはバッテリーステータスの悪用よりも大きな問題ではあるものの、<canvas> を使用しないという選択はできないからです。無用の長物である Battery Status API とは違い、実際はとてつもなく便利な機能です。ただ、あまりにも一般的なフィンガープリント技術であるだけです。

しかし、それもあと数か月の我慢です。

引用元

おすすめの記事はこちら