ENCLAVE_IDENTITY構造体 (ntenclv.h)

エンクレーブのプライマリ モジュールの ID について説明します。

構文

typedef struct ENCLAVE_IDENTITY {
  UINT8  OwnerId[IMAGE_ENCLAVE_LONG_ID_LENGTH];
  UINT8  UniqueId[IMAGE_ENCLAVE_LONG_ID_LENGTH];
  UINT8  AuthorId[IMAGE_ENCLAVE_LONG_ID_LENGTH];
  UINT8  FamilyId[IMAGE_ENCLAVE_SHORT_ID_LENGTH];
  UINT8  ImageId[IMAGE_ENCLAVE_SHORT_ID_LENGTH];
  UINT32 EnclaveSvn;
  UINT32 SecureKernelSvn;
  UINT32 PlatformSvn;
  UINT32 Flags;
  UINT32 SigningLevel;
  UINT32 EnclaveType;
} ENCLAVE_IDENTITY;

メンバーズ

OwnerId[IMAGE_ENCLAVE_LONG_ID_LENGTH]

エンクレーブの所有者の識別子。

UniqueId[IMAGE_ENCLAVE_LONG_ID_LENGTH]

エンクレーブのプライマリ モジュールの一意識別子。

AuthorId[IMAGE_ENCLAVE_LONG_ID_LENGTH]

エンクレーブのプライマリ モジュールの作成者識別子。

FamilyId[IMAGE_ENCLAVE_SHORT_ID_LENGTH]

エンクレーブのプライマリ モジュールのファミリ識別子。

ImageId[IMAGE_ENCLAVE_SHORT_ID_LENGTH]

エンクレーブのプライマリ モジュールのイメージ識別子。

EnclaveSvn

エンクレーブのプライマリ モジュールのセキュリティ バージョン番号。

SecureKernelSvn

仮想セキュア モード (VSM) カーネルのセキュリティ バージョン番号。

PlatformSvn

エンクレーブをホストするプラットフォームのセキュリティ バージョン番号。

Flags

エンクレーブのランタイム ポリシーを記述するフラグ。

価値 意味
ENCLAVE_FLAG_FULL_DEBUG_ENABLED
0x00000001
エンクレーブはデバッグをサポートします。
ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED
0x00000002
エンクレーブは動的デバッグをサポートします。
ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE
0x00000004
エンクレーブの動的デバッグが有効になります。

SigningLevel

エンクレーブのプライマリ モジュールの署名レベル。

EnclaveType

備考

各エンクレーブには、エンクレーブの作成時に構成され、エンクレーブの初期化時に設定される ENCLAVE_IDENTITY があります。 これには、以下に示すいくつかのプロパティが含まれています。

財産 このプロパティはどのように生成されますか? このプロパティを検証する場合の値は何ですか?
OwnerId エンクレーブの作成時 (CreateEnclave) を設定し、エンクレーブの所有者 (作成者) を示します。 同じ所有者によって作成されたエンクレーブを区別するために使用できます。
UniqueId エンクレーブ イメージのコンテンツ全体を一意に測定します。 エンクレーブのプライマリ イメージが読み込まれると、Authenticode 署名の PKCS#1 部分に含まれるダイジェストがエンクレーブ一意 ID としてキャプチャされます。 エンクレーブ内で実行されているコードのプロパティや署名者情報など、特定のエンクレーブの正確なインスタンスを区別するために使用できます。
AuthorId の 発行元は、特定の証明書を使用して異なる VBS エンクレーブに署名し、シールの観点から異なる信頼関係を持つことができます。 作成者 ID は、エンクレーブ発行元を一意に識別します。 作成者 ID は次のハッシュです。

- 署名者 ID
- リーフ証明書のサブジェクト名
- 署名内の OPUS 情報 (存在する場合)。 これは、signtool.exe 署名インフラストラクチャを介して追加されます。 サード パーティの提出が Microsoft によって署名されているシナリオでは、これは異なる提出者を区別するためにも使用されます。
署名のためにエンクレーブ発行元を区別するために使用できます。
FamilyId 作成者によってエンクレーブに割り当てられた一意識別子 (GUID)。 同じファミリのエンクレーブを示します。 同じファミリのエンクレーブを区別するために使用できます。 同じ FamilyIdを使用してエンクレーブにインポート、シールなどの操作を適用するために使用できます。
ImageId 作成者によってエンクレーブに割り当てられた一意識別子 (GUID)。 同じイメージでエンクレーブを区別するために使用できます。 インポート、シールなどの操作を、同じ ImageIdでエンクレーブに適用するために使用できます。
enclaveSvn を する エンクレーブ内のプライマリ イメージのセキュリティ バージョン番号。 モジュールのインポート MinimumSvn と比較して、インポートが拒否されたかどうかを判断します。 また、署名操作でも使用されます。
PlatformSvn VSM カーネルのセキュリティ バージョン番号。 エンクレーブは、後の SVN エンクレーブによってシールされたデータのシールを解除することはできません。
フラグの エンクレーブのランタイム ポリシーを記述するフラグ:

- ENCLAVE_FLAG_FULL_DEBUG_ENABLED - エンクレーブがデバッグをサポートしていることを示します。
- ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED - エンクレーブが動的デバッグをサポートすることを示します。
- ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE - エンクレーブに対して動的デバッグがアクティブ化されたことを示します。
エンクレーブでデバッグが有効になっているか、アクティブ化されているかを確認するために使用できます。 複数の順列を使用して、エンクレーブの状態を検証できます。

必要条件

要件 価値
サポートされる最小クライアント Windows 10 バージョン 1709 [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2016 [デスクトップ アプリのみ]
ヘッダー ntenclv.h

関連項目

VBS_ENCLAVE_REPORT

エンクレーブ構造

CreateEnclave の