OVHcloud LabsOVHcloud LabsoCCAM

OVHcloud Confidential Computing Attestation Manager

Confidential Computing

Vos données restent illisibles, même pendant leur traitement. Ne croyez personne : vérifiez-le.Your data stays unreadable, even while it is processed. Trust no one: verify it.

D'habitude, une donnée est chiffrée sur le disque et sur le réseau, mais en clair dans la mémoire pendant qu'on la traite. Ici, la puce du serveur chiffre aussi la mémoire. Cliquez sur « Demander la preuve » : votre navigateur interroge le service et vérifie lui-même la preuve de la machine.Usually, data is encrypted on disk and on the network, but in the clear in memory while it is processed. Here, the server's chip encrypts the memory too. Click "Request the proof": your browser queries the service and checks the machine's proof itself.

Le bon logicielThe right softwarec'est exactement le programme prévu, rien d'ajoutéexactly the intended program, nothing added

Une vraie puce protégéeA genuine protected chipAMD ou Intel authentique, au niveau de correctifs exigéauthentic AMD or Intel, at the required patch level

Une mémoire chiffréeEncrypted memoryni l'hébergeur, ni OVHcloud ne peuvent la lireneither the host nor OVHcloud can read it

Pour :For:données de santéhealth datamodèles d'IA et leurs promptsAI models and their promptssecrets et cléssecrets and keysdonnées clients réglementéesregulated customer data
Une charge de travail confidentielle, c'est :A confidential workload can be:
La VM confidentielle de démo, sur :The demo confidential VM, on:
AffichageView

Qwen3-235B sur 8 GPU NVIDIA B300, dans une VM Intel TDX attestée par oCCAM. Votre navigateur la vérifie, puis chiffre chaque question pour elle seule.Qwen3-235B on 8 NVIDIA B300 GPUs, in an Intel TDX VM attested by oCCAM. Your browser checks it, then encrypts each question for it alone.

Inférence confidentielle sur NVIDIA HGX B300. oCCAM atteste ensemble une VM confidentielle et ses 8 GPU B300 ; votre navigateur le vérifie, puis converse avec le modèle, chiffré de bout en bout.Confidential inference on NVIDIA HGX B300. oCCAM attests a confidential VM and its 8 B300 GPUs together; your browser checks it, then talks with the model, encrypted end to end.

oCCAM vérifie les VM confidentielles AMD SEV-SNP et Intel TDX. Il contrôle la preuve que donne leur processeur, puis signe un verdict. Il tourne lui-même dans des VM confidentielles AMD SEV-SNP : c'est le vérificateur oCCAM.oCCAM checks AMD SEV-SNP and Intel TDX confidential VMs. It checks the proof their processor gives, then signs a verdict. It runs itself in AMD SEV-SNP confidential VMs: the oCCAM verifier.

Votre navigateur vérifie tout lui-même, en deux temps. D'abord le vérificateur oCCAM : sa preuve matérielle AMD, l'image qu'il exécute et la clé qui signe ses verdicts. Ensuite la VM de démo : votre navigateur lui envoie votre question (un nombre tiré au hasard), et le vérificateur oCCAM signe un verdict qui la contient. Chaque carte ci-dessous dit ce qu'elle prouve.Your browser checks everything itself, in two steps. First the oCCAM verifier: its AMD hardware proof, the image it runs and the key that signs its verdicts. Then the demo VM: your browser sends it your question (a random number), and the oCCAM verifier signs a verdict that contains it. Each card below says what it proves.

Votre navigateur vérifie tout lui-même, en deux temps. D'abord le vérificateur oCCAM, qui tourne sur AMD SEV-SNP : sa preuve matérielle, l'image qu'il exécute et la clé qui signe ses verdicts. Ensuite la VM de démo, sur Intel TDX (un TD, le nom qu'Intel lui donne) : votre navigateur envoie votre question (un nombre tiré au hasard) au relais de la VM, le vérificateur oCCAM vérifie sa preuve jusqu'à la racine Intel et signe un verdict qui porte votre question, que votre navigateur vérifie.Your browser checks everything itself, in two steps. First the oCCAM verifier, which runs on AMD SEV-SNP: its hardware proof, the image it runs and the key that signs its verdicts. Then the demo VM, on Intel TDX (a TD, Intel's name for it): your browser sends your question (a random number) to the VM's relay, the oCCAM verifier checks its proof up to Intel's root and signs a verdict that carries your question, which your browser checks.

cK8S, le Kubernetes confidentiel d'oCCAM. Chaque nœud du cluster est une VM confidentielle, attestée par oCCAM avant de rejoindre le cluster ; les pods tournent à l'intérieur. Le serveur Kubernetes reste à l'extérieur et n'est jamais cru. Votre navigateur vérifie d'abord le vérificateur oCCAM, puis la preuve d'identité d'un pod, liée à votre question (un nombre tiré au hasard). Rien n'est lu dans l'API Kubernetes.cK8S, oCCAM's confidential Kubernetes. Each node of the cluster is a confidential VM, attested by oCCAM before it joins the cluster; the pods run inside it. The Kubernetes server stays outside and is never believed. Your browser checks first the oCCAM verifier, then a pod's identity proof, bound to your question (a random number). Nothing is read from the Kubernetes API.

Le lien de référence #measurement=The #measurement= reference link
L'opérateur publie, hors de cette page (un lien, un QR code), la mesure attendue du vérificateur oCCAM : 96 chiffres hexadécimaux après #measurement=. Ce fragment ne quitte jamais votre navigateur : le serveur ne le reçoit pas. Votre navigateur le compare à la mesure que prouve le matériel. Sans le lien de référence, la page ne peut que croire le serveur sur parole : la carte de la mesure reste ambre, « valeur de l'opérateur ».The operator publishes, outside this page (a link, a QR code), the expected measurement of the oCCAM verifier: 96 hex digits after #measurement=. This fragment never leaves your browser: the server does not receive it. Your browser compares it with the measurement the hardware proves. Without the reference link, the page can only take the server's word: the measurement card stays amber, "operator value".

Une machine virtuelle confidentielle tourne sur un vrai processeur AMD. Sa mémoire est chiffrée par la puce : même l'hébergeur ne peut pas la lire. Vérifiez-le en quatre étapes.A confidential virtual machine runs on a real AMD processor. Its memory is encrypted by the chip: even the host cannot read it. Check it in four steps.

Une machine virtuelle confidentielle (un TD, le nom qu'Intel lui donne) tourne sur un vrai processeur Intel. Sa mémoire est chiffrée par la puce : même l'hébergeur ne peut pas la lire. Vérifiez-le en quatre étapes.A confidential virtual machine (a TD, Intel's name for it) runs on a real Intel processor. Its memory is encrypted by the chip: not even the host can read it. Check it in four steps.

Un cluster Kubernetes dont chaque nœud est une machine confidentielle. Le serveur Kubernetes, lui, n'est pas digne de confiance : rien de ce qu'il dit ne compte. Vérifiez un pod en cinq étapes.A Kubernetes cluster whose every node is a confidential machine. The Kubernetes server is not trusted: nothing it says counts. Check a pod in five steps.

Plan de contrôleControl plane-

VM de démoDemo VMAMD SEV-SNP, EPYC Turin, bare metal · verdict signé par le vérificateur oCCAMAMD SEV-SNP, EPYC Turin, bare metal · verdict signed by the oCCAM verifierIntel TDX, Xeon, bare metal · verdict signé par le vérificateur oCCAM, en AMD SEV-SNPIntel TDX, Xeon, bare metal · verdict signed by the oCCAM verifier, on AMD SEV-SNPKubernetes confidentiel · les nœuds du cluster de démo, lus dans le flux public (non signé) · serveur Kubernetes hors confianceConfidential Kubernetes · the demo cluster's nodes, read from the public feed (unsigned) · Kubernetes server untrustedIntel TDX et 8 GPU NVIDIA B300 · conversation chiffrée en HPKE X-Wing par votre navigateur, vers la passerelle attestéeIntel TDX and 8 NVIDIA B300 GPUs · conversation encrypted with HPKE X-Wing by your browser, to the attested gateway

IA confidentielle sur NVIDIA HGX B300Confidential AI on NVIDIA HGX B300

En direct. Posez une question à un modèle d'IA (Qwen3) qui tourne dans une VM confidentielle Intel TDX à 8 GPU NVIDIA B300. Avant d'envoyer le moindre octet, votre navigateur vérifie le vérificateur oCCAM, puis la VM et ses GPU (les cartes ci-dessous). Ensuite seulement, il chiffre votre question en HPKE X-Wing, post-quantique hybride, vers la clé de la passerelle attestée. Rien ne quitte votre navigateur en clair : l'ingress et l'hôte ne voient que du chiffré, et la réponse revient chiffrée. La conversation reste dans cet onglet, nulle part ailleurs.Live. Ask a question to an AI model (Qwen3) running in an Intel TDX confidential VM with 8 NVIDIA B300 GPUs. Before sending a single byte, your browser checks the oCCAM verifier, then the VM and its GPUs (the cards below). Only then does it encrypt your question with hybrid post-quantum HPKE X-Wing, to the attested gateway's key. Nothing leaves your browser in clear: the ingress and the host see ciphertext only, and the answer comes back encrypted. The conversation stays in this tab, nowhere else.

Ce que votre navigateur vérifie avant d'envoyer un octetWhat your browser checks before sending one byte

Le vérificateur oCCAM, vérifié par votre navigateurThe oCCAM verifier, checked by your browser

La preuve matérielle AMD de chaque invité du vérificateur oCCAM, la clé qui signe ses verdicts, et sa mesure, comparée au lien de référence #measurement=. Seule une clé ainsi prouvée peut signer le verdict sur la passerelle.The AMD hardware proof of each oCCAM verifier guest, the key that signs its verdicts, and its measurement, compared with the #measurement= reference link. Only a key proven this way can sign the verdict on the gateway.

Chaîne AMD (ARK, ASK, VCEK), rapport SEV-SNP, REPORT_DATA lié à la clé, kid égal à son empreinte : les mêmes fonctions que pour la VM de démo.AMD chain (ARK, ASK, VCEK), SEV-SNP report, REPORT_DATA bound to the key, kid equal to its thumbprint: the same functions as for the demo VM.

Vert : chaque preuve vérifiée par votre navigateur et la mesure égale au lien. Sans lien, ambre, et les cartes suivantes aussi.Green: each proof verified by your browser and the measurement equal to the link. Without a link, amber, and the next cards too.

La clé de la passerelle : X-Wing, encore valideThe gateway's key: X-Wing, still valid

Votre navigateur lit les clés que publie la passerelle d'inférence, née dans la VM, et garde celle qui offre la seule suite acceptée, X-Wing (ML-KEM-768 et X25519), HKDF-SHA256, AES-256-GCM, et dont la date de fin n'est pas passée. Aucune suite classique de repli.Your browser reads the keys the inference gateway, born in the VM, publishes, and keeps the one that offers the one accepted suite, X-Wing (ML-KEM-768 and X25519), HKDF-SHA256, AES-256-GCM, and whose end date has not passed. No classical suite to fall back to.

GET /ci/v1/keys ; une configuration de clé (RFC 9458) lue en entier, sous son propre key_id.; one key configuration (RFC 9458) read whole, under its own key_id.

Vert : une clé X-Wing lue et encore valide, vérifiée par votre navigateur.Green: an X-Wing key read and still valid, checked by your browser.

Un verdict lié à cette clé, récentA verdict bound to this key, recent

Votre navigateur tire un nombre au hasard et demande à la passerelle un verdict sur sa clé. Le verdict doit être signé par une clé du vérificateur oCCAM prouvée ci-dessus, et porter la valeur que votre navigateur recalcule sur la clé reçue, sa date de fin et votre nombre : la clé est bien celle de la VM attestée, maintenant.Your browser draws a random number and asks the gateway for a verdict on its key. The verdict must be signed by an oCCAM verifier key proven above, and carry the value your browser recomputes over the key received, its end date and your number: the key is indeed the attested VM's, now.

ci_key_nonce = SHA-256("occam/ci-key/v1\0" ‖ key_config ‖ not_after ‖ nonce) ; iss, aud, exp, nonce et eat_nonce ; émis il y a moins de 120 s.; iss, aud, exp, nonce and eat_nonce; issued less than 120 s ago.

Vert : la signature, la liaison et la fraîcheur vérifiées par votre navigateur, la mesure du vérificateur oCCAM égale au lien.Green: the signature, the binding and the freshness verified by your browser, the oCCAM verifier's measurement equal to the link.

La VM d'inférence : un TD Intel de l'image épingléeThe inference VM: an Intel TD of the pinned image

Le verdict signé dit que la VM est un TD Intel TDX avec GPU NVIDIA, que sa mesure est celle de l'image d'inférence inscrite dans cette page, que son TCB est à jour selon Intel et que la policy l'admet.The signed verdict says the VM is an Intel TDX TD with NVIDIA GPUs, that its measurement is the inference image's written in this page, that its TCB is up to date according to Intel and that the policy admits it.

tee_type TDX_WITH_NVIDIA_GPU ; tcb_status UpToDate ; policy_result pass

Vert : chaque valeur signée égale à l'attendue, sous un verdict vert.Green: each signed value equal to the expected one, under a green verdict.

Ses 8 GPU NVIDIA B300, attestésIts 8 NVIDIA B300 GPUs, attested

Le verdict nomme au moins 8 GPU, chacun vérifié avec le processeur : certificat bon (OCSP), mesures du pilote et du VBIOS vérifiées (RIM), TCB à jour. Votre navigateur recalcule l'identifiant opaque de chaque GPU.The verdict names at least 8 GPUs, each checked with the processor: certificate good (OCSP), driver and VBIOS measurements verified (RIM), TCB up to date. Your browser recomputes each GPU's opaque identifier.

Profil EAT v3 ; gpu_id, un UUID v8 de SHA-256("occam/gpu-id/v1\0" ‖ enclave ‖ index) ; verdict_source NVIDIA NRAS ou oCCAM lui-même.EAT profile v3; gpu_id, a v8 UUID of SHA-256("occam/gpu-id/v1\0" ‖ enclave ‖ index); verdict_source NVIDIA NRAS or oCCAM itself.

Vert : 8 GPU au moins, chacun conforme, sous un verdict vert.Green: at least 8 GPUs, each compliant, under a green verdict.

Non révoquéNot revoked

La consultation publique dit si ce verdict a été révoqué. Une réponse inconnue n'est jamais comptée comme non révoquée : rien n'est envoyé.The public lookup says whether this verdict was revoked. An unknown answer is never counted as not revoked: nothing is sent.

GET /.well-known/revocations/{jti}

Vert : la consultation répond not_listed, sous un verdict vert.Green: the lookup answers not_listed, under a green verdict.

Chat attestéAttested chatVotre conversation, chiffrée de bout en boutYour conversation, encrypted end to end

Pas encore vérifiée : votre première question la vérifie d'abord.Not checked yet: your first question checks it first.Vérification…Checking…VM vérifiée : vos questions sont chiffrées pour elle seule.VM verified: your questions are encrypted for it alone.Vérifiée sans lien de référence #measurement= : la page croit le serveur sur la mesure du vérificateur oCCAM.Checked without a #measurement= reference link: the page takes the server's word for the oCCAM verifier's measurement.

Aucun message encore. Votre première question vérifie d'abord la VM ; un refus bloque l'envoi et dit pourquoi.No message yet. Your first question checks the VM first; a refusal blocks the send and says why.

Pas encore vérifiéNot verified yet

L'architecture de ce chatThe architecture of this chat

Confidential inference on NVIDIA HGX B300: a chat sealed from your device to the TD
De votre navigateur au TD : votre question n'est en clair que dans votre navigateur et dans la mémoire chiffrée du TD ; entre les deux, l'ingress, le tunnel, le relais et l'hôte ne voient que du chiffré. Le schéma est en anglais.From your browser to the TD: your question is in clear only in your browser and in the TD's encrypted memory; in between, the ingress, the tunnel, the relay and the host see ciphertext only.

Inférence confidentielle sur NVIDIA HGX B300Confidential inference on NVIDIA HGX B300

L'application parle OpenAI à un proxy local. Le proxy vérifie le verdict signé par oCCAM, puis chiffre la requête vers une passerelle attestée, dans la VM. Les 8 GPU B300 sont attestés avec le processeur, par NVIDIA NRAS ou par oCCAM lui-même. La clé des poids du modèle est partagée en deux parts (2-of-2).The application speaks OpenAI to a local proxy. The proxy checks the verdict oCCAM signed, then encrypts the request to an attested gateway, inside the VM. The 8 B300 GPUs are attested together with the processor, by NVIDIA NRAS or by oCCAM itself. The model's weights key is split in two shares (2-of-2).

de confiancetrustedla VM, ses 8 GPU, le vérificateur oCCAM et le proxy du client : chacun prouvé par l'attestation ou tenu par le clientthe VM, its 8 GPUs, the oCCAM verifier and the customer's proxy: each proven by attestation or held by the customer
hors confiance ou externeuntrusted or externall'application, l'ingress, l'hôte, le registre des déclarations, NVIDIA : ne voient que du chiffré, ou ne sont pas d'oCCAMthe application, the ingress, the host, the statement log, NVIDIA: they see ciphertext only, or are not oCCAM's
traitslinespleins : données de l'utilisateur (chiffrées hors de la VM) ; pointillés : attestation et cléssolid: the user's data (encrypted outside the VM); dashed: attestation and keys
4clés publiques et leur preuvepublic keys and their proof UtilisateurUser poste ou serveur du clientthe customer's workstation or server Application compatible OpenAIOpenAI-compatible application base_url = le proxy localbase_url = the local proxy Proxy local occamoccam local proxy 1. vérifie le verdict signé :1. checks the signed verdict: question, mesure, GPU, policy, questionmeasurement, GPUs, policy 2. chiffre en HPKE (OHTTP-like)2. encrypts with HPKE (OHTTP-like) vers la clé attestéeto the attested key 15 Ingress OVHcloudOVHcloud ingress TLS terminé hors de la VM :TLS terminated outside the VM: ne voit que du chiffrésees ciphertext only 4 Déclarations de versionRelease statements publiques, signées hors lignepublic, signed offline la mesure attendue de chaquethe expected measurement of each image d'inférence et duinference image and of the vérificateur oCCAMoCCAM verifier Hôte HGX B300 OVHcloud (hors confiance)OVHcloud HGX B300 host (untrusted) hyperviseur et administrateurs : ne voient que du chiffréhypervisor and administrators: see ciphertext only VM confidentielle (TD Intel TDX)Confidential VM (Intel TDX TD) Passerelle attestéeAttested gateway clé privée HPKE née dansHPKE private key born in la VM, liée à l'attestation ;the VM, bound to the déchiffre les prompts,attestation; decrypts prompts, chiffre les réponsesencrypts responses occam-agent atteste le processeur etattests the processor and les GPU, les déclare prêts,the GPUs, marks them ready, donne une preuve à lagives a proof to the passerelle (socket locale)gateway (local socket) 2 Serveur d'inférenceInference server épinglé, dans la racinepinned, in the measured mesurée, n'écoute queroot, listens on localhostlocalhost only 6 Volume des poids (LUKS2)Weights volume (LUKS2) ouvert seulement quandopened only once the les GPU sont attestésGPUs are attested (clé en deux parts)(two-share key) Pilote NVIDIA 595 (open), mode CCNVIDIA 595 open driver, CC mode tampons chiffrés (AES-GCM) sur PCIe, SPDM avec chaque GPUencrypted buffers (AES-GCM) over PCIe, SPDM with each GPU 6 8 x NVIDIA B300 SXM6, mode CC multi-GPU8 x NVIDIA B300 SXM6, multi-GPU CC mode GPU 0 GPU 1 GPU 2 GPU 3 GPU 4 GPU 5 GPU 6 GPU 7 un rapport d'attestation signé par GPU ;one signed attestation report per GPU; NVLink chiffré entre les 8 GPU (NVLE)encrypted NVLink between the 8 GPUs (NVLE) Entre la VM et les GPU, les données traversentBetween the VM and the GPUs, the data crosses l'hôte chiffréesthe host encrypted Plan de contrôle oCCAMoCCAM control plane vérificateur oCCAM : VM AMD SEV-SNP mesuréesoCCAM verifier: measured AMD SEV-SNP VMs Verdict signé : processeur + GPUSigned verdict: processor + GPUs un seul jeton pour la VM et ses 8 GPUone token for the VM and its 8 GPUs Vérifie le processeur et les 8 GPUChecks the processor and the 8 GPUs par NVIDIA NRAS, ou lui-même (RIM, OCSP)through NVIDIA NRAS, or itself (RIM, OCSP) Policies signées par le tenantPolicies signed by the tenant mesure de l'image, exigences GPUthe image's measurement, GPU requirements Libération des secretsSecret release la clé des poids sur GPU attestés seulementthe weights key on attested GPUs only Clés publiques et leur preuvePublic keys and their proof la clé des verdicts, née dans la VMthe verdict key, born in the VM du vérificateur, prouvée par AMDof the verifier, proven by AMD 3 7 NVIDIA : NRAS, RIM et OCSP (externe)NVIDIA: NRAS, RIM and OCSP (external) verdict signé ou références des 8 GPUa signed verdict or the 8 GPUs' references Releaser du propriétaire du modèleModel owner's releaser sa part de la clé des poidsits share of the weights key (2-of-2), sur un verdict CPU + GPU récent(2-of-2), on a recent CPU + GPU verdict 7
Les numéros suivent une session d'inférence, décrite ci-dessous.The numbers follow one inference session, described below.

Une session, de la VM à la réponse chiffréeOne session, from the VM to the encrypted response

  1. 1Le proxy demande l'attestation de la passerelle, avec une question nouvelle.The proxy asks for the gateway's attestation, with a new question.
  2. 2La passerelle demande à l'agent oCCAM de la VM une preuve qui lie sa clé de chiffrement à cette question.The gateway asks the VM's oCCAM agent for a proof that binds its encryption key to this question.
  3. 3L'agent envoie la preuve du processeur et celles des 8 GPU. Le vérificateur oCCAM les vérifie (les GPU par NVIDIA NRAS ou par lui-même), applique la policy signée, puis signe un verdict unique pour le processeur et les GPU.The agent sends the processor's proof and the 8 GPUs' proofs. The oCCAM verifier checks them (the GPUs through NVIDIA NRAS or by itself), applies the signed policy, then signs one verdict for the processor and the GPUs.
  4. 4Le proxy vérifie ce verdict et la clé qui l'a signé, et compare les mesures aux déclarations de version publiques.The proxy checks this verdict and the key that signed it, and compares the measurements with the public release statements.
  5. 5Seulement alors, il chiffre la requête vers la clé attestée, en HPKE X-Wing post-quantique hybride. L'ingress et l'hôte ne voient que du chiffré, et la réponse revient chiffrée.Only then does it encrypt the request to the attested key, with hybrid post-quantum HPKE X-Wing. The ingress and the host see ciphertext only, and the response comes back encrypted.
  6. 6Dans la VM seulement, la passerelle transmet la requête au serveur d'inférence, qui parle aux GPU par les tampons chiffrés du pilote.Inside the VM only, the gateway passes the request to the inference server, which talks to the GPUs through the driver's encrypted buffers.
  7. 7Au démarrage, la clé des poids arrive en deux parts : celle d'oCCAM, remise seulement si les GPU sont attestés, et celle du propriétaire du modèle. Le volume des poids s'ouvre alors.At boot, the weights key arrives in two shares: oCCAM's, handed over only if the GPUs are attested, and the model owner's. The weights volume then opens.

Chiffré en post-quantique hybrideEncrypted with hybrid post-quantum cryptography

Les requêtes et les réponses sont chiffrées de bout en bout en HPKE X-Wing (RFC 9180, KEM 0x647a) : ML-KEM-768, le mécanisme post-quantique normalisé par le NIST (FIPS 203), combiné à X25519, puis HKDF-SHA256 et AES-256-GCM, vers une clé née dans la VM attestée, renouvelée chaque jour et liée au verdict signé par oCCAM. Un échange enregistré aujourd'hui reste illisible pour un futur ordinateur quantique tant que l'un des deux, ML-KEM-768 ou X25519, tient. Les secrets remis à une VM (clés des disques, clé des poids) sont enveloppés de la même façon, vers la clé X-Wing de son agent. Les signatures (verdicts, policies, reçus) restent classiques : une signature se vérifie au moment où elle sert, et l'enregistrer ne permet pas de la contrefaire plus tard.Requests and responses are encrypted end to end with HPKE X-Wing (RFC 9180, KEM 0x647a): ML-KEM-768, the post-quantum mechanism NIST standardised (FIPS 203), combined with X25519, then HKDF-SHA256 and AES-256-GCM, to a key born in the attested VM, renewed every day and bound to the verdict oCCAM signs. An exchange recorded today stays unreadable to a future quantum computer as long as either one, ML-KEM-768 or X25519, holds. The secrets handed to a VM (disk keys, the weights key) are wrapped the same way, to its agent's X-Wing key. Signatures (verdicts, policies, receipts) stay classical: a signature is checked when it is used, and recording it does not let anyone forge it later.

Tenu aux vecteurs de l'IETF en Rust, en Python et dans cette page, qui chiffre vos questions et ouvre les réponses dans votre navigateur.Held to the IETF's vectors in Rust, in Python and in this page, which encrypts your questions and opens the answers in your browser.

Avec oCCAM sur HGX B300 : une VM confidentielle Intel TDX et ses 8 GPU B300 attestés ensemble, les GPU vérifiés par NVIDIA NRAS ou par oCCAM lui-même, et les exigences GPU de la policy appliquées.With oCCAM on HGX B300: an Intel TDX confidential VM and its 8 B300 GPUs attested together, the GPUs checked by NVIDIA NRAS or by oCCAM itself, and the policy's GPU requirements enforced.

Le test, étape par étapeThe test, step by step

Chaque étape s'allume en vert quand votre navigateur en a vérifié la preuve, dans l'ordre.Each step turns green when your browser has checked its proof, in order.

  1. 1

    Votre questionYour question

    Votre navigateur tire un nombre au hasard, jamais vu.Your browser draws a random number, never seen before.

    vousyou
  2. 2

    La VM répondThe VM answers

    Avec une preuve signée par sa puce AMD, qui contient votre nombre.With a proof signed by its AMD chip, carrying your number.

    la VMthe VM
  3. 3

    oCCAM vérifieoCCAM checks

    La preuve jusqu'à la racine d'AMD. oCCAM tourne lui aussi dans une machine protégée.The proof up to AMD's root. oCCAM itself runs in a protected machine too.

    oCCAMoCCAM
  4. 4

    Vous revérifiez toutYou check it all again

    Votre navigateur refait les calculs, sans croire personne sur parole.Your browser redoes the maths, taking no one's word for it.

    vousyou
  1. 1

    Votre questionYour question

    Votre navigateur tire un nombre au hasard, jamais vu.Your browser draws a random number, never seen before.

    vousyou
  2. 2

    La VM répondThe VM answers

    Avec une preuve signée par sa puce Intel, qui contient votre nombre.With a proof signed by its Intel chip, carrying your number.

    la VMthe VM
  3. 3

    oCCAM vérifieoCCAM checks

    La preuve jusqu'à la racine d'Intel. oCCAM tourne lui aussi dans une machine protégée.The proof up to Intel's root. oCCAM itself runs in a protected machine too.

    oCCAMoCCAM
  4. 4

    Vous revérifiez toutYou check it all again

    Votre navigateur refait les calculs, sans croire personne sur parole.Your browser redoes the maths, taking no one's word for it.

    vousyou
  1. 1

    Votre questionYour question

    Votre navigateur tire un nombre au hasard, jamais vu.Your browser draws a random number, never seen before.

    vousyou
  2. 2

    Un pod répondA pod answers

    Il signe votre nombre avec sa propre clé.It signs your number with its own key.

    le podthe pod
  3. 3

    Son nœud le prouveIts node proves it

    Le nœud, machine confidentielle, atteste quel pod répond : son image, son cluster.The node, a confidential machine, attests which pod answers: its image, its cluster.

    le nœudthe node
  4. 4

    oCCAM vérifie et signeoCCAM checks and signs

    Le nœud jusqu'à la racine d'AMD, puis la preuve d'identité du pod.The node up to AMD's root, then the pod's identity proof.

    oCCAMoCCAM
  5. 5

    Vous revérifiez toutYou check it all again

    Le serveur Kubernetes n'a rien pu truquer : il n'est jamais cru.The Kubernetes server could fake nothing: it is never believed.

    vousyou

Le test, étape par étapeThe test, stage by stage

Chaque étape regroupe des appels du schéma complet et s'allume en vert quand les cartes qu'elle résume sont vertes, dans l'ordre. Cliquez une étape pour voir ses appels.Each stage groups calls of the full diagram and turns green when the cards it sums up are green, in order. Click a stage to see its calls.

Le schéma complet, appel par appelThe full diagram, call by call

Le test, en schémaThe test, as a diagram

appel réel, fait par cette pagereal call, made by this page côté service, pas déclenché par la pageservice side, not triggered by the page hors bande : le lien de l'opérateur, jamais envoyé au serveurout of band: the operator's link, never sent to the server déclaré par le serveur du cluster, hors confiance, jamais attestédeclared by the cluster's server, untrusted, never attested RAM chiffrée par le contrôleur mémoire (une clé par ASID, ou par HKID)RAM encrypted by the memory controller (one key per ASID, or per HKID)
Une vérification prend quelques secondes, et tout se passe dans votre navigateur.A check takes a few seconds, and it all happens in your browser.
Pas encore vérifiéNot verified yet

Pas encore vérifiéNot verified yet

Cliquez sur « Demander la preuve » : votre navigateur fait toute la vérification lui-même.Click "Request the proof": your browser does the whole check itself.

Vérification en cours…Checking…

Votre navigateur interroge le service et refait chaque calcul.Your browser queries the service and redoes every computation.

Cette VM fait tourner le logiciel prévu, sur une vraie puce AMD, avec sa mémoire chiffrée.This VM runs the intended software, on a real AMD chip, with its memory encrypted.

Votre navigateur l'a vérifié lui-même, à l'instant.Your browser checked it itself, just now.

Cette VM fait tourner le logiciel prévu, sur une vraie puce Intel, avec sa mémoire chiffrée.This VM runs the intended software, on a real Intel chip, with its memory encrypted.

Votre navigateur l'a vérifié lui-même, à l'instant.Your browser checked it itself, just now.

Ce pod est bien le pod autorisé, dans le bon cluster, sur un nœud confidentiel, et c'est lui qui vous répond.This pod is the authorised pod, in the right cluster, on a confidential node, and it is the one answering you.

Votre navigateur l'a vérifié lui-même, sans croire le serveur Kubernetes.Your browser checked it itself, without believing the Kubernetes server.

Pas entièrement vérifié : une preuve n'a pas pu être établie ici.Not fully verified: one proof could not be established here.

Sans le lien de référence de l'opérateur (#measurement=), votre navigateur ne peut pas épingler oCCAM lui-même ; si le service n'a pas répondu, réessayez. Rien n'est refusé, mais rien de plus n'est prouvé : le mode détaillé dit quelle carte, et pourquoi.Without the operator's reference link (#measurement=), your browser cannot pin oCCAM itself; if the service did not answer, try again. Nothing is refused, but nothing more is proven: the detailed view says which card, and why.

Refusé : une vérification a échoué.Refused: a check failed.

Ne faites pas confiance à ce résultat. Le mode détaillé montre la carte en rouge et sa raison.Do not trust this result. The detailed view shows the red card and its reason.

Le bon logiciel ?The right software?

Oui : exactement l'image de démo, octet pour octet, disque racine compris, et les clés du disque remises seulement sur cette preuve.Yes: exactly the demo image, byte for byte, root disk included, and the disk keys handed over only on that proof.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Une vraie puce protégée, à jour ?A real protected chip, up to date?

Oui : la preuve de la VM et celle d'oCCAM, vérifiées jusqu'à la racine d'AMD ; le firmware d'oCCAM au niveau requis.Yes: the VM's proof and oCCAM's own, checked up to AMD's root; oCCAM's firmware at the required level.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Une réponse authentique et fraîche ?An authentic, fresh answer?

Oui : elle porte votre nombre, signée par une clé née dans oCCAM, dont la mesure est celle du lien de l'opérateur, et rien n'est révoqué.Yes: it carries your number, signed by a key born inside oCCAM, whose measurement is the operator's link's, and nothing is revoked.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Le bon logiciel ?The right software?

Oui : exactement l'image de démo, octet pour octet, disque racine compris, et les clés du disque remises seulement sur cette preuve.Yes: exactly the demo image, byte for byte, root disk included, and the disk keys handed over only on that proof.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Une vraie puce protégée, à jour ?A real protected chip, up to date?

Oui : la preuve de la VM vérifiée jusqu'à la racine d'Intel, à jour selon Intel ; celle du vérificateur oCCAM jusqu'à la racine d'AMD, son firmware au niveau requis.Yes: the VM's proof checked up to Intel's root, up to date according to Intel; the oCCAM verifier's own up to AMD's root, its firmware at the required level.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Une réponse authentique et fraîche ?An authentic, fresh answer?

Oui : elle porte votre nombre, signée par une clé née dans oCCAM, dont la mesure est celle du lien de l'opérateur, et rien n'est révoqué.Yes: it carries your number, signed by a key born inside oCCAM, whose measurement is the operator's link's, and nothing is revoked.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Un nœud protégé ?A protected node?

Oui : le nœud est une machine confidentielle d'un pool de démo, attestée par oCCAM, qui tourne lui-même sur une vraie puce AMD vérifiée.Yes: the node is a confidential machine of a demo pool, attested by oCCAM, which itself runs on a real, checked AMD chip.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Le bon pod, dans le bon cluster ?The right pod, in the right cluster?

Oui : son image et son namespace sont ceux autorisés, son cluster celui de la démo, liés par le nœud dans une preuve signée par oCCAM.Yes: its image and namespace are the authorised ones, its cluster the demo's, bound by the node in a proof oCCAM signed.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

Est-ce bien lui, maintenant ?Is it really it, now?

Oui : il a signé votre nombre avec la clé que sa preuve lui lie, sous un oCCAM épinglé par le lien de l'opérateur, et rien n'est révoqué.Yes: it signed your number with the key its proof binds to it, under an oCCAM pinned by the operator's link, and nothing is revoked.À vérifier.To be checked.Vérification…Checking…Pas entièrement prouvé ici : voir le détail.Not fully proven here: see the detail.Non : une preuve est refusée.No: a proof is refused.

> console HTTPHTTP console_ 0 les échanges réels de cette page, en clairthis page's real exchanges, in the clear

Aucun échange encore : cliquez « Demander la preuve ».No exchange yet: click "Request the proof".

Ce qui est vérifiéWhat gets checked

Chaque carte a un seul état. Deux états sont verts : « Vérifié par votre navigateur », un calcul refait ici même ; « Signé par le vérificateur oCCAM, lui-même vérifié », une déclaration signée par une clé dont votre navigateur vient de vérifier la preuve, la mesure du vérificateur oCCAM étant égale au lien de référence. Deux sont ambres : « Verdict d'oCCAM », la même déclaration sans lien de référence, et « Non vérifié ici », une valeur du service sans preuve. Rouge : refusé. Un échec arrête la suite : les cartes suivantes restent non vérifiées.Each card has one state. Two states are green: "Verified by your browser", a computation redone right here; "Signed by the oCCAM verifier, itself verified", a statement signed by a key whose proof your browser just checked, the oCCAM verifier's measurement equal to the reference link. Two are amber: "oCCAM's verdict", the same statement without a reference link, and "Not verified here", a value the service gives without proof. Red: refused. A failure stops what follows: the next cards stay unverified.

1 · Le vérificateur oCCAM, en AMD SEV-SNP, vérifié par votre navigateur1 · The oCCAM verifier, on AMD SEV-SNP, checked by your browser1 · Le vérificateur oCCAM qui vérifie votre VM Intel, en AMD SEV-SNP, vérifié par votre navigateur1 · The oCCAM verifier that verifies your Intel VM, on AMD SEV-SNP, checked by your browser1 · Le vérificateur oCCAM qui signe l'EAT du pod, en AMD SEV-SNP, vérifié par votre navigateur1 · The oCCAM verifier that signs the pod's EAT, on AMD SEV-SNP, checked by your browser

Le vérificateur oCCAM tourne sur un vrai processeur AMDThe oCCAM verifier runs on real AMD siliconLe vérificateur oCCAM qui a vérifié votre VM Intel tourne sur un vrai processeur AMDThe oCCAM verifier that verified your Intel VM runs on real AMD siliconLe vérificateur oCCAM qui signe l'EAT du pod tourne sur un vrai processeur AMDThe oCCAM verifier that signs the pod's EAT runs on real AMD silicon

La preuve matérielle de chaque invité du vérificateur oCCAM est authentique : sa signature remonte à la racine d'AMD. Un simulateur ou une VM de debug ne passe pas.The hardware proof of each oCCAM verifier guest is genuine: its signature chains to AMD's root. A simulator or a debug VM cannot pass. La VM de démo est vérifiée plus bas, par ce vérificateur oCCAM. The demo VM is checked further down, by this oCCAM verifier. La VM de démo est vérifiée plus bas par ce vérificateur oCCAM, jusqu'à la racine Intel. The demo VM is checked further down by this oCCAM verifier, up to Intel's root. Le nœud et son pod relais sont vérifiés plus bas, par ce vérificateur oCCAM. The node and its relay pod are checked further down, by this oCCAM verifier.

Chaîne de certificats AMD (ARK, ASK, VCEK) jusqu'à la racine épinglée ; preuve signée par la puce du vérificateur oCCAM ; ni mode debug ni migration.AMD certificate chain (ARK, ASK, VCEK) up to the pinned root; proof signed by the oCCAM verifier's chip; neither debug mode nor migration.

Vert : pour chaque invité du vérificateur oCCAM, la chaîne AMD et la signature de sa preuve vérifiées par votre navigateur, sans mode debug ni migration.Green: for each oCCAM verifier guest, the AMD chain and its proof's signature verified by your browser, without debug mode or migration.

La mesure du vérificateur oCCAMThe oCCAM verifier's measurement

Les invités du vérificateur oCCAM exécutent tous la même image : firmware, noyau, système, et le programme qui sert cette page. Votre navigateur compare leur mesure à la valeur du lien de référence.The oCCAM verifier guests all run the same image: firmware, kernel, system, and the program serving this page. Your browser compares their measurement with the reference link's value. La mesure de la VM de démo est comparée plus bas. The demo VM's measurement is compared further down. La mesure du nœud du pod est comparée plus bas. The measurement of the pod's node is compared further down.

Une page ne peut pas contenir la mesure du programme qui la sert : la valeur de référence vient d'ailleurs. Ouvrez le lien publié par l'opérateur (/demo#measurement=…), ou collez la mesure publiée dans les valeurs de référence, en bas de page.A page cannot contain the measurement of the program serving it: the reference value comes from elsewhere. Open the link the operator publishes (/demo#measurement=…), or paste the published measurement into the reference values, at the bottom of the page.

Vert : la mesure de chaque invité du vérificateur oCCAM est égale à celle du lien de référence. Sans lien, cette carte reste ambre, comme toutes celles que le vérificateur oCCAM signe.Green: each oCCAM verifier guest's measurement equals the reference link's. Without a link, this card stays amber, like every card the oCCAM verifier signs.

La clé qui signe les verdicts est née dans cette VMThe signing key was born in this VM

Les verdicts ne sont pas signés par un serveur quelconque : la clé est créée dans la VM confidentielle du vérificateur oCCAM, et sa preuve matérielle AMD l'atteste.Verdicts are not signed by just any server: the key is created inside the oCCAM verifier's confidential VM, and its AMD hardware proof vouches for it. Elle signe le verdict sur la VM de démo. It signs the verdict on the demo VM. Elle signe le verdict sur la VM de démo. It signs the verdict on the demo VM. Elle signe la preuve d'identité du pod relais. It signs the relay pod's identity proof.

REPORT_DATA = SHA-512("occam/result-signer/v1\0" ‖ 0x04 ‖ X ‖ Y) ; la même clé est publiée dans la JWKS, sous son empreinte (kid).the same key is published in the JWKS, under its thumbprint (kid).

Vert : chaque preuve matérielle engage la clé publiée : la clé des verdicts et des reçus est née dans le vérificateur oCCAM.Green: each hardware proof commits to the published key: the verdict and receipt key was born in the oCCAM verifier.

Le firmware du vérificateur oCCAM, au niveau exigéThe oCCAM verifier's firmware, at the required level

Le processeur AMD des invités du vérificateur oCCAM annonce un niveau de firmware certifié par AMD, au moins égal au minimum fixé par l'opérateur.The AMD processor of the oCCAM verifier guests reports a firmware level AMD certified, at least the minimum the operator sets.

AMD ne publie pas de statut « à jour » pour le vérificateur oCCAM : la page vérifie le niveau certifié et le minimum de l'opérateur (0,0,1,71). La révocation des certificats AMD est vérifiée par le service, pas par la page.AMD publishes no "up to date" status for the oCCAM verifier: the page checks the certified level and the operator's minimum (0,0,1,71). The revocation of AMD certificates is checked by the service, not by the page.

La VM de démo, elle, est jugée sur le statut qu'Intel publie et signe (UpToDate).The demo VM, for its part, is judged on the status Intel publishes and signs (UpToDate).

Vert : le niveau de firmware des invités du vérificateur oCCAM est celui qu'AMD certifie, cohérent, et au-dessus du minimum de l'opérateur.Green: the firmware level of the oCCAM verifier guests is the one AMD certifies, consistent, and above the operator's minimum.

2 · La cVM de démo, en AMD SEV-SNP, vérifiée par le vérificateur oCCAM2 · The demo cVM, on AMD SEV-SNP, checked by the oCCAM verifier2 · La VM de démo, en Intel TDX (un TD), vérifiée par le vérificateur oCCAM2 · The demo VM, on Intel TDX (a TD), checked by the oCCAM verifier

Ce que mesure l'attestation de la cVM AMDWhat the AMD cVM's attestation measuresCe que mesure l'attestation de la VM Intel (un TD)What the Intel VM's (a TD's) attestation measures

Ce que le matériel mesure au démarrage. Le vérificateur oCCAM compare cette mesure à celle enregistrée pour l'image de démo, avant tout verdict et toute clé de disque.What the hardware measures at boot. The oCCAM verifier compares this measurement with the one registered for the demo image, before any verdict and any disk key.

  • Firmware OVMFOVMF firmware : celui que publie le service (/.well-known/firmware)the one the service publishes (/.well-known/firmware)
  • Noyau, initramfs, ligne de commandeKernel, initramfs, command line : leurs empreintes, inscrites dans le firmware mesuré ; l'initramfs contient l'agent oCCAMtheir hashes, written into the measured firmware; the initramfs contains the oCCAM agent
  • État initial des vCPUInitial vCPU state : les registres de départ de chaque processeur virtueleach virtual processor's starting registers
  • MEASUREMENT : 48 octets qui résument tout ce qui précède, signés par le processeur48 bytes that sum up all of the above, signed by the processor
  • MRTD : le firmware TDVFthe TDVF firmware
  • RTMR0 : la configuration du TD : tables ACPI, variables UEFIthe TD's configuration: ACPI tables, UEFI variables
  • RTMR1 : le noyauthe kernel
  • RTMR2 : la ligne de commande (avec roothash= et occam.image=) et l'initramfs, qui porte l'agent oCCAMthe command line (with roothash= and occam.image=) and the initramfs, which carries the oCCAM agent
  • Mesure du TDTD measurement : SHA-384("occam/tdx-td/v1\0" ‖ MRTD ‖ RTMR0 ‖ RTMR1 ‖ RTMR2), 48 octets, la valeur que le vérificateur oCCAM compare48 bytes, the value the oCCAM verifier compares
  • Disque racineRoot disk : protégé par dm-verity, son empreinte (roothash=) dans la ligne de commande mesurée : un seul bloc modifié, et la VM refuse de démarrerprotected by dm-verity, its hash (roothash=) on the measured command line: one changed block, and the VM refuses to boot
  • /data : chiffré (LUKS2), ouvert seulement avec les clés remises après l'attestationencrypted (LUKS2), opened only with the keys handed over after attestation

Un verdict fait pour votre questionA verdict made for your question

À chaque clic, votre navigateur tire votre question et l'envoie à la VM de démo. Le verdict signé doit la contenir : il a donc été fait maintenant, pour vous, et n'est pas un ancien verdict rejoué.At each click, your browser draws your question and sends it to the demo VM. The signed verdict must contain it: so it was made now, for you, and is not an old verdict replayed.

Votre question est dans eat_nonce. La signature ES256 et les champs iss, aud, exp, eat_profile et tee_type sont vérifiés contre le document de découverte du service.Your question is in eat_nonce. The ES256 signature and the iss, aud, exp, eat_profile and tee_type fields are checked against the service's discovery document.

Le relais de la VM est sur /demo/v1/tdx/attest : l'ingress le joint par un tunnel SSH vers l'hôte Intel, qui le transmet à la VM. Ni l'ingress, ni le tunnel, ni l'hôte ne peuvent fabriquer le verdict : il est signé par le vérificateur oCCAM.The VM's relay is on /demo/v1/tdx/attest: the ingress reaches it through an SSH tunnel to the Intel host, which passes it to the VM. Neither the ingress, nor the tunnel, nor the host can make the verdict: it is signed by the oCCAM verifier.

Vert : le verdict contient votre question, sa signature est vérifiée sous la clé prouvée plus haut, et la mesure du vérificateur oCCAM est égale au lien.Green: the verdict contains your question, its signature is verified under the key proven above, and the oCCAM verifier's measurement equals the link.

Le verdict du vérificateur oCCAM sur la VM AMD de démoThe oCCAM verifier's verdict on the demo AMD VMLe verdict du vérificateur oCCAM sur la VM Intel de démoThe oCCAM verifier's verdict on the demo Intel VM

Ce que le vérificateur oCCAM a vérifié et signé sur la VM de démo : sa preuve matérielle jusqu'à la racine d'AMD, sa mesure, son niveau de firmware et le résultat de sa policy. La page lit ces valeurs dans le verdict signé.What the oCCAM verifier checked and signed on the demo VM: its hardware proof up to AMD's root, its measurement, its firmware level and its policy's result. The page reads these values from the signed verdict.

Ce que le vérificateur oCCAM a vérifié et signé sur la VM de démo : sa preuve jusqu'à la racine Intel par la chaîne PCK, sa mesure (MRTD et RTMR0 à RTMR2), son niveau de TCB et le résultat de sa policy. La page lit ces valeurs dans le verdict signé pour votre question.What the oCCAM verifier checked and signed on the demo VM: its proof up to Intel's root through the PCK chain, its measurement (MRTD and RTMR0 to RTMR2), its TCB level and its policy's result. The page reads these values from the verdict signed for your question.

Vert : la signature du verdict est vérifiée, la mesure du vérificateur oCCAM est égale au lien, et la mesure du verdict est celle que la VM annonce.Green: the verdict's signature is verified, the oCCAM verifier's measurement equals the link, and the verdict's measurement is the one the VM announces.

Conforme à l'image de démoMatches the demo image

La mesure signée par le vérificateur oCCAM est comparée à la mesure attendue de l'image de démo, inscrite dans cette page. Égales : c'est bien cette image qui tourne. Différentes : refusé.The measurement the oCCAM verifier signed is compared with the demo image's expected measurement, written in this page. Equal: this very image is running. Different: refused.

Comparée à cpu_claims.measurement du verdict vérifié.Compared with cpu_claims.measurement of the verified verdict.

Vert : la mesure signée est égale, octet pour octet, à la mesure attendue, et la mesure du vérificateur oCCAM est égale au lien.Green: the signed measurement equals, byte for byte, the expected one, and the oCCAM verifier's measurement equals the link.

Le disque système est celui de l'imageThe system disk is the image's

Le disque système de la VM est protégé par dm-verity : son empreinte (roothash=) fait partie de la mesure. Si la mesure est celle de l'image de démo, le disque est donc celui de l'image : un seul bloc modifié, et la VM refuse de démarrer.The VM's system disk is protected by dm-verity: its hash (roothash=) is part of the measurement. If the measurement is the demo image's, the disk is therefore the image's: one changed block, and the VM refuses to boot.

Sur AMD SEV-SNP, la ligne de commande est couverte par une empreinte inscrite dans le firmware mesuré.On AMD SEV-SNP, the command line is covered by a hash written into the measured firmware.

Sur Intel TDX, la ligne de commande est mesurée dans RTMR2.On Intel TDX, the command line is measured into RTMR2.

Le roothash est inscrit dans cette page depuis le manifeste de l'image. La page ne recalcule pas la mesure à partir du roothash : le service le fait quand l'image est enregistrée.The root hash is written in this page from the image's manifest. The page does not recompute the measurement from the root hash: the service does it when the image is registered.

Vert : la carte « Conforme à l'image de démo » est verte, et cette page porte le roothash de cette image.Green: the "Matches the demo image" card is green, and this page carries that image's root hash.

Les clés du disque, remises après attestation : reçus signésThe disk keys, handed over after attestation: signed receiptsLes clés du disque, au client seul : aucune chez oCCAMThe disk keys, the customer's alone: none at oCCAM

Les clés du disque de la VM de démo sont celles du client, entières : oCCAM n'en détient aucune et n'en remet aucune. Au démarrage, le releaser du client vérifie le vérificateur oCCAM contre le journal de versions, signé hors ligne, puis le verdict de la VM, et lui remet ses clés.The demo VM's disk keys are the customer's, whole: oCCAM holds none of them and hands none over. At boot, the customer's releaser checks the oCCAM verifier against the release log, signed offline, then the VM's verdict, and hands it its keys.

Rien ici que votre navigateur puisse vérifier : le releaser du client ne signe rien, et le flux ne porte aucun reçu de ces clés. La carte le dit, grise, et ne compte pas dans « tout est vert ».Nothing here your browser can check: the customer's releaser signs nothing, and the feed carries no receipt of these keys. The card says so, grey, and does not count in "all green".

Vert : jamais. Ce que dit cette carte est un fait du mode de clés client, pas un contrôle de votre navigateur.Green: never. What this card says is a fact of the customer key mode, not a check by your browser.

Au démarrage, la VM de démo prouve ce qu'elle est. Le vérificateur oCCAM ne lui remet sa part des clés du disque que si la mesure et la policy signée passent, et signe un reçu pour chaque remise. L'autre part vient du releaser du client. Aucune part seule n'ouvre le disque.At boot, the demo VM proves what it is. The oCCAM verifier hands it its share of the disk keys only if the measurement and the signed policy pass, and signs a receipt for each hand-over. The other share comes from the customer's releaser. No share alone opens the disk.

Votre navigateur vérifie chaque reçu lu dans le flux public : la clé qui l'a signé (celle d'un invité du vérificateur oCCAM, prouvée jusqu'à la racine AMD), la signature, le nom du secret, le tenant et la mesure de l'image. Le releaser du client ne signe rien.Your browser checks each receipt read from the public feed: the key that signed it (an oCCAM verifier guest's, proven up to AMD's root), the signature, the secret's name, the tenant and the image's measurement. The customer's releaser signs nothing.

Vert : deux reçus vérifiés, pour la clé racine et la clé des données de la VM du verdict, signés par un vérificateur oCCAM dont la mesure égale le lien. La part du client n'a pas de reçu.Green: two verified receipts, for the root key and the data key of the verdict's VM, signed by an oCCAM verifier whose measurement equals the link. The customer's share has no receipt.

Non révoqué quand il a été signéNot revoked when it was signed

Le vérificateur oCCAM ne signe aucun verdict pour une VM révoquée, et ce verdict vient d'être signé. La consultation publique dit en plus s'il a été révoqué depuis.The oCCAM verifier signs no verdict for a revoked VM, and this verdict was just signed. The public lookup also says whether it was revoked since.

GET /.well-known/revocations/{jti} : une réponse non signée, qui ne peut que refuser ; une erreur reste ambre, jamais verte.: an unsigned answer, which can only refuse; an error stays amber, never green.

Vert : le fait signé ci-dessus, la mesure du vérificateur oCCAM égale au lien, et la consultation répond not_listed.Green: the signed fact above, the oCCAM verifier's measurement equal to the link, and the lookup answers not_listed.

2 · Le pod relais du cluster de démo, vérifié dans votre navigateur2 · The demo cluster's relay pod, checked in your browser

Votre navigateur envoie votre question (un nombre tiré au hasard) au pod relais du cluster de démo. Le pod demande à l'agent de son nœud une preuve d'identité (un EAT), signée par le vérificateur oCCAM et liée à sa clé, à ses images et à son cluster. Puis il signe votre question avec cette clé. Votre navigateur vérifie la preuve, puis la signature : la clé appartient à ce pod, et elle sert maintenant. Le namespace et l'UID du pod sont déclarés par le serveur Kubernetes, liés par le nœud, non attestés.Your browser sends your question (a random number) to the demo cluster's relay pod. The pod asks its node's agent for an identity proof (an EAT), signed by the oCCAM verifier and bound to its key, its images and its cluster. Then it signs your question with that key. Your browser checks the proof, then the signature: the key belongs to this pod, and it is in use now. The pod's namespace and UID are declared by the Kubernetes server, bound by the node, not attested.

Réponse du relais de pod complèteThe pod relay's answer complete

Le pod relais répond avec sa preuve d'identité, son cluster, son namespace, son UID, ses images, sa clé publique, votre question et sa signature. Une réponse incomplète est refusée avant tout calcul.The relay pod answers with its identity proof, its cluster, its namespace, its UID, its images, its public key, your question and its signature. An incomplete answer is refused before anything is computed.

Acheminée par l'ingress vers le pod relais d'un nœud AMD SEV-SNP. Ce que déclare le serveur Kubernetes (namespace, UID, nom du pod) est affiché comme tel dans la réponse brute.Routed by the ingress to the relay pod of an AMD SEV-SNP node. What the Kubernetes server declares (namespace, UID, the pod's name) is shown as such in the raw answer.

Vert : la réponse a la forme attendue, chaque champ présent et lisible.Green: the answer has the expected shape, every field present and readable.

Le pod est dans le cluster de démoThe pod is in the demo cluster

Le cluster_id est l'empreinte du certificat du cluster de démo. Chaque nœud l'épingle quand il rejoint le cluster, et cette page épingle la même valeur.The cluster_id is the hash of the demo cluster's certificate. Each node pins it when it joins the cluster, and this page pins the same value.

Comparé en entier à la valeur épinglée ; il fait partie de la preuve d'identité signée (carte suivante).Compared whole with the pinned value; it is part of the signed identity proof (next card).

Vert : le cluster_id de la réponse égal à celui épinglé dans cette page.Green: the answer's cluster_id equal to the one pinned in this page.

Une preuve signée par le vérificateur oCCAM, liée à ce podA proof signed by the oCCAM verifier, bound to this pod

La preuve d'identité, signée par le vérificateur oCCAM, contient une empreinte du cluster, du namespace, de l'UID, de la clé du pod et de ses images. Votre navigateur recalcule cette empreinte : la preuve d'un autre pod, d'une autre clé ou d'un autre cluster ne correspond pas.The identity proof, signed by the oCCAM verifier, contains a hash of the cluster, the namespace, the UID, the pod's key and its images. Your browser recomputes this hash: the proof of another pod, another key or another cluster does not match.

Empreinte = SHA-256("occam/k8s-pod/v1\0" ‖ cluster_id ‖ namespace ‖ UID ‖ clé ‖ images triées). L'agent du nœud la calcule lui-même, après avoir identifié le pod qui l'appelle.Hash = SHA-256("occam/k8s-pod/v1\0" ‖ cluster_id ‖ namespace ‖ UID ‖ key ‖ sorted images). The node's agent computes it itself, after identifying the pod calling it.

Vert : la preuve est vérifiée sous une clé du vérificateur oCCAM épinglé par le lien, et son eat_nonce est l'empreinte recalculée ici. Sans lien, ambre.Green: the proof is verified under a key of the oCCAM verifier the link pins, and its eat_nonce is the hash recomputed here. Without a link, amber.

Un nœud du cluster de démo, conforme et à jourA node of the demo cluster, compliant and up to date

Le nœud qui héberge le pod est une VM du cluster de démo : sa mesure, vérifiée et signée par le vérificateur oCCAM, est celle d'une image de nœud inscrite dans cette page. Sa policy est passée et son firmware atteint le minimum exigé.The node hosting the pod is a VM of the demo cluster: its measurement, verified and signed by the oCCAM verifier, is that of a node image written in this page. Its policy passed and its firmware reaches the required minimum.

cpu_claims.measurement comparée en entier aux images de nœud ; policy_result pass ; sur AMD SEV-SNP, niveau de firmware au moins le minimum de l'opérateur ; sur Intel TDX, statut UpToDate.cpu_claims.measurement compared whole with the node images; policy_result pass; on AMD SEV-SNP, firmware level at least the operator's minimum; on Intel TDX, status UpToDate.

Vert : une image de nœud inscrite ici, policy pass et firmware au minimum, dans une preuve signée par le vérificateur oCCAM épinglé par le lien.Green: a node image written here, policy pass and firmware at the minimum, in a proof signed by the oCCAM verifier the link pins.

Le pod relais : son image et son namespace épinglésThe relay pod: its pinned image and namespace

Le pod qui répond est bien le relais de démo : sa seule image est celle inscrite dans cette page, admise par l'allowlist du nœud, et son namespace est celui du relais.The pod that answers is indeed the demo relay: its one image is the one written in this page, admitted by the node's allowlist, and its namespace is the relay's.

Images : exactement [DEMO_K8S.relay.image], l'empreinte du relais. Namespace : occam-demo, déclaré par le serveur Kubernetes et lié par le nœud.Images: exactly [DEMO_K8S.relay.image], the relay's digest. Namespace: occam-demo, declared by the Kubernetes server and bound by the node.

Vert : l'image du pod est celle inscrite ici et son namespace celui du relais, dans une preuve signée par le vérificateur oCCAM épinglé par le lien.Green: the pod's image is the one written here and its namespace the relay's, in a proof signed by the oCCAM verifier the link pins.

Votre question signée par la clé du pod, maintenantYour question signed by the pod's key, now

La clé liée au pod a signé la question que votre navigateur vient de tirer : elle sert maintenant, à ce pod. La preuve seule pourrait être rejouée ; la signature de votre question, non.The key bound to the pod signed the question your browser just drew: it is in use now, by this pod. The proof alone could be replayed; the signature of your question cannot.

ECDSA P-256 sur "occam/demo-k8s-visitor/v1\0" ‖ votre question, vérifiée sous pod_key_spki, la clé que la preuve d'identité engage.ECDSA P-256 over "occam/demo-k8s-visitor/v1\0" ‖ your question, verified under pod_key_spki, the key the identity proof commits to.

Vert : la signature de votre question vérifiée sous la clé du pod, dans une preuve signée par le vérificateur oCCAM épinglé par le lien.Green: the signature of your question verified under the pod's key, in a proof signed by the oCCAM verifier the link pins.

Preuve non révoquéeProof not revoked

Le vérificateur oCCAM ne signe aucune preuve pour un nœud révoqué, et celle-ci vient d'être signée. La consultation publique dit en plus si elle a été révoquée depuis. Un nœud révoqué s'arrête de lui-même ; ce que fait ensuite le serveur Kubernetes n'est pas une garantie.The oCCAM verifier signs no proof for a revoked node, and this one was just signed. The public lookup also says whether it was revoked since. A revoked node stops by itself; what the Kubernetes server does afterwards is no guarantee.

GET /.well-known/revocations/{jti} : la réponse du service, non signée, ne peut que refuser ; une erreur reste ambre, jamais verte.: the service's answer, unsigned, can only refuse; an error stays amber, never green.

Vert : le fait signé ci-dessus, la mesure du vérificateur oCCAM égale au lien, et la consultation répond not_listed.Green: the signed fact above, the oCCAM verifier's measurement equal to the link, and the lookup answers not_listed.

Les nœuds refusent toute commande exec : le serveur Kubernetes ne peut pas faire lancer une commande dans un conteneur admis (une sonde exec) pour obtenir une preuve d'identité pour sa propre clé.The nodes refuse every exec command: the Kubernetes server cannot have a command started in an admitted container (an exec probe) to obtain an identity proof for its own key.

Ce que le serveur Kubernetes peut encore faireWhat the Kubernetes server can still do

  • Le serveur Kubernetes est hors de toute enclave et hors confiance. Il peut encore refuser le service, choisir le placement des pods, lire les métadonnées des pods et ignorer le cordon d'un nœud révoqué.The Kubernetes server is outside any enclave and untrusted. It can still refuse service, choose the pods' placement, read the pods' metadata and ignore the cordon of a revoked node.
  • Ready, le label et le taint d'un nœud sont déclarés par le serveur Kubernetes, jamais attestés : cette page n'en affiche aucun.A node's Ready, label and taint are declared by the Kubernetes server, never attested: this page shows none of them.

Les VM de démo, en directThe demo VMs, live

Le flux public du tenant de démo : ses VM, leurs dernières attestations et son journal d'audit. Ce sont les valeurs du service, non signées : la page ne les vérifie pas. Cliquez une VM pour voir ses attestations.The demo tenant's public feed: its VMs, their latest attestations and its audit log. These are the service's values, unsigned: the page does not verify them. Click a VM to see its attestations.

-
Journal d'audit du tenant de démoThe demo tenant's audit log (0)

    Les nœuds du cluster de démo, en directThe demo cluster's nodes, live

    Les nœuds du cluster de démo, retrouvés dans le flux public par la mesure de leur image, inscrite dans cette page. Leur verdict, leur statut, leur dernière attestation et leurs révocations sont les valeurs du service, non signées : votre navigateur ne les vérifie pas ici. Rien n'est lu dans l'API Kubernetes. Un nœud révoqué disparaît de la liste ; sa révocation reste dans le journal d'audit.The demo cluster's nodes, found in the public feed by their image's measurement, written in this page. Their verdict, status, last attestation and revocations are the service's values, unsigned: your browser does not verify them here. Nothing is read from the Kubernetes API. A revoked node leaves the list; its revocation stays in the audit log.

    -

    cK8S : comment oCCAM protège votre KubernetescK8S: how oCCAM protects your Kubernetes

    Qui fait quoi dans cK8S, et ce qui est protégéWho does what in cK8S, and what is protected

    L'enclave, c'est le nœud : chaque nœud Kubernetes est une VM confidentielle (AMD SEV-SNP ou Intel TDX), sa mémoire chiffrée par le processeur, son image mesurée, attestée par oCCAM avant de rejoindre le cluster. Les pods tournent à l'intérieur et partagent sa protection ; chacun reçoit une identité attestée. Le serveur Kubernetes reste dehors : il planifie et déclare, et rien de ce qu'il dit ne compte.The enclave is the node: each Kubernetes node is a confidential VM (AMD SEV-SNP or Intel TDX), its memory encrypted by the processor, its image measured, attested by oCCAM before it joins the cluster. The pods run inside it and share its protection; each one gets an attested identity. The Kubernetes server stays outside: it schedules and declares, and nothing it says is trusted.

    hors confianceuntrustedle serveur Kubernetes, l'hôte, et ce qu'ils disentthe Kubernetes server, the host, and what they say
    Vous, le clientYou, the customer hors du cluster, avec vos clésoutside the cluster, with your keys clé du tenanttenant key signe vos policies et l'allowlistsigns your policies and the allowlist allowlist signéesigned allowlist images (digest), arguments, droitsimages (digest), arguments, rights occam-k8s image du nœud, enregistrement,node image, registration, credentials des nœudsthe nodes' credentials Serveur KubernetesKubernetes server hors enclave, hors confianceoutside any enclave, untrusted planifie les podsschedules the pods déclare Ready, labels, taintsdeclares Ready, labels, taints voit les noms et labels des podssees the pods' names and labels rien de ce qu'il dit ne comptenothing it says is trusted aucun secret ne lui est remisno secret is ever handed to it rien ne démarre hors allowlistnothing starts off the allowlist pas d'exec dans un conteneurno exec into a container Vérificateur oCCAMoCCAM verifier invités AMD SEV-SNP mesurésmeasured AMD SEV-SNP guests atteste chaque nœudattests each node avant qu'il rejoigne le clusterbefore it joins the cluster libère les secrets du nœudreleases the node's secrets jonction et réseau, au seul nœud attestéjoin and network, to an attested node only signe l'EAT de chaque podsigns each pod's EAT lié à la clé, l'image et le cluster du podbound to the pod's key, image and cluster révoque un nœudrevokes a node le nœud se clôt lui-mêmethe node fences itself ne parle jamais au serveur Kubernetes,never talks to the Kubernetes server, ne le croit jamaisnever believes it Qui vérifie : vousWho verifies: you vos services, ou ce navigateur, vérifientyour services, or this browser, verify l'EAT d'un pod sous la clé du vérificateura pod's EAT under the oCCAM verifier's oCCAM, prouvée jusqu'à la racine AMD,key, proven up to AMD's root, never jamais sur la parole de Kuberneteson the word of Kubernetes Hôte OVHcloud (hors confiance)OVHcloud host (untrusted) lance les VM, ne voit que du chiffrélaunches the VMs, sees only ciphertext Nœud : une VM confidentielleNode: a confidential VM l'enclave · AMD SEV-SNP ou Intel TDXthe enclave · AMD SEV-SNP or Intel TDX mémoire chiffrée par le processeurmemory encrypted by the processor racine mesurée et attestéemeasured, attested root seule l'image enregistrée démarreonly the registered image boots plugin NRI : votre allowlistNRI plugin: your allowlist un conteneur hors allowlist refuséa container off the allowlist refused occam-runc : aucun execoccam-runc: no exec kubectl exec refusé dans le nœudkubectl exec refused in the node CSI : les secrets d'un podCSI: a pod's secrets montés seulement après attestationmounted only after attestation clôture du nœudthe node's fence révoqué : k3s et les pods arrêtésrevoked: k3s and the pods stopped podEAT podEAT podEAT les pods tournent dans le nœud :the pods run inside the node: ils partagent sa protection, et chacunthey share its protection, and each a une identité attestée (un EAT) ;has an attested identity (an EAT); aucun pod n'est une enclave à lui seulno pod is an enclave of its own les autres nœuds, même imagethe other nodes, same image WireGuard entre nœuds attestés,WireGuard between attested nodes, chaque pair admis par attestationeach peer admitted by attestation enregistre l'image, l'allowlist, les secretsregisters the image, allowlist, secrets 1 2 3 4 5 6
    Les numéros suivent la vie d'un nœud, décrite ci-dessous.The numbers follow a node's life, described below.

    La vie d'un nœud, de son image à ses podsA node's life, from its image to its pods

    1. 1Vous construisez l'image du nœud avec occam-k8s et l'enregistrez auprès d'oCCAM, avec l'allowlist signée par votre clé de tenant et les secrets du nœud (jonction au cluster, réseau). L'hôte OVHcloud lance la VM confidentielle ; il ne voit que de la mémoire chiffrée.You build the node image with occam-k8s and register it with oCCAM, with the allowlist your tenant key signed and the node's secrets (cluster join, network). The OVHcloud host launches the confidential VM; it sees only encrypted memory.
    2. 2Le nœud démarre sur son image mesurée et s'atteste auprès du vérificateur oCCAM. Seul un nœud attesté reçoit ses secrets et peut rejoindre le cluster.The node boots on its measured image and attests to the oCCAM verifier. Only an attested node receives its secrets and can join the cluster.
    3. 3Le serveur Kubernetes, hors de toute enclave, place les pods sur les nœuds. Dans le nœud, le plugin NRI ne lance que les conteneurs que décrit votre allowlist (image, arguments, droits), et occam-runc refuse toute commande exec.The Kubernetes server, outside any enclave, places the pods on the nodes. In the node, the NRI plugin starts only the containers your allowlist describes (image, arguments, rights), and occam-runc refuses every exec command.
    4. 4Un pod demande à l'agent de son nœud une preuve d'identité (un EAT), signée par le vérificateur oCCAM et liée à la clé du pod, à ses images et au cluster. Vous la vérifiez sans croire Kubernetes : c'est le test du bouton « Demander la preuve ».A pod asks its node's agent for an identity proof (an EAT), signed by the oCCAM verifier and bound to the pod's key, its images and the cluster. You check it without believing Kubernetes: it is the test of the "Request the proof" button.
    5. 5Révoquer un nœud : son agent s'arrête, et le nœud arrête lui-même k3s et ses pods. Ce que fait ensuite le serveur Kubernetes n'est pas une garantie.Revoking a node: its agent stops, and the node stops k3s and its pods by itself. What the Kubernetes server does afterwards is no guarantee.
    6. 6Entre les nœuds, WireGuard : un pair n'est admis que sur un EAT qui lie sa clé publique, jamais sur une clé lue dans l'API Kubernetes.Between the nodes, WireGuard: a peer is admitted only on an EAT that binds its public key, never on a key read from the Kubernetes API.

    Chaque nœud oCCAM est attesté avant de rejoindre le cluster, n'admet que les conteneurs de son allowlist, donne à chaque pod une preuve d'identité, s'arrête dès qu'il est révoqué et refuse toute commande exec ; les secrets d'un pod sont montés par CSI et les nœuds se parlent par un tunnel WireGuard.Every oCCAM node is attested before it joins the cluster, admits only the containers of its allowlist, gives every pod an identity proof, stops the moment it is revoked and refuses every exec command; a pod's secrets are mounted through CSI and the nodes talk through a WireGuard tunnel.

    Ce qui est protégéWhat is protected

    Mémoire des nœuds chiffréeThe nodes' memory encrypted

    La mémoire des nœuds, chiffrée par le processeur (AMD SEV-SNP, Intel TDX) : ni l'hôte ni OVHcloud ne la lisent.The nodes' memory, encrypted by the processor (AMD SEV-SNP, Intel TDX): neither the host nor OVHcloud reads it.

    Seule votre image de nœudOnly your node image

    Seule l'image de nœud que vous avez enregistrée démarre et rejoint le cluster.Only the node image you registered boots and joins the cluster.

    Seuls vos conteneursOnly your containers

    Seuls démarrent les conteneurs que décrit votre allowlist signée : digest d'image, arguments, droits.Only the containers your signed allowlist describes start: image digest, arguments, rights.

    Secrets aux seuls nœuds attestésSecrets to attested nodes only

    Les secrets du nœud ne sont remis qu'à un nœud attesté, jamais au serveur Kubernetes.The node's secrets are handed only to an attested node, never to the Kubernetes server.

    L'identité d'un podA pod's identity

    L'identité d'un pod, prouvée par un EAT lié à sa clé.A pod's identity, proven by an EAT bound to its key.

    Un nœud révoqué se clôtA revoked node fences itself

    Un nœud révoqué se clôt : ses pods arrêtés par le nœud lui-même.A revoked node fences itself: its pods stopped by the node itself.

    Ce qui n'est pas protégéWhat is not protected

    • La disponibilité : le serveur Kubernetes, comme l'hôte, peut refuser le service.Availability: the Kubernetes server, like the host, can refuse service.
    • Le placement et les métadonnées : le serveur place les pods où il veut et voit leurs noms et leurs labels. C'est pourquoi rien de ce qu'il déclare ne compte.Placement and metadata: the server places pods where it wants and sees their names and labels. That is why nothing it declares counts.
    • L'isolation entre les pods d'un même nœud : un pod n'est pas une enclave. Les pods d'un nœud sont séparés par le noyau Linux de la VM confidentielle (namespaces, cgroups), pas par le processeur : une évasion de conteneur atteint les autres pods de ce nœud, jamais l'extérieur de la VM confidentielle.Isolation between the pods of one node: a pod is not an enclave. The pods of a node are separated by the confidential VM's Linux kernel (namespaces, cgroups), not by the processor: a container escape reaches that node's other pods, never outside the confidential VM.
    • Pour un pod sensible, un nœud à lui seul : un pool dédié où chaque VM confidentielle ne fait tourner que ce pod (une règle de placement et une allowlist qui n'admet que lui). Pools, allowlists et placement le permettent tels quels.For a sensitive pod, a node of its own: a dedicated pool where each confidential VM runs that pod only (a placement rule and an allowlist admitting it alone). Pools, allowlists and placement allow it as they are.

    Ce qui est protégéWhat is protected

    Mémoire chiffréeEncrypted memory

    La mémoire de la VM est chiffrée par la puce AMD : ni l'hôte ni OVHcloud ne la lisent.The VM's memory is encrypted by the AMD chip: neither the host nor OVHcloud reads it.

    Seule l'image prévueOnly the intended image

    Tout ce qui démarre est mesuré : seule l'image enregistrée obtient ses clés.Everything that boots is measured: only the registered image gets its keys.

    Clés du disque sous conditionDisk keys on condition

    Les clés du disque ne sont remises qu'après vérification, dans la mémoire chiffrée.The disk keys are handed over only after verification, into the encrypted memory.

    Une preuve vérifiable par tousA proof anyone can check

    Signée par oCCAM, vérifiable par n'importe qui, comme votre navigateur vient de le faire.Signed by oCCAM, checkable by anyone, as your browser just did.

    Mémoire chiffréeEncrypted memory

    La mémoire de la VM est chiffrée par la puce Intel : ni l'hôte ni OVHcloud ne la lisent.The VM's memory is encrypted by the Intel chip: neither the host nor OVHcloud reads it.

    Seule l'image prévueOnly the intended image

    Tout ce qui démarre est mesuré : seule l'image enregistrée obtient ses clés.Everything that boots is measured: only the registered image gets its keys.

    Clés du disque sous conditionDisk keys on condition

    Les clés du disque ne sont remises qu'après vérification, dans la mémoire chiffrée.The disk keys are handed over only after verification, into the encrypted memory.

    Une preuve vérifiable par tousA proof anyone can check

    Signée par oCCAM, vérifiable par n'importe qui, comme votre navigateur vient de le faire.Signed by oCCAM, checkable by anyone, as your browser just did.

    Ce qui n'est pas protégéWhat is not protected

    • La disponibilité : l'hôte peut refuser le service ou arrêter la VM.Availability: the host can refuse service or stop the VM.
    • Le contenu de l'image : oCCAM prouve quelle image tourne, pas qu'elle est sans faille.The image's content: oCCAM proves which image runs, not that it is flawless.
    Valeurs de référence · celles épinglées sont en lecture seule tant qu'elles ne sont pas déverrouilléesReference values · the pinned ones are read-only unless unlocked
    Racine AMD Turin, où finit la chaîne des invités du vérificateur oCCAM (SPKI)AMD Turin root, where the oCCAM verifier guests' chain ends (SPKI)
    Racine Intel SGX Root CA, où finit la chaîne PCK du TD (SPKI)Intel SGX Root CA, where the TD's PCK chain ends (SPKI)
    Mesure de référence du vérificateur oCCAM, donnée par le lien ou par vous (hors de cette page)The oCCAM verifier's reference measurement, given by the link or by you (outside this page)
    Plancher TCB SEV-SNP du vérificateur oCCAM (règle de l'opérateur)SEV-SNP TCB floor of the oCCAM verifier (operator rule)

    La racine Intel est celle qu'épingle le service pour vérifier la preuve du TD ; la page ne la vérifie pas elle-même. Le vérificateur oCCAM, lui, tourne toujours sur AMD SEV-SNP : votre navigateur vérifie sa preuve jusqu'à la racine AMD, en mode Intel TDX aussi.The Intel root is the one the service pins to check the TD's proof; the page does not check it itself. The oCCAM verifier always runs on AMD SEV-SNP: your browser checks its proof up to AMD's root, in Intel TDX mode too.

    La page ne contient aucune mesure du vérificateur oCCAM : la valeur de référence vient du lien de l'opérateur (#measurement=, 96 chiffres hexadécimaux), ou de vous. Égale à la mesure lue, la carte passe au vert ; différente, elle est refusée. Une valeur que vous saisissez remplace celle du lien.The page contains no oCCAM verifier measurement: the reference value comes from the operator's link (#measurement=, 96 hex digits), or from you. Equal to the measurement read, the card turns green; different, it is refused. A value you type replaces the link's.

    Essayez vous-mêmeTry it yourself

    Les mêmes preuves, sans cette page.The same evidence, without this page.

    curl -s https://<domain>/.well-known/signer-evidence | jq .
    curl -s https://<domain>/.well-known/jwks.json | jq .
    curl -s https://<domain>/demo | sha256sum
    pip install occam-sdk
    python - <<'EOF'
    from occam.signer_evidence import fetch_signer_evidence, verify_signer_evidence
    ev = fetch_signer_evidence("https://<domain>/api")
    print(verify_signer_evidence(ev, trusted_measurements=["<measurement>"]))
    EOF

    Vérifier le vérificateur oCCAM : son lot de lancementVerify the oCCAM verifier: its launch bundle

    Le vérificateur oCCAM est lancé à partir de trois fichiers : le micrologiciel OVMF, le noyau et l'initrd. Le service enregistre leur lot de lancement, publié dans un stockage public : votre navigateur le lit et compare sa mesure à votre valeur de référence.The oCCAM verifier is launched from three files: the OVMF firmware, the kernel and the initrd. The service records their launch bundle, published in public storage: your browser reads it and compares its measurement with your reference value.

    Pas encore lu.Not read yet.

    Vert :Green: la mesure du lot est égale à la valeur de référence que vous tenez (le lien #measurement= ou une valeur saisie). Sans référence, ambre ; différente, rouge.the bundle's measurement equals the reference value you hold (the #measurement= link or a value you typed). Without a reference, amber; different, red.

    Ce que cela prouve :What this proves: quels octets ont été mesurés. Chacun peut télécharger ces trois fichiers et recalculer la mesure SEV-SNP avec la commande ci-dessous, hors de cette page : si elle est égale à votre valeur de référence, ce sont ces octets qui tournent dans les invités du vérificateur oCCAM. Votre navigateur ne recalcule pas la mesure : il lit l'enregistrement, qui n'est pas signé, et compare.which bytes were measured. Anyone can download these three files and recompute the SEV-SNP measurement with the command below, outside this page: if it equals your reference value, these are the bytes running in the oCCAM verifier's guests. Your browser does not recompute the measurement: it reads the record, which is not signed, and compares.

    Ce que cela ne prouve pas :What this does not prove: d'où viennent ces octets. Qu'ils soient construits à partir des sources du commit nommé relève de la reproductibilité de l'archive, une vérification à part.where these bytes come from. That they are built from the sources of the commit named is the archive's reproducibility, a separate check.

    pip install 'occam-sdk[image]'
    occam-dp-bundle fetch --cp https://<domain> --measurement <measurement> --out dp-bundle

    Tout ce que le service publie pour que l'on vérifie le vérificateur oCCAM sans faire confiance à l'opérateur, avec les commandes : Everything the service publishes so that the oCCAM verifier can be checked without trusting the operator, with the commands: /transparency

    Pour les développeursFor developers

    Le SDK Python et les commandes curl refont ces vérifications sans cette page.The Python SDK and the curl commands redo these checks without this page.

    Vérifier vous-même : le SDK PythonCheck it yourself: the Python SDK

    SDKoccam-sdkla même vérification en Pythonthe same check in Python

    Le SDK Python oCCAM fait dans votre code ce que cette page fait dans votre navigateur : vérifier une preuve d'attestation avant de faire confiance à une machine ou à un pod. Il sert aussi à préparer vos charges confidentielles : construire et enregistrer une image, signer vos règles, libérer vos secrets et gérer un cluster cK8S.The oCCAM Python SDK does in your code what this page does in your browser: verify an attestation proof before trusting a machine or a pod. It also prepares your confidential workloads: build and register an image, sign your rules, release your secrets and run a cK8S cluster.

    pip install occam-sdk
    python - <<'EOF'
    import base64, json
    from occam.signer_evidence import fetch_signer_evidence, verify_signer_evidence
    from occam.verify import VerifyOptions, verify
    
    ISSUER = "https://<domain>/api"
    TRUSTED = ["<96 hex: the oCCAM verifier's measurement, the #measurement= link>"]
    token = "<the attestation result (EAT) you were given>"
    
    # the key that signed it, proven by the oCCAM verifier's own hardware report
    kid = json.loads(base64.urlsafe_b64decode(token.split(".")[0] + "=="))["kid"]
    key = verify_signer_evidence(fetch_signer_evidence(ISSUER, kid),
                                 trusted_measurements=TRUSTED, expected_kid=kid)
    # the result itself, under that key and nothing else
    result = verify(token, json.dumps({"keys": [key.jwk]}).encode(),
                    VerifyOptions(issuer=ISSUER, audience="<your audience>", expected_nonce="<your nonce>"))
    print(result.tee_type, result.measurement, result.policy_result)
    EOF

    GlossaireGlossary

    Les mots techniques que cette page garde, en mots simples.The technical terms this page keeps, in plain words.

    attestationattestation
    la preuve.the proof. La preuve qu'une machine donne de ce qu'elle est : quel logiciel elle fait tourner et sur quelle puce, signée par cette puce.The proof a machine gives of what it is: which software it runs and on which chip, signed by that chip.
    mesuremeasurement
    l'empreinte du logiciel.the software's fingerprint. Un condensé que la puce calcule sur tout ce qui démarre : micrologiciel, noyau, système. Un seul octet changé donne une autre empreinte.A digest the chip computes over everything that boots: firmware, kernel, system. One byte changed gives another fingerprint.
    enclaveenclave
    la zone protégée par la puce.the zone the chip protects. La machine confidentielle telle qu'oCCAM la suit : sa mémoire est chiffrée par la puce, l'hôte ne peut ni la lire ni la modifier.The confidential machine as oCCAM tracks it: its memory is encrypted by the chip, the host can neither read nor change it.
    cVMcVM
    une VM confidentielle.a confidential VM. Une machine virtuelle dont la mémoire est chiffrée par la puce, sur AMD SEV-SNP, ou sur Intel TDX, où elle s'appelle un TD.A virtual machine whose memory is encrypted by the chip, on AMD SEV-SNP, or on Intel TDX, where it is called a TD.
    TCBTCB
    le niveau de sécurité de la puce, à jour ou non.the chip's security level, up to date or not. La version des micrologiciels de la puce. oCCAM la compare au niveau exigé et, quand le fabricant en publie un, à son statut.The version of the chip's firmware. oCCAM compares it with the level required and, when the manufacturer publishes one, with its status.
    EATEAT
    le certificat de preuve, signé.the signed proof certificate. Le verdict d'oCCAM sur une machine, un jeton signé (Entity Attestation Token) : sa mesure, son niveau de sécurité et, quand il y en a une, votre question. Votre navigateur en vérifie la signature.oCCAM's verdict on a machine, a signed token (Entity Attestation Token): its measurement, its security level and, when there is one, your question. Your browser checks its signature.
    révocationrevocation
    le retrait de confiance.the withdrawal of trust. oCCAM retire sa confiance à une machine : ses verdicts sont dits révoqués et aucun secret ne lui est plus remis.oCCAM withdraws its trust from a machine: its verdicts are said revoked and no secret is handed to it any more.
    racine AMD / IntelAMD / Intel root
    la signature du fabricant de la puce.the chip manufacturer's signature. Le certificat d'AMD ou d'Intel au bout de la chaîne : il prouve qu'une vraie puce a signé la preuve, pas un simulateur.AMD's or Intel's certificate at the end of the chain: it proves a genuine chip signed the proof, not a simulator.
    vérificateur oCCAMoCCAM verifier
    le service qui vérifie les preuves.the service that checks the proofs. Le service d'oCCAM qui vérifie la preuve de chaque machine et signe son verdict. Il tourne lui-même dans une cVM AMD SEV-SNP, dont votre navigateur vérifie la preuve avant de croire ses verdicts.oCCAM's service that checks each machine's proof and signs its verdict. It runs itself in an AMD SEV-SNP cVM, whose proof your browser checks before believing its verdicts.
    votre questionyour question
    un nombre tiré au hasard.a random number. Votre navigateur le tire au moment du clic (en technique, un nonce). La réponse doit le contenir : elle a donc été faite maintenant, pour vous, et ne peut pas être une ancienne réponse rejouée.Your browser draws it at the click (technically, a nonce). The answer must contain it: so it was made now, for you, and cannot be an old answer replayed.