こんにちは、中山です。
この記事は TECHSCORE Advent Calendar 2014 の 18 日目の記事です。
プライバシー(端的にはトラッキング)関連技術をキュートな概念図にまとめてみました。
補足させて頂きますと、キュートというのは私の主観です。
今回はこのキュートな図から見てとれる課題を二点ピックアップし、ご紹介します。
Cookie と JavaScript における 1st/3rd party の扱い相違
キュートな図から Cookie と JavaScript では 1st/3rd の関係性が異なることが分かります。
例えば 3rd party JavaScript は 3rd party Cookie ではなく 1st party Cookie に対して R/W を行っていることが分かります。
また Cookie と JavaScript では 1st/3rd で適用される制限が異なります。
モダンブラウザのデフォルト設定は 3rd party Cookie の送受信を制限する傾向にあります。
他方 JavaScript の場合、ブラウザ設定から受ける制限に 1st/3rd 間の違いはありません。
このことからトラッキングを行う企業は
- 3rd party Cookie
- JavaScript 経由の 1st party Cookie
を併用することがしばしばあります。
後者の延長線上には localStorage や cache 等を用いる Super Cookie と総称される技術もあります。
蛇足ですが、スマートデバイスでは 3rd party JavaScript によりページのリンク先を変更し 1st party Cookie としてブラウザに識別子を保存させる、といった手法も使われるようになりました。
(本来のページ遷移)
- サービス提供社のページA
- サービス提供社のページB
(手法を用いた場合のページ遷移)
- トラッキングを行う企業の JavaScript がサービスのリンク先を変更
- サービス提供社のページA
- トラッキングを行う企業のリダイレクタ
※ Cookie を 1st party として送信するためにページ遷移に割り込む
※ 自動的にページBに遷移するのでユーザーには意識されない - サービス提供社のページB
しかし、これらのトラッキング技術は
- 1st party(サービス提供者)のポリシー
- エンドユーザーの 3rd party Cookie 設定
の制限を受けることなく利用される場合もあります。
言い換えると、貴方が 3rd party からのトラッキングを拒否したくても、トラッキングされてしまう場合があります。
この状況を回避するにはどうしたらよいでしょうか?
個人的にはブラウザに 3rd party JavaScript の権限管理機能が実装され、1st party やエンドユーザーが必要に応じて 3rd party JavaScript の Cookie へのアクセス等を制限できるようになれば良いのでは、と考えています。
Private Browsing 機能の影響範囲外のトラッキング技術
キュートな図から FingerPrint が Private Browsing 機能の影響範囲外であることが分かります。
ちなみに FingerPrint(もしくは Browser FingerPrinting)とは以下のようなものです。
FingerPrint = message-digest (
- [Plug-in info via JavaScript] +
- [Device info via JavaScript] +
- [HTTP info] +
- [IP]
)
IP は FingerPrint の寿命とトレードオフになるので、利用されない場合があります。
この FingerPrint を用たトラッキングは Private Browsing 機能の影響を受けません。
言い換えると、貴方が秘密裏に閲覧(どのようなコンテンツでしょうか!?)したくとも、秘密に出来なくなってしまいます。
現状スマートデバイスに対しては FingerPrint は有効なトラッキング手段ではありません。
何故なら Plug-in info や Device info の差分、もしくはそのものを抽出し難いためです。
しかし将来 Browser の HW 連携が進化した場合 Device info が多様性を増し FingerPrint は有効なトラッキング手段となります。
例えば Canvas FingerPrint の利用はその兆候です。
この状況を回避するにはどうしたらよいでしょうか?
個人的にはブラウザに以下のような機能が実装されれば良いのでは、と考えています。
- Private Browsing 時には HW 機能の活用許可を問うダイアログが出る
(= Device info 対策) - Private Browsing 時には HTTP Header にランダムな値入れ、順序も変化させる
(= HTTP info 対策)
このエントリーをお読みの皆様のアイデアなど聞かせて頂けますと幸いです!