Share via


BitLocker の対策

Windows は、TPM、セキュア ブート、トラスト ブート、および起動時マルウェア対策 (ELAM) などのテクノロジを使用して、BitLocker の暗号化キーへの攻撃を防ぎます。

BitLocker は、暗号化テクノロジを使ってモバイル データを保護する戦略的な方法の一部です。紛失または盗難にあったコンピューター上のデータは、ソフトウェア攻撃ツールの実行による未承認のアクセス、またはコンピューターのハード ディスクを別のコンピューターに転送することによる未承認のアクセスに対して脆弱です。現在の BitLocker は、オペレーティング システム起動前に、紛失または盗難にあったコンピューター上のデータへの未承認のアクセスを軽減します。

  • コンピューター上のハード ドライブの暗号化。たとえば、オペレーティング システム ドライブ、固定データ ドライブ、またはリムーバブル データ ドライブ (USB フラッシュ ドライブなど) に対して BitLocker を有効にできます。オペレーティング システム ドライブに対して BitLocker を有効にすると、スワップ ファイルやハイバネーション ファイルなど、オペレーティング システム ドライブ上のすべてのシステム ファイルを暗号化します。

  • 初期ブート コンポーネントおよびブート構成データの整合性の確保。TPM バージョン 1.2 以降が搭載されたデバイスでは、BitLocker は TPM の高度なセキュリティ機能を使い、コンピューターのブート コンポーネントが変更されていない場合、さらに暗号化されたディスクが元のコンピューター内に格納されている場合にのみ、データにアクセスできます。

次のセクションでは、起動前、プリブート中、起動中、起動後の 4 つの異なる起動段階において、BitLocker 暗号化キーに対する攻撃から守るために Windows が使うさまざまなテクノロジについて詳しく説明します。

起動前の保護

Windows の起動前は、TPM やセキュア ブートなどのデバイス ハードウェアの一部として実装されたセキュリティ機能に依存する必要があります。さいわい、最近の多くのコンピューターには TPM の機能が装備されています。

トラステッド プラットフォーム モジュール

システムの保護はソフトウェアだけでは不十分です。攻撃者によってソフトウェアが侵害されたら、このソフトウェアはセキュリティの侵害を検出できなくなる場合があります。そのため、1 つのソフトウェアの侵害に成功すると、検出されることのない信頼できないシステムが生まれてしまいます。ただし、ハードウェアの変更は非常に難しくなります。

TPM は、主に暗号化キーなど、基本的なセキュリティ関連の機能を提供するように設計されたマイクロチップです。通常、TPM はコンピューターのマザーボードにインストールされており、ハードウェア バスを経由してシステムの他の部分と通信します。物理的には、TPM は改ざんを防止するように設計されています。攻撃者がチップからデータを物理的に直接取得しようとする場合、その過程でチップが破棄される可能性があります。

BitLocker 暗号化キーを TPM と組み合わせて、デバイスを適切に構成することで、攻撃者は、承認済みユーザーの資格情報を入手せずに、BitLocker で暗号化されたデータにアクセスすることはほぼ不可能になります。そのため、TPM が搭載されたコンピューターは、BitLocker の暗号化キーを直接取得しようとする攻撃を的確に防御します。

TPM について詳しくは、「トラステッド プラットフォーム モジュール」をご覧ください。

UEFI とセキュア ブート

オペレーティング システムがオフラインの場合、デバイスを保護できるオペレーティング システムは何もありません。そのため、Microsoft は、暗号化ソリューションの暗号化キーを侵害する可能性のあるブートとルートキットにファームウェア レベルの保護を求めるハードウェア ベンダーと緊密に連携しました。

UEFI は、BIOS の代わりに導入されたプログラム可能なブート環境で、過去 30 年間、ほとんどの部分が変更されずに維持されています。BIOS と同様に、PC は他のどのソフトウェアよりも先に UEFI を起動します。UEFI はデバイスを初期化し、その後、オペレーティング システムのブートローダーを起動します。UEFI は、オペレーティング システム起動前環境への導入の一部として、さまざまな役割を担っていますが、主な利点の 1 つは、セキュア ブート機能を使用して、ブートキットと呼ばれる高度な種類のマルウェアから新しいデバイスを守ることです。

UEFI (バージョン 2.3.1 以降) の最新の実装では、実行する前にデバイスのファームウェアのデジタル署名を確認できます。PC のハードウェアの製造元だけが、有効なファームウェアの署名の作成に必要なデジタル証明書にアクセスできるため、UEFI はファームウェアベースのブートキットを防ぐことができます。したがって、UEFI は信頼チェーンの最初のリンクです。

セキュア ブートは、プラットフォームとファームウェアのセキュリティの基盤であり、デバイスのアーキテクチャに関係なく、プリブート環境のセキュリティを強化するために作成されました。ファームウェア イメージの実行前にその整合性を検証するための署名を使うと、セキュア ブートは、ブートローダー攻撃のリスクの軽減に役立ちます。セキュア ブートの目的は、信頼されていないファームウェアとブートローダー (署名済みまたは未署名) がシステム上で起動しないようにブロックすることです。

従来の BIOS のブート プロセスでは、オペレーティング システム起動前環境は、ブートローダーのハンドオフを悪意のあるローダーにリダイレクトする攻撃に対して脆弱です。オペレーティング システムとマルウェア対策ソフトウェアでは、これらのローダーを検出できない状態が続く場合があります。図 1 では、BIOS と UEFI の起動プロセスを比較しています。

BIOS および UEFI の起動プロセス

図 1. BIOS と UEFI の起動プロセス

セキュア ブートを有効にして、UEFI と TPM を組み合わせると、ブートローダーを調べ、信頼できるかどうかを判断できます。ブートローダーが信頼できるかどうかを判断するため、UEFI はブートローダーのデジタル署名を調べます。デジタル署名を使って、UEFI は、ブートローダーが信頼できる証明書で署名されているかを確認します。

ブートローダーがこれら 2 つのテストに合格すると、UEFI は、ブートローダーがブートキットではないと判断して起動します。この時点でトラスト ブートに切り替り、Windows ブートローダーは、UEFI によるブートローダーの検証に使われたものと同じ暗号化テクノロジを使い、Windows システム ファイルが変更されていないかを確認します。

Windows 8 認定済みのデバイスはすべて、UEFI ベースのセキュア ブートに関連するいくつかの要件を満たす必要があります。

  • 既定でセキュア ブートを有効にしておく必要があります。

  • Microsoft の証明書 (つまり Microsoft が署名したすべてのブートローダー) を信頼する必要があります。

  • ユーザーが他の署名済みブートローダーを信頼できるようにするため、セキュア ブートを構成できる必要があります。

  • Windows RT デバイスを除いて、ユーザーがセキュア ブートを完全に無効にできる必要があります。

これらの要件により、ユーザーは、任意のオペレーティング システムを実行しながら、ルートキットから守られます。Microsoft 以外のオペレーティング システムを実行する場合、次の 3 つのオプションがあります。

  • 認定済みのブートローダー オペレーティング システムを使う。Microsoft 以外のブートローダーが信頼されるように、Microsoft は分析して署名できます。Linux コミュニティはこのプロセスを使って Linux を有効にし、Windows 認定済みのデバイス上でセキュア ブートを活用できるようにしています。

  • カスタムのブートローダーを信頼するように UEFI を構成する。UEFI データベースで指定した、署名付きで非認定のブートローダーを信頼することで、自作のオペレーティング システムを含む、すべてのオペレーティング システムを実行できるようになります。

  • セキュア ブートを無効にする。セキュア ブートを無効にすることができます。ただし、これによりブートキットから守られなくなります。

マルウェアがこれらのオプションを悪用できないようにするため、ユーザーは UEFI ファームウェアを手動で構成し、非認定のブートローダーを信頼するか、セキュア ブートを無効にする必要があります。ソフトウェアはセキュア ブート設定を変更できません。

セキュア ブートまたは同様のブートローダー検証テクノロジを必要としないデバイスは、アーキテクチャまたはオペレーティング システムに関係なく、暗号化ソリューションの侵害に使えるブートキットに対して脆弱です。

UEFI は設計上セキュリティで保護されていますが、パスワード保護を使ってセキュア ブート構成を保護することが重要です。さらに、UEFI に対して有名な攻撃がいくつかありますが、これは UEFI 実装の不備を悪用したものです。UEFI が正しく実装されている場合、これらの攻撃は効果がありません。

セキュア ブートについて詳しくは、「Windows 8.1 のブート プロセスの保護」をご覧ください。

プリブート時の保護: プリブート認証

BitLocker を使ったプリブート認証は、アクセス可能なシステム ドライブのコンテンツを作成する前に、ハードウェアとオペレーティング システムに応じて、トラステッド プラットフォーム モジュール (TPM)、PIN などのユーザー入力のいずれか、またはその両方を使用して認証を求めるプロセスです。BitLocker の場合、すべてのシステム ファイルを含むドライブ全体を暗号化します。次のオプションの 1 つ以上を使いプレブート認証が完了して後にのみ、BitLocker は暗号化キーにアクセスしてメモリに格納します。トラステッド プラットフォーム モジュール (TPM)、ユーザーが特定の PIN または USB スタートアップ キーを入力する。

Windows が暗号化キーにアクセスできない場合、デバイスはシステム ドライブ上のファイルを読み取りまたは編集できません。攻撃者が PC からディスクを取り出したり、PC 自体を盗んだりしても、暗号化キーがない場合は、ファイルを読み取りまたは編集できません。プリブート認証を回避する唯一のオプションは、非常に複雑な 48 桁の回復キーを入力することです。

BitLocker のプリブート認証機能は、オペレーティング システムが起動しないように特別に設計されています。BitLocker がデータの機密性とシステムの整合性を保護することで起こる二次的影響はほとんどありません。プリブート認証は、特定の種類のコールド ブート攻撃に対して脆弱なデバイス上のシステム メモリに、暗号化キーが読み込まれないように設計されています。最新のデバイスの多くは、攻撃者がメモリを簡単に取り外せないようにしており、これらのデバイスが今後さらに一般的になると予想しています。

互換性のある TPM を搭載したコンピューター上で BitLocker により保護されたオペレーティング システム ドライブは、次の 4 つの方法でロックを解除できます。

  • TPM のみ。TPM のみの検証を使うと、暗号化を解除してドライブにアクセスするのに、ユーザーの操作は要がありません。TPM の検証が成功した場合、ユーザーのログオン操作は通常のログオンと同じになります。TPM が欠落または変更された場合、または TPM が重要なオペレーティング システムのスタートアップ ファイルの変更を検出した場合は、BitLocker が回復モードに移行し、ユーザーは、データへのアクセス権を再度取得するために回復パスワードを入力する必要があります。

  • スタートアップ キーを使った TPM。TPM が提供する保護機能に加え、スタートアップ キーと呼ばれる暗号化キーの一部が USB フラッシュ ドライブ上に保存されています。暗号化されたボリューム上のデータは、スタートアップ キーがなければアクセスできません。

  • PIN を使った TPM。TPM が提供する保護機能に加えて、BitLocker はユーザーに PIN を入力するよう要求します。暗号化されたボリューム上のデータは、PIN を入力しないとアクセスできません。

  • スタートアップ キーと PIN を使った TPM。TPM が提供するコア コンポーネント保護機能に加え、暗号化キーの一部が USB フラッシュ ドライブに保存されており、TPM に対してユーザーを認証するには PIN が必要です。USB キーが紛失または盗難にあっても、そのキーを使ってドライブにアクセスできないようにするため、この構成では多要素認証を提供しています。そのため正しい PIN も必要になります。

長年にわたり、DMA とメモリ残存による攻撃から保護するためにプリブート認証を使うように推奨してきました。今日では、このドキュメントに記載された軽減策を実装できない場合、PC 上でプリブート認証を使うように推奨しているのは Microsoft だけです。これらの軽減策は、デバイスに固有である場合、または IT 担当者がデバイスと Windows 自体にプロビジョニングする構成を経由して実行される場合があります。

効果はありますが、プリブート認証はユーザーにとって不便です。さらに、ユーザーが PIN を忘れたり、スタートアップ キーを紛失した場合、組織のサポート チームに連絡して回復キーを手に入れるまで、ユーザーはデータへのアクセスが拒否されます。今日では、Windows 10、Windows 8.1、または Windows 8 を実行するほとんどの新しい PC は、プリブート認証を必要とせずに、DMA 攻撃に対する保護を十分に提供します。たとえば、最近のほとんどの PC には USB ポート オプション (DMA 攻撃に対して脆弱ではない) が付いていますが、FireWire または Thunderbolt ポート (DMA 攻撃に対して脆弱) は付いていません。

FireWire または Thunderbolt ポートなど、DMA ポートを有効に設定し、BitLocker で暗号化されたデバイスが、Windows 10、Windows 7、Windows 8、または Windows 8.1 を実行し、ポリシーを使ってポートを無効化している場合、またはファームウェア構成が選択肢にない場合、プリブート認証で構成する必要があります。認定済みデバイス上にポートが表示されないため、Windows 8.1 と それ以降の InstantGo デバイスには、DMA ベースの攻撃から防御するためにプリブート認証は必要ありません。DMA ポートがデバイス上で有効な場合、さらにこのドキュメントに記載された追加の軽減策が実装されない場合、InstantGo 非対応の Windows 8.1 以降のデバイスにはプリブート認証が必要です。多くのユーザーはデバイス上の DMA ポートを使うことはないと考えており、ハードウェア レベルまたはグループ ポリシーのいずれかで DMA ポート自体を無効にして、攻撃の可能性を排除しています。

新しい多くのモバイル デバイスでは、システム メモリがマザーボードにはんだ付けされているため、システム メモリをフリーズして取り外し、別のデバイスに取り付けた場合でも、コールド ブート スタイルの攻撃を防げます。ただし、これらのデバイスとほとんどの PC は、悪意のあるオペレーティング システムを起動する場合には未だに脆弱です。

悪意のあるオペレーティング システムの起動に伴うリスクを軽減することができます。

  • Windows 10 (セキュア ブートなし)、Windows 8.1 (セキュア ブートなし)、Windows 8 (UEFI ベースのセキュア ブートなし)、または Windows 7 (TPM の有無は無関係)。外部メディアからの起動を無効にして、攻撃者がこのオプションを変更できないようにするためにファームウェア パスワードを要求します。

  • Windows 10、Windows 8.1、または Windows 8 (認定済みまたはセキュア ブートあり)。パスワードによりファームウェアを保護します。セキュア ブートを無効にしないでください。

起動中の保護

Windows 10 は、起動プロセス中にトラスト ブートと起動時マルウェア対策 (ELAM) を使って、すべてのコンポーネントの整合性を調べます。以降のセクションでは、これらのテクノロジについて詳しく説明します。

トラスト ブート

トラスト ブートは、UEFI ベースのセキュア ブートが、オペレーティング システムの初期化段階で無効になると切り替ります。ブートローダーは、Windows カーネルのデジタル署名を読み込む前に検証します。その後、Windows カーネルは、ブート ドライバー、スタートアップ ファイル、および ELAM ドライバー含む、Windows スタートアップ プロセスの他のすべてのコンポーネントを検証します。ファイルが変更されている場合、または Microsoft 署名を使って正しく署名されていない場合、Windows は、問題を検出して破損したコンポーネントの読み込みを拒否します。多くの場合、Windows は破損したコンポーネントを自動的に修理して、Windows の整合性を復元し、PC が正常に起動できるようにします。

Windows 10 は、すべてのハードウェア プラットフォーム上でトラスト ブートを使います。UEFI と TPM のいずれも必要ありません。ただし、セキュア ブートを使わない場合、Windows の起動前にトラスト ブート保護機能を回避または潜在的に無効にできる可能性があり、マルウェアが起動プロセスを侵害できる場合があります。

起動時マルウェア対策

UEFI ベースのセキュア ブートはブートローダーを保護し、トラスト ブートは Windows カーネルまたは Windows の他のスタートアップ コンポーネントを保護しているため、マルウェアの次の攻撃は、Microsoft 以外のブートに関連するドライバーに感染することです。従来のマルウェア対策アプリは、ブートに関連するドライバーが読み込まれるまで起動しないため、ルートキットをドライバーに偽装して実行できる可能性があります。

ELAM の目的は、ブート開始のフラグが付けられたドライバーが実行される前に、マルウェア対策ドライバーを読み込むことです。この方法では、マルウェア対策ドライバーが信頼済みの起動に不可欠なドライバーとして登録されるための機能を提供します。これはトラスト ブート プロセス中に起動されるため、Windows は、Microsoft 以外の他のソフトウェアの読み込み前にこの機能が読み込まれるようにします。

このソリューションを設定すると、ブート ドライバーは、初期化ポリシーに応じて ELAM ドライバーから返される分類に基づいて初期化されます。IT 担当者は、グループ ポリシーを使ってこのポリシーを変更することができます。

ELAM はドライバーを次のように分類しています。

  • 良好。ドライバーは署名されており、改ざんされていません。

  • 不良。ドライバーがマルウェアとして識別されました。既知の問題のあるドライバーの初期化を許可しないことをお勧めします。

  • 不良 (ブートに不可欠)。ドライバーがマルウェアとして識別されましたが、コンピューターはこのドライバーを読み込まなければ正常に起動できません。

  • 不明。このドライバーは、マルウェア検出アプリケーションでの証明または ELAM ブート開始ドライバーによる分類が行われていません。

上記の機能は、BitLocker のセキュリティを侵害する可能性のあるマルウェアの脅威から Windows ブート プロセスを保護します。その一方で、BitLocker がドライブのロックを解除してから、構成されたポートに関連するポリシーを Windows が設定できるポイントまで Windows が起動するまでの間、DMA ポートが有効になる場合があることに注意してください。暗号化キーが DMA 攻撃にさらされる可能性がある時間は、最新のデバイスでは 1 分未満ですが、システムのパフォーマンスによってはそれよりも長くなる場合があります。PIN を使ったプリブート認証を採用すると、攻撃を十分に軽減できます。

起動後の保護: DMA の可用性の排除

Windows InstantGo 認定済みのデバイスには DMA ポートがないため、DMA 攻撃のリスクが排除されます。その他のデバイスでは、FireWire、Thunderbolt、または DMA をサポートする他のポートを無効にできます。

関連項目