System Guard: ハードウェア ベースの信頼のルートが Windows を保護する方法

Windows 認証 スタック、シングル サインオン トークン、Windows Hello生体認証スタック、仮想トラステッド プラットフォーム モジュールなどの重要なリソースを保護するには、システムのファームウェアとハードウェアが信頼できる必要があります。

System Guardは、既存の Windows システム整合性機能を 1 つの屋根の下に再構成し、次の一連の Windows セキュリティへの投資を設定します。 これは、次のセキュリティを保証するように設計されています。

  • システムの起動時にシステムの整合性を保護および維持する
  • ローカル構成証明とリモート構成証明によってシステムの整合性が本当に維持されていることを検証する

システムの開始時の整合性の維持

測定の静的信頼ルート (SRTM)

Windows 7 では、攻撃者が永続化して検出を回避するために使用する手段の 1 つは、ブートキットまたはルートキットと呼ばれるものをシステムにインストールすることです。 この悪意のあるソフトウェアは、Windows が起動する前、またはブート プロセス自体の間に開始され、最高レベルの特権で起動できるようになります。

最新のハードウェアで実行されているWindows 10では、ハードウェア ベースの信頼ルートを使用すると、Windows ブートローダーの前に未承認のファームウェアやソフトウェア (ブートキットなど) を起動できないようにすることができます。 このハードウェア ベースの信頼のルートは、統合拡張ファームウェア インターフェイス (UEFI) の一部であるデバイスのセキュア ブート機能から取得されます。 静的な初期ブート UEFI コンポーネントを測定するこの手法は、測定用の静的信頼ルート (SRTM) と呼ばれます。

異なるUEFI BIOSバージョンを持つ多くのモデルを生産する何千ものPCベンダーがあるため、起動時に非常に多くのSRTM測定値が発生します。 信頼を確立するための 2 つの手法があります。既知の "bad" SRTM 測定値 (ブロックリストとも呼ばれます) の一覧を保持するか、既知の "good" SRTM 測定値 (許可リストとも呼ばれます) の一覧を保持します。

各オプションには欠点があります。

  • 既知の "無効な" SRTM 測定値の一覧を使用すると、ハッカーはコンポーネント内のわずか 1 ビットを変更して、リストする必要があるまったく新しい SRTM ハッシュを作成できます。 これは、SRTM フローが本質的に脆弱であることを意味します。軽微な変更により、信頼チェーン全体が無効になる可能性があります。
  • 既知の "良い" SRTM 測定の一覧では、新しい BIOS/PC の組み合わせ測定を慎重に追加する必要があります。これは低速です。 また、UEFI コードのバグ修正は、設計、ビルド、再テスト、検証、再デプロイに長い時間がかかる場合があります。

セキュリティで保護された起動 — 測定の動的信頼ルート (DRTM)

System Guardセキュア起動は、Windows 10バージョン1809で最初に導入され、測定のための動的信頼ルート(DRTM)と呼ばれる技術を利用して、これらの問題を軽減することを目的としています。 DRTM を使用すると、最初は信頼されていないコードを自由に起動できますが、その直後に、すべての CPU を制御し、既知の測定されたコード パスを強制的にダウンさせることで、システムを信頼された状態に起動します。 これにより、信頼されていない初期の UEFI コードでシステムを起動できるだけでなく、信頼された測定された状態に安全に移行できるという利点があります。

セキュリティで保護された起動をSystem Guardします。

セキュア起動は、起動コードが特定のハードウェア構成とは無関係であるため、SRTM 測定の管理を簡素化します。 これは、有効なコード測定値の数が少なく、今後の更新プログラムをより広く迅速にデプロイできることを意味します。

システム管理モード (SMM) 保護

システム管理モード (SMM) は、電源管理、ハードウェア構成、熱監視、および製造元が役に立つと考えるその他の何かを処理する x86 マイクロコントローラーの特殊な目的の CPU モードです。 これらのシステム操作のいずれかが要求されるたびに、非マスク可能割り込み (SMI) が実行時に呼び出され、BIOS によってインストールされた SMM コードが実行されます。 SMM コードは最高の特権レベルで実行され、OS には表示されません。これにより、悪意のあるアクティビティの魅力的なターゲットになります。 セキュア起動System Guard使用して起動が遅れた場合でも、SMM コードはハイパーバイザー メモリにアクセスし、ハイパーバイザーを変更する可能性があります。

これに対する防御には、次の 2 つの手法が使用されます。

  • コードとデータへの不適切なアクセスを防ぐためのページング保護
  • SMM ハードウェアの監督と構成証明

改ざんを防ぐために、特定のコード テーブルを読み取り専用にロックするようにページング保護を実装できます。 これにより、割り当てられていないメモリへのアクセスが禁止されます。

スーパーバイザー SMI ハンドラーと呼ばれるハードウェアによって強制されるプロセッサ機能は、SMM を監視し、想定されていないアドレス空間の一部にアクセスしないようにすることができます。

SMM 保護は、Secure Launch テクノロジの上に構築されており、機能する必要があります。 今後、Windows 10はこの SMI ハンドラーの動作も測定し、OS 所有のメモリが改ざんされていないことを証明します。

Windows の実行後のプラットフォームの整合性の検証 (ランタイム)

System Guardは、起動時および実行時にプラットフォームの整合性を保護および維持するのに役立つ高度な保護を提供しますが、実際には、最も高度なセキュリティ テクノロジにも "侵害を想定する" メンタリティを適用する必要があります。 私たちは、テクノロジが正常に仕事をしていると信頼できますが、目標を達成するために成功したことを確認する能力も必要です。 プラットフォームの整合性のために、セキュリティ状態を自己証明するために、侵害される可能性があるプラットフォームを信頼することはできません。 そのため、System Guardには、デバイスの整合性のリモート分析を可能にする一連のテクノロジが含まれています。

Windows が起動すると、デバイスのトラステッド プラットフォーム モジュール 2.0 (TPM 2.0) を使用してSystem Guardによって一連の整合性測定が行われます。 System Guardセキュア起動では、TPM 1.2 などの以前の TPM バージョンはサポートされていません。 このプロセスとデータは、プラットフォームが侵害された場合に発生する可能性のある改ざんの種類の影響を受けないように、Windows からハードウェアから分離されています。 ここから、測定値を使用して、デバイスのファームウェア、ハードウェア構成状態、および Windows ブート関連コンポーネントの整合性を判断して、いくつかの名前を付けることができます。

ブート時間の整合性。

システムが起動した後、TPM を使用してこれらの測定値の署名とシールをSystem Guardします。 要求に応じて、IntuneやMicrosoft Configuration Managerなどの管理システムは、リモート分析のためにそれらを取得できます。 System Guardがデバイスに整合性がないことを示している場合、管理システムは、リソースへのデバイス アクセスを拒否するなど、一連のアクションを実行できます。

Windows エディションとライセンスに関する要件

次の表に、System Guardをサポートする Windows エディションを示します。

Windows Pro Windows Enterprise Windows Pro Education/SE Windows Education
はい はい はい はい

System Guardライセンスの権利は、次のライセンスによって付与されます。

Windows Pro/Pro Education/SE Windows Enterprise E3 Windows Enterprise E5 Windows Education A3 Windows Education A5
はい はい はい はい はい

Windows ライセンスの詳細については、「Windows ライセンスの概要」を参照してください。

System Guardのシステム要件

この機能は、次のプロセッサで使用できます。

  • Intel® コーヒーレイク、ウィスキーレイク、またはそれ以降のシリコンで始まる Intel® vPro™ プロセッサ
  • Zen2 以降のシリコンで始まる AMD® プロセッサ
  • SD850 以降のチップセットを備えた Qualcomm® プロセッサ

Intel® Coffeelake、ウィスキーレイク、またはそれ以降のシリコンで始まる Intel® vPro™ プロセッサの要件

名前 説明
64 ビット CPU ハイパーバイザーと仮想化ベースのセキュリティ (VBS) には、最小 4 コア (論理プロセッサ) を備えた 64 ビット コンピューターが必要です。 Hyper-V の詳細については、「Windows Server 2016の Hyper-V」または「Windows 10での Hyper-V の概要」を参照してください。 ハイパーバイザーの詳細については、「 ハイパーバイザーの仕様」を参照してください。
トラステッド プラットフォーム モジュール (TPM) 2.0 プラットフォームでは、個別の TPM 2.0 をサポートする必要があります。 プラットフォーム トラスト テクノロジ (PTT) をサポートする Intel チップを除き、統合/ファームウェア TPM はサポートされていません。これは、TPM 2.0 仕様を満たす統合ハードウェア TPM の一種です。
Windows DMA 保護 プラットフォームは Windows DMA 保護仕様を満たす必要があります (OS が明示的に電源を供給するまで、すべての外部 DMA ポートは既定でオフになっている必要があります)。
SMM 通信バッファー すべての SMM 通信バッファーは、EfiRuntimeServicesData、EfiRuntimeServicesCode、EfiACPIMemoryNVS、または EfiReservedMemoryType メモリ型に実装する必要があります。
SMM ページ テーブル EfiConventionalMemory (OS/VMM 所有メモリなど) へのマッピングを含めてはいけません。
EfiRuntimeServicesCode 内のコード セクションへのマッピングを含めてはいけません。
同じページに対して実行および書き込みアクセス許可を持つ必要はありません
TSEG ページを実行可能ファイルとしてマークすることのみを許可する必要があり、メモリ マップは TSEG EfiReservedMemoryType を報告する必要があります。
SMM ページ テーブルが SMM エントリごとにロックされるように、BIOS SMI ハンドラーを実装する必要があります。
モダン/コネクト スタンバイ プラットフォームでは、モダン/コネクト スタンバイがサポートされている必要があります。
TPM AUX インデックス プラットフォームでは、データ サイズが正確に 104 バイト (SHA256 AUX データの場合) の TXT DG で指定された AUX インデックスに正確に対応するインデックス、属性、およびポリシーを持つ AUX インデックスを設定する必要があります。 (NameAlg = SHA256)
プラットフォームでは、次を使用して PS (プラットフォーム サプライヤー) インデックスを設定する必要があります。
  • 作成時の "TXT PS2" スタイルの属性を次に示します。
    • AuthWrite
    • PolicyDelete
    • WriteLocked
    • WriteDefine
    • AuthRead
    • WriteDefine
    • 野田
    • 書か れた
    • PlatformCreate
  • 厳密に PolicyCommandCode(CC = TPM2_CC_UndefineSpaceSpecial) のポリシー (SHA256 NameAlg and Policy)
  • 正確に 70 バイトのサイズ
  • NameAlg = SHA256
  • また、OS の起動時に初期化され、ロックされている必要があります (TPMA_NV_WRITTEN = 1、TPMA_NV_WRITELOCKED = 1)。
PS インデックス データ DataRevocationCounters、SINITMinVersion、PolicyControl はすべて0x00
AUX ポリシー 必要な AUX ポリシーは、次のようにする必要があります。
  • A = TPM2_PolicyLocality (Locality 3 & Locality 4)
  • B = TPM2_PolicyCommandCode (TPM_CC_NV_UndefineSpecial)
  • authPolicy = {A} OR {{A} AND {B}}
  • authPolicy digest = 0xef、0x9a、0x26、0xfc、0x22、0xd1、0xae、0x8c、0xec、 0xff、0x59、0xe9、0x48、0x1a、0xc1、0xec、0x53、0x3d、0xbe、0x22、0x8b、0xec、0x6d、0x17、0x93、0x0f、0x4c、0xb2、0xcc、0x5b、0x97、0x24
TPM NV インデックス プラットフォーム ファームウェアでは、OS で次の機能を使用するために TPM NV インデックスを設定する必要があります。
  • ハンドル: 0x01C101C0
  • 属性:
    • TPMA_NV_POLICYWRITE
    • TPMA_NV_PPREAD
    • TPMA_NV_OWNERREAD
    • TPMA_NV_AUTHREAD
    • TPMA_NV_POLICYREAD
    • TPMA_NV_NO_DA
    • TPMA_NV_PLATFORMCREATE
    • TPMA_NV_POLICY_DELETE
  • ポリシー:
    • A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
    • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
    • authPolicy = {A} OR {{A} AND {B}}
    • 0xcb、0x45、0xc8、0x1f、0xf3、0x4b、0xcf、0x0a、0xfb、0x9e、 0x1a、0x80、0x29、0xfa、0x23、0x1c、0x87、0x27、0x30、0x3c 0x09、0x22、0xdc、0xce、0x68、0x4b 0xe3、0xdb、0x81、0x81、0x7c 0x20、0xe1
プラットフォーム ファームウェア プラットフォーム ファームウェアには、Intel® Trusted Execution Technology のセキュリティで保護された起動を実行するために必要なすべてのコードが含まれています。
  • Intel® SINIT ACM は OEM BIOS で実行する必要があります
  • プラットフォームには、プラットフォームの正しい運用 Intel® ACM 署名者によって署名された運用環境の ACM が付属している必要があります
プラットフォーム ファームウェアの更新 システム ファームウェアは、Windows Updateの UpdateCapsule 経由で更新することをお勧めします。

Zen2 以降のシリコンで始まる AMD® プロセッサの要件

名前 説明
64 ビット CPU ハイパーバイザーと仮想化ベースのセキュリティ (VBS) には、最小 4 コア (論理プロセッサ) を備えた 64 ビット コンピューターが必要です。 Hyper-V の詳細については、「Windows Server 2016の Hyper-V」または「Windows 10での Hyper-V の概要」を参照してください。 ハイパーバイザーの詳細については、「 ハイパーバイザーの仕様」を参照してください。
トラステッド プラットフォーム モジュール (TPM) 2.0 プラットフォームでは、個別の TPM 2.0 または Microsoft Pluton TPM をサポートする必要があります。
Windows DMA 保護 プラットフォームは Windows DMA 保護仕様を満たす必要があります (OS が明示的に電源を供給するまで、すべての外部 DMA ポートは既定でオフになっている必要があります)。
SMM 通信バッファー すべての SMM 通信バッファーは、EfiRuntimeServicesData、EfiRuntimeServicesCode、EfiACPIMemoryNVS、または EfiReservedMemoryType メモリ型に実装する必要があります。
SMM ページ テーブル EfiConventionalMemory (OS/VMM 所有メモリなど) へのマッピングを含めてはいけません。
EfiRuntimeServicesCode 内のコード セクションへのマッピングを含めてはいけません。
同じページに対して実行および書き込みアクセス許可を持つ必要はありません
SMM ページ テーブルが SMM エントリごとにロックされるように、BIOS SMI ハンドラーを実装する必要があります。
モダン/コネクト スタンバイ プラットフォームでは、モダン/コネクト スタンバイがサポートされている必要があります。
TPM NV インデックス プラットフォーム ファームウェアでは、OS で次の機能を使用するために TPM NV インデックスを設定する必要があります。
  • ハンドル: 0x01C101C0
  • 属性:
    • TPMA_NV_POLICYWRITE
    • TPMA_NV_PPREAD
    • TPMA_NV_OWNERREAD
    • TPMA_NV_AUTHREAD
    • TPMA_NV_POLICYREAD
    • TPMA_NV_NO_DA
    • TPMA_NV_PLATFORMCREATE
    • TPMA_NV_POLICY_DELETE
  • ポリシー:
    • A = TPM2_PolicyAuthorize(MSFT_DRTM_AUTH_BLOB_SigningKey)
    • B = TPM2_PolicyCommandCode(TPM_CC_NV_UndefineSpaceSpecial)
    • authPolicy = {A} OR {{A} AND {B}}
    • 0xcb、0x45、0xc8、0x1f、0xf3、0x4b、0xcf、0x0a、0xfb、0x9e、 0x1a、0x80、0x29、0xfa、0x23、0x1c、0x87、0x27、0x30、0x3c 0x09、0x22、0xdc、0xce、0x68、0x4b 0xe3、0xdb、0x81、0x81、0x7c 0x20、0xe1
プラットフォーム ファームウェア プラットフォーム ファームウェアには、Secure Launch を実行するために必要なすべてのコードが含まれています。
  • AMD® Secure Launch プラットフォームは、公開されている AMD® DRTM ドライバー devnode と共に出荷され、AMD® DRTM ドライバーがインストールされている必要があります

プラットフォームでは、AMD® セキュア プロセッサ ファームウェアのロールバック防止保護が有効になっている必要があります
プラットフォームで AMD® Memory Guard が有効になっている必要があります。
プラットフォーム ファームウェアの更新 システム ファームウェアは、Windows Updateの UpdateCapsule 経由で更新することをお勧めします。

SD850 以降のチップセットを使用する Qualcomm® プロセッサの要件

名前 説明
モニター モード通信 すべてのモニター モード通信バッファーは、EfiRuntimeServicesData (推奨)、メモリ属性テーブル、EfiACPIMemoryNVS、または EfiReservedMemoryType メモリ型で説明されている EfiRuntimeServicesCode のデータ セクションに実装する必要があります。
モニター モード のページ テーブル すべてのモニター モード ページ テーブルでは、次の手順を実行する必要があります。
  • EfiConventionalMemory へのマッピングは含まれません (OS/VMM 所有メモリなしなど)
  • 同じページに対する実行および書き込みアクセス許可を持つ必要はありません
  • プラットフォームでは、実行可能ファイルとしてマークされたモニター モード ページのみを許可する必要があります
  • メモリ マップは、モニター モードを EfiReservedMemoryType と報告する必要があります
  • プラットフォームは、モニター モード ページ テーブルを変更から保護するためのメカニズムを提供する必要があります
モダン/コネクト スタンバイ プラットフォームでは、モダン/コネクト スタンバイがサポートされている必要があります。
プラットフォーム ファームウェア プラットフォーム ファームウェアには、起動に必要なすべてのコードが含まれます。
プラットフォーム ファームウェアの更新 システム ファームウェアは、Windows Updateの UpdateCapsule 経由で更新することをお勧めします。