※この記事の完成度は85%ぐらいなので後で追記します。
- http://webpolicy.org/2012/02/17/safari-trackers/
- http://online.wsj.com/article/SB10001424052970204880404577225380456599176.html
- http://blogs.wsj.com/digits/2012/02/16/how-google-tracked-safari-users/
合わせて読みたい。
一番上のJonathan Mayer氏の記事については純粋に技術的なレポートなので、特におかしなことは書かれていない。元はといえばSafariのCookieブロック機能が狂っている件、それを利用しCookieをセットしている広告会社という技術的なリサーチなので、英語と技術的な内容について抵抗がない人はまず最初に読んだ上で(WSJとの差分について)判断すべき。この記事は技術的な内容を含むので難しいです。内容が理解出来ない場合は難しいということさえ分かればいいです。
WSJの日本語版には
グーグルは特別な暗号を使い、サファリで初期設定されているトラッキング拒否機能に設けられた例外事項を利用する方法で、利用者のコンピュータや多機能携帯電話「iPhone(アイフォーン)」などにクッキー(追跡用の小さなファイル)をインストールしていた。
とある。特別な暗号などと、随分物騒な物言いだが、原文はspecial computer codeだったりする。WSJが書くと、Safariの仕様上の隙をついて、Googleや広告会社がトラッキングをしている(Googleはそれを否定)という論調になっている。素直に読んだら悪事を暴かれたGoogleが言い訳をしていると、そんな風に捉えてしまう人が多くいるのではないでしょうか。この問題がメディアに取り上げられたことは大いに意義があるのだけど、Googleに関しては批判すべきポイントがズレまくっている。問題提起は結構なのだが、何が行われているのかも正確に理解すること無く(理解した上かもしれないけど)、ユーザーの不安を煽りたて、憶測で企業を批判する行為がまかり通ってしまうことのほうがよっぽど問題なのではないかと思う。
ざっくりとした解説
- Googleはディスプレイ広告に対して+1ボタンを表示するかどうかの設定をGoogleアカウントに対して保存している
- doubleclick.netから配信されるAdsenseの広告に対して、その設定を反映させるためにAdsense表示の際に、google.comにリダイレクトして設定を読み取っている
- google.comから設定を読み取った後 doubleclick.net ドメインに遷移して _drt_ という名前のCookieを発行して、読み取った設定を参照できるようにしている。
- この際に、UserAgentがSafariの場合には、iframe内でform送信するJavaScriptを使って、SafariのサードパーティCookieをブロックする設定を迂回していた。
- その結果、既にCookieが保存されている場合は追加のCookie保存も受け入れるルールによって、トラッキング用のCookieも保存されることになった。
その背後にある技術的な背景
- SafariはサードパーティCookieをデフォルトでブロックすると謳っているが、Webサイトとの互換性のために「保存済みCookieについては送信を行い」「いくつかの条件でサードパーティCookieを受け入れる」
- 既にCookieが保存されている場合は追加のCookieも受け入れるという挙動にしたのは Appleのエンジニア https://bugs.webkit.org/show_bug.cgi?id=35824
- form送信でサードパーティCookieブロックの設定を無視する点についてバグとみなして修正したのはGoogleのエンジニア(Safariにはまだ反映されていない) http://trac.webkit.org/changeset/92142
事前に持っていた認識
- SafariのサードパーティCookieブロックはザルなので、トラッキングCookieが意図せずにセットされてしまうことがある。
- GoogleはAdsense表示の際に、隠しiframe内でgoogle.comを参照するということを行なっていた(去年から)
- これを知った時の自分の考えは「おそらくGoogleアカウントに保存されている広告関連の設定を読み取っているのだろう」ということ
WSJの取材後に行われたこと
- Google: この記事執筆時点で、doubleclick.netがそもそもSafariに対してset-cookieを発行しなくなった(UserAgentで判別) そうしなければ「広告Cookieブロックするはずなのにされてないじゃないか!!」と文句を言われてしまうから。
- Apple: 「一部のサードパーティーがSafari のプライバシー機能を迂回していることは認識しており、そのようなことを阻止すべく取り組んでいます」という回答を出した。
Google行った対応はどういう意味を持つのか
- 明示的にAds Preference Managerで「オプトイン」をしなければターゲティング広告が使えなくなった。
- Cookieが有効かどうか(これはサードパーティCookieになる)を調べるためのCookieが、Safariの仕様のせいで間違ってセットされてしまうことがあるからだ。
ディスプレイ広告におけるGoogle +1ボタンの仕組み
- Googleのディスプレイ広告に +1ボタンを表示することが出来るようになった http://adsense-ja.blogspot.com/2011/09/1.html
- ユーザーから見て+1ボタンを表示するかどうかは「+1 personalization on non-Google sites」 の設定が反映される https://plus.google.com/+1/personalization
- 同時期に、Adsense表示の際に隠しiframeでgoogle.com/pagead/drt/uiへ遷移しているのが確認されている
- Google → doubleclickへのリダイレクト時に、doubleclick.netドメインに_drt_ cookieが設定される。この際にクエリパラメータにpli=1が付いていると広告に対する+1ボタンが有効化され、以降の広告表示の際に反映される。
- 別のブラウザを立ち上げ、同じGoogleアカウントにログインし、+1ボタンに関する設定を変更しても、その場で反映されることは無かった。
このことから、自分は以下のように推測するだろう。
- その人が確かに自分の意志で+1ボタンを表示する設定を選択したのかを確実に判別するために、Googleのログイン機構を使ってdoubleclickにリダイレクトをしている
- これを行わないとCSRFでAdsenseに対する+1ボタンの表示設定が変更されてしまう
- もしDoubleClick側で_drt_に保存された文字列からGoogleアカウントの情報を参照できるのであれば、+1ボタンに関する設定が、その都度反映されてもおかしくないが、そのようにはなっていない。
- なので、_drt_ は純粋に広告に関する設定を一時保存するためのCookieであると(自分はGoogleをある程度信頼しているので)考えている
- Cookieに直接設定を保存する選択肢もあっただろう。plusone=1というような。
- DoubleClick側でDoubleClick cookieにGoogleアカウントを関連付けていない、ということを証明することは難しい。
- なぜならGoogleがサーバー側で何をやっているのかは、ユーザーからは分からないから。
Safariにおけるワークラウンド処理に意味はあったのか?
Safariのデフォルト設定では、doubleclick.netドメインに対して「+1ボタンを有効にしているかどうか」の設定を反映させることが出来ない。なので、form送信にするというバッドノウハウを使用した。その結果、意図せずに「トラッキング目的のcookieもセット可能な状態になった」これがGoogleの言うところの「予期せぬ挙動だった」ということ。
form送信を使用しなくても、doubleclickのcookieがセットされるという状況は発生する。
- Safariの開発メニューでUserAgentをFirefoxに変更する
- Ads Preferences Managerを開く。何回かリロードしてもDoubleClick idがセットされないのを確認する。(doubleclick.netに一時的なcookieが保存される)
- Google Adsenseを掲載しているサイトを適当に訪問する。
- DoubleClick idがセットされているのを確認する。
この「form送信にするというワークアラウンドと無関係に」どのみち一度でも広告をクリックしたり、Ads Preferences Managerを訪問するなりすれば、ファーストパーティCookieとしてDoubleClickのcookieがセットされ、トラッキングされる状態になる。
これが、WSJ曰く
グーグルがインストールしたクッキーは一時的なもので、12〜24時間で効力を失う。しかし、ときには幅広くトラッキングされてしまうこともあった。サファリの技術的な「癖」でクッキーが1つでもインストールされると、簡単にほかのクッキーがインストールされるようになってしまうからだ。
はいはい、じゃあこの挙動を知っていたWeb技術者だけが石を投げて良いですよ、ということになる。GoogleはSafariに対して「トラッキング目的でない(Googleの主張)」Cookieをセットするためにフォーム送信というバッドノウハウを使ったが、批判を受けたため今度は「トラッキングCookieをSafariにセットしないために」Safariを特別扱いして、Safariの場合だけCookieが有効かどうか判別するtest用のCookieすら送らないようになった。そうしないと「広告Cookieをブロックしてるはずなのに、いつのまにかdoubleclick cookieがSafariに設定されている」という状況になってしまうから。
というわけで整理すると
- doubleclickのトラッキング目的である "id" cookieを受け入れやすくするために、この技術を使ったのではないか? → ハッキリ言って無茶あるよ、Safariの挙動は元々ザルだから、そんなことをする必然性はない
- _drt_という名前のCookieは何を意味しているのか?トラッキング目的ではないか? → 検討の価値がある
Appleの取れる対策はどういったものがあるのか
Safariの挙動については以前書いたとおり。
http://d.hatena.ne.jp/mala/20111125/1322210819
デフォルトで「サードパーティCookieをブロックする」と謳っているSafariだが、抜け道を作っておかないとSafariのデフォルトの設定では動作しなくなるWebサイトが多く発生することになる。Appleは「阻止すべく取り組んでいる」と表明しているが、Safariのこの挙動は、最早、副作用なしに変更することはできない状況になっている。これは単なる欠陥という話ではないし、ソフトウェアのバグというものは、副作用なく不具合だけを修正することが出来るとは限らない。Safariの挙動が不適切だと思うのであれば、サードパーティCookieに依存したWebサイトを作ってきた開発者も非難されなくてはいけない。(Facebookのlikeボタンとか)
Appleの取れる対策はいくつか考えられるだろう。
- 1. 何も変更を加えずにトラッキングを行う広告会社を非難
- 2. 今さらながらP3Pをサポート
- 3. 全てのCookieを受け入れた上でDo Not Trackをデフォルトで有効
- 4. サードパーティCookieの送信もブロックする設定を追加で作る
- 5. デフォルトでサードパーティCookieの送受信をブロックした上で、ホワイトリスト提供(Apple認定 or ユーザー設定)
- 6. デフォルトでサードパーティCookieの送受信をブロックした上で、動作しなくなるサイトには修正を求める
- 7. フォーム送信の際にブロックするポリシーが無視されるという部分のみ修正(likeボタンや+1ボタンの問題は放置)
ブラウザ全体の傾向としてはデフォルトの挙動は「Cookieは全て受け入れる」「プライバシーを気にする人はDo Not Track」ということになるだろう、と予想している(Firefoxの辿った道)
Safariについては、1を行いつつ、4,5,7あたりに落ち着くのではないかと予想している。
Googleのプライバシーポリシー変更にあたってメディアが注視すべきポイントはどこなのか?
- Adsenseで使っているdoubleclick.netのCookieは「個人を特定しない」ことをポリシーとして、Web履歴の収集と、それを使った趣味趣向属性の推測を行なっている。
- これはDoubleClick訴訟の影響があるためで、別経路で入手した個人を識別可能なデータとのリンクが制限されている。
- にもかかわらず、Ads Preferences Managerでは、doubleclick.netからgoogle.comへのリダイレクトによって、doubleclickのcookie情報がgoogle.comに受け渡されている。
- そして、Adsenseにおいては、google.comからdoubleclick.netに対して「Googleアカウントに保存されている設定情報」を受け渡している。
- ここで _drt_ cookieから参照可能になるGoogleアカウント情報がどのようなものであるのかは、ユーザーからは検証のしようがなく、透明性は無い。
- Jonathan Mayer氏のアップロードしているGoogleの資料からその役割を知ることが出来る https://twitter.com/#!/jonathanmayer/status/171347730046787584
google.comとdoubleclick.netのCookie交換は、気安く行われて良いものではない。なぜなら、個人を特定しないことを条件としてGoogleはAdsense経由で訪問者のWeb履歴を収集し、趣味趣向や属性を判別し、広告に利用しているからだ。Googleは個人を特定しないdoubleclick.netの「匿名のWeb履歴情報」と、Google利用規約に同意をしてユーザーの許可を得た上で有効化されたgoogle.comが持っている「検索履歴機能、Web履歴機能」を持っている。これらは似て非なるもので、どうせ「Googleには個人情報を集められまくってるのだから」といって同一視して良いものではない。今まで「個人を特定されることは無いから」として許容されてきたものが、ある日突然Googleアカウント(SNSとして利用しており実名登録、詳細なプロフィールが入力されている)とリンクされることになりました、といったら、それは世間に受け入れられるものではないだろう(少なくとも自分は嫌だ)
なので、Googleの「お客様の同意なしに、DoubleClick Cookie 情報を、個人識別情報と結び付けることはありません。 」というポリシーがきちんと守られているのかを監視しなくてはいけないし、DoubleClick Cookie 情報を、個人識別情報と結び付けているのではないかと、疑いがかかるような不適切な実装は非難されなくてはいけない。
しかし、自分がGoogleの立場であるならば、このようにも考えるだろう。
- 匿名化されたGoogleのidを受け渡して、広告に関する設定や、ユーザーが広告に使っても良いと許可したプロフィール情報や、本人や友人が+1を押した広告の一覧などに「限定して」アクセスできるようにする。
- 直接的にGoogleアカウントをDoubleClickと紐付けるのは「ユーザーの許可を得た上で」行わなければならないが、個人を特定できないようにしたうえでGoogleアカウントの情報を参照することは制限されないのではないか?
- 現に+1ボタンを表示するかどうかの設定に関してはgoogle.comドメインから受け渡しているわけだし、これに対する反発が少ないのであれば、次のステップに進めるだろう。
- AdsenseにGoogleアカウント情報を使うことで、どの程度の広告の精度向上が見込めるのかのテストをし、結果がよろしかったらユーザーに対して透明性の確保と選択の自由を与えた上で広く有効化しよう。
http://support.google.com/adsense/bin/answer.py?hl=ja&answer=187844
また、ページにアクセスしたユーザーには、そのユーザーのソーシャル コネクションが +1 した広告が表示される可能性が高くなります。
とあるので、既にそういったことが行われていると考えても良いかもしれない。
ユーザーの反発が大きければ、そもそもこういうことは出来ないよね、ということになるし、その結果リアル人格に基づいたターゲティング広告のほうが実は効果的であって市場の選択の結果Facebookに惨敗する結果になっても仕方ない。FacebookはFacebookでリアル人格に基づいたターゲティング広告にどういったリスクがあるのか、周知されなくてはいけないだろう http://d.hatena.ne.jp/mala/20111202/1322835191
FAQ
- 結局何が起きていたの? → 1.Googleがトラッキング目的ではないCookie(_drt_)をセットしたら 2.Safariの仕様が原因でトラッキングCookie(id)もセットされた
- Googleはこれを意図していた? → 1は意図的に行った 2は予想外だったと主張している
- 最終的にトラッキングCookieをセットするため計算づくで行われた可能性は? → 可能性だけならなんとでも言えますが、そんなことをする必然性は薄いです
- どういう影響があったのですか? → Safariユーザーのうち、広告をクリックしないユーザーに新規にトラッキングCookieがセットされる確率が上がりました。
- 以前からSafariにトラッキングCookieはセットされていた? → 元々、広告を一度でもクリックすればトラッキングCookieがセットされ、維持されることになっていたでしょう
- 他の広告会社については → トラッキングCookieをセットする目的でやってるかもしれませんが、興味が無いので詳しく調べていません。
ブラウザの仕様と倫理的問題
- Safariはトラッキングを防止してくれないのですか? → 受信済みCookieの送信をブロックしないので一度Cookieがセットされれば以降はトラッキングできます。
- GoogleはSafariを特別扱いしていた? → していた。UserAgent(ブラウザ名)で判別。今は逆にトラッキングCookieをセットしないように特別扱いしている。
- なぜSafariを特別扱いする必要があったのか? → +1ボタンをユーザーが明示的に有効にしてもSafariでのみ動作しないことになるから。
- サードパーティCookie拒否してるのに保存する行為がそもそも問題では? → ユーザーが同意の上で有効化してるので https://twitter.com/#!/bulkneets/status/171665462197895168
- サードパーティCookieの受信が完全に禁止された場合は? → 設定変更やGoogleの適当なページ開いた時にdoubleclick.netにリダイレクトしてセットすることもできます。同じ事が面倒な手段で行われる。
- サードパーティCookieの送信が禁止された場合は? → Cookieを全て許可にしてください or 動きません、仕様です、と言うでしょうね
- AppleはSafariの問題を把握していたのか? → WebKitの関係者はずっと昔から知ってるはずです。
- Safariの問題は仕様なんですか欠陥なんですか? → Webサイトとの互換性を損ねないために、問題を把握しつつ修正が行われなかったり、Cookieの受け入れを緩和したりする場合があります。
- 他のブラウザはどうなってますか? → 例えばサードパーティCookieをブロックしても「送信」が行われる問題は、Firefoxはバグとみなして修正を行なっています。
- Opera最強伝説 → Operaも適切にサードパーティCookieを拒否することが出来ません。以前書いたことがあるので読んでください http://d.hatena.ne.jp/mala/20111125/1322210819
_drt_ cookieについて
- _drt_ という名前のCookieは何に使われているの? → 少なくとも、ディスプレイ広告(画像使った広告)に+1ボタンを表示するかどうかの設定に使われています
- _drt_ cookieはトラッキング目的のもの? → 違うと思います。DoubleClickのトラッキングは "id" cookieで行われています。
- _drt_ cookieは+1ボタンを表示するためだけのもの? → 違うと思います。それならランダム文字列にしないでplusone=1でいいからです。
- じゃあ結局何の目的でどういう風に使われてるの? → Googleが積極的に情報を公開しなければ、外部からは推測しかできませんし、内部でGoogleのidと紐付いていてトラッキングに使われている可能性だってあります。もしもそういったことが行われているとすれば問題なので「そもそもユーザーから見て何が行われているのか検証できないような、疑いがかかるような実装は避けるべき」で「FTCが調査するのも良いだろう」と考えていますが、憶測に過ぎないことをメディアが断定的に語って批判するのは避けるべきだと考えています。
IEのプライバシー機能も迂回していたとされる問題
Microsoftが自分たちを棚にあげて便乗してGoogleを批判しており、タチの悪いジョークです。P3Pが最早機能しないことは周知の事実で、ブラウザ関係者であれば尚更です。
補足すると
- 嘘のP3Pコンパクトポリシーをコピペするよりは「これはP3Pポリシーではありません、詳細はこちら」のほうが遥かにマシです。
-
IEでサードパーティCookieを有効にするための、マシな方法が他にはありません。 -
サードパーティCookieを必要とする機能を有効化するために、IEの「信頼済みゾーン」に指定することは大きな副作用を伴います。 -
他のブラウザ(Firefox,Chrome,Opera)であればドメイン単位でのCookie有効化を案内することができます。 - IEでサイトごとのCookie設定は → サイトごとのプライバシー操作で出来る
Wall Street Journalが発端となった過去の問題について
- あとでかく
この件を取り上げた日本のメディア
- あとでかく
まとめ
何が行われていて、どういったリスクがあるのか正確に報道されなければ正しい世論形成が行われなくなります。この件でまともな報道がなされたニュースサイトはほぼ皆無です。