다음을 통해 공유


GetRuntimeAttestationReport 함수(sysinfoapi.h)

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

참고하십시오