次の方法で共有


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

これは予約済みフィールドであり、0 に設定する必要があります。

EnclaveType

これは予約済みフィールドであり、0 に設定する必要があります。

備考

各エンクレーブには、エンクレーブの作成時に構成され、エンクレーブの初期化時に設定される 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