Re: [PATCH v3 0/4] tdx-guest: Make Quote buffer size dynamic

"Edgecombe, Rick P" <[email protected]>
Newsgroups dev.linux.lists.linux-coco,org.kernel.vger.kvm,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Sean, Dave, Kiryl,

In PUCK we talked about how the TD scoped quote operation avoids changes 
in the guest. But this series is actually changing the guest, so is 
somewhat at odds to that assertion. It turns out there are some tradeoffs 
here that also connect to TDX migration uAPI. Please see below for an 
explanation and recommended course of action.

As a gentle recall helper... The general attestation flow converts a 
report to a quote, which then gets checked by a verifier. The report is 
like a snapshot of the guest and its environment. The quote is a signed 
version of the report plus hardware certs. It's signed with a hardware key 
and can use different kinds of crypto.

These pieces are evolving to handle a few problems at once:
- The stuff that needs to be attested is growing. Basically more platform 
  details and devices are getting added to the blobs.
- The crypto stuff is growing. The post quantum crypto stuff is large, 
  etc. That stuff lives in the quote.
- Migration wants a quote that is platform specific and not TD specific.

Because the platform details are growing, they need to either go into a 
larger report or added later via a TD scoped quote. But the post quantum 
crypto stuff is going to bloat the quote either way.

If the report grows to include all the TD specific details, then the QUOTE 
seamcall can be platform scoped because all the details that it needs are 
passed in as args.

But if it is TD scoped, the report can stay the same size and the extra 
details can just be added during the quote operation. For migration, it 
only needs a platform scoped quote. If there are extra details about a 
specific TD, the migration stuff can be fine to just ignore them. (i.e. it 
can get what it needs from TD scoped quotes or platform scoped quotes).

The current QUOTE seamcall supports both: platform scoped and TD scoped 
operations. But since we could get by with either only a platform or TD 
scoped seamcall for both operations, we could reduce the kernel's uAPIs, 
or change the API's location. Per recent discussion, Sean sees TD scoped 
APIs living in KVM and platform scoped things living in the host 
driver/tip. So all that leaves us with something like this:

 |Normal quote    |Migration quote |Report size|Quote size|uAPI location  |
-|----------------|----------------|-----------|----------|---------------|
1|Platform scoped |Platform scoped |Grows      |Grows     |TDX host driver|
2|TD scoped       |TD scoped       |Fixed      |Grows     |KVM            |
3|TD scoped       |Platform scoped |Fixed      |Grows     |Both           |


I'm thinking we should proceed with 2 because only the quote size changes. 
So less guest changes over time. 3 is not really a disaster either, but we 
shouldn't need 2 uABIs. For 1, from early discussion it seems it can be 
made to work but sounds like it will require some more extensive changes 
to the TDX attestation stuff. So probably needs a bit more investigation 
before we can say it won't disturb some other VMM vendor, etc.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.