Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 |