USBストレージデバイスを取り外した後もWindowsが記憶している理由

古いPCを寄付したり売却したりする際、Windowsに個人情報が残るのではないかと心配する人は少なくありません。よくある疑問の一つは、PCをリセットすれば保存データが削除されるのか、またWindowsが過去に接続されたデバイスの情報を密かに保持しているのかという点です。
ソーシャルメディアでは、WindowsがPCに接続されたすべてのUSBデバイスの記録を永久に保持すると主張する投稿が見られます。この主張の背景には実際のWindowsの動作がありますが、拡散されている投稿では、実態よりもはるかに侵害的な機能であるかのように説明されがちです。

LinuxやmacOSも、ハードウェア情報やシステムログを保持します。MSは、このWindowsの動作について10年以上前から文書化しています。
ここでは、WindowsがUSBドライブについて保存する情報、その情報を保持する理由、記録を確認する方法、PCをリセットした際に何が起こるのかを解説します。
WindowsがUSBドライブの情報を保持する理由
MSは2012年、USBストレージデバイスが挿入されると、Windowsがそのデバイスの識別と構成に必要な情報を含むUSBSTORレジストリキーを作成すると説明しています。
レジストリの場所は次のとおりです。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
ストレージデバイスが短時間しか接続されなかった場合でも、Windowsはデバイスのレジストリ情報を作成します。切断されたデバイスが一時的に取り外されたのか、永久に取り外されたのかをWindows側で判断できないため、情報のクリーンアップは別のソフトウェアに委ねられることがあります。
USBドライブが取り外されても、Windowsには後で再接続されるかどうかが分かりません。そのため、プラグ アンド プレイはデバイスインスタンスを保持し、次回接続されたときに、より効率よくドライブを認識して構成できるようにします。
MSは、物理的には切断されているもののレジストリエントリが残っているデバイスを、存在しないデバイスまたはファントムデバイスと呼んでいます。デバイス マネージャーで表示 > 非表示のデバイスの表示を選択すると確認できます。

USBSTORは、PCに接続されたすべてのUSB周辺機器の一覧ではありません。これは、Usbstor.sysドライバーで管理される大容量記憶装置に適用されます。またWindowsは、ストレージ性能の向上を目的とした、より新しいUSB Attached SCSIプロトコル対応デバイス向けに、別のUaspstor.sysドライバーも使用します。
USBキーボード、Webカメラ、マウス、マイクは、USB接続を使用しているという理由だけでUSBSTORに表示されることはありません。

この動作はWindowsだけに見られるものではありません。Linuxはudevを使用して処理済みデバイスのデータベースを維持し、macOSはIOKitを通じてハードウェア情報を保持するとともに、統合ログシステムでシステムイベントを記録します。OSには、ハードウェアの識別、適切なドライバーの読み込み、トラブルシューティングの支援を行うために、こうした情報が必要です。
Windowsが以前接続されたUSBストレージデバイスを記憶していることは事実ですが、重要なのは実際にどのような情報が保持されるのかという点です。
WindowsがUSBドライブについて把握している情報
Windowsは、SanDisk Ultra USB Deviceのような読み取り可能なデバイス名と、デバイスから報告された情報に基づくハードウェア識別子やインスタンス識別子を保存する場合があります。
ハードウェアによっては、次のような情報が保持されることがあります。
デバイス名とハードウェア識別子。
シリアル番号または接続場所の情報。
デバイスが最初に構成された日時。
直近の接続日時または取り外し日時。
ボリュームに割り当てられたドライブ文字。
ただし、ここで取り上げているUSBSTORの記録には、ドライブに保存されているファイルの一覧は含まれません。また、その記録だけでは、ファイルがコピーされたかどうかも分かりません。「最近使った項目」やリムーバブルストレージの監査など、Windowsの別の機能によって異なる証拠が残る場合はあります。
USBSTORレコードを照会する
USBSTORレコードを確認するには、Windows PowerShellを開いて次のコマンドを実行します。
reg query "HKLM\SYSTEM\CurrentControlSet\Enum\USBSTOR" /s
/sオプションを指定すると、USBSTOR配下のすべてのサブキーが照会されます。各モデルキーには、1つ以上のデバイスインスタンスのサブキーが含まれています。デバイスによっては、インスタンス識別子にシリアル番号や接続場所の情報が含まれる場合があります。
デバイス名だけでは、特定の1台の物理ドライブが接続されたことを証明できません。複数のドライブが同じハードウェア識別子を共有することがあり、USBデバイスにはシリアル番号の報告も義務付けられていないためです。
見やすいデバイス一覧を作成する
PowerShellのプラグ アンド プレイ用コマンドレットを使うと、より見やすい一覧を作成できます。
Get-PnpDevice -Class DiskDrive |
Where-Object { $_.InstanceId -like 'USBSTOR\*' } |
Format-List Status, FriendlyName, InstanceId
Get-PnpDeviceは、現在接続されていないデバイスも含め、プラグ アンド プレイが認識しているデバイスを表示します。-PresentOnlyを追加すると、現在接続されているハードウェアだけに結果を絞り込めます。
この動作を確認するには、USBドライブを接続して最初のコマンドを実行し、そのInstanceIdを控えます。ドライブを安全に取り出して切断した後、元のコマンドと次のコマンドを実行します。
Get-PnpDevice -PresentOnly -Class DiskDrive |
Format-List FriendlyName, InstanceId
Windowsが記録を保持している場合、そのドライブは-PresentOnlyの結果からは消えますが、より広範なプラグ アンド プレイの一覧には残ります。
デバイスのタイムスタンプを確認する
利用可能なタイムスタンプを確認するには、完全なインスタンス識別子を$deviceIdに代入し、次のコマンドを実行します。
$deviceId = 'PASTE_THE_FULL_INSTANCE_ID_HERE'
Get-PnpDeviceProperty -InstanceId $deviceId |
Where-Object { $_.KeyName -match '_(FirstInstallDate|InstallDate|LastArrivalDate|LastRemovalDate)$' } |
Format-List KeyName, Data
FirstInstallDateは、Windowsがそのデバイスインスタンスを最初にインストールした日時を示します。
InstallDateは、最後にインストールされた日時を示し、ドライバーの更新後に変更される場合があります。
LastArrivalDateとLastRemovalDateには、該当する最新の値だけが記録されます。
これらのフィールドから、USBドライブが接続または取り外されたすべての履歴を確認することはできません。
SetupAPIログを確認する
Windowsは、デバイスのインストール処理も次の場所にあるプレーンテキスト形式のSetupAPIログへ記録します。
%SystemRoot%\INF\setupapi.dev.log
選択したデバイスをログ内で検索するには、次のPowerShellコマンドを使用します。
Select-String -Path "$env:SystemRoot\INF\setupapi.dev.log" -SimpleMatch -Pattern $deviceId -Context 3,12
一致するエントリがあれば、SetupAPIがそのデバイスのインストールイベントを記録したことを示します。ただし、以降のすべての接続を網羅した完全な記録と解釈すべきではありません。
永続的なドライブ文字のマッピングを確認する
次のレジストリ照会では、マウントマネージャーの永続的な名前データベースを表示できます。
reg query "HKLM\SYSTEM\MountedDevices"
このデータベースは、ボリュームとドライブ文字の対応関係を記録しており、現在は接続されていないボリュームの名前が残っている場合もあります。\DosDevices\F:のようなエントリだけでは、そのバイナリデータを対象デバイスのボリュームと照合しない限り、特定のSanDiskドライブを識別できません。
USBデバイスの記録を削除する方法
保持されているデバイスエントリを削除するには、デバイス マネージャーを開き、表示 > 非表示のデバイスの表示を有効にします。次に、グレー表示されたドライブを右クリックし、デバイスのアンインストールを選択します。

MSによると、デバイスをアンインストールすると、そのデバイスのレジストリキーは自動的に削除されます。IT管理者は、MSのDevNodeCleanユーティリティを使用して、ファントムストレージのエントリを一括削除することもできます。
USBSTORのレジストリキーを手動で削除しないでください。これらのエントリを誤って削除するとUSB機能が破損し、PCが使用できなくなる可能性があります。
Windowsをリセットすると、これらの記録は削除されるのか
MSは、PCを売却、寄付、リサイクル、または新しい所有者へ譲渡する場合、リセット時にすべて削除するオプションを使用することを推奨しています。このオプションではWindowsが再インストールされ、個人用ファイル、アプリ、設定が削除されます。OS自体が再インストールされるため、以前のWindows環境にあったUSBSTORの記録が引き継がれることは通常ありません。
ただし、重要な制限があります。標準のリセットではWindowsボリュームはフォーマットされず、ユーザーファイルが個別に削除されます。PCを譲渡する前に、設定の変更でデータのクリーニングを有効にしてください。MSによると、この設定により、削除されたファイルを第三者が復元することが難しくなります。ただし、政府機関や業界のデータ消去基準を満たすものではありません。
PCに追加のパーティションやドライブがある場合は、すべてのドライブからファイルを削除するオプションも選択してください。
Windowsは、正当な技術上の理由からさまざまなメタデータを保持しています。その一例がファイルシステムのトンネリングです。これは、最近削除されたファイルと同じ名前で新しいファイルを作成した際、削除済みファイルの作成日時が新しいファイルに割り当てられる場合がある仕組みです。適切に構成したすべて削除するリセットでは、以前のWindows環境とそのデータが削除されますが、あらゆるデータを完全に消去するフォレンジック対策と見なすべきではありません。
USBの記録でファイルがコピーされたことを証明できるのか
いいえ。USBSTORのエントリだけでは、データ窃取やファイルコピーを証明できません。Windowsが特定のストレージデバイスを認識したことは示せても、どのファイルがコピーされたのか、情報がデバイスへ書き込まれたのかデバイスから読み出されたのか、誰が物理的に接続したのかまでは特定できません。
Windowsでは、リムーバブル記憶域の監査ポリシーを使用してリムーバブルストレージ上のファイルアクセスを監査でき、イベントID 4663などのイベントが生成される場合があります。ただし、このポリシーは対象となる操作が行われる前に有効化されている必要があります。後から有効にしても、過去のファイルアクセス記録を復元することはできません。

拡散されている主張が正しいのは、他の主要なデスクトップOSと同様に、WindowsもUSBストレージデバイスを取り外した後にその情報を記憶している場合がある、という限定的な意味においてのみです。USBSTORの記録にはドライブ内のファイルは含まれず、それだけで誰かがデータをコピーしたことを証明することもできず、永久に残るものでもありません。別の監査記録やその他のフォレンジック証拠からファイル操作が判明する場合はありますが、それらの情報はUSBSTORのデバイス記録とは別のものです。