GDIDとは何か、どう生成されるのか

Global Device Identifier(GDID)は、WindowsをMicrosoftアカウントでプロビジョニングした際に割り当てられる永続的なIDです。生成の流れは複数のWindowsサービスが連携する形になっています。

  • wlidsvc サービスが login.live.com にDevice PUIDを要求する
  • Connected Devices PlatformがそのPUIDをMicrosoftのDevice Directory Serviceに登録する
  • Delivery Optimizationが、PCがアップデートを共有・ダウンロードするたびにGDIDをMicrosoftへ報告する

このIDはレジストリの HKCU\SOFTWARE\Microsoft\IdentityCRL\ExtendedProperties に、小文字の「g」を先頭に付けた10進数の形式で保存されます。Windowsのアップデートをまたいでも維持される一方、クリーンインストールを行うとリセットされます。

MicrosoftはAzure Monitorのドキュメントで「Microsoft内部で使用する識別子」とだけ一文で説明しており、公開ドキュメント上の記載はそれだけです。

FBIはGDIDを使ってどう容疑者を追跡したか

今回この識別子の存在が公になったのは、Scattered Spiderのメンバーとされるピーター・ストークス容疑者に対する連邦起訴状がきっかけです。起訴状によれば、GDID「g:6755467234350028」は、Tzulo VPNプロキシ経由で攻撃用アカウントが作成されたのと同じタイミングでngrokのサインインページにアクセスしていました。その3時間後には、同じGDIDが同じプロキシ経由で被害を受けた小売業者のサイトにアクセスしていたことも記録されています。

このGDIDはさらに、容疑者のSnapchat・Facebook・Apple・Ubisoftの各アカウントに紐づくIPアドレスとも突き合わされ、エストニア・ニューヨーク・タイなど複数の国での行動履歴と一致しました。VPNのIPアドレスは頻繁に変わりますが、Windows端末自体が報告し続けるGDIDは変わらないため、捜査側にとって有効な手がかりになったとのことです。

プライバシー研究者が指摘する4つの懸念

複数のセキュリティ研究者が、GDIDの可視性とユーザー側の制御の欠如について懸念を示しています。

比較項目 GDID(Windows) 広告ID(Apple/Android)
割り当て時の同意画面 なし あり(Apple はApp Tracking Transparencyで明示)
リセット手段 ユーザーに提供されていない 提供されている
公開ドキュメント Azure Monitorの一文のみ 開発者向けに詳細な仕様を公開

Microsoft Activation Scriptsの開発チームMassgraveも、Windowsのセットアップ時にハードウェア情報を送信し、その見返りにライセンス認証やUWPアプリで使われる識別子を受け取る仕組みになっていると指摘しています。GDIDの割り当てを止めようとすると、ライセンス認証自体が壊れてしまう設計です。

端末を再インストールすればGDID自体は新しくなりますが、同じMicrosoftアカウントで再びサインインすれば、Microsoft側には新旧のIDを結びつける手がかりが残ります。

普段からGCPやBigQueryを扱っている身としては、クラウドサービス側がユーザーの同意なしに永続的な識別子を発行し続けている構造そのものに既視感があります。自分のプロダクトで識別子を設計する際は、せめてリセット手段くらいは用意しておきたいと感じました。

セキュリティ研究者の受け止め

セキュリティ研究者のMatthew Hickey氏は、こうした挙動を踏まえてWindowsの現状を「監視的」だと表現しています。今回はFBIの捜査という文脈で明るみに出ましたが、同じ識別子が捜査目的以外でどこまで利用され得るのかは、ドキュメントが一文しかない以上、外部からは検証しようがない状態です。