- ブラウザによる位置情報権限の要求は、単なるIPベースの位置推定ではなく、周辺のWi‑Fiアクセスポイント情報を利用した高精度な位置測定を行う
- この過程でブラウザは、**SSID、BSSID、信号強度(RSSI)**などのデータを収集し、Googleなどサービス提供者のデータベースと照合する
- これらのデータベースは、過去の**ワードライビング(wardriving)**やユーザー端末からの継続的なデータ送信を通じて構築されてきた
- 過去にはGoogle Street View車両による非暗号化データ収集事件など、プライバシー侵害を巡る論争が何度も発生した
- 今日ではほとんどの端末がデフォルトでこのシステムを使用しており、**BSSIDを登録するかSSIDに「_nomap」を追加して除外(opt-out)**できる
出席システムと位置確認
- Wisconsin大学のアルゴリズムの授業で使われたTopHatプラットフォームは、出席確認のために学生の実際の位置を検証する
- IPベースの位置推定は誤差が大きいため、TopHatはブラウザのGeolocation APIを使用する
- このAPIはユーザーに明示的な権限を求め、数メートル単位の精度で位置を把握する
Geolocation APIの動作方式
- Geolocation APIはGPS、IP、Wi‑Fiなどさまざまなソースを活用するが、**ノートPCなどGPS非搭載の端末ではWi‑Fi Positioning System(WPS)**が主に使われる
- ブラウザは
getCurrentPosition()呼び出し時に、周辺Wi‑Fi APのSSID、BSSID、信号強度を収集する
- BSSIDはMACアドレスベースの固有識別子で、これによって同じSSIDを持つ複数のネットワークを区別できる
- 収集された情報はGoogleなどの位置サービス提供者に送信され、蓄積済みのデータと比較して正確な位置を計算する
Wi‑Fi測位の歴史とデータ収集
- 2000年代初頭、Skyhook Wirelessが商用化した**ワードライビング(wardriving)**手法に始まる
- 車両にGPS受信機を搭載し、移動しながら周辺Wi‑Fiネットワークの位置と信号強度を記録した
- その後GoogleはStreet View車両を使ってWi‑Fi情報を収集し、AppleやMicrosoftなどもユーザー端末から自動収集する方式へ移行した
- 今日ではほとんどのスマートフォンやノートPCが、位置情報サービス有効時に周辺Wi‑Fi情報をメーカーのサーバーへ送信し、それを通じて他の端末の位置推定に活用されている
プライバシーとセキュリティを巡る論争
- Googleが2010年にStreet View車両で非暗号化HTTPデータ約600GBを収集していた事実が明らかになり、論争が発生した
- Microsoftの位置APIのバグにより、**ユーザーの移動経路を復元できた事例**も報告されている
- 2024年のMaryland大学の研究では、Apple位置情報サービスの脆弱性を利用して約20億件のBSSID位置情報を抽出できた
- この情報は、個人追跡や人口移動監視などに悪用される可能性がある
- 主要企業はその後APIのセキュリティを強化し、SSIDに「_nomap」を追加したりBSSIDを登録したりしてデータベースから除外できる機能を提供している
結論と公開データベース
- この技術は**Wi‑Fi Positioning System(WPS)**と呼ばれ、現在も活発に利用されている
- wigle.netは、25年間で約20億件のネットワークを収集したクラウドソーシング型の公開データベースで、ユーザーは自分のネットワークが登録されているか確認できる
- **beacondb.net**は、パブリックドメインベースの無線位置データベースで、商用サービスとは異なる独立したデータセットを提供する
- ノートPCが正確に位置を把握できる理由は、無数のユーザーが無意識のうちに提供したWi‑Fiデータのおかげである
- 講義の出席確認でさえ、このような集団的なデータ蓄積の成果の上で動いている
1件のコメント
Hacker Newsのコメント
私は Firefox の設定で、自宅近くの特定の場所に位置を固定している
user_pref("geo.provider.network.url", 'data:application/json,{"location": {"lat": 45.0, "lng": -122.0}, "accuracy": 128.0}');こうしておけば Wi-Fi データが外部に漏れないと考えている
たとえば
geo.provider.use_corelocation、geo.provider.use_geoclue、geo.enabledなどをfalseに設定する必要があるまた、
geo.provider.testingをtrueにする必要があるかもしれない関連リンク: Bugzilla issue, StackOverflow, Security StackExchange
Chrome 版, Firefox 版
以前 Zoom の競合企業で働いていたとき、参加者が同じ部屋にいるかを検出する機能を試していた
各ノート PC が固有の高周波音を出し、互いの信号を聞き取る仕組みだった
研究室ではうまくいったが、現実では失敗した。それでも面白い試みだった
背景雑音、フィードバック、スピーカー音などで会議が台無しになる
関連記事: Science.org
私は最近 where-am-i という小さな CLI を作ってみた
GitHub リンク
屋内では GPS がひどく不安定なので、こうしたジオロケーション技術は本当に有用だと感じる
/usr/libexec/geoclue-2.0/demos/where-am-iというデモもある今どきの賢いコンピュータサイエンスの学生なら、たぶんWi-Fi 環境を中継するプロキシアプリを Android スマホで動かしているだろう
友人がブラウザプラグインや Linux のハックでそのデータを受け取り、位置を偽装するような形で
教室の座標さえ分かっていればよい
私の PC には無線接続がないので、Geolocation API はいつも失敗する
そのせいで授業の出席確認から弾かれていたかもしれない
ブラウザを改造して偽の位置を返すようにすることもできそうだ
後になって Firefox の設定で解決できると知って、拍子抜けした
管理者権限があれば位置スプーフィングが可能なのか気になる
たとえば友人がいる教室の SSID/BSSID 一覧を複製して、自分がそこにいるように見せかける実験をしてみたい
30 秒ほどしてようやく正しく修正された
これは昔の大学時代の**クリッカー(clicker)**システムの現代版のようだ
友人に預けて出席を代行させる「パッチ不能な戦略」は今でも通用する
私は Symbian を長く使っていたが、こういうWi-Fi スキャンの慣行があることを最近まで知らなかった
Google Street View の車が自分のルーターをスキャンするのは構わないが、自分のスマホがこっそり自分を追跡するのは不快だ
GrapheneOS のような Android フォークなら、こうしたことを防いでくれると期待している
オーストリアで学んでいたとき、大学は学生をほぼ自主性に任せていた
出席の強制は理解できない。試験にさえ合格すればいいのではないかと思う
実験系の授業は例外だが、参加しなければすぐに分かる
結局のところ、学校のレベルと学生の自主性による
その代わり実験プロジェクトはチーム単位で進むので、参加しなければ結果を得られなかった
奨学金、出席と成績の相関グラフなどのデータが必要だからだ
ただし基本的には学生は大人なので、学習は本人の責任だと思っている
この技術はすでに20年以上広く使われている
GPS は正確だが遅く、屋内や都市環境では不安定だ
一方で Wi-Fi データは豊富で、1 秒以内に正確な位置を取得できる