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