All of lore.kernel.org
 help / color / mirror / Atom feed
From: Aneesh Kumar K.V <aneesh.kumar@kernel.org>
To: "Reshetova, Elena" <elena.reshetova@intel.com>,
	Jason Gunthorpe <jgg@nvidia.com>
Cc: "Jiang, Dave" <dave.jiang@intel.com>,
	Xu Yilun <yilun.xu@linux.intel.com>,
	"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
	Jiri Pirko <jiri@resnulli.us>,
	"Tian, Kevin" <kevin.tian@intel.com>,
	Alexey Kardashevskiy <aik@amd.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Steven Price <steven.price@arm.com>,
	Kiryl Shutsemau <kas@kernel.org>,
	"Edgecombe, Rick P" <rick.p.edgecombe@intel.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Jonathan Cameron <jic23@kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Ashish Kalra <ashish.kalra@amd.com>,
	Tom Lendacky <thomas.lendacky@amd.com>,
	John Allen <john.allen@amd.com>, Will Deacon <will@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	"patches@lists.linux.dev" <patches@lists.linux.dev>
Subject: RE: [RFC PATCH v1 10/11] virt: coco: arm-cca-host: Publish slot zero and establish streams after acceptance
Date: Fri, 06 Nov 2026 21:23:44 +0530	[thread overview]
Message-ID: <yq5aeccyot13.fsf@kernel.org> (raw)
In-Reply-To: <DS4PPFA84FA90FC3969F2B8388087CDDF67E7762@DS4PPFA84FA90FC.namprd11.prod.outlook.com>

"Reshetova, Elena" <elena.reshetova@intel.com> writes:

>> Jason Gunthorpe <jgg@nvidia.com> writes:
>> 
>> > On Tue, Nov 03, 2026 at 12:01:43PM +0000, Reshetova, Elena wrote:
>> >
>> > We will need some multi-step sequence from the uABI perspective:
>> >
>> > 1) CTLV command START CONNECT:
>> >     TSM does:
>> >      GET_VERSION / VERSION                          (VCA: Version)
>> >      GET_CAPABILITIES / CAPABILITIES                (VCA: Capabilities)
>> >      NEGOTIATE_ALGORITHMS / ALGORITHMS              (VCA: Algorithms)
>> >      GET_DIGESTS / DIGESTS
>> >
>> > 2) CTLV commands:
>> >     query certificates. TSM will issue on demand:
>> >      GET_CERTIFICATE / CERTIFICATE                  (every slot in the slot mask, all
>> chunks)
>> >     query VCA items
>> >
>> > 3) CTLV commands:
>> >    FINISH CONNECT with slot:
>> >     TSM for 1.2 does:
>> >      CHALLENGE(slot 0, fresh nonce) / CHALLENGE_AUTH
>> >      KEY_EXCHANGE(slot S) / KEY_EXCHANGE_RSP       (clear text)
>> >      FINISH / FINISH_RSP                           (in session, opaque to host)
>> >     Or for 1.3 multi-key does:
>> >      KEY_EXCHANGE(slot S) / KEY_EXCHANGE_RSP       (now includes DIGESTS
>> and CERTIFICATE)
>> >      FINISH / FINISH_RSP                           (in session, opaque to host)
>> >
>> 
>> 
>> Does this split require us to guarantee that no GET_VERSION can be
>> issued in between? 
>
> Yes, in my opinion TSM must enforce it because as you said, GET_VERSION
> resets everything.
>

How can TSM enforce this? Another subsystem could issue GET_VERSION
through the DOE mailbox. IIUC, TSM would only detect a transcript
mismatch when KEY_EXCHANGE_RSP validation fails. Is that correct?

>
>> Another GET_VERSION in the same requester context
>> between START CONNECT and FINISH CONNECT would reset the responder's
>> negotiated state and transcript, right?
>> 
>> If so, can we avoid this split and always use RustSPDM, with or without
>> multi-key support?
>> 
>> Something like:
>> Kc: public key used to verify CHALLENGE_AUTH from slot C.
>> Ks: public key selected for session establishment by user using slot S.
>> C and S may be different slots.
>> 
>> Host / RustSPDM:
>>     VCA -> GET_DIGESTS -> fetch certificate chains
>>     CHALLENGE(C) -> retain the messages and CHALLENGE_AUTH signature
>>     Stop communicating with the device.
>
> GET_DIGESTS only gets you digests, you still need GET_CERTIFICATES
> to actually fetch certs.
>

yes that is correct.

>
>> 
>> Host / userspace:
>>     Examine the discovery results.
>>     Select slot S and validate its certificate chain/key Ks.
>> 
>> Host -> RMM/firmware:
>>         Supply:
>>           - C and Kc, S and Ks
>>           - Algorithms
>> 
>>     Fresh GET_VERSION -> CAPABILITIES -> ALGORITHMS
>
> How do you propose to deal with the fact that here TSM
> may agree with a device on different params than rustSPDM
> above?
>

I suppose we would need to pass all of those parameters for the host ->
RMM/firmware interaction. I had assumed that the algorithms were the only
negotiated parameters needed for SPDM session establishment. Would validating
Kc and Ks require passing additional details from the RustSPDM exchange to the
firmware?

>
>
>>     GET_DIGESTS immediately after VCA
>>     GET_CERTIFICATE(C), GET_CERTIFICATE(S)
>>     Check that Kc is the leaf public key in chain C. // Can the slot number change
>> by now ?
>
> In addition to VCA influencing the content of the slots, 
> a device could have a FW upgrade in between rustSPDM
> step and this step and this could change the content of
> the slots. 
> But if you fully verify the actual cert chain and key itself
> you can reject such cases. So your way is also doable with
> additional checks, but I am worried about the problem to 
> agree on the same VCA.
>

My main question is whether we should avoid splitting the context and
relying on the host not to disrupt the sequence. I wonder whether that
would be a poor API design and whether we can avoid it. Is that a goal
we should pursue?

-aneesh

  reply	other threads:[~2026-11-06 15:53 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-28 15:26 [RFC PATCH v1 00/11] PCI/TSM: Add CTLV attestation Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 01/11] attestation: Restrict inherited operations per instance Aneesh Kumar K.V (Arm)
2026-10-30 13:29   ` Jiri Pirko
2026-10-28 15:26 ` [RFC PATCH v1 02/11] attestation: Filter evidence objects " Aneesh Kumar K.V (Arm)
2026-10-30 13:44   ` Jiri Pirko
2026-10-31  6:24     ` Aneesh Kumar K.V
2026-11-02 19:14       ` Jiri Pirko
2026-10-28 15:26 ` [RFC PATCH v1 03/11] attestation: Enter secure operation when evidence is accepted Aneesh Kumar K.V (Arm)
2026-10-30 13:51   ` Jiri Pirko
2026-10-30 15:36     ` Jason Gunthorpe
2026-10-31  4:09     ` Aneesh Kumar K.V
2026-11-02 11:28       ` Jiri Pirko
2026-10-28 15:26 ` [RFC PATCH v1 04/11] attestation: Bind object selection to accepted evidence snapshots Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 05/11] attestation: Make the evidence-get challenge attribute optional Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 06/11] PCI/TSM: Describe the PCI attestation control family Aneesh Kumar K.V (Arm)
2026-10-30 14:01   ` Jiri Pirko
2026-10-30 15:43     ` Jason Gunthorpe
2026-11-02 12:45       ` Jiri Pirko
2026-11-03 15:45         ` Jason Gunthorpe
2026-11-04  9:21           ` Jiri Pirko
2026-11-04 14:00             ` Jason Gunthorpe
2026-10-31  4:05     ` Aneesh Kumar K.V
2026-11-02 11:50       ` Jiri Pirko
2026-11-03 15:35       ` Jason Gunthorpe
2026-10-31  4:22     ` Aneesh Kumar K.V
2026-11-02 11:30       ` Jiri Pirko
2026-11-03 15:39       ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 07/11] attestation: Add attestation helpers for PCI/TSM integration Aneesh Kumar K.V (Arm)
2026-10-28 15:26 ` [RFC PATCH v1 08/11] PCI/TSM: Bind CTLV attestation to connected and locked contexts Aneesh Kumar K.V (Arm)
2026-10-28 22:56   ` Dave Jiang
2026-10-29  5:30     ` Aneesh Kumar K.V
2026-10-29 12:41       ` Jason Gunthorpe
2026-10-30 14:04   ` Jiri Pirko
2026-10-30 14:08   ` Jiri Pirko
2026-10-30 15:39     ` Jason Gunthorpe
2026-11-02 12:11       ` Jiri Pirko
2026-11-03 15:41         ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 09/11] crypto/ccp: Defer SEV-TIO link setup until evidence acceptance Aneesh Kumar K.V (Arm)
2026-11-06  7:47   ` Alexey Kardashevskiy
2026-11-06 13:14     ` Aneesh Kumar K.V
2026-11-06 14:21       ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 10/11] virt: coco: arm-cca-host: Publish slot zero and establish streams after acceptance Aneesh Kumar K.V (Arm)
2026-10-29 16:56   ` Dave Jiang
2026-10-29 17:10     ` Jason Gunthorpe
2026-10-30  9:58       ` Reshetova, Elena
2026-10-30 13:15         ` Jason Gunthorpe
2026-10-31  3:47           ` Aneesh Kumar K.V
2026-11-02 10:11             ` Reshetova, Elena
2026-11-02 17:26               ` Jason Gunthorpe
2026-11-03 12:01                 ` Reshetova, Elena
2026-11-03 15:16                   ` Jason Gunthorpe
2026-11-04  8:03                     ` Xu Yilun
2026-11-04  9:49                       ` Reshetova, Elena
2026-11-04 13:41                         ` Jason Gunthorpe
2026-11-04 16:54                           ` Dave Jiang
2026-11-06 15:53                             ` Dave Jiang
2026-11-06 19:30                               ` Jason Gunthorpe
2026-11-06 22:39                                 ` Dave Jiang
2026-11-08 18:33                                   ` Jason Gunthorpe
2026-11-04  9:03                     ` Reshetova, Elena
2026-11-04 13:48                       ` Jason Gunthorpe
2026-11-06  8:24                     ` Aneesh Kumar K.V
2026-11-06 12:49                       ` Reshetova, Elena
2026-11-06 15:53                         ` Aneesh Kumar K.V [this message]
2026-11-06 18:54                           ` Jason Gunthorpe
2026-11-03 16:31                 ` Aneesh Kumar K.V
2026-11-03 17:56                   ` Jason Gunthorpe
2026-11-02 10:05           ` Reshetova, Elena
2026-11-02 10:22           ` Reshetova, Elena
2026-11-02 17:37             ` Jason Gunthorpe
2026-10-28 15:26 ` [RFC PATCH v1 11/11] virt: coco: arm-cca-guest: Refresh selected evidence against trusted digests Aneesh Kumar K.V (Arm)
2026-10-30 12:34 ` [RFC PATCH v1 00/11] PCI/TSM: Add CTLV attestation Xu Yilun
2026-10-30 15:32   ` Jason Gunthorpe

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=yq5aeccyot13.fsf@kernel.org \
    --to=aneesh.kumar@kernel.org \
    --cc=aik@amd.com \
    --cc=ashish.kalra@amd.com \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dave.jiang@intel.com \
    --cc=elena.reshetova@intel.com \
    --cc=jgg@nvidia.com \
    --cc=jic23@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=john.allen@amd.com \
    --cc=kas@kernel.org \
    --cc=kevin.tian@intel.com \
    --cc=linux-coco@lists.linux.dev \
    --cc=mark.rutland@arm.com \
    --cc=patches@lists.linux.dev \
    --cc=rick.p.edgecombe@intel.com \
    --cc=steven.price@arm.com \
    --cc=suzuki.poulose@arm.com \
    --cc=thomas.lendacky@amd.com \
    --cc=will@kernel.org \
    --cc=yilun.xu@linux.intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.