Re: [PATCH 0/4] tsm: Unified Measurement Register ABI for TVMs

From: Dan Middleton
Date: Tue Feb 18 2025 - 11:27:22 EST



On 2/14/25 3:59 PM, Xing, Cedric wrote:
On 2/14/2025 10:26 AM, Dave Hansen wrote:
On 2/14/25 08:19, Xing, Cedric wrote:
But if this is for debug, wouldn't these belong better in debugfs? Do we
really want to maintain this interface forever? There's no shame in
debugfs.

There are many other (more important/significant) uses besides debugging.

For example, any applications that make use of runtime measurements must
extend RTMRs, and this interface provides that exact functionality.

Another example, a policy may be associated with a TD (e.g., CoCo) by
storing its digest in MRCONFIGID, so that the policy could be verified
against its digest at runtime. This interface allows applications to
read MRCONFIGID.

The attestation world is horrifically complicated, and I don't
understand the details at _all_. You're going to have to explain this
one to me like I'm five.

Could you also explain how this is different from the hardware and
virtual TPMs and why this doesn't fit into that existing framework? How
are TVMs novel? What justifies all this new stuff?
TVM (TEE VM) is a broad term referring to encrypted/protected VMs on various confidential computing (CC) architectures, such as AMD SEV, Arm CCA, Intel TDX, etc. Each of these architectures includes hardware components for storing software measurements, known as measurement registers (MRs). This patch series aims to provide the necessary functionality for applications that need to access these MRs.

There are no real/hardware TPMs but only virtual ones in TVMs. Virtual TPMs can be built upon the native MRs provided by the underlying CC architectures.

If you need more detailed information, I'd be happy to discuss it further offline to avoid cluttering the mailing list.

Hi Dave,

Let me try to add more plain language usages.

This ABI lets applications extend events after boot such that they can be
part of the hardware-based attestation.

One common reason is to _identify the workload_ running in the VM.
Typically a VM attestation tells you that you booted to a clean state.
It is much more valuable to a Relying Party to know that they are interacting
with a trusted application / workload.
Projects like CNCF Confidential Containers [1] and Attested Containers
[2] would like to do this.

More generally, Relying Parties can track the state of an application in
the attestation. Auctions are common examples of stateful flows where it
can be meaningful to, e.g., attest that a bid arrived before or after the
close of an auction.

[1] https://github.com/confidential-containers/guest-components/blob/main/attestation-agent/attester/src/tdx/rtmr.rs
[2] https://github.com/intel/acon

Thanks,
Dan Middleton