ENCLAVE_IDENTITY结构(ntenclv.h)

描述 enclave 的主模块的标识。

语法

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]

enclave 的所有者标识符。

UniqueId[IMAGE_ENCLAVE_LONG_ID_LENGTH]

enclave 的主模块的唯一标识符。

AuthorId[IMAGE_ENCLAVE_LONG_ID_LENGTH]

enclave 的主模块的作者标识符。

FamilyId[IMAGE_ENCLAVE_SHORT_ID_LENGTH]

enclave 的主模块的家庭标识符。

ImageId[IMAGE_ENCLAVE_SHORT_ID_LENGTH]

enclave 的主模块的图像标识符。

EnclaveSvn

enclave 的主模块的安全版本号。

SecureKernelSvn

虚拟安全模式 (VSM) 内核的安全版本号。

PlatformSvn

托管 enclave 的平台的安全版本号。

Flags

描述 enclave 的运行时策略的标志。

价值 意义
ENCLAVE_FLAG_FULL_DEBUG_ENABLED
0x00000001
enclave 支持调试。
ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED
0x00000002
enclave 支持动态调试。
ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE
0x00000004
已为 enclave 启用动态调试。

SigningLevel

enclave 的主模块的签名级别。

EnclaveType

言论

每个 enclave 都有一个 ENCLAVE_IDENTITY,该 ENCLAVE_IDENTITY 是在创建 enclave 时配置的,并在初始化 enclave 时设置。 它包含以下几个属性:

财产 如何生成此属性? 验证此属性的值是什么
OwnerId 设置创建 enclave 时(CreateEnclave),并表示 enclave 的所有者(创建者)。 可用于区分由同一所有者创建的 enclave。
UniqueId 唯一地度量 enclave 图像的整个内容。 加载 enclave 的主映像时,验证码签名的 PKCS#1 部分中包含的摘要将捕获为 Enclave 唯一 ID。 可用于区分特定 enclave 的确切实例,包括 enclave 中运行的代码的属性和签名者信息。
AuthorId 发布者可能想要使用给定的证书来对不同的 VBS enclave 进行签名,并且从密封角度仍具有不同的信任关系。 作者 ID 唯一标识 enclave 发布者。 作者 ID 是以下项的哈希:

- 签名者 ID
- 叶证书中的使用者名称
- 签名中的 OPUS 信息(如果存在)。 这是通过 signtool.exe 签名基础结构添加的。 对于第三方提交由Microsoft签名的情况,还用于区分不同的提交者。
可用于区分 enclave 发布者进行签名。
FamilyId 由其作者分配给 enclave 的唯一标识符(GUID)。 表示同一个系列的 enclave。 可用于区分同一系列中的 enclave。 可用于强制执行导入、密封等操作,以使用同一 FamilyIdenclave。
ImageId 由其作者分配给 enclave 的唯一标识符(GUID)。 可用于区分具有相同映像的 enclave。 可用于强制实施导入、密封等操作,以使用同一 ImageIdenclave。
EnclaveSvn enclave 中主映像的安全版本号。 与模块导入上的 MinimumSvn 进行比较,以确定导入是否被拒绝。 它还用于签名操作。
PlatformSvn VSM 内核的安全版本号。 不允许任何 enclave 取消密封由后来的 SVN enclave 密封的任何数据。
标志 描述 enclave 的运行时策略的标志:

- ENCLAVE_FLAG_FULL_DEBUG_ENABLED - 指示 enclave 支持调试。
- ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED - 指示 enclave 支持动态调试。
- ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE - 指示已为 enclave 激活动态调试。
可用于确认 enclave 是否已启用调试,或者是否已激活它。 可以使用多个排列来验证 enclave 的状态。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1709 [仅限桌面应用]
支持的最低服务器 Windows Server 2016 [仅限桌面应用]
标头 ntenclv.h

另请参阅

VBS_ENCLAVE_REPORT

Enclave 结构

CreateEnclave