Attestation Confidential VM

L'attestation d'une instance Confidential VM est un processus qui vise à renforcer la confiance dans la légitimité de l'instance et dans son fonctionnement dans un état attendu. Il s'agit d'un outil essentiel pour valider que votre charge de travail s'exécute dans un environnement d'exécution sécurisé (TEE).

Attestation basée sur le processeur

Les rapports d'attestation sont la preuve que votre VM s'exécute dans un TEE. Elles sont générées par l'instance Confidential VM et, selon la technologie d'informatique confidentielle utilisée, sont signées par un vTPM logiciel ou un module de sécurité fiable (TSM) matériel dédié. Les rapports d'attestation contiennent des mesures liées à l'activité du bootloader, à la configuration matérielle, à la configuration du micrologiciel et à d'autres événements enregistrés au moment du démarrage qui permettent de valider l'état et l'identité de l'instance de Confidential VM.

Le type de rapport d'attestation que vous pouvez demander dépend de la technologie d'informatique confidentielle utilisée par votre instance Confidential VM.

Source de la signature Type Couverture du rapport Technologie d'informatique confidentielle
SEV SEV-SNP Intel TDX
vTPM géré par Google vTPM logiciel Activité du bootloader, intégrité du kernel
Processeur sécurisé AMD1 TSM matériel Environnement matériel et de micrologiciel
Module Intel TDX TSM matériel Environnement matériel et micrologiciel2

1. Le processeur sécurisé AMD est une ressource partagée disponible pour tous les hôtes du serveur physique sur lequel il est présent. Un hôte peut limiter l'accès invité au processeur sécurisé. Les mises à jour du micrologiciel du processeur sécurisé (qui sont considérées comme des événements hôtes) peuvent avoir lieu à tout moment.

2. Le composant de lancement initial (le micrologiciel) pour les instances TDX Confidential VM est mesuré dans la mesure du domaine de confiance (MRTD), tandis que le reste de la chaîne de démarrage est mesuré dans les registres de mesure d'exécution (RTMR), en ancrant toutes les mesures dans le matériel. Les utilisateurs peuvent étendre le registre RTMR[3] avec des mesures d'espace utilisateur.

Demander un rapport d'attestation

Vous pouvez demander des rapports d'attestation à partir du module vTPM géré par Google, du processeur sécurisé d'AMD et du module TDX d'Intel à l'aide des outils suivants :

  • Go-TPM

  • Outils Go-TPM (version 0.4.4 ou ultérieure requise pour la compatibilité avec AMD SEV-SNP et Intel TDX)

L'événement GceNonHostInfo dans le journal des événements d'attestation vTPM indique la technologie d'informatique confidentielle utilisée. Les outils Go-TPM peuvent demander un rapport d'attestation au processeur sécurisé AMD si AMD SEV-SNP est utilisé, ou au module Intel TDX si Intel TDX est utilisé.

Pour les rapports d'attestation matérielle uniquement, vous pouvez envoyer un défi cryptographique au TSM avec les outils suivants :

  • Pour AMD SEV-SNP, utilisez SEV Guest. Les certificats VCEK (Version Chip Endorsement Key) sont mis en cache sur la VM au lieu d'être demandés directement au système de distribution de clés (KDS) d'AMD.

  • Pour Intel TDX, utilisez TDX Guest.

Intel TDX sur Ubuntu

Pour les images Ubuntu sur le noyau 1016 et versions ultérieures, le module tdx_guest se trouve dans le package linux-modules-extra.

Pour installer le package linux-modules-extra, exécutez la commande suivante :

sudo apt-get install linux-modules-extra-gcp

Si vous rencontrez des problèmes lors de l'installation de linux-modules-extra-gcp, vous pouvez mettre à jour le noyau en exécutant la commande suivante :

sudo apt-get upgrade

Vous devez redémarrer ou charger manuellement le module pour que les modifications soient prises en compte. Pour charger manuellement le module, exécutez la commande suivante :

sudo modprobe tdx_guest

Vérifier les rapports d'attestation avec Google Cloud Attestation

Si votre modèle de confiance le permet, vous pouvez utiliser Google Cloud Attestation au lieu d'écrire et d'exécuter vous-même un validateur d'attestation. Cela implique d'utiliser les outils Go-TPM pour récupérer un devis d'attestation à partir du vTPM d'une instance Confidential VM et de l'envoyer à Google Cloud Attestation pour vérification. Si la citation est validée, Google Cloud Attestation renvoie un jeton contenant des informations sur la VM que vous pouvez ensuite comparer à votre propre règle pour confirmer si la VM doit être considérée comme fiable ou non.

L'attestation Google Cloud peut être utilisée avec les instances Confidential VM qui utilisent les technologies d'informatique confidentielle suivantes :

Pour obtenir un exemple de bout en bout d'utilisation de Google Cloud Attestation, consultez l'atelier de programmation Attestation à distance vTPM sur une Confidential VM.

Attestation basée sur le GPU

L'attestation du GPU consiste à vérifier le pilote et/ou l'appareil GPU.

Problèmes connus

L'attestation du GPU peut échouer et signaler un enregistrement de mesure non concordant à l'index 9. Google et NVIDIA travaillent à la résolution de ce problème.

Pour contourner ce problème, arrêtez et redémarrez complètement la Confidential VM. Le redémarrage de la VM à partir de son OS invité ne résout pas le problème.

Attestation du pilote de GPU

Pour garantir une attestation robuste, activez le démarrage sécurisé lorsque vous créez votre instance Confidential VM.

Le démarrage sécurisé permet de charger uniquement les pilotes de GPU signés par la distribution. Cette vérification est essentielle pour confirmer que le pilote de GPU est officiellement publié et fourni par NVIDIA. Un pilote officiel est important, car il établit une session SPDM (Security Protocol and Data Model) sécurisée avec les appareils GPU et sert de racine de confiance pour l'attestation des appareils GPU NVIDIA.

Attestation des appareils GPU NVIDIA

En plus de l'attestation du pilote de GPU, vous pouvez attester des appareils GPU NVIDIA. L'attestation d'appareil GPU NVIDIA permet de vérifier le VBIOS (Video BIOS) exécuté sur le GPU. Vous pouvez ainsi identifier les versions logicielles NVIDIA et évaluer la présence de failles potentielles.

Pour effectuer l'attestation d'appareil GPU NVIDIA, installez les dépendances go-nvattest-tools et créez l'outil nvattest à partir de google/go-nvattest-tools :

  1. Installez les dépendances de compilation :

    sudo apt-get update && sudo apt-get install -y \
      git gcc pkg-config libxml2-dev curl
    
  2. Téléchargez et installez Go :

    GO_VERSION="1.25.0"
    curl -fsSL \
      "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
      -o go.tar.gz
    sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go.tar.gz
    rm go.tar.gz
    export PATH=/usr/local/go/bin:$PATH
    
  3. Clonez le dépôt et compilez le binaire nvattest :

    git clone https://github.com/google/go-nvattest-tools.git
    cd go-nvattest-tools
    go build -o nvattest ./cmd/nvattest
    

Attestation de l'appareil GPU local

L'attestation locale des périphériques GPU vous permet d'effectuer le processus d'attestation directement sur votre instance de VM et d'afficher les résultats localement pour vérifier l'intégrité de votre GPU.

Pour effectuer l'attestation en direct d'un appareil GPU local, exécutez l'outil nvattest directement sur votre instance de VM confidentielle :

sudo ./nvattest attest --device=gpu

Vous pouvez également séparer la collecte des preuves de la validation :

  1. Générez un nonce hexadécimal de 32 octets et collectez les preuves d'attestation :

    NONCE=$(openssl rand -hex 32)
    sudo ./nvattest collect-evidence \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json
    
  2. Vérifiez les preuves collectées localement :

    ./nvattest attest \
      --device=gpu \
      --nonce="${NONCE}" \
      --evidence_file=gpu_evidence.json