ENCLAVE_IDENTITY 구조체(ntenclv.h)
enclave의 기본 모듈의 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]
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_ENABLED0x00000001 |
enclave는 디버깅을 지원합니다. |
ENCLAVE_FLAG_DYNAMIC_DEBUG_ENABLED0x00000002 |
enclave는 동적 디버깅을 지원합니다. |
ENCLAVE_FLAG_DYNAMIC_DEBUG_ACTIVE0x00000004 |
Enclave에 대해 동적 디버깅이 설정됩니다. |
SigningLevel
enclave에 대한 기본 모듈의 서명 수준입니다.
EnclaveType
발언
각 enclave에는 enclave가 만들어지고 enclave가 초기화될 때 설정될 때 구성된 ENCLAVE_IDENTITY 있습니다. 아래에 설명된 몇 가지 속성이 포함되어 있습니다.
재산 | 이 속성은 어떻게 생성되는가? | 이 속성의 유효성을 검사할 때의 값은 무엇인가요? |
---|---|---|
ownerId |
enclave를 만들 때 설정(CreateEnclave)하고 enclave의 소유자(작성자)를 나타냅니다. | 동일한 소유자가 만든 enclave를 구분하는 데 사용할 수 있습니다. |
UniqueId |
Enclave 이미지의 전체 콘텐츠를 고유하게 측정합니다. Enclave의 기본 이미지가 로드되면 Authenticode 서명의 PKCS#1 부분에 포함된 다이제스트가 Enclave 고유 ID로 캡처됩니다. | enclave 내에서 실행되는 코드의 속성 및 서명자 정보를 포함하여 특정 enclave의 정확한 인스턴스를 구분하는 데 사용할 수 있습니다. |
AuthorId | 게시자는 다른 VBS Enclave에 서명하기 위해 지정된 인증서를 사용하고 봉인 관점에서 다른 신뢰 관계를 가질 수 있습니다. 작성자 ID는 enclave 게시자를 고유하게 식별합니다. 작성자 ID는 다음의 해시입니다. - 서명자 ID - 리프 인증서의 주체 이름 - 서명의 OPUS 정보(있는 경우)입니다. signtool.exe 서명 인프라를 통해 추가됩니다. 타사 제출이 Microsoft에서 서명하는 시나리오의 경우 다른 제출자를 구분하는 데도 사용됩니다. |
서명 목적으로 enclave 게시자를 구분하는 데 사용할 수 있습니다. |
FamilyId | 작성자가 enclave에 할당한 고유 식별자(GUID)입니다. 동일한 패밀리의 enclave를 표시합니다. | 동일한 패밀리를 가진 enclave를 구분하는 데 사용할 수 있습니다. 동일한 FamilyId있는 enclave에 가져오기, 봉인 등의 작업을 적용하는 데 사용할 수 있습니다. |
ImageId |
작성자가 enclave에 할당한 고유 식별자(GUID)입니다. | 동일한 이미지를 가진 enclave를 구분하는 데 사용할 수 있습니다. ImageId동일한 |
EnclaveSvn | enclave 내의 기본 이미지의 보안 버전 번호입니다. | 모듈 가져오기의 MinimumSvn 비교하여 가져오기가 거부되었는지 확인합니다. 서명 작업에도 사용됩니다. |
PlatformSvn | VSM 커널의 보안 버전 번호입니다. | 이후 SVN enclave에 의해 봉인된 데이터의 봉인을 해제할 수 있는 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 |
참고 항목
enclave 구조
CreateEnclave