GetRuntimeAttestationReport API を使用すると、VTL0 ユーザー モード プロセスは、セキュリティで保護されたカーネルから署名されたランタイム構成証明レポートを取得できます。 このレポートには、読み込まれたドライバーとコード整合性情報の一覧が表示されます。これは、システムの整合性を検証し、ゲームおよびセキュリティに依存するアプリケーションでチート対策ポリシーを適用するために不可欠です。
構文
BOOL GetRuntimeAttestationReport(
UCHAR *Nonce,
UINT16 PackageVersion,
UINT64 ReportTypesBitmap,
PVOID ReportBuffer,
PUINT32 ReportBufferSize
);
パラメーター
Nonce
リプレイ攻撃を防ぐための nonce を含む 32 バイト バッファーへのポインター。 出力サイズのみを計算する場合は、 NULL を指定します。
PackageVersion
ランタイム レポートのパッケージ バージョンを指定します。 最新バージョンの RUNTIME_REPORT_PACKAGE_VERSION_CURRENT を使用します。
ReportTypesBitmap
生成するレポートの種類を指定するビットマップ。
RUNTIME_REPORT_TYPE_TO_MASK マクロを使用して、列挙値をビットマップ マスクに変換します。
-
RuntimeReportTypeDriver= 0 (ドライバー レポート) -
RuntimeReportTypeCodeIntegrity= 1 (コード整合性レポート) -
RUNTIME_REPORT_TYPE_MASK_ALL(サポートされているすべてのレポート)
ReportBuffer
署名されたレポートが配置されるバッファーへのポインター。 必要な出力サイズのみを計算する NULL を指定します。
ReportBufferSize
バッファーのサイズを含む変数へのポインター。 書き込まれた実際のバイト数、または ReportBuffer が NULL場合は、必要なサイズで更新されます。
戻り値
- 成功した場合は TRUE を返します。
- エラー時に FALSE を返します。拡張エラー情報には GetLastError() を使用します。
注釈
API には、バックエンドで検証できる署名付きランタイム構成証明レポートが用意されています。
実行時に API を定期的に呼び出して、up-to-date 構成証明を維持します。 常に必要なバッファー サイズを最初に計算するには、ReportBuffer に NULL を渡してからバッファーを割り当て、再度呼び出してレポートを取得します。
レポートは、HVCI (Hypervisor-Protected コード整合性) が有効になっている場合にのみ生成できます。
返されるバッファーは、次のような "ランタイム レポート パッケージ" として編成されます。
- RUNTIME_REPORT_PACKAGE_HEADER
- 32 バイトの nonce
- 1 つ以上のRUNTIME_REPORT_DIGEST_HEADER (レポートの種類ごとに 1 つ)
- 署名 BLOB
- 1 つ以上の認証済みランタイム レポート (それぞれRUNTIME_REPORT_HEADER)
セキュリティ要件
- TPM 2.0、セキュア ブート、VBS、HVCI、IOMMU を有効にする必要があります。
- テスト署名フラグとデバッグ フラグはオフにする必要があります。
構成証明レポートは、これらのセキュリティ機能がアクティブな場合にのみ有効です。
Requirements
| Requirement | 価値 |
|---|---|
| ターゲット プラットフォーム の |
ウィンドウズ |
| Header | sysinfoapi.h (Windows.h を含む) |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |