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
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.
#measurement=The #measurement= reference linkL'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
#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.
L'architecture de ce chatThe architecture of this chat
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).
Une session, de la VM à la réponse chiffréeOne session, from the VM to the encrypted response
- 1Le proxy demande l'attestation de la passerelle, avec une question nouvelle.The proxy asks for the gateway's attestation, with a new question.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
Votre questionYour question
Votre navigateur tire un nombre au hasard, jamais vu.Your browser draws a random number, never seen before.
vousyou - 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
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
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
Votre questionYour question
Votre navigateur tire un nombre au hasard, jamais vu.Your browser draws a random number, never seen before.
vousyou - 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
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
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
Votre questionYour question
Votre navigateur tire un nombre au hasard, jamais vu.Your browser draws a random number, never seen before.
vousyou - 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
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
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
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
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=etoccam.image=) et l'initramfs, qui porte l'agent oCCAMthe command line (withroothash=andoccam.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.
La vie d'un nœud, de son image à ses podsA node's life, from its image to its pods
- 1Vous construisez l'image du nœud avec
occam-k8set 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 withoccam-k8sand 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. - 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.
- 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-runcrefuse 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), andoccam-runcrefuses every exec command. - 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.
- 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.
- 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
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 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 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.
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 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ô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
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.
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.
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.
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.
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.
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.
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.
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
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
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
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, anonce). The answer must contain it: so it was made now, for you, and cannot be an old answer replayed.
L'architecture d'oCCAMoCCAM's architecture
Ce que le processeur chiffre, et avec quelle cléWhat the processor encrypts, and with which key
Chaque VM confidentielle tourne dans un périmètre chiffré en RAM par le contrôleur mémoire du processeur : une clé par invité, choisie par son ASID (AMD) ou sa KeyID privée, le HKID (Intel). L'hôte, qui n'est pas de confiance, ne lit jamais ces clés. Le vérificateur oCCAM qui vérifie et signe tourne lui-même dans deux invités SEV-SNP, chacun avec son ASID.Each confidential VM runs inside a perimeter encrypted in RAM by the processor's memory controller: one key per guest, selected by its ASID (AMD) or its private KeyID, the HKID (Intel). The host, which is not trusted, never reads these keys. The oCCAM verifier that verifies and signs runs itself in two SEV-SNP guests, each with its own ASID.
Sources (citées, non mesurées) : AMD, SEV Secure Nested Paging Firmware ABI Specification, publication 56860 rév. 1.58 (sections 2.3, 4.1, 4.4, 8.9 SNP_GCTX_CREATE, 8.10 SNP_ACTIVATE) ; Intel, Intel Trust Domain Extensions white paper (juin 2025). Le nombre d'ASID est mesuré sur l'hôte de référence le 2026-10-14.Sources (cited, not measured): AMD, SEV Secure Nested Paging Firmware ABI Specification, publication 56860 rev. 1.58 (sections 2.3, 4.1, 4.4, 8.9 SNP_GCTX_CREATE, 8.10 SNP_ACTIVATE); Intel, Intel Trust Domain Extensions white paper (June 2025). The ASID count is measured on the reference host on 2026-10-14.
Les clés : où chacune vit et ce qu'elle faitThe keys: where each one lives and what it does
Dans le siliciumIn the silicon
les clés des fabricants ; aucune n'est jamais exportéethe vendors' keys; none is ever exported
Nées en mémoire TEE, gardées làBorn in TEE memory, kept there
aucune copie hors du périmètre chiffréno copy outside the encrypted perimeter
Utilisées dans la cVM, stockées scelléesUsed in the cVM, stored sealed
faites côté client ; scellées sous made customer-side; sealed under ENC
<id>-NAMEÉcrits sous /run/occam/secrets pour l'application.Written under /run/occam/secrets for the application.<id>-weightsOuvre le volume d'un modèle d'IA, libérée seulement sur un résultat dont les GPU ont été vérifiés.Opens an AI model's volume, released only on a result whose GPUs were verified.Pas en mémoire TEE seulement : entières, l'opérateur peut les desceller par le KMS ; partagées 2-of-2 ou en mode customer, seule la cVM les tient entières.Not TEE-only: whole, the operator can unseal them through the KMS; split 2-of-2 or customer, only the cVM holds them whole.
Dans le KMS, par régionIn the KMS, per region
REGION_<region>_, partagées par tous les tenants, shared by every tenant
ROOT_PKILa racine PKI de la région : signe chaque CA de tenant ; l'ancre qu'une Relying Party épingle.The regional PKI root: signs every tenant CA; the anchor a Relying Party pins.JWT_SIGNSigne les résultats en mode okms, sans preuve qui la lie à un invité : cette page ne l'admet pas.Signs the results in okms mode, with no proof binding it to a guest: this page does not admit it.AGENT_SIGNSigne les sommes de contrôle du paquet de l'agent, que son installeur vérifie.Signs the agent package's checksums, which its installer checks.PCK_ENCEnveloppe la clé de données de chaque entrée du cache des VCEK.Wraps the data key of each VCEK cache entry.RIM_ENCCréée et réservée ; lue par rien.Created and reserved; read by nothing.Dans le KMS, par tenantIn the KMS, per tenant
T_<region>_<tid8>_, un jeu par tenant, one set per tenant
PKILa CA du tenant : signe les certificats de ses agents.The tenant CA: signs the tenant's agent certificates.E<n>_PKILa CA du tenant après une rotation ; la clé précédente gardée jusqu'à sa suppression.The tenant CA after a rotation; the previous key kept until deleted.ENCScelle les listes blanches, les secrets stockés et les parts détenues, les mesures des enclaves ; enveloppe la clé de données de l'audit.Seals whitelists, stored secrets and held shares, enclave measurements; wraps the audit data key.HMACEnveloppe la clé de la chaîne HMAC du journal d'audit.Wraps the key of the audit log's HMAC chain.WLMACEnveloppe la clé du MAC de liste blanche (gate 1).Wraps the key of the gate-1 whitelist MAC.Côté clientOn the customer's side
jamais détenues par oCCAMnever held by oCCAM
tenant.pemSigne les listes blanches, les jeux de policies et les credentials d'enrôlement ; oCCAM n'en garde que la moitié publique.Signs whitelists, policy sets and enrolment credentials; oCCAM stores only its public half.root.kept, data.keptLa moitié client d'une clé de disque 2-of-2, ou en mode de clés customer la clé entière ; servie par son releaser à une cVM attestée seulement.The customer's half of a 2-of-2 disk key, or in the key mode customer the whole key; served by its releaser to an attested cVM only.occam-ec1.…Émis par le client, sur le disque de credential de la cVM : admet son enrôlement dans le tenant.Issued by the customer, on the cVM's credential drive: admits its enrolment into the tenant.Où elles vivent. Dans le silicium : VEK, clé du TD, VCEK, PCK. En RAM de TEE seulement : la clé des verdicts, les clés de l'agent. Dans OKMS : les clés par région et par tenant. Chez le client : sa clé de signature, ses parts, ses credentials. 2-of-2 : la part détenue par oCCAM, scellée sous la clé ENC du tenant, et la part gardée par le client se combinent en clé de disque dans la cVM seulement ; aucune seule n'ouvre un disque. Enveloppées en base : la clé de données de l'audit (sous ENC), la clé de chaîne d'audit (sous HMAC), la clé du MAC gate 1 (sous WLMAC). Non dessinées : les clés du royaume Keycloak, la CA TLS interne, le certificat client du KMS.Where they live. In the silicon: VEK, TD key, VCEK, PCK. In TEE RAM only: the result-signing key, the agent's keys. In OKMS: the per-region and per-tenant keys. At the customer's: its signing key, its shares, its credentials. 2-of-2: oCCAM's held share, sealed under the tenant's ENC key, and the customer's kept share combine into the disk key inside the cVM only; neither alone opens a disk. Wrapped in the database: the audit data key (under ENC), the audit chain key (under HMAC), the gate-1 MAC key (under WLMAC). Not drawn: Keycloak's realm keys, the internal TLS CA, the KMS client certificate.
Vérifier le vérificateur oCCAM : ce qui est publiéChecking the oCCAM verifier: what is published
Ce qui permet à chacun de vérifier le vérificateur oCCAM sans croire son opérateur, et ce que l'opérateur ne peut pas lire. La page Transparence lit en direct le lot en service et donne les commandes : What lets anyone check the oCCAM verifier without trusting its operator, and what the operator cannot read. The Transparency page reads the bundle in service live and gives the commands: /transparency
Le lot de lancementThe launch bundle
DisponibleAvailable
Le firmware, le noyau, l'initramfs et la ligne de commande que démarrent les invités du vérificateur oCCAM, publiés dans un seau Object Storage sous Object Lock (COMPLIANCE, jusqu'au 2036-10-28) et enregistrés par le service à /.well-known/decision-plane-bundle : chacun recalcule leur mesure SEV-SNP avec sev-snp-measure (occam-dp-bundle fetch puis verify) et la compare à celle que cette page lit dans le lien.The firmware, kernel, initramfs and command line the guests of the oCCAM verifier boot, published in an Object Storage bucket under Object Lock (COMPLIANCE, until 2036-10-28) and recorded by the service at /.well-known/decision-plane-bundle: anyone recomputes their SEV-SNP measurement with sev-snp-measure (occam-dp-bundle fetch, then verify) and compares it with the one this page reads from the link.
L'archive reproductibleThe reproducible archive
DisponibleAvailable
L'initramfs du vérificateur oCCAM est construit depuis un commit, ses modes, propriétaires et dates fixés : ses octets sont fonction de ses sources, et son manifeste nomme chaque paquet Ubuntu qu'il contient. Chaque nuit, il est reconstruit deux fois et comparé à celui en service.The oCCAM verifier's initramfs is built from a commit with fixed modes, owners and times: its bytes are a function of its sources, and its manifest names every Ubuntu package it holds. Every night it is rebuilt twice and compared with the one in service.
Le journal des publicationsThe release log
DisponibleAvailable
Chaque version du vérificateur oCCAM est déclarée, signée hors ligne par la clé de publication, dans un journal en ajout seul (arbre RFC 9162) publié sous Object Lock. Votre releaser peut l'exiger, avec un âge minimal avant de croire une nouvelle mesure ; la page Transparence vérifie ses signatures et sa racine dans votre navigateur. Identifiant de la clé de publication : 0GfOzvpPnWnPSIsGajqnbYzo-CK9ya7uY2Ja-qu33hY, à comparer à celui obtenu hors de ce service.Every version of the oCCAM verifier is declared, signed offline by the release key, in an append-only log (an RFC 9162 tree) published under Object Lock. Your releaser can require it, with a minimum age before it trusts a new measurement; the Transparency page verifies its signatures and its root in your browser. Release key id: 0GfOzvpPnWnPSIsGajqnbYzo-CK9ya7uY2Ja-qu33hY, to compare with the one obtained outside this service.
Le mode de clés customerThe customer key mode
DisponibleAvailable
oCCAM ne stocke aucune clé ni aucun secret de vos cVM : votre releaser tient chaque clé de disque et chaque secret applicatif entiers, et ne les remet qu'à une cVM attestée de la mesure qu'il épingle. Votre releaser arrêté, aucune clé n'est remise et les disques restent fermés.oCCAM stores no key and no secret of your cVMs: your releaser holds each disk key and application secret whole, and hands it only to an attested cVM of the measurement it pins. With your releaser stopped, no key is handed over and the disks stay locked.
Un secret entier exige un acquittementA whole secret requires an acknowledgement
DisponibleAvailable
Un secret stocké entier, scellé sous la clé ENC du tenant, est lisible par l'opérateur par le KMS : le service refuse de le stocker sans acknowledge_operator_access: true (400 OCCAM_ERR_014), et le SDK demande --acknowledge-operator-access. En 2-of-2 ou en mode customer, rien à acquitter : l'opérateur ne tient jamais la clé entière.A secret stored whole, sealed under the tenant's ENC key, is readable by the operator through the KMS: the service refuses to store one without acknowledge_operator_access: true (400 OCCAM_ERR_014), and the SDK asks for --acknowledge-operator-access. Split 2-of-2 or customer, nothing to acknowledge: the operator never holds the whole key.
Un second facteur pour les administrateursA second factor for administrators
DisponibleAvailable
Chaque personne qui tient le rôle d'administrateur se connecte au tableau de bord avec un TOTP après son mot de passe ; le tableau de bord passe par le code d'autorisation avec PKCE, jamais par un mot de passe envoyé à l'API ; l'administration de Keycloak n'est pas joignable de l'extérieur.Every person holding the administrator role signs in to the dashboard with a TOTP after the password; the dashboard uses the authorisation code with PKCE, never a password sent to the API; Keycloak's administration is not reachable from outside.
Post-quantique hybrideHybrid post-quantum
DisponibleAvailable
Le TLS de l'API publique et entre les services préfère X25519MLKEM768 (ML-KEM-768 avec X25519) et sert toujours un client classique en X25519 ; les secrets et les parts libérés sont enveloppés en HPKE X-Wing (enveloppe v2) vers la clé X-Wing de l'agent quand l'agent en a enregistré une. Les signatures et le chiffrement au repos restent classiques.TLS to the public API and between the services prefers X25519MLKEM768 (ML-KEM-768 with X25519) and still serves a classical client in X25519; released secrets and shares are wrapped in HPKE X-Wing (wrap v2) to the agent's X-Wing key when the agent registered one. Signatures and encryption at rest stay classical.