Firefoxのトラッキング防止策「State Partitioning」の仕組みを分かりやすく説明するとこうなる
Firefoxは2021年2月に公開された「Firefox 86」でプライバシー保護機能を強化し、新たに「State Partitioning」と呼ばれるトラッキング防止機能を導入しました。このState Partitioningがどのような仕組みなのかを、Mozillaのエンジニアであるヨハン・ホフマン氏が解説しています。
Introducing State Partitioning - Mozilla Hacks - the Web developer blog
https://hacks.mozilla.org/2021/02/introducing-state-partitioning/
サードパーティーCookieを埋め込んだウェブサイトは、ユーザーがウェブサイトを離れた後の行動も追跡でき、行動分析によってユーザーの興味を特定して効果の高い広告を表示することが可能になります。一方でこのような追跡(トラッキング)は個人情報を過度に収集するとして近年はプライバシーの観点から規制・廃止する方向に向かっています。
Firefoxを開発するMozillaはかねてからユーザー追跡を防ぐための仕組みを考案しており、2021年1月に公開されたFirefox 85ではスーパーCookieと呼ばれる新しい手法による追跡を防ぐ仕組みも導入しています。
「Firefox 86」で新たに導入されたトラッキング防止策「State Partitioning」について、ホフマン氏は前段階として、「まずステートフルなWeb APIがどのように動作するのかを理解する必要があります」と説明。「ステートフル」とはログインが発生するような通信を意味しており、MozillaはステートフルなWeb APIを、「Cookie・セッション・キャッシュなどのデータをデバイスに保存するAPI」と位置づけています。
もともとステートフルなWeb APIはトラッキングのために作られたものではなく、ファーストパーティーであるかサードパーティーであるかを問わず、何らかのState(状態)を複数のウェブサービスで共有するためのものです。
サードパーティーCookieを使った追跡の場合、「www.tracker.com」というウェブサイトのCookieをサードパーティーCookieとして「foo.com」「bar.com」というウェブサイトに埋め込むことで、「www.tracker.com」がCookieを識別子として両サイトでのユーザーの活動に接続することが可能になります。
Firefoxの追跡防止機能「Enhanced Tracking Protection(ETP)」はStateを共有するためのアクセスをブロックするものですが、ETPは一般に普及しているトラッカーのリストを基にブロックを行うため、リストが常に最新かつ完全でないと、ブロックできないトラッカーが生まれます。またトラッカーは新しいドメイン名を登録することでETPを回避することができるため、どうしても「いたちごっこ」のような形になるという点に制限があります。
この問題に対処するためにMozillaが開発したのがState Partitioningです。State PartitioningはCookieのアクセスを完全にブロックせずに、サードパーティーによるStateの共有を防ぐ仕組み。CookieやlocalStorageといった共有Stateが分離され、それぞれのCookieを発行したウェブサイトでのみ利用可能となります。
この中でFirefoxは「Double Keying」という仕組みを利用し、Cookieに「どのページを見ている時に」「どこから付与されたのか」という情報を追加。これにより、同じ「www.tracker.com」のサードパーティーCookieが埋め込まれたウェブサイトをユーザーが見ていても、別のCookieだと判断され、情報の追跡が行われなくなります。
Double Keyingを利用したFirefoxでは、foo.comのCookieキーが「www.tracker.com^www.foo.com」、bar.comのCookieキーが「www.tracker.com^bar.com」として保存されることになり、個人を識別するトラッカーとしての機能がサードパーティーCookieから失われるとのこと。
この仕組みにより、通常通りCookieやストレージを利用しつつも、広範なトラッキング防止を行うことが可能になります。
一方で、State Partitioningを利用するとシングルサインオン(SSO)などサードパーティーCookieを使ったサービスは接続が中断されるという問題が生じます。
このため、FirefoxのState Partitioningでは特定の場合にのみStateを分離しないことが可能であり、非分離が有効になるとDouble Keying機能が停止するとのこと。Firefoxが非分離を有効にするケースは以下の2つが考えられます。
1.埋め込まれたiframeがStorage Access APIを呼び出したとき
2.自動化されたヒューリスティクスによる判断
Storage Access APIはMozillaが提案する新しいJavaScript APIで、追跡防止の「例外」を処理するためもの。またMozillaは「ウェブ上でサードパーティーのストレージを使用する最も一般的なシナリオ」の場合はストレージアクセスを許可するというヒューリスティックのポリシーを定めています。これら2つのケースに該当するときには非分離が有効になるとのことです。
・関連記事
「全てのCookieを受け入れる」を選択すると一体何を受け入れることになるのか? - GIGAZINE
ブラウザのFavicon(ファビコン)でユーザーを追跡する「スーパークッキー」とは? - GIGAZINE
IPアドレス・クッキー・JavaScript・UAなどを使わずユーザーを個別に追跡する方法 - GIGAZINE
ウェブサイトによる行動追跡に同意する人は実際にどの程度いるのか実験した結果 - GIGAZINE
サイト訪問者がcookieを切っていても追跡可能な手法が明らかに - GIGAZINE
・関連コンテンツ