ブラウザが教えてくれたすべての情報を表示するWebページ
(sinceyouarrived.world)- このページは、訪問直後の最初の数ミリ秒のあいだにブラウザが渡したデータだけを使って、位置情報、デバイス、ブラウザ、言語、GPU、バッテリー、フォント、ユーザーの設定などを表示し、エクスプロイトやハッキングは行わず、公開され文書化された標準機能のみを使用している
- すべてのリクエストヘッダーに含まれる IPアドレス を ip-api.com · Free tier · CC-BY-SA に送り、都市名とインターネットプロバイダー名に変換しており、照会結果は保存せず、画面には一部のオクテットだけを表示するが、残りも把握できると明記している
- フォントフィンガープリント はレンダリングされたテキストの幅からインストール済みフォントを検出し、Electronic Frontier Foundation · Cover Your Tracks はブラウザの固有性を確認するツールを提供しており、2014年のPrinceton研究では上位100,000サイトの5%で キャンバスフィンガープリント が見つかっている
- ページ上では実行していないが、単一のユーザージェスチャーで最後にコピーした内容の読み取りを要求できる Clipboard API、バッテリー残量と放電時間から最大30分追跡できる可能性を示した「The Leaking Battery」、faviconでログイン済みサイトを検出する手法が存在する
- サーバーへ送られたのは 到着 と 完了 の2つの匿名イベントだけで、
cookies,localStorage,sessionStorage,IndexedDB, サービスワーカーのキャッシュには何も保存せず、タブを閉じると訪問者を忘れると明記している
ブラウザが到着直後に渡した情報
- taken. のすべての観測は、訪問直後の最初の数ミリ秒のあいだに訪問者のブラウザから得られたデータであり、エクスプロイト・脆弱性・ハッキングなしに、公開され文書化された標準機能だけを使っている
-
位置情報
- すべてのリクエストヘッダーに含まれる IPアドレス を ip-api.com · Free tier · CC-BY-SA に送り、都市名とインターネットプロバイダー名へ変換している
- 照会は一時的なもので、どちら側にも保存されず、画面にはIPの最初と最後のオクテットのみを表示するが、残りも分かると明記している
- GDPRでは、IPアドレスは追跡に使われる場合に個人情報と見なされ得るが、taken.は追跡・保管・ログ記録を行わない
-
ブラウザAPI
- 画面、ブラウザ、言語、GPU、コア数、バッテリー、フォント、ユーザー設定といったデバイスの観測値は、MDN Web Docs · Mozilla · CC-BY-SA 2.5 で公開・文書化されている標準JavaScript APIから取得している
- これはブラウザの設計どおりに可能な動作であり、「問題は設計そのものだ」という結論につながる
-
フォントとキャンバスフィンガープリント
- レンダリングされたテキストの幅からインストール済みフォントを検出する フォントフィンガープリント 手法は2010年から文書化されており、Electronic Frontier Foundation · Cover Your Tracks はブラウザがどれほど固有かを確認するツールを提供している
- ほとんどのブラウザは、クッキーがなくてもオープンWeb上で追跡できるほど固有であり、フォントの組み合わせはその中でも最も強いシグナルの1つである
- Princeton University · Web Transparency & Accountability Project の2014年研究は、キャンバスフィンガープリント を実際のWebで初めて文書化し、上位100,000サイトの5%で発見した
- キャンバスフィンガープリントは、訪問者のブラウザに隠し画像を描画させたうえで、レンダリングされたピクセルを識別子として読み戻す方式であり、taken.はこの手法を実行していないが、ブラウザは対応している
-
クリップボードとバッテリー
- MDN · Clipboard API specification によれば、クリックやタップのような単一のユーザージェスチャーによって、ページは最後にコピーした内容の読み取りを要求できる
- 最後にコピーした内容は、パスワード、住所、下書きメッセージかもしれず、taken.は要求していないが、機能自体は最新ブラウザに存在する
- Olejnik、Englehardt、Narayananによる2015年の論文「The Leaking Battery」は、バッテリー残量と放電時間の組み合わせだけで、クッキーやアカウントなしに複数のWebサイトをまたいで最大30分間、訪問者を追跡できることを示した
- Firefoxは2016年にこのAPIを削除したが、ChromeとEdgeは依然として公開している
実行しなかった手法と残さなかったデータ
-
ログイン済みサイトの検出
- taken.は実行していないが、ブラウザに特定サービスのfavicon URLを読み込ませ、成功・失敗を観測することで、どのサイトにログインしているかを検出する手法は、文書化されており、合法で、広く流通している
- ログイン状態とログアウト状態で異なる画像が返る差を利用し、許可なくFacebook、Google、X、GitHub、Reddit、LinkedInなど複数サービスへのログイン有無を知ることができる
-
ブラウザ内で計算したバーコード
- カウントの下に表示される 16本の線 は、GPU、フォント、画面サイズ、言語、タイムゾーン、OS、ブラウザ、色深度から導かれた高さで構成される
- 同じデータは同じバーコードを作り、異なる訪問者は異なるバーコードを見ることになり、計算はブラウザ内でのみ行われ、送信されない
- まったく同じフィンガープリントを持つ人がいれば同じバーを見るが、その可能性は低い
-
文章の生成方法
- すべての文章はMattが自分で書いており、実行時に言語モデルが文章を書いたり修正したりはしない
- コードは、ブラウザが返した値に応じて、あらかじめ書かれた文章テンプレートの1つを選び、人間が書いた文章で扱えない条件であれば何も言わないように作られている
-
サーバーへ送ったもの
- サーバーへ送られたイベントは 到着 と 完了 の2つの匿名イベントだけで、クッキー・識別子・保存されたIPはない
- サーバーは各リクエストの本文を破棄し、何も返さず、リクエストがあったというトランスポート層の記録は、ホスティング事業者の標準保存期間である通常数日間、ログに残る可能性がある
- ほとんどのサイトは広告事業者、フィンガープリント収集者、セッションリプレイツール、タグマネージャーに数百の追加ビーコンを送るが、taken.は自前のサーバーへ2つだけ送り、その事実を知らせている
-
デバイスに保存したもの
cookies,localStorage,sessionStorage,IndexedDB, サービスワーカーのキャッシュには何も保存しない- 画面に表示されたデータはブラウザ内で計算され、IPジオロケーション照会と2つの匿名イベントを除けば、デバイスの外へ出ない
- タブを閉じるとtaken.は訪問者を忘れ、ソース公開とともに「ほとんどのページはそう言えない」と締めくくっている
-
シリーズの文脈と制作
- Vol. Iは訪問者が滞在しているあいだに世界で起きたこと、Vol. IIは見逃した空、Vol. IIIは足元にすでにあったもの、Vol. IVは訪問者自身へと徐々に絞り込まれていく構成を持つ
- ページは Matt が Rise Up Labs で制作し、その後のエディションは X と Bluesky に掲載予定である
1件のコメント
Hacker Newsの意見
その都市にはいない。かなり大まかに見ても、Linuxっぽいものの上でChromeっぽいものを動かしている程度で、私がいつ働いていつ寝ているかなんて誰にも推測できない。自分でもわからない
最新の高級ディスプレイというのも5年前にスーパーで買った安物タブレットの画面だし、それでもブラウザーフィンガープリンティングはうっとうしい。ライトモードを検知できるなら、その設定も尊重してくれないのか?
「English · Chinese」と表示して、ブラウザの主要言語と追加言語から育った場所や居住地、同居人までわかるかのように言っているが、英語と中国語の入力言語があるからといってそんなことはわからない。「携帯電話でインターネットを見るという事実は、携帯電話でインターネットに接続できる人だということを明らかにする」と言っているのと大差ない。技術は相互作用するもので、それが技術の動作原理だ。オーウェル的ではあるが、ロシアや中国、北朝鮮のような監視国家よりもっとオーウェル的かは別問題だ。位置共有で携帯・車・機器を探したり、オンライン活動で犯罪者を特定したり、犯罪や警察の説明責任が問われる事件を記録したりもできる。技術の過剰な侵害を災厄のように見るのは認知的な選択だが、私たちの技術が私たちについて何を「知っている」のかを認識するのはよいことだ
ライトモードの話には本当に共感する。30代半ばだが、こういうダークモードのサイトのいくつかは自分を80代半ばのように感じさせる。このサイトは本当に何も見えない
プライバシー擁護派には、せめて一度くらい普通に話してほしい。ブラウザがタイムゾーンにアクセスすることを邪悪な行為のように演出しても、誰も説得できない
情報が正確かどうかは本質ではない。クッキーなしでも私を識別する手段になることが本質だ。より良いサイトを探したら、EFFのものが有益だった
私のブラウザーフィンガープリントは、過去45日の訪問者の中で一意だと出た: https://coveryourtracks.eff.org/
JavaScriptなしで訪れると、「JavaScriptが無効だと、このページはブラウザが何を公開したかを伝えられません。データは依然としてあります。公開も依然として起きています。止まるのは伝えることだけです。」と出る
こういう大げさなLLM文体は非常に鼻につくが、おかげで完全に無視してよいという合図になっているので、その点だけはありがたい
私が年を取ったからなのか、インターネットソフトウェアをほぼ30年やってきたからなのかわからないが、ここにあるどれも驚きでも心配でもない
誰かが接続を受けるサーバーを立て、誰かがそのサーバーに接続要求を送る。そこには何の合意もなく、期待もルールも定められていない。サーバーがすべての接続要求を受ける必要もないし、誰かがそのサーバーに接続要求を送る必要もない。サーバーが何を返し、クライアントがそれをどう処理するかは各自の自由だ
この合意、あるいは合意の不在は、双方に当てはまると感じる。Webサイトが接続要求の情報を好きなように使うことにユーザーが怒るべきではないと思うし、Webサイトも私が受け取ったデータを好きなように処理することに怒るべきではない。つまりWebサイトは私のIPアドレスや要求の詳細を好きなだけ記憶でき、私は返ってきたものを好きに扱える。広告をブロックしたり、サイトが指示した後続リクエストを拒否したり、レスポンスを望む形で表示したりできる。私がデータを要求し、向こうがデータを送ってきたのだ
私について知られたくない情報があるなら、要求に載せて送るべきではない。広告を表示するときだけデータを与えたいなら、データを送る前にそう同意させるべきだ。もちろん現実には、ほとんどの人はブラウザが何をしているのか知らず、ブラウザが送る内容について実質的な選択肢も多くなく、インターネットはもはや生活の選択肢ではない。DDoSのようなもののせいで、完全な「何でもあり」構造も非現実的だ。それでも、インターネット要求をするときに双方にあまり多くを期待すべきではないという直感がある
現実のブラウザは、誰か別の人の代理人だ。Web開発者のために働き、開発者の生活を楽にするあらゆるものを提供する。広告主のために働き、追跡の手がかりやフィンガープリンティングを提供する。ブラウザ開発者のために働き、計測値やテレメトリー、そのほか何だかわからないデータを集める。だがもう本当の意味で私のためには働いていない。私は車に乗ったただの乗客だ
IPアドレスはブラウザが制御できるものではなく、Webサイトに接続するには避けられず明らかにしなければならないことは理解している。しかし、VPNなしのデフォルト状態でIPアドレスが国、州・県、ときには都市にまで安定してマッピングできるのは恐ろしい設計上の欠陥だ。IPの割り当て方における大きな設計問題だ。もっと良い世界なら、IPアドレスだけで誰かの地理的位置が明らかになるべきではない
クライアントが言語ヘッダーや対応フォント一覧を送るのは、サーバーに「このデータでやりたいことを全部やれ」と言う意味ではなかった。私たちが標準を作ったときには実際の理由があった。Webサイト提供者、より具体的には広告ネットワークがそれらを別の目的に使うと決めたのは、その暗黙の合意を破ることだ。もちろん、私が期待しすぎているのかもしれない
私の携帯のバッテリー残量を把握していたし、デバイスについての推測も当たっていた。ジャイロスコープやタッチスクリーン操作を正確に読み取り、これらがどう識別や推論に使えるかも示していた。座っているか、立っているか、横になっているかのようなことまで可能だ。最初は退屈だが、後半になるほど面白かった
互いに何も負っていないというやり方は、たいていが善意の行為者だと仮定しても大体成立していた昔にはうまく機能した。だがインターネットの金と権力が現実になると、関係はより敵対的になった。信頼の前提と責任の不在は、一方が他方の善意を利用しやすくする。Webのサーバー・クライアント構造に内在する技術的・権力的な非対称性のため、濫用も一方向に流れやすい
サイトはきれいで、大げさな文言も面白いが、もっと良いフィンガープリンティングのデモはいくらでもある
ここで見せているデータポイントの数は少ない。確認できるものはもっと多いし、そのかなりの部分は間違っているように見える。明示的に「withheld」と検知したのは1つだけだが、実際にはいくつか隠されていて出力が歪んでいるようだ。品質管理が必要だ
EFF Cover Your Tracksをバイブコーディングしたようなものだ。これがトップページに上がったことのほうが中身より怖い
ここで見られるものはもっと多い。スーパークッキーやフィンガープリンティングについての先行研究も多い
https://coveryourtracks.eff.org/
https://amiunique.org/
わあ、ChatGPTを使っている誰かがブラウザーヘッダーという概念を発見して、妙に「私たちはお伝えしないことにしました」みたいな文句を付けたようだ
本当にブラウザが何を送っているか知りたいなら、ここを見ればいい:
https://browserleaks.com/
https://coveryourtracks.eff.org/
「私たちはあなたの位置を要求していません。あなたの住所はあなたより先に届きました」はナンセンスだ。私のIPアドレスをキーに位置情報API/サービスへ照会したのだから、私の位置を要求したことになる
それにインターネット通信が動作するにはIPはほぼ必須だ。隠してくれるサービスを使う方法もあるが、そうするとそのサービスが私の情報を持つことになる
辞書があるなら、会話相手に聞いた単語の意味を必ず相手に尋ねなくても辞書で調べられる。単語が複数の意味を持っていたり口語だったりして、間違って推論するかもしれない。その不正確さを正すには、会話の文脈のような別のデータポイントが必要だったり、相手に直接確認を求めたりする必要がある
そして当然、住所が先に届く。そうでないと要求したデータを返せないからだ