Compartir a través de


Función GetRuntimeAttestationReport (sysinfoapi.h)

La API GetRuntimeAttestationReport permite que un proceso de modo de usuario VTL0 recupere un informe de atestación de tiempo de ejecución firmado del kernel seguro. Este informe proporciona una lista de controladores cargados e información de integridad de código, que es esencial para validar la integridad del sistema y aplicar directivas anti-trampa en aplicaciones sensibles a la seguridad y juegos.

Syntax

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

Parámetros

Nonce

Puntero a un búfer de 32 bytes que contiene un nonce para evitar ataques de reproducción. Especifique NULL si solo calcula el tamaño de salida.

PackageVersion

Especifica la versión del paquete del informe en tiempo de ejecución. Use RUNTIME_REPORT_PACKAGE_VERSION_CURRENT para la versión más reciente.

ReportTypesBitmap

Mapa de bits que especifica los tipos de informes que se van a generar. Use la RUNTIME_REPORT_TYPE_TO_MASK macro para convertir valores de enumeración en máscaras de mapa de bits.

  • RuntimeReportTypeDriver = 0 (informe del controlador)
  • RuntimeReportTypeCodeIntegrity = 1 (informe de integridad de código)
  • RUNTIME_REPORT_TYPE_MASK_ALL (todos los informes admitidos)

ReportBuffer

Puntero a un búfer donde se colocará el informe firmado. Especifique NULL para calcular solo el tamaño de salida necesario.

ReportBufferSize

Puntero a una variable que contiene el tamaño del búfer. Actualizado con el número real de bytes escritos o, si ReportBuffer es NULL, con el tamaño necesario.

Valor devuelto

  • Devuelve TRUE si se ejecuta correctamente.
  • Devuelve FALSE en caso de error; use GetLastError() para obtener información de error extendida.

Observaciones

La API proporciona un informe de atestación en tiempo de ejecución firmado, que el back-end puede validar.

Llame a la API periódicamente durante el tiempo de ejecución para mantener up-toatestación de fecha. Calcule siempre el tamaño de búfer necesario en primer lugar pasando NULL para ReportBuffer y, a continuación, asigne el búfer y vuelva a llamar a para recuperar el informe.

El informe solo se puede generar cuando HVCI (Hypervisor-Protected integridad de código) está habilitado.

El búfer devuelto se organiza como un "Paquete de informes en tiempo de ejecución", que incluye:

  • RUNTIME_REPORT_PACKAGE_HEADER
  • Nonce de 32 bytes
  • Uno o varios RUNTIME_REPORT_DIGEST_HEADER (uno por tipo de informe)
  • Blob de firma
  • Uno o varios informes en tiempo de ejecución autenticados (cada uno con un RUNTIME_REPORT_HEADER)

Requisitos de seguridad

  • TPM 2.0, arranque seguro, VBS, HVCI y IOMMU deben estar habilitados.
  • Las marcas de firma y depuración de prueba deben estar desactivadas.

El informe de atestación solo es válido si estas características de seguridad están activas.

Requisitos

Requirement Importancia
de la plataforma de destino de Windows
Header sysinfoapi.h (incluya Windows.h)
Library Kernel32.lib
DLL de Kernel32.dll

Consulte también