ENCLAVE_IDENTITY Struktur (ntenclv.h)
Beschreibt die Identität des primären Moduls einer Enklave.
Syntax
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;
Angehörige
OwnerId[IMAGE_ENCLAVE_LONG_ID_LENGTH]
Der Bezeichner des Besitzers für die Enklave.
UniqueId[IMAGE_ENCLAVE_LONG_ID_LENGTH]
Der eindeutige Bezeichner des primären Moduls für die Enklave.
AuthorId[IMAGE_ENCLAVE_LONG_ID_LENGTH]
Der Autorbezeichner des primären Moduls für die Enklave.
FamilyId[IMAGE_ENCLAVE_SHORT_ID_LENGTH]
Der Familienbezeichner des primären Moduls für die Enklave.
ImageId[IMAGE_ENCLAVE_SHORT_ID_LENGTH]
Der Bildbezeichner des primären Moduls für die Enklave.
EnclaveSvn
Die Sicherheitsversionsnummer des primären Moduls für die Enklave.
SecureKernelSvn
Die Sicherheitsversionsnummer des VM-Kernels (Virtual Secure Mode, VSM).
PlatformSvn
Die Sicherheitsversionsnummer der Plattform, die die Enklave hosten soll.
Flags
Flags, die die Laufzeitrichtlinie für die Enklave beschreiben.
Wert | Bedeutung |
---|---|
ENCLAVE_FLAG_FULL_DEBUG_ENABLED0x00000001 |
Die Enklave unterstützt das Debuggen. |
ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED0x00000002 |
Die Enklave unterstützt dynamisches Debuggen. |
ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE0x00000004 |
Das dynamische Debuggen ist für die Enklave aktiviert. |
SigningLevel
Die Signierstufe des primären Moduls für die Enklave.
EnclaveType
Bemerkungen
Jede Enklave verfügt über eine ENCLAVE_IDENTITY, die konfiguriert ist, wenn die Enklave erstellt und festgelegt wird, wenn die Enklave initialisiert wird. Es enthält mehrere Eigenschaften, die unten beschrieben werden:
Eigentum | Wie wird diese Eigenschaft generiert? | Was ist der Wert beim Überprüfen dieser Eigenschaft? |
---|---|---|
OwnerId- | Legen Sie fest, wann die Enklave erstellt wird (CreateEnclave) und kennzeichnet den Besitzer (Ersteller) der Enklave. | Kann verwendet werden, um zwischen Enklaven zu unterscheiden, die vomselben Besitzer erstellt wurden. |
UniqueId- | Misst den gesamten Inhalt des Enklavenbilds eindeutig. Wenn das primäre Bild einer Enklave geladen wird, wird der Digest im PKCS#1-Teil der Authenticode-Signatur als Enklave Unique ID erfasst. | Kann verwendet werden, um die genaue Instanz einer bestimmten Enklave zu unterscheiden, einschließlich der Eigenschaften des Codes, der innerhalb der Enklave und der Signiererinformationen ausgeführt wird. |
AuthorId- | Ein Herausgeber möchte möglicherweise ein bestimmtes Zertifikat zum Signieren verschiedener VBS-Enklaven verwenden und trotzdem eine andere Vertrauensstellung aus der Versiegelungsperspektive haben. Die Autoren-ID identifiziert eindeutig einen Enklavenherausgeber. Die Autoren-ID ist ein Hash von: - Die Signierer-ID - Der Antragstellername im Blattzertifikat - Die OPUS-Informationen in der Signatur (sofern vorhanden). Dies wird über die signtool.exe Signierinfrastruktur hinzugefügt. In Szenarien, in denen Übermittlungen von Drittanbietern von Microsoft signiert werden, wird dies auch verwendet, um unterschiedliche Übermittlungen zu unterscheiden. |
Kann verwendet werden, um den Enklavenherausgeber für Signaturzwecke zu unterscheiden. |
FamilyId- | Ein eindeutiger Bezeichner (GUID), der der Enklave vom Autor zugewiesen ist. Gibt Enklaven derselben Familie an. | Kann verwendet werden, um zwischen Enklaven mit derselben Familie zu unterscheiden. Kann verwendet werden, um Import-, Versiegelungs- usw. Operationen zu Enklaven mit demselben FamilyIdzu erzwingen. |
ImageId- | Ein eindeutiger Bezeichner (GUID), der der Enklave vom Autor zugewiesen ist. | Kann verwendet werden, um zwischen Enklaven mit demselben Bild zu unterscheiden. Kann verwendet werden, um Import-, Versiegelungs- usw. Operationen zu Enklaven mit demselben ImageIdzu erzwingen. |
EnclaveSvn | Die Sicherheitsversionsnummer des primären Bilds innerhalb der Enklave. | Verglichen mit MinimumSvn für den Modulimport, um festzustellen, ob der Import abgelehnt wird. Sie wird auch bei Anmeldevorgängen verwendet. |
PlatformSvn- | Die Sicherheitsversionsnummer des VSM-Kernels. | Keine Enklave darf keine Daten entsperren, die von einer späteren SVN-Enklave versiegelt wurden. |
Flags | Flags, die die Laufzeitrichtlinie der Enklave beschreiben: - ENCLAVE_FLAG_FULL_DEBUG_ENABLED – Gibt an, dass die Enklave das Debuggen unterstützt. - ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED – Gibt an, dass die Enklave dynamisches Debuggen unterstützt. - ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE – Gibt an, dass das dynamische Debuggen für die Enklave aktiviert wurde. |
Kann verwendet werden, um zu bestätigen, ob die Enklave das Debuggen aktiviert hat oder ob sie aktiviert wurde. Mehrere Permutationen können verwendet werden, um den Zustand der Enklave zu überprüfen. |
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10, Version 1709 [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2016 [nur Desktop-Apps] |
Header- | ntenclv.h |