Linux Confidential Computing Development
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgg@nvidia.com>
To: "Aneesh Kumar K.V" <aneesh.kumar@kernel.org>
Cc: Dave Jiang <dave.jiang@intel.com>,
	"Reshetova, Elena" <elena.reshetova@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>,
	Alistair <alistair23@gmail.com>
Subject: Re: [RFC PATCH v1 10/11] virt: coco: arm-cca-host: Publish slot zero and establish streams after acceptance
Date: Fri, 13 Nov 2026 15:34:50 -0400	[thread overview]
Message-ID: <20261113193450.GD3706007@nvidia.com> (raw)
In-Reply-To: <yq5a33t4mza1.fsf@kernel.org>

On Fri, Nov 13, 2026 at 10:42:06PM +0530, Aneesh Kumar K.V wrote:
> Jason Gunthorpe <jgg@nvidia.com> writes:
> 
> > On Fri, Nov 13, 2026 at 02:24:59PM +0530, Aneesh Kumar K.V wrote:
> >> Jason Gunthorpe <jgg@nvidia.com> writes:
> >> 
> >> > On Thu, Nov 12, 2026 at 03:07:43PM +0530, Aneesh Kumar K.V wrote:
> 
>  [ ... 96 lines skipped ... ] 
> 
> > We really want the certificates to be loaded at the start before doing
> > key_exchange. That is when they are most useful.
> >
> > So when we fix this for 1.3 the opt in should trigger a transcript'd
> > GET_DIGEST in plain text and certificate collection from all the slots
> > in plain text.
> >
> > 1.3 will sign GET_DIGESTS during KEY_EXCHANGE
> > 1.2 RMM could issue CHALLENGE if the device supports it right before
> >     KEY_EXCHANGE and transcript it
> > 1.2 RMM could issue GET_DIGESTS inside the session and fail if != to
> >     the plaintext
> >
> 
> 
> So the combined flow would be:
> 
> Host                             RMM                              Device
> |                                 |                                  |
> | RMI_PDEV_CREATE(new-flow opt-in)|                                  |
> |-------------------------------->|                                  |
> |                                 | GET_VERSION / VERSION            |
> |                                 | GET_CAPABILITIES / CAPABILITIES  |
> |                                 | NEGOTIATE_ALGORITHMS / ALGORITHMS|
> |                                 |<-------------------------------->|
> | Cache individual VCA messages   |                                  |
> |<--------------------------------|                                  |
> |                                 |                                  |
> |                                 | GET_DIGESTS / DIGESTS [plaintext]|
> |                                 |<-------------------------------->|
> | Cache discovery transcript      | Retain original slot mask        |
> |<--------------------------------| and per-slot chain digests       |
> |                                 |                                  |
> |                                 | For each populated slot:         |
> |                                 | GET_CERTIFICATE / CERTIFICATE    |
> |                                 |<-------------------------------->|
> | Cache complete chains by slot   |                                  |
> |<--------------------------------|                                  |
> |                                 |
> |

This should be identical to your prior email where the host requests
each certificate. But yes.

> |                      Pause: PDEV_NEEDS_KEY                         |
> |                                 |                                  |
> | Validate candidate certificate  |                                  |
> | paths against userspace policy. |                                  |
> | Select slot S and extract key S.|                                  |
> | Discovery remains provisional.  |                                  |
> |                                 |                                  |
> | RMI_PDEV_SET_PUBKEY             |                                  |
> | (slot S, key S, chain hash S)   |                                  |
> |-------------------------------->|                                  |
> |                                 |                                  |
> |                    IF SPDM 1.2 AND CHALLENGE supported             |
> |                                 |                                  |
> |                                 | CHALLENGE(slot S, fresh nonce)   |
> |                                 |--------------------------------->|
> |                                 | CHALLENGE_AUTH                   |
> |                                 |<---------------------------------|
> |                                 | Verify signature using key S.    |
> |                                 | Authenticates earlier DIGESTS.   |
> | Cache challenge transcript      |                                  |
> |<--------------------------------|                                  |
> |                                 |                                  |
> |                    END IF                                          |
> |                                 |                                  |
> |                                 | KEY_EXCHANGE(slot S)             |
> |                                 |--------------------------------->|
> |                                 | KEY_EXCHANGE_RSP                 |
> |                                 |<---------------------------------|
> |                                 | Verify signature using key S.    |
> |                                 |                                  |
> |                    IF SPDM 1.3 multikey negotiated                 |
> |                                 |                                  |
> |                                 | Signature covers earlier DIGESTS.|
> |                                 | Authenticate retained inventory. |
> |                                 |                                  |
> |                    END IF                                          |
> |                                 |                                  |
> | Cache key-exchange transcript   |                                  |
> |<--------------------------------|                                  |
> |                                 | FINISH / FINISH_RSP              |
> |                                 |<-------------------------------->|
> |                                 | Session established.             |
> |                                 |                                  |
> |                    IF SPDM 1.2 AND CHALLENGE unavailable           |
> |                                 |                                  |
> |                                 | GET_DIGESTS / DIGESTS [secure]   |
> | Relay ciphertext                |<-------------------------------->|
> |                                 | Compare authenticated slot mask  |
> |                                 | and every digest with original   |
> |                                 | plaintext discovery.             |
> |                                 |                                  |
> |                                 | Mismatch: fail setup.            |
> |                                 | Match: authenticate inventory.   |
> |                                 |                                  |
> |                    END IF
> |

Yeah, I think this is probably the best we can do. You always end up
with some kind of authenticated GET_DIGESTS recorded to the
transcript. Authentication is either directly in the transcript with a
CHALLENGE/KEY_EXCHANGE signature or indirectly via the symmetric
session.

I would incorporate this into the 1.3 ecn upgrade as the 'now this is
how 1.2 works if you turn this on'.

But I don't see an urgency to stop the world, we should implement as
spec'd. All three arches are similar and have the same issues with 1.3
multikey.

Hopefully these flow diagrams help the other vendors to understand
what the ideal flow would look like. The ARM TSM directed "caching" is
very smart, IMHO.

Jason

  reply	other threads:[~2026-11-13 19:35 UTC|newest]

Thread overview: 105+ 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-11-09 10:03       ` Alexey Kardashevskiy
2026-11-12  6:23         ` Aneesh Kumar K.V
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-09 10:55                                     ` Reshetova, Elena
2026-11-09 13:47                                       ` Jason Gunthorpe
2026-11-09 17:37                                     ` Dave Jiang
2026-11-09 18:53                                       ` Jason Gunthorpe
2026-11-09 20:54                                         ` Dave Jiang
2026-11-09 23:40                                           ` Jason Gunthorpe
2026-11-10 13:15                                             ` Reshetova, Elena
2026-11-10 14:20                                               ` Jason Gunthorpe
2026-11-11 13:09                                                 ` Reshetova, Elena
2026-11-11 14:13                                                   ` Jason Gunthorpe
2026-11-12  1:48                                                     ` Alexey Kardashevskiy
2026-11-12 12:31                                                       ` Jason Gunthorpe
2026-11-10  1:40                                         ` Alistair
2026-11-10 15:07                                           ` Jason Gunthorpe
2026-11-10  5:32                                         ` Alexey Kardashevskiy
2026-11-10 12:52                                           ` Jason Gunthorpe
2026-11-11  9:03                                             ` Alexey Kardashevskiy
2026-11-12  9:37                                 ` Aneesh Kumar K.V
2026-11-12 14:52                                   ` Jason Gunthorpe
2026-11-12 15:47                                     ` Dave Jiang
2026-11-12 16:37                                       ` Jason Gunthorpe
2026-11-13  8:54                                     ` Aneesh Kumar K.V
2026-11-13 14:52                                       ` Jason Gunthorpe
2026-11-13 16:29                                         ` Aneesh Kumar K.V
2026-11-13 19:06                                           ` Jason Gunthorpe
2026-11-13 16:38                                         ` Aneesh Kumar K.V
2026-11-13 19:12                                           ` Jason Gunthorpe
2026-11-13 17:12                                         ` Aneesh Kumar K.V
2026-11-13 19:34                                           ` Jason Gunthorpe [this message]
2026-11-10 20:07                               ` 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
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=20261113193450.GD3706007@nvidia.com \
    --to=jgg@nvidia.com \
    --cc=aik@amd.com \
    --cc=alistair23@gmail.com \
    --cc=aneesh.kumar@kernel.org \
    --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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox