1 ポイント 投稿者 GN⁺ 1 시간 전 | 1件のコメント | WhatsAppで共有
  • このページは、訪問直後の最初の数ミリ秒のあいだにブラウザが渡したデータだけを使って、位置情報、デバイス、ブラウザ、言語、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は訪問者自身へと徐々に絞り込まれていく構成を持つ
    • ページは MattRise Up Labs で制作し、その後のエディションは XBluesky に掲載予定である

1件のコメント

 
GN⁺ 1 시간 전
Hacker Newsの意見
  • その都市にはいない。かなり大まかに見ても、Linuxっぽいものの上でChromeっぽいものを動かしている程度で、私がいつ働いていつ寝ているかなんて誰にも推測できない。自分でもわからない
    最新の高級ディスプレイというのも5年前にスーパーで買った安物タブレットの画面だし、それでもブラウザーフィンガープリンティングはうっとうしい。ライトモードを検知できるなら、その設定も尊重してくれないのか?

    • このページが見せているフィンガープリンティングの量なんて、実際のWebで起きていることに比べれば大したことはない
    • バッテリー残量のパーセンテージも間違っていたし、充電状態も間違っていた。ライトモードを検知できるなら尊重してほしいというのもその通りだが、どうせそうしていても低コントラストのクソ画面だっただろう
    • 私を「Los Angelesにいる」と言っていたが、単にタイムゾーンがそっちなだけだ。入力言語が2つあるからといって何か「見破った」スコアを取ったかのように振る舞うが、ただ2つ目の言語をよく使うだけだ
      「English · Chinese」と表示して、ブラウザの主要言語と追加言語から育った場所や居住地、同居人までわかるかのように言っているが、英語と中国語の入力言語があるからといってそんなことはわからない。「携帯電話でインターネットを見るという事実は、携帯電話でインターネットに接続できる人だということを明らかにする」と言っているのと大差ない。技術は相互作用するもので、それが技術の動作原理だ。オーウェル的ではあるが、ロシアや中国、北朝鮮のような監視国家よりもっとオーウェル的かは別問題だ。位置共有で携帯・車・機器を探したり、オンライン活動で犯罪者を特定したり、犯罪や警察の説明責任が問われる事件を記録したりもできる。技術の過剰な侵害を災厄のように見るのは認知的な選択だが、私たちの技術が私たちについて何を「知っている」のかを認識するのはよいことだ
    • Apple Private Relay VPNを使っているので、位置は数百マイル外れていた。Webサイトやサービスが位置情報データベースで私をどこにいると見ているのか確認するのはいつも興味深いし、切ると数マイル以内に収まる。ありがたいことにApple VPNをブロックする場所はほとんどないので、切る必要はない
      ライトモードの話には本当に共感する。30代半ばだが、こういうダークモードのサイトのいくつかは自分を80代半ばのように感じさせる。このサイトは本当に何も見えない
    • 私も違う。Brusselsと出るが、実際にはAntwerpにいる。画面解像度も間違っていた
  • プライバシー擁護派には、せめて一度くらい普通に話してほしい。ブラウザがタイムゾーンにアクセスすることを邪悪な行為のように演出しても、誰も説得できない

    • 「暗いインターフェースを好みます — OSがそう伝えました。」って、設定が意図どおりに動作しただけなのに、それが怖いってことか?
    • 同意する。自分の言語、ダークモード使用の有無、タイムゾーンのような情報は、より良いユーザー体験のために使えるのであまり気にしない
    • 何でもドラマチックに聞こえるようにする典型的な短文LLM文体で、黒板を引っかく音みたいだ
    • でも世界中でこのタイムゾーンにいるのが私だけなら、私を一意に識別したことになる!
  • 情報が正確かどうかは本質ではない。クッキーなしでも私を識別する手段になることが本質だ。より良いサイトを探したら、EFFのものが有益だった
    私のブラウザーフィンガープリントは、過去45日の訪問者の中で一意だと出た: https://coveryourtracks.eff.org/

    • 「Web追跡に対して強力な保護があります」と表示される。JavaScriptを切らずにサイトが動作する状態でも、高度モードのFirefox + uBlock Originは愛さずにいられない
    • そういうサイトを何度も回したら、毎回一意ではないべきでは?
    • 少なくともヨーロッパでは、クッキーではなくフィンガープリンティングを使っていてもGDPRは依然として適用される。この情報を使うなら開示し、法律に沿ってデータを処理しなければならない
    • 「恐怖・不確実性・疑念が正確である必要はない」というのはちょっと変だ
    • それでも情報が不正確なほうがまだましだ。サイトが無礼に私を追跡しようとするなら、せめて私は彼らに一意なゴミデータを食わせられる
  • JavaScriptなしで訪れると、「JavaScriptが無効だと、このページはブラウザが何を公開したかを伝えられません。データは依然としてあります。公開も依然として起きています。止まるのは伝えることだけです。」と出る
    こういう大げさなLLM文体は非常に鼻につくが、おかげで完全に無視してよいという合図になっているので、その点だけはありがたい

  • 私が年を取ったからなのか、インターネットソフトウェアをほぼ30年やってきたからなのかわからないが、ここにあるどれも驚きでも心配でもない
    誰かが接続を受けるサーバーを立て、誰かがそのサーバーに接続要求を送る。そこには何の合意もなく、期待もルールも定められていない。サーバーがすべての接続要求を受ける必要もないし、誰かがそのサーバーに接続要求を送る必要もない。サーバーが何を返し、クライアントがそれをどう処理するかは各自の自由だ
    この合意、あるいは合意の不在は、双方に当てはまると感じる。Webサイトが接続要求の情報を好きなように使うことにユーザーが怒るべきではないと思うし、Webサイトも私が受け取ったデータを好きなように処理することに怒るべきではない。つまりWebサイトは私のIPアドレスや要求の詳細を好きなだけ記憶でき、私は返ってきたものを好きに扱える。広告をブロックしたり、サイトが指示した後続リクエストを拒否したり、レスポンスを望む形で表示したりできる。私がデータを要求し、向こうがデータを送ってきたのだ
    私について知られたくない情報があるなら、要求に載せて送るべきではない。広告を表示するときだけデータを与えたいなら、データを送る前にそう同意させるべきだ。もちろん現実には、ほとんどの人はブラウザが何をしているのか知らず、ブラウザが送る内容について実質的な選択肢も多くなく、インターネットはもはや生活の選択肢ではない。DDoSのようなもののせいで、完全な「何でもあり」構造も非現実的だ。それでも、インターネット要求をするときに双方にあまり多くを期待すべきではないという直感がある

    • これが根本問題だ。ブラウザはユーザーの代理人であるべきだ。名前からしてUser Agentだ。ユーザーのために動作すべきで、ユーザーはブラウザが何をしているかを知るべきであり、ブラウザはユーザーが理解し明示的に同意していないことをしてはならない。私のブラウザが何を送るかについての最終的な権限は私にあるべきで、ブラウザはその権限行使を取るに足らないほど簡単にすべきだ
      現実のブラウザは、誰か別の人の代理人だ。Web開発者のために働き、開発者の生活を楽にするあらゆるものを提供する。広告主のために働き、追跡の手がかりやフィンガープリンティングを提供する。ブラウザ開発者のために働き、計測値やテレメトリー、そのほか何だかわからないデータを集める。だがもう本当の意味で私のためには働いていない。私は車に乗ったただの乗客だ
      IPアドレスはブラウザが制御できるものではなく、Webサイトに接続するには避けられず明らかにしなければならないことは理解している。しかし、VPNなしのデフォルト状態でIPアドレスが国、州・県、ときには都市にまで安定してマッピングできるのは恐ろしい設計上の欠陥だ。IPの割り当て方における大きな設計問題だ。もっと良い世界なら、IPアドレスだけで誰かの地理的位置が明らかになるべきではない
    • 「残りもわかっています。表示しないことにしました。ほとんどのページはそうは選ばなかったでしょう」のような文言は、子どもを怖がらせるために書いたのかと思う。しかも表示されたものは私のインターネットプロバイダーですらない。おそらくISPの上位プロバイダーかもしれない
    • 私も年を取ったが、理想主義的だからか、こうした機能のかなりの部分は明確な目的のために追加されたと考えている
      クライアントが言語ヘッダーや対応フォント一覧を送るのは、サーバーに「このデータでやりたいことを全部やれ」と言う意味ではなかった。私たちが標準を作ったときには実際の理由があった。Webサイト提供者、より具体的には広告ネットワークがそれらを別の目的に使うと決めたのは、その暗黙の合意を破ることだ。もちろん、私が期待しすぎているのかもしれない
    • 位置は笑えるほど不正確だったし、ここに書く人間らしくその理由もわかる。IPアドレスを隠したのは少し子どもっぽかったが、下に行くほど良くなる
      私の携帯のバッテリー残量を把握していたし、デバイスについての推測も当たっていた。ジャイロスコープやタッチスクリーン操作を正確に読み取り、これらがどう識別や推論に使えるかも示していた。座っているか、立っているか、横になっているかのようなことまで可能だ。最初は退屈だが、後半になるほど面白かった
    • 私たちのような古い技術者は、今でも昔のWebの技術的リバタリアン的理想を信じたいのだと思う。だがそうするには、現代のWebの資本主義的・権威主義的理想をかなり無視しなければならない
      互いに何も負っていないというやり方は、たいていが善意の行為者だと仮定しても大体成立していた昔にはうまく機能した。だがインターネットの金と権力が現実になると、関係はより敵対的になった。信頼の前提と責任の不在は、一方が他方の善意を利用しやすくする。Webのサーバー・クライアント構造に内在する技術的・権力的な非対称性のため、濫用も一方向に流れやすい
  • サイトはきれいで、大げさな文言も面白いが、もっと良いフィンガープリンティングのデモはいくらでもある
    ここで見せているデータポイントの数は少ない。確認できるものはもっと多いし、そのかなりの部分は間違っているように見える。明示的に「withheld」と検知したのは1つだけだが、実際にはいくつか隠されていて出力が歪んでいるようだ。品質管理が必要だ

    • 大げさなトーンがかなり笑える。「あなたは[間違った都市]にいます。今すぐニンジャチームを送って殺すこともできますが、そうしないことにしました。感謝してください」みたいな感じだ
    • 要するにまたひとつのAI生成ごった煮プロジェクトだ。このUIスタイルはもう何十回も見たし、いつもそれとわかる冗長で大げさな文章が付いてくる
  • EFF Cover Your Tracksをバイブコーディングしたようなものだ。これがトップページに上がったことのほうが中身より怖い

    • そう。「これを目立たないように複製して、派手なランディングページのテーマを入れてくれ」と頼んだページのように見える。醜い
    • 登録21日のアカウントが投稿し、コメントも一度もしておらず、このスレッドも追っていない。返信したこともなく、これからもしないだろう。こういう投稿が通報されないことがHacker Newsを駄目にしている
  • ここで見られるものはもっと多い。スーパークッキーやフィンガープリンティングについての先行研究も多い
    https://coveryourtracks.eff.org/
    https://amiunique.org/

    • 興味深い。EFFサイトを回してみたら、いろいろな情報の中で自分が「MacIntel」と出た。まだFirefoxのx86ビルドを動かしていると思われたのかと驚いた
    • どちらも下部のSources & Confessionsモーダルにリンクされている。Cover Your Tracksはこの一連の取り組みの精神的祖先で、amiuniqueはより厳密だ。これはその私家版のいとこのようなものだ
    • 別の情報漏えい確認ツールもある: https://www.ipleak.com/full-report/
  • わあ、ChatGPTを使っている誰かがブラウザーヘッダーという概念を発見して、妙に「私たちはお伝えしないことにしました」みたいな文句を付けたようだ
    本当にブラウザが何を送っているか知りたいなら、ここを見ればいい:
    https://browserleaks.com/
    https://coveryourtracks.eff.org/

  • 「私たちはあなたの位置を要求していません。あなたの住所はあなたより先に届きました」はナンセンスだ。私のIPアドレスをキーに位置情報API/サービスへ照会したのだから、私の位置を要求したことになる
    それにインターネット通信が動作するにはIPはほぼ必須だ。隠してくれるサービスを使う方法もあるが、そうするとそのサービスが私の情報を持つことになる

    • いや。ブラウザには位置情報を要求する仕組みがあり、ここで言う「要求」はそれを実行しなかったという意味だ。ユーザーに尋ねなかったことが重要な点だ
      辞書があるなら、会話相手に聞いた単語の意味を必ず相手に尋ねなくても辞書で調べられる。単語が複数の意味を持っていたり口語だったりして、間違って推論するかもしれない。その不正確さを正すには、会話の文脈のような別のデータポイントが必要だったり、相手に直接確認を求めたりする必要がある
    • 読み違えていると思う。「誰にも聞かなかった」ではなく、ユーザーに直接聞かなかったという意味だ
      そして当然、住所が先に届く。そうでないと要求したデータを返せないからだ
    • Torのような多段ホッププロキシは、構造上、送信元IPと宛先IPを対応付けられないことで知られている