BraveがGPUフィンガープリンティングの保護を強化しました
これは Braveのプライバシー新機能を紹介するシリーズ記事の第38回です。本記事はRohit Agarwal(シニアソフトウェアエンジニア)とPeter Snyder(主任研究員)による成果をもとに、Shivan Kaul Sahib(プライバシー&セキュリティ担当VP)が執筆しました。
バージョン1.93より、BraveはGPUおよびグラフィックスドライバーのフィンガープリンティングに対する新たな保護機能を順次導入します。WebGLおよびWebGPU APIは、トラッキング企業がブラウザフィンガープリンティングに利用するグラフィックスカードやドライバーの詳細情報を外部に公開してしまいます。BraveはこれらのAPIが返すベンダー文字列とレンダラー文字列を匿名化し、サポートされている拡張機能のリストにノイズを加えることで、Webサイトの機能を損なわずにフィンガープリンティングを防ぎます。
これらの保護機能は、デスクトップおよびAndroidブラウザでデフォルト有効になっています。今後数日間にわたって段階的に展開されるため、すぐに反映されない場合はしばらく経ってから再度ご確認ください。
GPUはフィンガープリントになりえる
WebGL および WebGPU APIは、Webサイトがハードウェアアクセラレーションを使ってグラフィックスを描画するための仕組みです。これらのAPIは(文字どおり)Webをより彩り豊かにし、魅力的な体験をWebサイト開発者が作り上げる助けとなっています。ブラウザベンダーとして私たちは、この開かれた活気あるWebを大切に考えています。囲い込み型のアプリストアではなく、Webを皆さまに選んでほしいからです。
残念ながら、グラフィックスAPIはサードパーティのトラッカーによるユーザーフィンガープリンティングにも悪用されています。ブラウザフィンガープリンティングとは、デバイス固有の細かなシグナルを多数組み合わせて単一の識別子を生成し、クッキーも同意も使わずにWebをまたいでユーザーを追跡するトラッキング手法です。WebGLおよびWebGPU APIは下位のハードウェア情報を公開するため、こうしたシグナルの特に豊富な供給源となっています。スクリプトはGPUの正確なベンダーとモデル、グラフィックスドライバー、そのハードウェアがサポートする機能一覧を取得できます。たとえばWebGL APIは、EFFの優れたツール Cover Your Tracks でテストしたところ、Mシリーズチップを搭載したApple MacBook Pro上で 'ANGLE (Apple, ANGLE Metal Renderer: Apple M5 Max)' のような非常に詳細なデバッグ文字列の照会をWebサイトに許可しています。興味深いことに、このデバッグ拡張機能はもともと Google ChromeがGoogle Maps向けに公開したもので、その後すべてのWebサイトで利用可能になりました。同じWebGLコンテキストはさらに、サポートされている拡張機能の全リストも報告します。このリストはGPUやドライバーによって異なり、トラッカーはこれをハッシュ化してコンパクトな識別子を生成できます。また新しい WebGPU APIは独自のハードウェア記述子を公開しており、アダプターの vendor、architecture、device(例:{vendor: 'apple', architecture: 'metal-3'})を返します。GPUハードウェアを日々交換することはまずないため、これらのフィンガープリンティングシグナルは時間が経っても変わりません。
私たちは主要なWebサイトがこれらのAPIをどのように使用しているかを調べるため、小規模なWebクロールを実施し、各呼び出し直前のスタックトレースを分析しました。その結果、ほとんどのWebサイトがこれらのAPIを フィンガープリンティングのためだけに 使用していることがわかりました。
Braveによる保護のしくみ
Braveは以下の方法でこれらのシグナルを除去します。
- WebGLのベンダー文字列とレンダラー文字列を単一の汎用文字列に置き換え、すべてのBraveユーザーが同一の値を受け取るようにします(詳細)。
- WebGPUアダプター記述子を空にします(詳細)。
- WebGL拡張機能リストにランダム化を加え、ハッシュベースのフィンガープリンターがセッションごと、サイト(eTLD+1)ごと、ストレージ領域ごとに異なる値を受け取るようにします(詳細)。
Braveのすべてのプライバシー保護と同様に、その目的はトラッカーに安定した識別子を与えないようにしながら、Webサイトがユーザーに豊かな体験を提供するために必要なものはすべて残すことです。
プライバシーを守りつつ、Webを壊さない
この数ヶ月間、NightlyチャンネルとBetaチャンネルで段階的に保護機能を展開してきました。私たちのアプローチはほとんどのWebサイトで機能の破損リスクを抑えながら、フィンガープリンティングに効果的に対抗できると確信しています。
問題が生じるWebサイトを発見した場合、Braveはサイト単位でこれらの保護を調整できます。ユーザーは常に主導権を持っています。どのサイトでも、グラフィックス保護のみをオフにしたり、フィンガープリンティング保護を完全に無効にしたり、Shieldsをまるごとオフにしたりすることができます。
実際に試してみよう
これらの保護機能を手軽に確認する方法として、EFFの Cover Your Tracks がおすすめです。このツールはブラウザが公開しているWebGLのベンダー文字列とレンダラー文字列、およびその識別性の高さを報告します。機能が完全に展開されると、ベンダーとレンダラーが汎用的な値に統一されたことを確認できます。
今後の展望
グラフィックスAPIはフィンガープリンティング研究の活発な領域であり続けており、これらのインターフェースが新たに公開するシグナルへの対応を継続的に拡充していきます。WebGPUで利用可能な拡張機能のランダム化も予定しています。
Braveはフィンガープリンティングへの対抗において長年業界をリードしており、最高水準の保護機能をデフォルトで提供しています。この「デフォルト有効」という点が重要です。プライバシーを重視する他のブラウザの多くは、次のいずれかに当てはまります。オプトイン型の保護(特別なモードや上級者向けのフラグの裏に隠されている)か、使い勝手を犠牲にするアプローチ(機能を完全に壊してしまう)です。Braveのプライバシー哲学では、これは誤った二項対立です。ユーザーは特別なトグルやモードを有効にしたり、Web拡張機能をダウンロードしたり(それ自体にもセキュリティやプライバシーの問題が伴います)することなく、お気に入りのWebサイトで強固なプライバシー保護を受ける権利があります。プライバシーは技術に詳しいユーザーだけのものではありません。
念のため補足すると、Braveはすでにステートベースのトラッキング(クッキーなど)からユーザーを保護しており、既知の危険なスクリプトやリソースの読み込みもブロックします。プライバシー、セキュリティ、パフォーマンス、使いやすさのすべてにおいて効果があります。