[Seat] Re: Comments on formal analysis of relay attacks in intra-handshake attestation (CVE-2026-33697)

Muhammad Usama Sardar <muhammad_usama.sardar@tu-dresden.de> Mon, 27 July 2026 18:57 UTC

Return-Path: <muhammad_usama.sardar@tu-dresden.de>
X-Original-To: seat@mail2.ietf.org
Delivered-To: seat@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 7766A11F6B234 for <seat@mail2.ietf.org>; Mon, 27 Jul 2026 11:57:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1785178644; bh=4svi4AErPxyE3BRkQy5TwbK5bvzquncLOx2+N3Zzabk=; h=Date:Subject:To:CC:References:From:In-Reply-To; b=QP5DqwyH8lKvbmBiMXjPaBsUQQGeNWJrxsGT4F4/XwsT5+FKA7diF9zNwehEjvj8V 46NBnjYtWvznXAM0CplKMCet5zdLPt3hszHj1uP8eoM7DT2bqgIGFr1cfEfkRI4tV6 WEkjd+NefC4tJvoN/1ZrCB25TkCzdE9kFP7a7tuk=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -4.398
X-Spam-Level:
X-Spam-Status: No, score=-4.398 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=tu-dresden.de
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4YBd6J78SI2A for <seat@mail2.ietf.org>; Mon, 27 Jul 2026 11:57:23 -0700 (PDT)
Received: from mailout3.zih.tu-dresden.de (mailout3.zih.tu-dresden.de [141.30.67.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id A633011F6B1D1 for <seat@ietf.org>; Mon, 27 Jul 2026 11:57:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tu-dresden.de; s=dkim2022; h=Content-Type:In-Reply-To:From:References:CC:To :Subject:MIME-Version:Date:Message-ID:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=DQqF861e093QpoaglkRg3kVToVCVIw2v0xZgrlCVYn8=; b=XRwGMuB2p/q86zVRI94Fycw5lj w66PaZOV0o3oBVLZ/sGgjN+M7She2kdLPpcRkqj6hrXEuKuWQLCUBgCexH4DAdpXdCpRM+cUykkZd 9anUgV+dZ3d6txhMQ2TaMqmRmz0tUM8+yaFFB8v/u0GysBBlEyqI+EG50YcL3mt0vWIHytmW49DKn aL4PyhuU2XbuUxyjiVDiQEOFjcP/BJ6nTueSR0idtpGONTICLX63vWqr+/Y5F6fnwqMltWX73CUSr 1g8Nr6y4Jvyo6u8VTc7tLa7LoE6uHOEd8T2qwxPncq/3zR/EDgRJdhsOQ9lrSSRcXJvjzYCtDbyx/ AhO8Qvvg==;
Received: from msx-t422.msx.ad.zih.tu-dresden.de ([172.26.35.139] helo=msx.tu-dresden.de) by mailout3.zih.tu-dresden.de with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from <muhammad_usama.sardar@tu-dresden.de>) id 1woQVp-00HBFq-35; Mon, 27 Jul 2026 20:57:21 +0200
Received: from [10.12.5.228] (141.76.13.149) by msx-t422.msx.ad.zih.tu-dresden.de (172.26.35.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Mon, 27 Jul 2026 20:57:08 +0200
Message-ID: <a7e6ed02-b488-4463-9ed7-8c4776c4801a@tu-dresden.de>
Date: Mon, 27 Jul 2026 20:57:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Nathanael Ritz <nathanritz@gmail.com>
References: <5f361893-bc32-4737-9578-fdb3ad7be3f9@tu-dresden.de> <9F03163D-B0F9-40DD-A4AB-69C151B872D6@aiven.io> <c4a0c433-173d-44ac-bd48-eed642a674d3@tu-dresden.de> <CAHxYnaOBMnPp7EiRLNYWX8AQDc2zYoBL226nfeBiPXsyii7Now@mail.gmail.com> <CAHxYnaOFWQBLf0Pn8bY=CMx7ytSEkTbvj7xp-s0GCHJohRh5xg@mail.gmail.com> <MRWPR02MB1208667A0653CF2C6B141933DB7CD2@MRWPR02MB12086.eurprd02.prod.outlook.com> <76b504ae-5692-4f31-a9d2-025974b12339@tu-dresden.de> <MRWPR02MB1208652B214687BB93253F1D2B7CD2@MRWPR02MB12086.eurprd02.prod.outlook.com> <5fb42c5c-825b-472b-8455-ce893011ade5@tu-dresden.de> <MRWPR02MB12086E888B91ECDB72D4B230AB7CC2@MRWPR02MB12086.eurprd02.prod.outlook.com> <CAHxYnaPYKJ_jdbVXraoXQootU4KeaSsmE8Dh0r=RLkZUqcaFqg@mail.gmail.com>
Content-Language: en-US
From: Muhammad Usama Sardar <muhammad_usama.sardar@tu-dresden.de>
In-Reply-To: <CAHxYnaPYKJ_jdbVXraoXQootU4KeaSsmE8Dh0r=RLkZUqcaFqg@mail.gmail.com>
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-512"; boundary="------------ms060707030602020305050509"
X-ClientProxiedBy: msx-t420.msx.ad.zih.tu-dresden.de (172.26.35.137) To msx-t422.msx.ad.zih.tu-dresden.de (172.26.35.139)
X-TUD-Virus-Scanned: mailout3.zih.tu-dresden.de
Message-ID-Hash: KS2S5GIOMFT2RPK4JBB5SFZMNLPSQRL4
X-Message-ID-Hash: KS2S5GIOMFT2RPK4JBB5SFZMNLPSQRL4
X-MailFrom: muhammad_usama.sardar@tu-dresden.de
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "seat@ietf.org" <seat@ietf.org>, "ufmrg@irtf.org" <ufmrg@irtf.org>, Markus Rudy <mr=40edgeless.systems@dmarc.ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Seat] Re: Comments on formal analysis of relay attacks in intra-handshake attestation (CVE-2026-33697)
List-Id: "Secure Evidence and Attestation Transport (SEAT) WG" <seat.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/seat/dKVqaL8RJSQLonIEmtzrDYEXEAU>
List-Archive: <https://mailarchive.ietf.org/arch/browse/seat>
List-Help: <mailto:seat-request@ietf.org?subject=help>
List-Owner: <mailto:seat-owner@ietf.org>
List-Post: <mailto:seat@ietf.org>
List-Subscribe: <mailto:seat-join@ietf.org>
List-Unsubscribe: <mailto:seat-leave@ietf.org>

Hi Nathanael,

We will be happy to review your artifacts if you would be more precise. 
As it is now, there seems to be nothing concrete that we could utilize 
to improve the artifacts. You seem to criticize #2 but then use the same 
in your code. Something useful may be to revert #1, and show a fix for 
#2 that you propose. We can then check the proposed change. Hopefully, 
you can clarify your perspective more precisely.

On 27.07.26 13:55, Nathanael Ritz wrote:
> Top posting, following up on Markus's latest comments regarding the 
> counter-examples for "Level 3" binding and whether handshake secret 
> correlation holds across the entire session.
As just clarified to Markus, the distinction between /handshake secret/ 
and /handshake traffic secrets/ is critical in TLS 1.3 key schedule.
> I recently evaluated a streamlined model that strips out the 
> non-standard dual-signed `CV_Ext` construct and the redundant 
> ephemeral self-signatures, reverting to a clean, standard TLS 1.3 
> `CV(sg)` message signed solely by the ephemeral key.
Removing the second signature, the client may get no guarantee of the 
infrastructure owner and diversion attacks may apply [3,4].
> Crucially, it binds the full security context—`(handshake_secret, 
> ID_S, pubLTK, pubEK)`—directly into the TEE-signed quote (`rdata`) [0].
There is a potential risk though. The Target Environment needs to send 
handshake_secret to the Attesting Environment.
> ## 2. Other non-conformant Key Schedule issues
>
> When examining how the binder functions to correlate these secrets, I 
> found the original model introduces two explicit key schedule 
> modifications that are completely absent from standard TLS and would 
> produce non-conformant values the moment they are wired up in real 
> implementations:

We are not aware of ProVerif code wired up in real implementation. It is 
typically an abstraction reasonable for the problem at hand. Could you 
please share some reference where ProVerif was wired up in real 
implementation?

> * **`kdf_exp` derives an exporter from the Handshake Secret:**  The 
> construction derives an exporter directly from `hs`. RFC 9846 §7.5 
> permits only `early_exporter_secret` or `exporter_secret` as the 
> exporter input, defining a strict two-stage construction: 
> `Derive-Secret(Secret, label, "")` followed by `HKDF-Expand-Label(., 
> "exporter", Hash(context_value))`. The modeled `kdf_exp` inserts a 
> non-standard third stage, chaining `"h exp master"` into an `"ra 
> binder"` intermediate.

We don't really see your point. Can you explain why having an additional 
Derive-Secret stage is problematic or what attack vectors it leads to? 
What impact does removing it make in ProVerif? And if you have 
discovered a security problem, you may like to report to TLS WG because 
it would likely have implications beyond our work since this is how the 
TLS 1.3 key schedule is built, and several researchers have done both 
the symbolic and computational proofs of it.

The paper never claims to be using standard or early exporters of 
RFC9846. In fact, using the former would pretty much become 
post-handshake attestation. As even the title of the paper says, the 
paper is about intra-handshake attestation.

> * **`kdf_es` returns `exp0` in place of `ems0`:** The model replaces 
> the early exporter master secret (`ems0`) with `exp0`.
We believe early_exporter_secret ("ems0") is correctly generated. The 
macro instead returns early exporter value "exp0" which was required. We 
don't see anything wrong in this modeling. Please clarify what you view 
as wrong.
> While the shape resembles §7.5, it forces the early exporter into a 
> handshake where `psk = NoPSK` in both roles—violating §7.5's 
> requirement that implementations use `exporter_secret` unless 
> explicitly specified by the application.
This seems to be misunderstanding. "PSK" is always there in the key 
schedule, whether the handshake is PSK-based or not. In the former case, 
it has a value generated from previous connection. In the latter case, 
it has a value of '0'.
> Furthermore, it freezes the label and context into the schedule rather 
> than exposing them to the application, while discarding `ems0` 
> entirely so no standard exporter can be derived downstream.

 1. There is no application here. We are modeling in ProVerif.
 2. early_exporter_secret 'ems0' is not discarded. The early exporter
    value 'exp0' is indeed derived from 'ems0', returned and used.
 3. early_exporter_secret 'ems0' has nothing to do with the standard
    exporter.

> In any case, the demonstrated model uses `kch` and `ksh` directly 
> within the rdata field, completely leaving the key schedule entirely 
> untouched while using something derived from the handshake secret, as 
> Markus had proposed.
No field in Table 2 of [3] uses 'kch' or 'ksh' in rdata.
> ## 3. Omission of WebPKI and Host Validation

One of the CertificateVerify is for exactly this purpose. So this point 
does not apply.

Best regards,

Usama, Slava, and Jean-Marie

>
> [0] 
> https://github.com/nathanaelritz/intra-handshake-paper/commit/b5a79aff30d23c5169578acc92c6d6ff8147ed21#diff-31622704269a7b23066be433f93cb8eda0a33d4b793e2d72bc057a85b135f3e1
>
> [1] 
> https://github.com/nathanaelritz/intra-handshake-paper/blob/b5a79aff30d23c5169578acc92c6d6ff8147ed21/binder6/full_verification_results.txt
>
> [2] 
> https://github.com/nathanaelritz/intra-handshake-paper/tree/b5a79aff30d23c5169578acc92c6d6ff8147ed21/binder6

[3] 
https://www.researchgate.net/publication/398839141_Identity_Crisis_in_Confidential_Computing_Formal_Analysis_of_Attested_TLS

[4] https://github.com/CCC-Attestation/formal-spec-id-crisis