Glossary
The vocabulary used across the Mero TEE docs. Only terms this system actually
uses are listed; the protocol-level concepts (namespaces, ReadOnlyTee, fleet
admission) are defined in
Calimero Core → TEE Attestation & Fleet Admission.
Attestation — the process by which a TEE proves its software identity and integrity to a remote party. In TDX it produces a signed quote containing the running code’s measurements; the verifier checks that quote against expected values.
Attestation policy — the allowlist the KMS enforces before releasing a key:
allowed MRTD, RTMR0–3, and TCB-status values (AttestationPolicy in
mero-kms/src/policy.rs). Loaded from a signed GitHub release (or ALLOWED_*
env vars in USE_ENV_POLICY mode) and optionally pinned by SHA-256.
Attestation verifier — the public React + Vercel-serverless tool
(attestation-verifier/) that verifies a KMS or node quote independently, via
Intel Trust Authority.
Challenge — a single-use, TTL-bound random 32-byte nonce the KMS issues from
POST /challenge. The node must embed it in its quote’s report_data. Stored in
the challenge store and consumed on the first /get-key attempt.
ChallengeId — the identifier returned alongside a challenge: 16 random bytes,
hex-encoded to 32 characters (mero-kms/src/util.rs). Used to look up and consume
the nonce at /get-key. (It is not a UUID.)
ChallengeStore — the storage abstraction for pending challenges
(mero-kms/src/challenge_store.rs). Two backends: an in-memory map (single
instance) or Redis (multi-instance, using atomic Lua scripts).
Cohort separation — cryptographic isolation between image profiles: each profile extends RTMR3 with a distinct runtime event, so a debug node’s quote can never satisfy a production policy. Reinforced by the profile being baked into the key-derivation path.
compatibility-catalog.json — the repo-root catalog mapping each release
version to its kms_tag, node_image_tag, and policy URLs. Refreshed after a
release by the update-compatibility-catalog workflow. (Distinct from the
per-release kms-phala-compatibility-map.json asset that the verifier fetches.)
compose-hash — a digest identifying the deployed dstack/Phala compose
configuration, recorded in the quote’s event log. The verifier extracts it
(attestation-verifier/src/utils/attestation.js) so an operator can compare the
running deployment against a known-good value.
CVM (Confidential VM) — a VM with hardware-enforced memory encryption and
isolation. Both merod nodes and the KMS run as TDX CVMs; the hypervisor cannot
read or tamper with their memory.
dstack — Phala’s TEE runtime, reached over a Unix socket
(DSTACK_SOCKET_PATH, default /var/run/dstack.sock). It generates TDX quotes,
emits runtime events (extending RTMR3), and performs the deterministic key
derivation the KMS relies on.
Fleet HA sidecar — the systemd service baked into node images
(mero-tee/ansible/roles/merotee/templates/fleet-sidecar.sh.j2). On a one-second
loop it polls the fleet control plane (MDMA) for namespace assignments and drives
merod via meroctl tee fleet-join / meroctl namespace leave. It is only the
trigger — the actual admission, eviction, and key purge happen in Calimero Core.
ITA (Intel Trust Authority) — Intel’s hosted attestation service. It appraises a TDX quote and returns a signed JWT with the verified measurements and TCB status. The attestation verifier uses it as an independent oracle.
Key derivation — the KMS asks dstack to derive a storage key at the path
{KEY_NAMESPACE_PREFIX}/{profile}/{peerId} (default prefix merod/storage). It
is deterministic: the same inputs always yield the same key, and different
profiles yield different keys for the same peer.
Key release — the /challenge → /get-key flow by which an attested node
obtains its storage encryption key. See key release.
KMS (mero-kms-phala) — the Rust/Axum Key Management Service (mero-kms/) that
validates node attestations and releases storage encryption keys via dstack.
MDMA — the fleet control plane that decides which namespaces a fleet node
should join. The fleet HA sidecar polls it (/api/fleet/should-join) with the
node’s peer_id and MRTD, and confirms admissions back to it.
Measurement — a hardware-computed hash written into MRTD or an RTMR. In this
system each is a 48-byte (96-hex-char) SHA-384 value (HexMeasurement).
merod — the Calimero node daemon from calimero-network/core. In the TEE context it runs inside a TDX CVM and fetches its storage key from the KMS at boot.
MRTD (Measurement of the Trust Domain) — the SHA-384 measurement of the
initial VM image, computed by the CPU before the guest runs. Any change to the
image changes it, pinning the exact binary. A node can also read its own MRTD
from /sys/class/misc/tdx_guest/measurements/mrtd:sha384.
Mutual attestation — the two-sided trust model for key release: the node
verifies the KMS (via /attest) and the KMS verifies the node (via
/challenge + /get-key). See trust model.
Nonce — a fresh random value that binds an attestation or challenge to a
specific request, preventing replay. Carried in the first 32 bytes of a quote’s
report_data.
PeerId — the node’s libp2p peer identifier, derived from its public key and encoded in base58btc. Used as the node’s identity in the challenge–response flow and as an input to key derivation.
Phala Cloud — the confidential-compute host the KMS runs on, providing TDX hardware and the dstack runtime.
Profile — one of three image build configurations: debug (full access),
debug-read-only (read-only root, SSH retained), or locked-read-only
(production: no SSH, locked down). Each writes a distinct RTMR3 event for cohort
separation, and the KMS also pins its own profile via /etc/mero-kms/image-profile.
published-mrtds.json — the node-release artifact listing the MRTD (and related measurements) of the images built in that release, per profile. The verifier and operators use it to know which node measurements are legitimate.
Quote (TDX quote) — the signed data structure the TDX hardware produces,
containing the Trust Domain’s measurements (MRTD, RTMR0–3), the caller-supplied
report_data, and a hardware signature. Verifiers use it to confirm a running
enclave’s software identity.
report_data — 64 caller-supplied bytes baked into a quote. Mero TEE splits it
as nonce ‖ binding: for /get-key the binding is SHA-256(peerId); for
/attest it defaults to SHA-256("mero-kms-phala-attest-v1").
RTMR (Runtime Measurement Register) — one of four extend-only registers
(RTMR0–3) that record measurements across the VM lifecycle. RTMR0 ≈ firmware,
RTMR1 ≈ kernel/boot, RTMR2 ≈ application/kernel-cmdline, RTMR3 ≈ post-boot runtime
events. In Mero TEE, RTMR2 carries the injected calimero.root_hash and RTMR3
carries the profile/role separation.
ServiceError — the KMS’s centralized error enum (mero-kms/src/handlers/errors.rs).
Its HTTP mapping: invalid_request / invalid_peer_id (400), invalid_challenge
/ invalid_signature / attestation_verification_failed (401),
tcb_status_rejected / measurement_policy_rejected (403), rate_limited (429),
policy_not_ready (503), key_derivation_failed (500). See
error handling.
Sigstore — the keyless (GitHub OIDC) signing used for release assets such as
published-mrtds.json; no signing key is stored in the repo.
Storage encryption key — the key that decrypts a node’s on-disk state, derived
by dstack and released by the KMS after a successful attestation. It is unrelated
to the per-group keys a ReadOnlyTee replica receives in Core.
TCB (Trusted Computing Base) — the hardware/firmware/software critical to a
TEE’s security. A quote reports a TCB status (e.g. UpToDate,
SWHardeningNeeded, OutOfDate); the policy allowlists which are acceptable
(default: uptodate).
TDVF (TDX Virtual Firmware) — the UEFI-based firmware that runs inside a Trust Domain during early boot and extends RTMR0.
TDX (Trust Domain Extensions) — Intel’s hardware technology for isolated, memory-encrypted VMs (Trust Domains) with CPU-signed attestation. It is the TEE this system uses.
TEE (Trusted Execution Environment) — a hardware-isolated environment that protects code and data from the host OS and hypervisor. Intel TDX (VM-level) and Intel SGX (process-level) are examples; Mero TEE uses TDX.
Trust Domain (TD) — a single TDX-protected VM, with its own encrypted memory,
measurement registers, and attestation. Each merod node and the KMS is one.