Linux userland API discussions
 help / color / mirror / Atom feed
From: Dave Jiang <dave.jiang@intel.com>
To: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Jiri Pirko <jiri@resnulli.us>,
	linux-coco@lists.linux.dev, linux-kernel@vger.kernel.org,
	linux-api@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org,
	linux-doc@vger.kernel.org, david.quigley@intel.com,
	lukas@wunner.de, ksinyuk@kernel.org, rodrigo.vivi@intel.com,
	cedric.xing@intel.com, sameo@meta.com, drdeeglaze@gmail.com,
	James.Bottomley@hansenpartnership.com, aik@amd.com,
	jpiotrowski@nvidia.com, qinkun@google.com, pgonda@google.com,
	jic23@kernel.org, alistair.francis@wdc.com, ankita@nvidia.com,
	suzuki.poulose@arm.com, kas@kernel.org,
	rick.p.edgecombe@intel.com, elena.reshetova@intel.com,
	dave.hansen@linux.intel.com,
	sathyanarayanan.kuppuswamy@linux.intel.com, peter.fang@intel.com
Subject: Re: [PATCH RFC 00/20] attestation: Add a common subsystem and TDX support
Date: Wed, 28 Oct 2026 12:16:01 -0700	[thread overview]
Message-ID: <c57c45bb-5047-4aa9-9f06-6ac5f36ff3ce@intel.com> (raw)
In-Reply-To: <20261027234658.GL1685504@ziepe.ca>



On 10/27/26 4:46 PM, Jason Gunthorpe wrote:
> On Tue, Oct 27, 2026 at 04:09:19PM -0700, Dave Jiang wrote:
> 
>> There are two issues for TDX Connect. One, the device info is collected at
>> SPDM connect (TDH.SPDM.CONNECT), not at lock. TDH.TDI.BIND only returns the
>> interface report. So the measurements a TD sees at lock can be from well
>> before the lock. To get measurements taken after the bind, the TD has to
>> ask the VMM for a recollection with its own nonce.
> 
> IMHO measurements taken before lock must never be made visible through
> this interface, it defeats the security property of evidence within
> the locked session. I would expect the guest kernel TDX driver to
> prevent this.

Agreed. I'll change the guest driver so the lock asks the VMM for a
recollection with a nonce the driver picks. Each lock then costs one
recollection.

>  
>> Second, a device may take a runtime firmware update of equal or higher SVN
>> while its TDIs stay locked, unless the lock sets NO_FW_UPDATE. The
>> TD isn't
> 
> Sure, any of the live update things are not really relevant, the
> evidence can change asynchronously and without notification, so we can
> just ignore the issue. If the guest opts into live update then it can
> only rely on things like min svn.

makes sense

> 
>>> I'm a bit puzzled by this optional challenge concept, I haven't tried
>>> to read SPDM spec yet, but it really has a way to omit the challenge
>>> from the reply? It doesn't just replace it with 0 or something?
>>
>> SPDM puts the requester's nonce in the GET_MEASUREMENTS request, and only when
>> the request asks for a signature. The MEASUREMENTS response always carries the
>> responder's own nonce, and the signature covers the request too. An unsigned
>> request has no nonce and gets an unsigned response.
> 
> Returning an unsigned collection seems like an interesting use case,
> but why would you want to do that in the first place?

I don't have a use case for it. That was answering whether SPDM can
leave the nonce out.

> 
>> The empty challenge in my provider means something else though: don't
>> recollect, return the evidence collected earlier. So it's less "omit the
>> nonce" and more "no new collection". Maybe that's better as an explicit flag
>> than an empty challenge?
> 
> I'm not sure 'no new collection' is an especially useful thing. Since
> the kernel won't be validating the signature you still need to pass
> the expected nonce from the prior collection back to userspace so it
> can check it.
> 
> Is there some specific use case for this?

Getting the lock event's evidence. With the suggested lock change above, the
guest driver collects it during the lock. But the lock is a sysfs write and
returns nothing. Userspace still has to read the evidence to appraise it before
run. The device was already locked when it was collected, so the read needs no
new collection.

Userspace doesn't need the expected nonce passed back. The guest driver picks
the nonce for the lock's collection and checks it before publishing. If userspace
sends a challenge instead, that nonce is its own. The collection's nonce is in the
evidence in the GET_MEASUREMENTS request that asked for the signature.

> 
>>>> 6. tdx_attestation_test's discovery_and_construction_fields expects an
>>>>    inheritance chain of 4, but the TDX family inherits ctlv-attestation
>>>>    directly, which gives 3. In a real TDX guest it fails with
>>>>    "Expected 4 (4) == ctlv_chain_len(self->dev) (3)".
>>>
>>> I would have naively guessed this should inherent from some SPDM family?
>>
>> The TDX family is the TD's own attestation (TD report, Quote and RTMRs), with
>> no device or SPDM in it. In wip_attestation_all_1 it inherits ctlv-attestation
>> directly, so I think the test's 4 is what's stale. Jiri would know for sure.
> 
> I think TDX report/quote/rtmrs should be a different familiy from TDX device
> assignment SPDM. They are completely different things.

Yes. That's how wip_attestation_all_1 has it, and the device side is the SPDM family in the POC.

DJ

  reply	other threads:[~2026-10-28 19:16 UTC|newest]

Thread overview: 155+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-15 14:50 [PATCH RFC 00/20] attestation: Add a common subsystem and TDX support Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 01/20] ctlv: Add the schema language and generator Jiri Pirko
2026-10-20 22:31   ` Jonathan Cameron
2026-10-21 13:23     ` Jiri Pirko
2026-10-27  8:34     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 02/20] ctlv: Add the UAPI wire format and family API Jiri Pirko
2026-10-19 23:29   ` Jason Gunthorpe
2026-10-20 12:26     ` Jiri Pirko
2026-10-20 23:00   ` Jonathan Cameron
2026-10-20 23:39     ` Jonathan Cameron
2026-10-21 13:54     ` Jiri Pirko
2026-10-26 18:55   ` Yeoreum Yun
2026-10-27  8:02     ` Jiri Pirko
2026-10-27 14:15       ` Jason Gunthorpe
2026-10-27 14:48         ` Yeoreum Yun
2026-10-27 15:17           ` Jason Gunthorpe
2026-10-27 15:55             ` Yeoreum Yun
2026-10-15 14:50 ` [PATCH RFC 03/20] ctlv: Add the root family specification and generated files Jiri Pirko
2026-10-19 23:29   ` Jason Gunthorpe
2026-10-20 12:28     ` Jiri Pirko
2026-10-20 12:55       ` Jason Gunthorpe
2026-10-20 14:07         ` Jiri Pirko
2026-10-20 23:30   ` Jonathan Cameron
2026-10-21 16:25     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 04/20] Documentation: ctlv: Add userspace ABI Jiri Pirko
2026-10-19 23:29   ` Jason Gunthorpe
2026-10-20 14:06     ` Jiri Pirko
2026-10-21  0:11   ` Jonathan Cameron
2026-10-22  9:01     ` Jiri Pirko
2026-10-23 19:23       ` Jonathan Cameron
2026-10-15 14:50 ` [PATCH RFC 05/20] ctlv: Prepare message input handling Jiri Pirko
2026-10-21  0:43   ` Jonathan Cameron
2026-10-22  8:27     ` Jiri Pirko
2026-10-22 18:39     ` Jason Gunthorpe
2026-10-23 12:55       ` Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-27 10:17     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 06/20] ctlv: Prepare blob descriptor validation Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 07/20] ctlv: Prepare schema validation Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 08/20] ctlv: Prepare message output handling Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-15 14:50 ` [PATCH RFC 09/20] ctlv: Prepare VA blob handling Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 10/20] ctlv: Prepare event queue support Jiri Pirko
2026-10-21  1:12   ` Jonathan Cameron
2026-10-22  9:04     ` Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-26 14:45     ` Jiri Pirko
2026-10-27 12:38   ` Yeoreum Yun
2026-10-15 14:50 ` [PATCH RFC 11/20] ctlv: Prepare runtime introspection Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-26 14:52     ` Jiri Pirko
2026-10-26 16:12       ` Jason Gunthorpe
2026-10-27 10:21     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 12/20] ctlv: Add device and operation dispatch Jiri Pirko
2026-10-21  1:25   ` Jonathan Cameron
2026-10-22  9:05     ` Jiri Pirko
2026-10-22 18:43     ` Jason Gunthorpe
2026-10-23 12:58       ` Jiri Pirko
2026-10-23 14:26         ` Jason Gunthorpe
2026-10-26 13:48           ` Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-27 13:38     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 13/20] Documentation: ctlv: Describe how to write a family Jiri Pirko
2026-10-19 23:29   ` Jason Gunthorpe
2026-10-21 14:23     ` Jiri Pirko
2026-10-21 14:49       ` Jason Gunthorpe
2026-10-21 16:24         ` Jiri Pirko
2026-10-21 16:48           ` Jason Gunthorpe
2026-10-22  8:22             ` Jiri Pirko
2026-10-22 19:21               ` Jason Gunthorpe
2026-10-23 13:01                 ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 14/20] attestation: Add the base family specification and generated files Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-15 14:50 ` [PATCH RFC 15/20] attestation: Prepare provider and instance core Jiri Pirko
2026-10-19 23:29   ` Jason Gunthorpe
2026-10-21 13:04     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 16/20] attestation: Prepare measurement register journal Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 17/20] attestation: Add CTLV operation handling Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 18/20] tdx-guest: Expose the native attestation service API Jiri Pirko
2026-10-26 14:07   ` Jason Gunthorpe
2026-10-27 10:03     ` Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 19/20] attestation: Add the TDX family specification and generated files Jiri Pirko
2026-10-15 14:50 ` [PATCH RFC 20/20] attestation: Add the TDX family implementation Jiri Pirko
2026-10-22 22:07   ` Edgecombe, Rick P
2026-10-23 14:12     ` Jason Gunthorpe
2026-10-23 19:40       ` Edgecombe, Rick P
2026-10-23 22:00         ` Jason Gunthorpe
2026-10-23 18:15     ` Jiri Pirko
2026-10-23 19:41       ` Edgecombe, Rick P
2026-10-16 23:43 ` [PATCH RFC 00/20] attestation: Add a common subsystem and TDX support Jason Gunthorpe
2026-10-17 18:16   ` Dionna Glaze
2026-10-17 19:06     ` Jarkko Sakkinen
2026-10-17 19:08       ` Jarkko Sakkinen
2026-10-17 19:22         ` Jarkko Sakkinen
2026-10-17 20:55       ` Jason Gunthorpe
2026-10-17 21:14         ` Jarkko Sakkinen
2026-10-17 20:34     ` Jason Gunthorpe
2026-10-17 20:55       ` Jarkko Sakkinen
2026-10-17 23:10         ` Jason Gunthorpe
2026-10-18 23:53           ` Dionna Glaze
2026-10-19 12:08             ` Jiri Pirko
2026-10-19 16:10               ` Dionna Glaze
2026-10-19 22:56                 ` Jason Gunthorpe
2026-10-21  8:33                   ` Jiri Pirko
2026-10-21 14:12                     ` Mimi Zohar
2026-10-21 14:35                       ` Jason Gunthorpe
2026-10-21 19:05                         ` Mimi Zohar
2026-10-22 10:54                           ` Jiri Pirko
2026-10-22 11:24                             ` Mimi Zohar
2026-10-22 18:51                               ` Jason Gunthorpe
2026-10-22 19:19                                 ` Jarkko Sakkinen
2026-10-22 19:23                                   ` Jason Gunthorpe
2026-10-22 19:40                                     ` Jarkko Sakkinen
2026-10-22 19:40                                     ` James Bottomley
2026-10-22 12:26                         ` James Bottomley
2026-10-22 13:11                           ` Jason Gunthorpe
2026-10-22 14:07                             ` James Bottomley
2026-10-22 19:19                               ` Jason Gunthorpe
2026-10-22 19:37                                 ` Mimi Zohar
2026-10-22 19:45                                   ` Jason Gunthorpe
2026-10-22 19:52                                     ` James Bottomley
2026-10-22 20:43                                       ` Mimi Zohar
2026-10-20  9:26                 ` Jiri Pirko
2026-10-20 13:45                 ` Mimi Zohar
2026-10-20 14:06                   ` Jason Gunthorpe
2026-10-20 15:22                     ` Mimi Zohar
2026-10-20 16:11                       ` Yeoreum Yun
2026-10-20 16:52                         ` Jason Gunthorpe
2026-10-21 12:23                           ` Mimi Zohar
2026-10-21 13:18                             ` Jarkko Sakkinen
2026-10-21 13:50                               ` Yeoreum Yun
2026-10-21 13:51                             ` Jason Gunthorpe
2026-10-21 14:31                               ` Mimi Zohar
2026-10-21 14:39                                 ` Jason Gunthorpe
2026-10-21 12:48                         ` James Bottomley
2026-10-21 13:55                           ` Jason Gunthorpe
2026-10-19 12:40             ` Jarkko Sakkinen
2026-10-19 23:11             ` Jason Gunthorpe
2026-10-20 12:49       ` James Bottomley
2026-10-20 13:13         ` Jason Gunthorpe
2026-10-22 10:30 ` Aneesh Kumar K.V
2026-10-22 15:38   ` Jiri Pirko
2026-10-22 16:42     ` Jason Gunthorpe
2026-10-23  8:04     ` Aneesh Kumar K.V
2026-10-23 11:32       ` Jiri Pirko
2026-10-23 14:20       ` Jason Gunthorpe
2026-10-23 15:28         ` Aneesh Kumar K.V
2026-10-23 15:42           ` Jason Gunthorpe
2026-10-23 19:13             ` Jonathan Cameron
2026-10-27 18:43 ` Dave Jiang
2026-10-27 19:36   ` Jason Gunthorpe
2026-10-27 23:09     ` Dave Jiang
2026-10-27 23:46       ` Jason Gunthorpe
2026-10-28 19:16         ` Dave Jiang [this message]
2026-10-29  7:37 ` Nikolay Borisov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c57c45bb-5047-4aa9-9f06-6ac5f36ff3ce@intel.com \
    --to=dave.jiang@intel.com \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=aik@amd.com \
    --cc=alistair.francis@wdc.com \
    --cc=ankita@nvidia.com \
    --cc=cedric.xing@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=david.quigley@intel.com \
    --cc=drdeeglaze@gmail.com \
    --cc=elena.reshetova@intel.com \
    --cc=jgg@ziepe.ca \
    --cc=jic23@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=jpiotrowski@nvidia.com \
    --cc=kas@kernel.org \
    --cc=ksinyuk@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=peter.fang@intel.com \
    --cc=pgonda@google.com \
    --cc=qinkun@google.com \
    --cc=rick.p.edgecombe@intel.com \
    --cc=rodrigo.vivi@intel.com \
    --cc=sameo@meta.com \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=suzuki.poulose@arm.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox