トラッキングに利用できない3rdパーティクッキー「CHIPS」の仕組み (partitioned属性)

3rd パーティクッキーの廃止計画が世間を賑わせています。一方で、3rdパーティクッキーには、トラッキング目的でないユースケースもあります。それらのために、3rdパーティクッキーの制限を緩和する「Cookies Having Independent Partitioned State (CHIPS)」という仕組みが検討されています。

この仕組みに則っていれば、制限のもと3rdパーティクッキーを使えるようになります。
もちろん、これはトラッキングが出来ないようになっています。

仕様: https://github.com/WICG/CHIPS
Chromeの実装計画: 「Intent to Prototype: Cookies Having Independent Partitioned State (CHIPS)

ユースケースについては、仕様の中で述べられていますのでそちらを参照ください。

CHIPS以前の3rdパーティクッキー

CHIPSがどのようにCookiを制限するか説明する前に、今の3rdパーティクッキーについて軽く説明をします。

次の例では

f:id:ASnoKaze:20210704155533p:plain

クッキーは払い出したドメイン(ホスト名)をキーにブラウザに保存されます。そのため、どのサイトにサブリソースと埋め込まれても共通してCookieが共有されます。ですので、ユーザのトラッキングに使用できました。

CHIPSの緩和

Cookies Having Independent Partitioned State (CHIPS)」では、払い出したドメインだけでなく、トップレベルのサイトもキーにして保存領域が分割されます。

先の例と同じように、https://a.examplehttps://b.examplehttps://cookie.example を埋め込んでいます。https://cookie.exampleから払い出されたCookieは異なる領域に保存されます。そのため、クロスサイトでのトラッキングには使う事はできません。

f:id:ASnoKaze:20210704160655p:plain

CHIPSのオプトイン

CHIPSで定義されるように、Cookieを動作させるために、set-cookieする際にpartitioned属性を付与する必要があります。

Set-Cookie: __Host-SID=31d4d96e407aad42; SameSite=None; Secure; HttpOnly; Path=/; Partitioned;

その他にも以下の制約がある

  • Cookie Prefixesで定義される __Hostプレフィックスがついている必要がある (Domain属性を上書き設定不可になる)
  • SameSite属性はNoneが指定される必要がある
  • Secure属性がついている必要がある
  • HttpOnly属性がついている必要がある

将来的には、3rdパーティリクエストするさいPartitioned属性のついたCookieのみが送信され、Partitionedの無いCookieは送信されないようになるものと思われます。

標準化に関して

現在、W3CのWICGを中心に議論が進められています。IETFのHTTP WGにもドキュメントの状況は共有されていますが(URL)、具体的な提案仕様はまだ提出されていません。