[Ufmrg] A Verifpal milestone: TLS 1.3 modeled and verified with concurrent sessions and staged compromise
Nadim Kobeissi <nadim@symbolic.software> Mon, 07 September 2026 09:12 UTC
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, 07 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: [Ufmrg] A Verifpal milestone: TLS 1.3 modeled and verified 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>
Hi everyone,
I’m 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’m 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’s CertificateVerify, while the analysis searches for attacks on the honest connection. The binding of client authentication to the server’s certificate and handshake transcript is therefore directly relevant.
3. Queries conditioned on protocol progress. Verifpal’s 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’s 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’ long-term signing keys. Phase 2 discloses the server’s 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’s 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’s 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’s record under the previous key generation.
C. The client’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.
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’s 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, "From Toy to Instrument: Seven Years of Verifpal” [5].
For me, the exciting part is being able to turn this many of TLS’s 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
[2] https://www.rfc-editor.org/info/rfc9846/
[3] https://www.rfc-editor.org/info/rfc9846/#appendix-F
[4] https://verifpal.com/res/examples/tls13.pdf
[5] https://eprint.iacr.org/2026/1654
Nadim Kobeissi
Symbolic Software • https://symbolic.software
- [Ufmrg] A Verifpal milestone: TLS 1.3 modeled and… Nadim Kobeissi