[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1481d6c6-7d59-cd06-2c44-2ed534d3070a@linux.intel.com>
Date: Wed, 24 Aug 2022 11:16:07 -0700
From: Sathyanarayanan Kuppuswamy
<sathyanarayanan.kuppuswamy@...ux.intel.com>
To: Dave Hansen <dave.hansen@...el.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>, x86@...nel.org
Cc: "H . Peter Anvin" <hpa@...or.com>,
"Kirill A . Shutemov" <kirill.shutemov@...ux.intel.com>,
Tony Luck <tony.luck@...el.com>,
Andi Kleen <ak@...ux.intel.com>,
Kai Huang <kai.huang@...el.com>,
Wander Lairson Costa <wander@...hat.com>,
Isaku Yamahata <isaku.yamahata@...il.com>,
marcelo.cerri@...onical.com, tim.gardner@...onical.com,
khalid.elmously@...onical.com, philip.cox@...onical.com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v9 0/6] Add TDX Guest Attestation support
Hi,
On 8/24/22 10:12 AM, Dave Hansen wrote:
> On 7/27/22 20:44, Kuppuswamy Sathyanarayanan wrote:
>> An Intel SGX Quoting Enclave (QE), written specifically to support
>> quoting Intel TDX TDs, uses EVERIFYREPORT2, to help check the integrity
>> of the TDG.MR.REPORT. If it passes, the QE can use a certified quote
>> signing key to sign a quote containing the guest TD’s measurements and
>> the additional data being quoted.
>
> (maintainer hat firmly in place, not speaking as an Intel person here...)
>
> Let's say Intel tires of SGX and zaps it from server CPUs just like it
> did clients. Or, that Intel decides that TDX is really cool and wants
> it on SGX-free clients in addition to servers.
>
> Can the guest ABI which is introduced here work for a future attestation
> architecture that does not involve SGX?
Yes. ABI introduced here is agnostic to QE implementation. For getting a
signed Quote, the guest will pass TDREPORT with length as input and expect
signed Quote with length as output. This requirement is valid irrespective
of QE implementation(SGX/no-SGX).
As you can see below, in our ABI we pass TDREPORT with "tdx_quote_hdr" in a
buffer. Upon successful completion of the request, we expect Quote in the
same buffer with proper header details. Such header format is generic and
should work well in non-SGX environment you have mentioned as well.
Input buffer -> [tdx_quote_hdr][TDREPORT]
Output buffer -> [tdx_quote_hdr][Quote]
struct tdx_quote_hdr {
/* Quote version, filled by TD */
__u64 version;
/* Status code of Quote request, filled by VMM */
__u64 status;
/* Length of TDREPORT, filled by TD */
__u32 in_len;
/* Length of Quote, filled by VMM */
__u32 out_len;
/* Actual Quote data or TDREPORT on input */
__u64 data[0];
};
/* struct tdx_quote_req: Request to generate TD Quote using TDREPORT
*
* @buf : Pass user data that includes TDREPORT as input. Upon
* successful completion of IOCTL, output is copied
* back to the same buffer.
* @len : Length of the Quote buffer.
*/
struct tdx_quote_req {
__u64 buf; // buf with header and data
__u64 len;
};
--
Sathyanarayanan Kuppuswamy
Linux Kernel Developer
Powered by blists - more mailing lists