Поделиться через


Функция GetRuntimeAttestationReport (sysinfoapi.h)

API GetRuntimeAttestationReport позволяет процессу пользовательского режима VTL0 получить подписанный отчет аттестации среды выполнения из безопасного ядра. В этом отчете представлен список загруженных драйверов и сведений о целостности кода, необходимых для проверки целостности системы и применения политик защиты от мошенничества в игровых и защищенных приложениях.

Синтаксис

BOOL GetRuntimeAttestationReport(
  UCHAR   *Nonce,
  UINT16  PackageVersion,
  UINT64  ReportTypesBitmap,
  PVOID   ReportBuffer,
  PUINT32 ReportBufferSize
);

Параметры

Nonce

Указатель на 32-байтовый буфер, содержащий nonce, чтобы предотвратить атаки воспроизведения. Укажите 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даты. Всегда вычисляйте требуемый размер буфера сначала путем передачи NULL для ReportBuffer, а затем выделите буфер и вызов еще раз, чтобы получить отчет.

Отчет можно создать только при включении 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

См. также