Appendix: Google Cloud Workload Services Daemon
The key-management and attestation interfaces exposed to a node’s workload container.
Overview
A node exposes its key-management and attestation operations through the Workload Services Daemon. The daemon runs inside the confidential VM alongside the workload container and acts as its security proxy: private keys stay in the Key Protection Service VM, and the daemon gathers the attestation evidence, so the container obtains Titan TPM and TDX evidence only through the daemon. The container reaches the GPUs directly, through the device nodes it needs for model execution and GPU health polling. For everything else, the container interacts with the daemon over local Unix domain sockets, and the daemon bridges those requests to internal services:
- Key-management interface
Manages key-encapsulation mechanism (KEM) key pairs and performs decapsulation for request termination. Private keys stay inside the dedicated Key Protection Service VM, which the daemon reaches over a gRPC bridge; within that VM, memfd_secret further isolates the key material from the VM’s other processes.
- Attestation Service
Gathers Intel TDX quotes from the confidential VMs, host Titan TPM quotes from the Host Services Daemon, and NVIDIA GPU attestation reports from the NVIDIA driver, returning endorsements that bind keys to this evidence.
For the node’s key-protection architecture, attestation evidence binding, and verification procedures, see Google Cloud Node Attestation. Appendix: Google Cloud Attestation Bundle Contents gives the wire format of the attestation bundle.
Interacting with the daemon
The daemon listens on two Unix domain sockets mounted inside the workload container at /run/container_launcher/:
kmaserver.sockThe key-management interface.
teeserver.sockThe Attestation Service.
Both interfaces speak HTTP over Unix domain sockets. In the Google Cloud Research Environment, curl reaches these endpoints directly:
% curl --unix-socket /run/container_launcher/kmaserver.sock http://localhost/v1/capabilitiesThe underlying API schemas are defined as protobufs in the open source key-protection-module repository, and the endpoints exchange those messages in their JSON encoding.
Key-management interface
The key-management interface on kmaserver.sock manages the life cycle of KEM keys and performs decapsulation:
GET /v1/capabilitiesLists the supported KEM algorithms, such as
KEM_ALGORITHM_DHKEM_X25519_HKDF_SHA256.POST /v1/keys:generate_keyRequests a new KEM key pair. The request specifies the algorithm and an optional
lifespanin seconds. The private key remains isolated within the Key Protection Service VM; the daemon returns a UUIDkey_handle, the public key, and the expiration timestamp.GET /v1/keysLists active KEM keys, their handles, public keys, and expiration times.
POST /v1/keys:decapPerforms KEM decapsulation. The caller provides the
key_handleand the base64-encoded encapsulatedciphertext. The Key Protection Service decapsulates the ciphertext within its own VM boundary, encrypts the resulting shared secret to the daemon’s binding key, and returns the encrypted secret over the gRPC bridge. The daemon decrypts the secret and returns the decryptedshared_secret.POST /v1/keys:destroyDestroys a key pair identified by
key_handlebefore its lifespan expires.
Attestation Service
The Attestation Service on teeserver.sock gathers attestation evidence from across the node’s hardware and firmware roots:
POST /v1/keys:getEndorsementGenerates an attestation endorsement binding a specific KEM key to the node’s evidence. The caller provides a base64-encoded verifier
challengeand thekey_handle.POST /v1/hostAttestationCollects attestation evidence for the physical host. The daemon forwards the verifier
challengeto the Host Services Daemon running on the host operating system, returning the host Titan TPM quote, Device Identifier Composition Engine (DICE) certificate chain, and boot and launch event logs.
The POST /v1/keys:getEndorsement response returns two endorsements, each covering a serialized KeyClaims message that sets one of two claim types:
protected_key_attestationThe Intel TDX quote and event logs (the firmware Confidential Computing Event Log (CCEL) and the launch Canonical Event Log (CEL)) for the Key Protection Service VM. This endorsement carries
VmProtectionKeyClaims, in which the Key Protection Service attests that it holds the KEM private key and will encrypt every resulting shared secret to the binding key; the message gives the KEM public key, the binding public key, and the KEM key’s expiration time.binding_key_attestationThe Intel TDX quote for the Workload VM, with the firmware CCEL and the launch CEL. The launch CEL carries the attached NVIDIA GPU attestation reports, so the workload quote’s RTMR[3] covers them. This endorsement carries
VmProtectionBindingClaims, a single field naming the binding public key whose private half the Workload VM attests to controlling.