Condividi tramite


Funzione GetRuntimeAttestationReport (sysinfoapi.h)

L'API GetRuntimeAttestationReport consente a un processo in modalità utente VTL0 di recuperare un report di attestazione di runtime firmato dal kernel protetto. Questo report fornisce un elenco di driver caricati e informazioni sull'integrità del codice, essenziali per la convalida dell'integrità del sistema e l'applicazione di criteri anti-inganno nelle applicazioni sensibili alla sicurezza e ai giochi.

Sintassi

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

Parametri

Nonce

Puntatore a un buffer a 32 byte contenente un nonce per impedire attacchi di riproduzione. Specificare NULL se calcolare solo le dimensioni dell'output.

PackageVersion

Specifica la versione del pacchetto del report di runtime. Usare RUNTIME_REPORT_PACKAGE_VERSION_CURRENT per la versione più recente.

ReportTypesBitmap

Bitmap che specifica i tipi di report da generare. Utilizzare la RUNTIME_REPORT_TYPE_TO_MASK macro per convertire i valori di enumerazione in maschere bitmap.

  • RuntimeReportTypeDriver = 0 (report driver)
  • RuntimeReportTypeCodeIntegrity = 1 (report sull'integrità del codice)
  • RUNTIME_REPORT_TYPE_MASK_ALL (tutti i report supportati)

ReportBuffer

Puntatore a un buffer in cui verrà inserito il report firmato. Specificare NULL per calcolare solo le dimensioni di output necessarie.

ReportBufferSize

Puntatore a una variabile contenente le dimensioni del buffer. Aggiornato con il numero effettivo di byte scritti o, se ReportBuffer è NULL, con le dimensioni necessarie.

Valore restituito

  • Restituisce TRUE in caso di esito positivo.
  • Restituisce FALSE in caso di errore; usare GetLastError() per informazioni estese sugli errori.

Osservazioni:

L'API fornisce un report di attestazione di runtime firmato, che può essere convalidato dal back-end.

Chiamare periodicamente l'API durante il runtime per mantenere up-to-date attestazione. Calcolare sempre prima le dimensioni del buffer necessarie passando NULL per ReportBuffer, quindi allocare il buffer e chiamare di nuovo per recuperare il report.

Il report può essere generato solo quando HVCI (Hypervisor-Protected l'integrità del codice) è abilitata.

Il buffer restituito è organizzato come "Pacchetto di report di runtime", che include:

  • RUNTIME_REPORT_PACKAGE_HEADER
  • Nonce a 32 byte
  • Uno o più RUNTIME_REPORT_DIGEST_HEADER (uno per tipo di report)
  • BLOB di firma
  • Uno o più report di runtime autenticati (ognuno con un RUNTIME_REPORT_HEADER)

Requisiti di sicurezza

  • TPM 2.0, Avvio protetto, VBS, HVCI e IOMMU devono essere abilitati.
  • I flag di firma di test e debug devono essere disattivati.

Il report di attestazione è valido solo se queste funzionalità di sicurezza sono attive.

Requisiti

Requisito Value
Piattaforma di destinazione Windows
Header sysinfoapi.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

Vedere anche