Return-Path: <nadim@symbolic.software>
X-Original-To: ufmrg@mail2.ietf.org
Delivered-To: ufmrg@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1])
	by mail2.ietf.org (Postfix) with ESMTP id 1D8B813694C87
	for <ufmrg@mail2.ietf.org>; Mon,  7 Sep 2026 02:12:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1;
	t=1788772373; bh=4HBUR6DshxWKnpwRQ10VB3u7A4JoEatvw505MX+SUSo=;
	h=From:Subject:Date:To;
	b=d+t27vxSPWQYFUI+EgvMojdeJQ9SgI8jOJQBEKR6fs7as7QY1YSWlpxDQBU6jp6yn
	 /snjT55gZG53Lmxe1JJ9UZXBBv/qR9Ylvn/c0uJmVJZ1loaAOEGvTW1qsSDvx5sT7m
	 NbgCUioMKZRedftVhD1qW7lhchEVr13CCMLPNe+k=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.798
X-Spam-Level: 
X-Spam-Status: No, score=-2.798 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_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
	RCVD_IN_VALIDITY_SAFE_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=symbolic.software header.b="BQUDiTOB";
	dkim=pass (2048-bit key) header.d=messagingengine.com
	header.b="lJpxkCnc"
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 LoLmYgM7272Q for <ufmrg@mail2.ietf.org>;
	Mon,  7 Sep 2026 02:12:52 -0700 (PDT)
Received: from fout-b4-smtp.messagingengine.com
 (fout-b4-smtp.messagingengine.com [202.12.124.147])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256)
	(No client certificate requested)
	by mail2.ietf.org (Postfix) with ESMTPS id 0810D13694C73
	for <ufmrg@irtf.org>; Mon,  7 Sep 2026 02:12:51 -0700 (PDT)
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
	by mailfout.stl.internal (Postfix) with ESMTP id 5C2571D0012B;
	Mon,  7 Sep 2026 05:12:45 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
  by phl-compute-05.internal (MEProxy); Mon, 07 Sep 2026 05:12:45 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	symbolic.software; h=cc:content-type:content-type:date:date:from
	:from:in-reply-to:message-id:mime-version:reply-to:subject
	:subject:to:to; s=fm1; t=1788772365; x=1788858765; bh=EiK3X+DsPd
	+LSVRFr8TzV6gT5TPzHxe6kg1GJXVEQ2Q=; b=BQUDiTOBvsvjA1mV79xACU7Mw0
	R4P8GcE+0yCPIkM1fSufiklMPfwsnTuHUiPiH8lfqxfHCvQGlLYDr/IgVHrjsy1L
	+zn2hwMnwvQUBsWBQgYMe3/9jlTnfYzNkD7qTS8b5w+MvMDtXT6cL6rCZx6fODP6
	VSfORPLkesj7EI4kgwEX0E89+6q8qQiywC2QpyqGl1FEpT4EAeIY9hSlCH2ErRh4
	8+660VRY7remVAIUaKuAevccEXid3/UtBXsicitqRpmFPHeTS0nFmCt42+4ZIr2n
	TRU7P0agJAx3CJICid6Vbh9G3bZAguEsGwGHJhtyXp4KEWQGQiOjDNVR9ZkA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
	messagingengine.com; h=cc:content-type:content-type:date:date
	:feedback-id:feedback-id:from:from:in-reply-to:message-id
	:mime-version:reply-to:subject:subject:to:to:x-me-proxy
	:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1788772365; x=
	1788858765; bh=EiK3X+DsPd+LSVRFr8TzV6gT5TPzHxe6kg1GJXVEQ2Q=; b=l
	JpxkCncrLVfJ8ugs0NOVyL5/7op/+aFja8GG37H3IwQdXm/yXHfFiu9h3nyFICcY
	hAlGo1Afltfs2AXXKJGFctvdBOTrq4TG+6cKO0ln7wvGXZYQB44I2CSZ4dIRm7FN
	N5AFIj9VP11GjLMflUyu2kmQfg7J8NSPQp0REKv91O7tBm6mQewpBCeoIqXLj5wN
	8t493ZkKqKIucbj7zjc5KhupRt0BI8MqKZpzhG+jhIziiqODFKytQ2jfd84dHFl1
	eyKpnnM27gESDBxf01DBimI6Gya49iMP18G1O4dSZqF2am/Kj7OOArYOnYdqCjSq
	+ihmIr8AhF4qzI8XnfIXw==
X-ME-Sender: <xms:DYCeao7_jFa3jyjvDOtAgk7g6js0DWAFfifAwomAehtn1lLZ4ddhaA>
    <xme:DYCeamNQNQQxa9nojWnqTLIMyQCU1AynecwODHvMFrrBsbAuSQgJy3pR1cmKFRGg5
    KdYC1LEn5k-EXtHXZEVNtWqLoOXAP166ZxsIw6-RQlEqTJgojG0YzA>
X-ME-Received: 
 <xmr:DYCeaqM1L7X6RAg6bdWvymYtK0D1nEQI2lWeA4wGpsVs2m_wBC7__ZSEreAJb_oW-UP3M0Se6fAJnv3q9Euuef8S8TOuClvJpmW-Q3BfE6W0fgL7Fkhw2w1w2Q>
X-ME-Proxy-Cause: 
 dmFkZTF57y/Ed2PU6wVN3loUnvQCHCg93ixPnqgwMaoSM1O2bf3t6O6mbQFRyAUlvLHrm0
    +fo80namiZzToAEgQ+f8m4zn51Z6J2oH4Dtm9k0sKu+Iujzz2J6X9FIC5A1ICF1ryhf/Mx
    Bz5krzlweNW6+9GwQYiNY55sUtOs2DfjplZLUILPiSPs1JGPMA3GWlzXKYhI9Y3eJE+uCk
    wG3naPkXHpmyYYsp7eyob0CR0OU4j+EvfBBKwwlW1p/MuuDXn3LG75flVwA/5M6Ec9Nqz6
    L3QUvG6uZ8OvqPOaAGNHi3HNn/EjJ/6VflE8zFb3/cwuSfrTu+ku3og8e5vQldgbSVKdK9
    g+WaNIo5clfq3CkKdJ/q7U28Q7okTzT7jrRVNG8aqpzyCzQPPq2eVZOY376tqXhbNV9H4h
    IaZytn8dUYn27nQd4/xAP5Z/8wgcZQaDCIqzQO+NYGvXJC1JJ6cNIKCFqljJlwPau4uTiq
    a+Lm3uMlWhtxBoisuOkU85Hp1VjCC/QK03CdwJ3faL+6bgKisRuULUQJpcmD1/rr+H1WnE
    ERBNZ+xyZ0EQWdz3IC+uUircXPJh271SqeBZeF3+Ttsv27FaDvhqQGamcbwaJbjdoHHaSj
    DehSVocKp04R1TWHApbz40pRM3UW6bsRWiML0WuOJHAaJ5gKNGwaG8Wuc+lA
X-ME-Proxy: <xmx:DYCeau_nITTSk16wvxj1UE3cYabKP21rIAHcTHdxVYuMcAwkwQr22w>
    <xmx:DYCeau5wbe9hNHm5OnqKWDauBb07PFou0QTcZ-gnvJoPpQl3hIjybQ>
    <xmx:DYCeal0yUewbNlPGtpMeQcqgNUgLpHh7_mwoa8MH6WdAV3S6SmJeuA>
    <xmx:DYCealB9VI9y1iSCZag8nKgPz811rxEfpOtvgMGOLt3abkvl3mO5ow>
    <xmx:DYCeaqVQ2QthcWxpJJzc7NonAHlwYpGih1GmXYtTVT6oTo6AzPj0dHAc>
Feedback-ID: i6d3949ed:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
 7 Sep 2026 05:12:44 -0400 (EDT)
From: Nadim Kobeissi <nadim@symbolic.software>
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_B67F673B-18AD-4BFE-8981-5A3A45CDE615"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3864.700.51.1.1\))
Message-Id: <DE297422-C54E-4C29-9FB7-15F5A97E6489@symbolic.software>
Date: Mon, 7 Sep 2026 11:12:42 +0200
To: cfrg@ietf.org,
 ufmrg@irtf.org
X-Mailer: Apple Mail (2.3864.700.51.1.1)
Message-ID-Hash: U5R3254U2TNVMTW23EBWE2X2GPRKGBAZ
X-Message-ID-Hash: U5R3254U2TNVMTW23EBWE2X2GPRKGBAZ
X-MailFrom: nadim@symbolic.software
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
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: =?utf-8?q?=5BUfmrg=5D_A_Verifpal_milestone=3A_TLS_1=2E3_modeled_and_verified?=
 =?utf-8?q?_with_concurrent_sessions_and_staged_compromise?=
List-Id: Usable Formal Methods Research Group <ufmrg.irtf.org>
Archived-At: 
 <https://mailarchive.ietf.org/arch/msg/ufmrg/AmqTd58KwC6ISYyBiJ2pad9h8fE>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ufmrg>
List-Help: <mailto:ufmrg-request@irtf.org?subject=help>
List-Owner: <mailto:ufmrg-owner@irtf.org>
List-Post: <mailto:ufmrg@irtf.org>
List-Subscribe: <mailto:ufmrg-join@irtf.org>
List-Unsubscribe: <mailto:ufmrg-leave@irtf.org>


--Apple-Mail=_B67F673B-18AD-4BFE-8981-5A3A45CDE615
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi everyone,

I=E2=80=99m excited to share a milestone for Verifpal [1]: after an =
overnight run, Verifpal 1.4.6 has completed the analysis of a =
substantial TLS 1.3 model, checking nineteen security queries against an =
active attacker. Sixteen queries returned no attack, and three produced =
the expected confidentiality counterexamples. The results match the =
expectations documented in the model before the run.

For those unfamiliar with Verifpal, it is a symbolic protocol =
verification tool built around an accessible modeling language and =
readable attack explanations. This analysis brings together much of the =
work that has gone into its redesigned engine this year, and I=E2=80=99m =
particularly happy about how much we could express in one model.

The model follows the certificate-authenticated TLS 1.3 handshake in RFC =
9846 [2], with mutual authentication. It includes CA-issued certificates =
and expected-identity checks, CertificateVerify with distinct =
client/server contexts, Finished verification, the transcript-dependent =
key schedule, application records in both directions, exporter and =
resumption secrets, two session tickets, and a server KeyUpdate followed =
by application data under the updated key.

Several Verifpal features made this analysis especially interesting:

1. Concurrent sessions and injective authentication. Each principal runs =
two concurrent sessions. The attacker can route values between runs, and =
authentication queries look for duplicate acceptance as well as forgery. =
This lets the model ask whether an honestly produced message can be =
accepted more times than it was sent.

2. Different peers across runs. A `scenarios` block configures the =
client to communicate either with the honest server or with a =
legitimately certified server whose signing key the attacker holds. This =
gives the attacker access to client behavior in a connection to a =
malicious peer, including the client=E2=80=99s CertificateVerify, while =
the analysis searches for attacks on the honest connection. The binding =
of client authentication to the server=E2=80=99s certificate and =
handshake transcript is therefore directly relevant.

3. Queries conditioned on protocol progress. Verifpal=E2=80=99s =
preconditions let a query apply only to executions that reach a =
particular send. For example:

  confidentiality? sApTraffic[
      precondition[Server -> Client: appData2]
  ]

  Here, the server sends appData2 only after checking the client=E2=80=99s=
 authentication and Finished. The key-agreement query carries =
preconditions for both endpoints. This lets us express the completion =
qualifications attached to the security claims.

4. Compromise at different times. The handshake and application exchange =
happen in phase 0. Phase 1 discloses both endpoints=E2=80=99 long-term =
signing keys. Phase 2 discloses the server=E2=80=99s updated application =
traffic secret and the PSK associated with the first ticket. One =
analysis therefore exercises forward secrecy, protection of earlier =
traffic after a key update, and separation between ticket PSKs.

5. Nonce-aware records. AEAD calls explicitly include the nonce and =
additional data. Record nonces depend on the write IV and sequence =
number, with the sequence number restarting under the updated key. The =
model represents the IV/sequence-number combination as `HASH(iv, seq)`, =
a symbolic abstraction of TLS=E2=80=99s XOR construction. Nonces are =
computed locally rather than sent alongside ciphertexts.

The three reported confidentiality failures are useful illustrations of =
the boundaries being tested:

A. The server=E2=80=99s handshake traffic secret is obtainable before =
client authentication. The attacker supplies its own ephemeral key share =
and derives the corresponding handshake secret. The unconditional query =
therefore fails. The same query, conditioned on the server reaching its =
application-data send after authenticating the client, finds no attack.

B. Compromising the updated traffic secret exposes the record encrypted =
under it. The trace shows the attacker taking the explicitly leaked =
secret, deriving the write IV and nonce, and decrypting appData3. The =
earlier application messages remain confidential in this search, =
including the server=E2=80=99s record under the previous key generation.

C. The client=E2=80=99s identity is disclosed in its connection to the =
compromised certified peer. The client is explicitly configured to =
contact that peer, so unconditional secrecy of its identity is too =
strong a requirement. This illustrates the distinction between =
authenticating a server and trusting that server with the identity =
disclosed to it.

These outcomes align with the qualifications discussed in Appendix F =
[3]. The remaining results include all five injective authentication =
queries, both traffic-secret freshness queries, agreement on the server =
application traffic secret under the completion preconditions, and =
confidentiality of the appropriately conditioned handshake, application, =
and exporter secrets. The second ticket=E2=80=99s PSK also remains =
confidential despite disclosure of the first.

Every passing verdict is explicitly labeled "search exhausted at 2 =
sessions." This means that Verifpal found no attack in the search it =
performed. Its search is bounded and incomplete, including within the =
session bound. The model also makes specific abstractions: it fixes one =
cipher suite and group, uses traffic secrets to stand for record write =
keys, and excludes negotiation, HelloRetryRequest, resumed/0-RTT =
handshakes, and post-handshake client authentication.

The generated LaTeX report [4] contains the complete model, every =
verdict, and the counterexample traces. The engine and its guarantees =
are described in my recent paper, "=46rom Toy to Instrument: Seven Years =
of Verifpal=E2=80=9D [5].

For me, the exciting part is being able to turn this many of TLS=E2=80=99s=
 carefully qualified security claims into an executable model that =
remains approachable enough to read alongside the specification. I would =
very much welcome feedback from the WG, especially on the modeling =
abstractions and the correspondence between the queries and Appendix F. =
Thank you!

[1] https://verifpal.com=20
[2] https://www.rfc-editor.org/info/rfc9846/
[3] https://www.rfc-editor.org/info/rfc9846/#appendix-F=20
[4] https://verifpal.com/res/examples/tls13.pdf =20
[5] https://eprint.iacr.org/2026/1654=20

Nadim Kobeissi
Symbolic Software =E2=80=A2 https://symbolic.software


--Apple-Mail=_B67F673B-18AD-4BFE-8981-5A3A45CDE615
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html aria-label=3D"message body"><head><meta http-equiv=3D"content-type" =
content=3D"text/html; charset=3Dutf-8"></head><body =
style=3D"overflow-wrap: break-word; -webkit-nbsp-mode: space; =
line-break: after-white-space;"><div>Hi =
everyone,</div><div><br></div><div>I=E2=80=99m excited to share a =
milestone for Verifpal [1]: after an overnight run, Verifpal 1.4.6 has =
completed the analysis of a substantial TLS 1.3 model, checking nineteen =
security queries against an active attacker. Sixteen queries returned no =
attack, and three produced the expected confidentiality counterexamples. =
The results match the expectations documented in the model before the =
run.</div><div><br></div><div>For those unfamiliar with Verifpal, it is =
a symbolic protocol verification tool built around an accessible =
modeling language and readable attack explanations. This analysis brings =
together much of the work that has gone into its redesigned engine this =
year, and I=E2=80=99m particularly happy about how much we could express =
in one model.</div><div><br></div><div>The model follows the =
certificate-authenticated TLS 1.3 handshake in RFC 9846 [2], with mutual =
authentication. It includes CA-issued certificates and expected-identity =
checks, CertificateVerify with distinct client/server contexts, Finished =
verification, the transcript-dependent key schedule, application records =
in both directions, exporter and resumption secrets, two session =
tickets, and a server KeyUpdate followed by application data under the =
updated key.</div><div><br></div><div>Several Verifpal features made =
this analysis especially interesting:</div><div><br></div><div>1. =
Concurrent sessions and injective authentication. Each principal runs =
two concurrent sessions. The attacker can route values between runs, and =
authentication queries look for duplicate acceptance as well as forgery. =
This lets the model ask whether an honestly produced message can be =
accepted more times than it was sent.</div><div><br></div><div>2. =
Different peers across runs. A `scenarios` block configures the client =
to communicate either with the honest server or with a legitimately =
certified server whose signing key the attacker holds. This gives the =
attacker access to client behavior in a connection to a malicious peer, =
including the client=E2=80=99s CertificateVerify, while the analysis =
searches for attacks on the honest connection. The binding of client =
authentication to the server=E2=80=99s certificate and handshake =
transcript is therefore directly relevant.</div><div><br></div><div>3. =
Queries conditioned on protocol progress. Verifpal=E2=80=99s =
preconditions let a query apply only to executions that reach a =
particular send. For example:</div><div><br></div><div>&nbsp; =
confidentiality? sApTraffic[</div><div>&nbsp; &nbsp; &nbsp; =
precondition[Server -&gt; Client: appData2]</div><div>&nbsp; =
]</div><div><br></div><div>&nbsp; Here, the server sends appData2 only =
after checking the client=E2=80=99s authentication and Finished. The =
key-agreement query carries preconditions for both endpoints. This lets =
us express the completion qualifications attached to the security =
claims.</div><div><br></div><div>4. Compromise at different times. The =
handshake and application exchange happen in phase 0. Phase 1 discloses =
both endpoints=E2=80=99 long-term signing keys. Phase 2 discloses the =
server=E2=80=99s updated application traffic secret and the PSK =
associated with the first ticket. One analysis therefore exercises =
forward secrecy, protection of earlier traffic after a key update, and =
separation between ticket PSKs.</div><div><br></div><div>5. Nonce-aware =
records. AEAD calls explicitly include the nonce and additional data. =
Record nonces depend on the write IV and sequence number, with the =
sequence number restarting under the updated key. The model represents =
the IV/sequence-number combination as `HASH(iv, seq)`, a symbolic =
abstraction of TLS=E2=80=99s XOR construction. Nonces are computed =
locally rather than sent alongside =
ciphertexts.</div><div><br></div><div>The three reported confidentiality =
failures are useful illustrations of the boundaries being =
tested:</div><div><br></div><div>A. The server=E2=80=99s handshake =
traffic secret is obtainable before client authentication. The attacker =
supplies its own ephemeral key share and derives the corresponding =
handshake secret. The unconditional query therefore fails. The same =
query, conditioned on the server reaching its application-data send =
after authenticating the client, finds no =
attack.</div><div><br></div><div>B. Compromising the updated traffic =
secret exposes the record encrypted under it. The trace shows the =
attacker taking the explicitly leaked secret, deriving the write IV and =
nonce, and decrypting appData3. The earlier application messages remain =
confidential in this search, including the server=E2=80=99s record under =
the previous key generation.</div><div><br></div><div>C. The client=E2=80=99=
s identity is disclosed in its connection to the compromised certified =
peer. The client is explicitly configured to contact that peer, so =
unconditional secrecy of its identity is too strong a requirement. This =
illustrates the distinction between authenticating a server and trusting =
that server with the identity disclosed to =
it.</div><div><br></div><div>These outcomes align with the =
qualifications discussed in Appendix F [3]. The remaining results =
include all five injective authentication queries, both traffic-secret =
freshness queries, agreement on the server application traffic secret =
under the completion preconditions, and confidentiality of the =
appropriately conditioned handshake, application, and exporter secrets. =
The second ticket=E2=80=99s PSK also remains confidential despite =
disclosure of the first.</div><div><br></div><div>Every passing verdict =
is explicitly labeled "search exhausted at 2 sessions." This means that =
Verifpal found no attack in the search it performed. Its search is =
bounded and incomplete, including within the session bound. The model =
also makes specific abstractions: it fixes one cipher suite and group, =
uses traffic secrets to stand for record write keys, and excludes =
negotiation, HelloRetryRequest, resumed/0-RTT handshakes, and =
post-handshake client authentication.</div><div><br></div><div>The =
generated LaTeX report [4] contains the complete model, every verdict, =
and the counterexample traces. The engine and its guarantees are =
described in my recent paper, "=46rom Toy to Instrument: Seven Years of =
Verifpal=E2=80=9D [5].</div><div><br></div><div>For me, the exciting =
part is being able to turn this many of TLS=E2=80=99s carefully =
qualified security claims into an executable model that remains =
approachable enough to read alongside the specification. I would very =
much welcome feedback from the WG, especially on the modeling =
abstractions and the correspondence between the queries and Appendix F. =
Thank you!</div><div><br></div><div>[1] =
https://verifpal.com&nbsp;</div><div>[2] =
https://www.rfc-editor.org/info/rfc9846/</div><div>[3] =
https://www.rfc-editor.org/info/rfc9846/#appendix-F&nbsp;</div><div>[4] =
https://verifpal.com/res/examples/tls13.pdf &nbsp;</div><div>[5] =
https://eprint.iacr.org/2026/1654&nbsp;</div><div>
<meta charset=3D"UTF-8"><br>Nadim Kobeissi<br>Symbolic Software =
=E2=80=A2&nbsp;https://symbolic.software<br>
</div>

<br></body></html>=

--Apple-Mail=_B67F673B-18AD-4BFE-8981-5A3A45CDE615--

