Partager via


GetRuntimeAttestationReport, fonction (sysinfoapi.h)

L’API GetRuntimeAttestationReport permet à un processus en mode utilisateur VTL0 de récupérer un rapport d’attestation d’exécution signé à partir du noyau sécurisé. Ce rapport fournit une liste des pilotes chargés et des informations sur l’intégrité du code, qui est essentielle pour valider l’intégrité du système et appliquer des stratégies anti-triche dans les applications de jeu et sensibles à la sécurité.

Syntaxe

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

Paramètres

Nonce

Pointeur vers une mémoire tampon de 32 octets contenant un nonce pour empêcher les attaques de relecture. Spécifiez NULL si seul le calcul de la taille de sortie.

PackageVersion

Spécifie la version du package du rapport d’exécution. Utiliser RUNTIME_REPORT_PACKAGE_VERSION_CURRENT pour la dernière version.

ReportTypesBitmap

Bitmap spécifiant les types de rapports à générer. Utilisez la RUNTIME_REPORT_TYPE_TO_MASK macro pour convertir des valeurs d’énumération en masques bitmap.

  • RuntimeReportTypeDriver = 0 (rapport du pilote)
  • RuntimeReportTypeCodeIntegrity = 1 (rapport d’intégrité du code)
  • RUNTIME_REPORT_TYPE_MASK_ALL (tous les rapports pris en charge)

ReportBuffer

Pointeur vers une mémoire tampon où le rapport signé sera placé. Spécifiez NULL pour calculer la taille de sortie requise uniquement.

ReportBufferSize

Pointeur vers une variable contenant la taille de la mémoire tampon. Mise à jour avec le nombre réel d’octets écrits ou, le cas ReportBuffer échéant NULL, avec la taille requise.

Valeur retournée

  • Retourne TRUE en cas de réussite.
  • Retourne FALSE lors de l’erreur ; utilisez GetLastError() pour obtenir des informations d’erreur étendues.

Remarques

L’API fournit un rapport d’attestation d’exécution signé, qui peut être validé par le serveur principal.

Appelez régulièrement l’API pendant l’exécution pour conserver up-to-date d’attestation. Calculez toujours la taille de mémoire tampon requise en passant d’abord NULL pour ReportBuffer, puis allouez la mémoire tampon et appelez à nouveau pour récupérer le rapport.

Le rapport ne peut être généré que lorsque HVCI (Hypervisor-Protected Intégrité du code) est activé.

La mémoire tampon retournée est organisée sous la forme d’un « package de rapport d’exécution », qui inclut :

  • RUNTIME_REPORT_PACKAGE_HEADER
  • Nonce de 32 octets
  • Un ou plusieurs RUNTIME_REPORT_DIGEST_HEADER (un par type de rapport)
  • Objet blob de signature
  • Un ou plusieurs rapports d’exécution authentifiés (chacun avec un RUNTIME_REPORT_HEADER)

Spécifications de sécurité

  • TPM 2.0, Secure Boot, VBS, HVCI et IOMMU doivent être activés.
  • Les indicateurs de signature et de débogage de test doivent être désactivés.

Le rapport d’attestation est valide uniquement si ces fonctionnalités de sécurité sont actives.

Spécifications

Requirement Valeur
plateforme cible Fenêtres
Header sysinfoapi.h (include Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

Voir aussi