GetRuntimeAttestationReport API를 사용하면 VTL0 사용자 모드 프로세스가 보안 커널에서 서명된 런타임 증명 보고서를 검색할 수 있습니다. 이 보고서는 시스템 무결성의 유효성을 검사하고 게임 및 보안에 민감한 애플리케이션에서 치트 방지 정책을 적용하는 데 필수적인 로드된 드라이버 및 코드 무결성 정보 목록을 제공합니다.
문법
BOOL GetRuntimeAttestationReport(
UCHAR *Nonce,
UINT16 PackageVersion,
UINT64 ReportTypesBitmap,
PVOID ReportBuffer,
PUINT32 ReportBufferSize
);
매개 변수
Nonce
재생 공격을 방지하기 위해 nonce를 포함하는 32바이트 버퍼에 대한 포인터입니다.
NULL 출력 크기만 계산하는지 지정합니다.
PackageVersion
런타임 보고서의 패키지 버전을 지정합니다. 최신 버전에 사용합니다 RUNTIME_REPORT_PACKAGE_VERSION_CURRENT .
ReportTypesBitmap
생성할 보고서 형식을 지정하는 비트맵입니다. 매크로를 RUNTIME_REPORT_TYPE_TO_MASK 사용하여 열거형 값을 비트맵 마스크로 변환합니다.
-
RuntimeReportTypeDriver= 0(드라이버 보고서) -
RuntimeReportTypeCodeIntegrity= 1(코드 무결성 보고서) -
RUNTIME_REPORT_TYPE_MASK_ALL(지원되는 모든 보고서)
ReportBuffer
서명된 보고서가 배치될 버퍼에 대한 포인터입니다. 필요한 출력 크기만 계산하도록 지정 NULL 합니다.
ReportBufferSize
버퍼의 크기를 포함하는 변수에 대한 포인터입니다. 작성된 실제 바이트 수 또는 ReportBuffer 필요한 크기로 업데이트되었습니다 NULL.
반환 값
- 성공하면 TRUE를 반환합니다.
- 오류 발생시 FALSE를 반환합니다. 확장 오류 정보는 GetLastError()를 사용합니다.
비고
API는 백 엔드에서 유효성을 검사할 수 있는 서명된 런타임 증명 보고서를 제공합니다.
런타임 중에 API를 주기적으로 호출하여 up-to-date 증명을 유지 관리합니다. 항상 ReportBuffer에 대해 NULL을 전달하여 필요한 버퍼 크기를 먼저 계산한 다음, 버퍼를 할당하고 다시 호출하여 보고서를 검색합니다.
HVCI(Hypervisor-Protected 코드 무결성)를 사용하도록 설정한 경우에만 보고서를 생성할 수 있습니다.
반환된 버퍼는 다음을 포함하는 "런타임 보고서 패키지"로 구성됩니다.
- RUNTIME_REPORT_PACKAGE_HEADER
- 32바이트 nonce
- 하나 이상의 RUNTIME_REPORT_DIGEST_HEADER(보고서 유형당 하나)
- 서명 Blob
- 하나 이상의 인증된 런타임 보고서(각각 RUNTIME_REPORT_HEADER 포함)
보안 요구 사항
- TPM 2.0, 보안 부팅, VBS, HVCI 및 IOMMU를 사용하도록 설정해야 합니다.
- 테스트 서명 및 디버그 플래그는 꺼져 있어야 합니다.
증명 보고서는 이러한 보안 기능이 활성 상태인 경우에만 유효합니다.
요구 사항
| 요구 사항 | 가치 |
|---|---|
| 대상 플랫폼 | 윈도우즈 |
| Header | sysinfoapi.h(Windows.h 포함) |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |