[TLS] Re: Working Group Last Call for Post-quantum Hybrid ECDHE-MLKEM Key Agreement for TLSv1.3

Filippo Valsorda <filippo@ml.filippo.io> Fri, 10 October 2025 09:19 UTC

Return-Path: <filippo@ml.filippo.io>
X-Original-To: tls@mail2.ietf.org
Delivered-To: tls@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 3A70C708DCBB for <tls@mail2.ietf.org>; Fri, 10 Oct 2025 02:19:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.698
X-Spam-Level:
X-Spam-Status: No, score=-2.698 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-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=unavailable autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=filippo.io header.b="OQ59h3op"; dkim=pass (2048-bit key) header.d=messagingengine.com header.b="VTS6eA8i"
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 hqowzERsjLXc for <tls@mail2.ietf.org>; Fri, 10 Oct 2025 02:19:11 -0700 (PDT)
Received: from fhigh-b3-smtp.messagingengine.com (fhigh-b3-smtp.messagingengine.com [202.12.124.154]) (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 7C236708DB99 for <tls@ietf.org>; Fri, 10 Oct 2025 02:19:09 -0700 (PDT)
Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfhigh.stl.internal (Postfix) with ESMTP id 06A367A008F; Fri, 10 Oct 2025 05:19:03 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81]) by phl-compute-11.internal (MEProxy); Fri, 10 Oct 2025 05:19:03 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=filippo.io; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1760087942; x=1760174342; bh=VGtVYZw3Pc 4zBFu65OtzfCDxJ0N7UQxr3l/e2UGXcdI=; b=OQ59h3op8dk1j0v5D3AsQVQoYd XAv+KW4oTJJkMKE8OLv/1Va5IWpJrq+OEhQwB93utS4hqH2p6zH1DQke5HD4tRbZ dPZ+2GuG7qwUGyouhtKYC25Cjdf+6ipUlk9A24ZAc/5rvdpfu90Dp0DrAk8330dW MV0pQg8F3usr2uzAz1ROK7om8gkbZAHH2nyNxi/hQyCVSh0bMHuUe3kgsrLL7sHY R/NOsQAk/OqmMX7AGRf0e8lm4TN0rLoizVNxfnVZ2Cqkp9LbYiNBOniKoQf1eecb NScDOLHWj6NzRbDSdDHkL5POf2StjZwr75e5QLDRCYtKJWc9/5Xg+Kk2Vm4g==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1760087942; x=1760174342; bh=VGtVYZw3Pc4zBFu65OtzfCDxJ0N7UQxr3l/ e2UGXcdI=; b=VTS6eA8i3pW6uBj2M9/eqwkxjG8ZfN3aJAixx5wjEVrUhBRFzzU 3IV77vjUlqkZVue8xbkyUVtO+hYOlHyNzG1SeAPiaPimaAZRpUbDM+H447tL5B29 /eaFx/vhvmGDiHaZ5omWrgKdnqiBnMjSPamMNbRSUNS5cPPtBjxusdWodQ3U8EhV JiDvZJ4dmV4hxaales3pDXoqI7fTrIXmTDn30zd229jldew1gKxNdXltOptADyc7 orejLRey3TtkS32U9pNjyENxSVICvRAH2/w4cfgxka+5PyMMtK5g7sPRDcimBYHM GFIq2kfhdrJcy7QHdrg/yCecMxzyi7hHaJg==
X-ME-Sender: <xms:hs_oaNEj58QRxVVZmEgEjaOPO6tz3aCB4Xo3APydiJjzcSN-Vt7F3g> <xme:hs_oaNLZ0p4lljKekhZmvfypasGfrmNOBqBbngNjgvrUmIEVvvtImeN0XadArfL4R uAvVHKTmP6q9xQvR8OPx5nfTfWw2UG1jhYKWHoJHrpMIl8OafTq6w>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddutdekieekucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnegouf hushhpvggtthffohhmrghinhculdegledmnecujfgurhepofggfffhvfevkfgjfhfutges rgdtreerredtjeenucfhrhhomhepfdfhihhlihhpphhoucggrghlshhorhgurgdfuceofh hilhhiphhpohesmhhlrdhfihhlihhpphhordhioheqnecuggftrfgrthhtvghrnhepheel tedtuedtuefffeeuleffvdffkefhteeikeeiveeiieevfeffledtueetfeejnecuffhomh grihhnpegrrhgthhhivhgvrdhorhhgpdgtrggtvghrthdrohhrghdphihprdhtohdpghho ohhglhgvrdgtohhmpdhnihhsthdrghhovhdpihgrtghrrdhorhhgpdhsphhrihhnghgvrh drtghomhdpihgvthhfrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghm pehmrghilhhfrhhomhepfhhilhhiphhpohesmhhlrdhfihhlihhpphhordhiohdpnhgspg hrtghpthhtohepgedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepughjsgestghr rdihphdrthhopdhrtghpthhtohepkhhprghnohhspeegtdgrmhgriihonhdrtghomhesug hmrghrtgdrihgvthhfrdhorhhgpdhrtghpthhtohepfigrthhsohhnsghlrgguugesghhm rghilhdrtghomhdprhgtphhtthhopehtlhhssehivghtfhdrohhrgh
X-ME-Proxy: <xmx:hs_oaENM_P6HCpf6t0ZcVu5ouBAdI9HT-UEHSMgd6pfirK2HKDm0TQ> <xmx:hs_oaGb4SvQauHUBMb8vNLrgfbfqYw_xMmrfV1CC-UTE-BoBzvamew> <xmx:hs_oaOx6ClkwW1FPWzBpcVv-gVKWl0ufaS_Q2foYlLEgdWTj90yilA> <xmx:hs_oaBJFo2hQKHMP4Bqo5sPttcnw3Og91RQgVWr5DR5iuIRnzc0KwQ> <xmx:hs_oaFQZf1AAXhDkIsqVK-z-2SNhniwbUhU6togM-yRF7QhfQqRbP5oP>
Feedback-ID: i2e91459c:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501) id 40813700054; Fri, 10 Oct 2025 05:19:02 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
MIME-Version: 1.0
X-ThreadId: AT4t5zaPR8PJ
Date: Fri, 10 Oct 2025 11:17:31 +0200
From: Filippo Valsorda <filippo@ml.filippo.io>
To: Watson Ladd <watsonbladd@gmail.com>, "Kampanakis, Panos" <kpanos=40amazon.com@dmarc.ietf.org>
Message-Id: <eb65d505-2375-4870-9df0-453666391770@app.fastmail.com>
In-Reply-To: <CACsn0c=ykksQG1P-gXYsL9v624E281a+4g0-qSjdky+SMtkKPQ@mail.gmail.com>
References: <CAOgPGoA+c8kXDizwsvFG5tLz9+Kxk0HqiN1skKp5jMvvpxeu0Q@mail.gmail.com> <20251009160139.42473.qmail@cr.yp.to> <DM5PR18MB2326D93261B74BECF06061B4ABEFA@DM5PR18MB2326.namprd18.prod.outlook.com> <CACsn0c=ykksQG1P-gXYsL9v624E281a+4g0-qSjdky+SMtkKPQ@mail.gmail.com>
Content-Type: multipart/alternative; boundary="fbdd4ab6c89f47c69b8cfd1847a3be80"
Message-ID-Hash: DC7NF2OMTEXFHVFVAB2QE7WABWTLSFVJ
X-Message-ID-Hash: DC7NF2OMTEXFHVFVAB2QE7WABWTLSFVJ
X-MailFrom: filippo@ml.filippo.io
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tls.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: "D. J. Bernstein" <djb@cr.yp.to>, TLS List <tls@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] Re: Working Group Last Call for Post-quantum Hybrid ECDHE-MLKEM Key Agreement for TLSv1.3
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tls/VtGJLtu2QCsc5_G6HBeqt7_EyBQ>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tls>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Owner: <mailto:tls-owner@ietf.org>
List-Post: <mailto:tls@ietf.org>
List-Subscribe: <mailto:tls-join@ietf.org>
List-Unsubscribe: <mailto:tls-leave@ietf.org>

2025-10-10 06:29 GMT+02:00 Watson Ladd <watsonbladd@gmail.com>:
> That's just objectively true.
> 
> In 2014 I exploited a number of TLS implementations, ranging from browsers to embedded devices, exploiting incomplete formulas, failure to check y etc. All these problems don't happen with X25519, which is why it rapidly saw adoption.

Do any of those attacks work against implementations that don't reuse ephemeral key shares (which thankfully are most of them now, to the point we've been discussing finally making it a MUST)?

My understanding is that those attacks (and ~all the criteria in the "safecurves" webpage, last updated in 2017) are as irrelevant to authenticated ephemeral ECDH as the many cofactor attacks against Curve25519-based cryptosystems.

(With apologies for indirectly taking the bait on suspicious CIA techniques <https://web.archive.org/web/20250726032250/http://svn.cacert.org/CAcert/CAcert_Inc/Board/oss/oss_sabotage.html>.)

> On Thu, Oct 9, 2025, 8:03 PM Kampanakis, Panos <kpanos=40amazon.com@dmarc.ietf.org> wrote:
>> P256 and P384 are risky choices now and the solution is for the draft to include only your curves with MLKEM768 or 1024? Come on man! 
>> 
>> -----Original Message-----
>> From: D. J. Bernstein <djb@cr.yp.to> 
>> Sent: Thursday, October 9, 2025 12:02 PM
>> To: tls@ietf.org
>> Subject: [EXTERNAL] [TLS] Re: Working Group Last Call for Post-quantum Hybrid ECDHE-MLKEM Key Agreement for TLSv1.3
>> 
>> CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe.
>> 
>> 
>> 
>> It's good from a security perspective to see the increasing deployment of post-quantum cryptography. The most widely deployed option in this draft, namely X25519MLKEM768, is reportedly supported by ~40% of clients and ~30% of the top 100K servers, so presumably it covers ~10% of TLS traffic already, which is a big step above 0%.
>> 
>> Regarding the choice of ML-KEM, the _hope_ that ML-KEM will protect against quantum attacks shouldn't blind us to the _risk_ of ML-KEM being breakable. Many other post-quantum proposals have been publicly broken (see https://cr.yp.to/papers.html#qrcsp for a survey), including various proposals from experienced teams. Kyber/ML-KEM itself has seen quite a few vulnerabilities over the past 24 months, such as the following:
>> 
>>     * KyberSlash1 and KyberSlash2 (see https://kyberslash.cr.yp.to)
>>       prompted two rounds of security patches to the majority of ML-KEM
>>       implementations, including the reference code.
>> 
>>     * https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/hqbtIGFKIpU
>>       prompted another round of ML-KEM security patches.
>> 
>>     * https://eprint.iacr.org/2024/080 showed that NIST's claims of many
>>       bits of extra ML-KEM security from memory-access costs---see
>>       https://web.archive.org/web/20231219201240/https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/faq/Kyber-512-FAQ.pdf
>>       ---are, asymptotically, completely wrong for 3-dimensional attack
>>       hardware and almost completely wrong for 2-dimensional attack
>>       hardware.
>> 
>>     * https://eprint.iacr.org/2024/739 showed that the same claims from
>>       NIST are, on real hardware, almost completely wrong. NIST has not
>>       withdrawn the claims but also has not disputed these papers.
>> 
>>     * https://link.springer.com/chapter/10.1007/978-3-032-01855-7_15
>>       debunked previous claims that "dual attacks" don't work, and
>>       concluded that none of the ML-KEM parameter sets reach their
>>       claimed security levels. A Kyber team member has disputed this
>>       conclusion, writing "there remains a few bits to be gained by
>>       cryptanalysts before the security levels would be convincingly
>>       crossed", but in any case this falls far short of the security
>>       margin that NIST was claiming just two years ago.
>> 
>> So it's good to see that the draft also meets the crucial requirement of having an ECC layer in every option. An ECC layer means that moving from today's X25519 (>80% of TLS) to X25519MLKEM768 definitely won't reduce security, even if ML-KEM collapses: i.e., we can comfortably _try_ to protect against quantum computers without risking a loss of security.
>> 
>> However, the following two concerns are serious enough that I can't support this draft in its current state.
>> 
>> First concern: The other two options in the draft make unnecessarily risky ECC choices, originally proposed by NSA in the 1990s. We've seen many ECC failures since then because of implementation screwups, and it's well understood (see https://cr.yp.to/papers.html#safecurves) how better ECC choices reduce these risks. For example, instead of using (x,y)-coordinates in ECDH and begging the implementor to check input validity (something we've seen going wrong again and again), we should be using x-coordinates on a twist-secure curve.
>> 
>> I understand that there are some earlier standards requiring risky ECC choices. I haven't seen a coherent argument that copying this flaw will noticeably improve deployability of the draft. Meanwhile this flaw is contrary to the "improve security" goal in the WG charter.
>> 
>> A sub-concern here is that, since MLKEM1024 is somewhat less risky than MLKEM768, it's reasonable for implementors to support MLKEM1024, but then the draft forces those implementors to use a poor ECC choice. This sub-concern is very easy to fix: add X25519MLKEM1024 and X448MLKEM1024.
>> 
>> Kicking the can down the road, saying that these options can be added by another spec later, would not address this sub-concern. An implementor looking for the lowest-risk post-quantum option in _this_ spec is forced into a poor ECC choice; _this_ spec should fix that.
>> 
>> Second concern: Kyber has always been in the middle of a patent minefield. The revisions to Kyber didn't do anything to move out of the minefield. ML-KEM, which is Kyber version 4, is in the same minefield.
>> NIST claims that its license agreements with two patent holders (Ding and GAM) allow free usage of unmodified ML-KEM under those patents; but there's another patent holder, Yunlei Zhao, who wrote in
>> 
>>     https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/Fm4cDfsx65s/m/F63mixuWBAAJ
>> 
>> that "Kyber is covered by our patents". I haven't heard reports of Zhao asking for money yet, but I also haven't seen a patent analysis explaining why Zhao is wrong.
>> 
>> What happens if a patent holder in, say, 2027 starts writing to one company after another saying "Here are records showing you've used ML-KEM, now pay $50000"? Probably a typical company pays the $50000 and promptly disables ML-KEM, regressing to the undesirable situation of users _definitely_ being unprotected against quantum attacks. Getting a patent-free replacement to the same level of deployment will take years.
>> 
>> The only way to provide interoperable post-quantum cryptography in this scenario is for a patent-free post-quantum option to be implemented and allowed everywhere, even if the patented option is default. Every spec should be taking responsibility for providing patent-free options. As above, kicking the can down the road does not address the problem; it means that the necessary job doesn't get done.
>> 
>> I'm not saying the WG should be trying to do patent analyses---on the contrary, IETF has a rule saying that it won't decide validity of any particular patent. I'm saying that the _claims_ from patent holders regarding ML-KEM warrant adding more options to mitigate patent risks.
>> 
>> ---D. J. Bernstein
>> 
>> 
>> ===== NOTICES REGARDING IETF =====
>> 
>> It has come to my attention that IETF LLC believes that anyone filing a comment, objection, or appeal is engaging in a copyright giveaway by default, for example allowing IETF LLC to feed that material into AI systems for manipulation. Specifically, IETF LLC views any such material as a "Contribution", and believes that WG chairs, IESG, and other IETF LLC agents are free to modify the material "unless explicitly disallowed in the notices contained in a Contribution (in the form specified by the Legend Instructions)". I am hereby explicitly disallowing such modifications. Regarding "form", my understanding is that "Legend Instructions" currently refers to the portion of
>> 
>>     https://web.archive.org/web/20250306221446/https://trustee.ietf.org/wp-content/uploads/Corrected-TLP-5.0-legal-provsions.pdf
>> 
>> saying that the situation that "the Contributor does not wish to allow modifications nor to allow publication as an RFC" must be expressed in the following form: "This document may not be modified, and derivative works of it may not be created, and it may not be published except as an Internet-Draft". That expression hereby applies to this message.
>> 
>> I'm fine with redistribution of copies of this message. There are no confidentiality restrictions on this message. The issue here is with modifications, not with dissemination.
>> 
>> For other people concerned about what IETF LLC is doing: Feel free to copy these notices into your own messages. If you're preparing text for an IETF standard, it's legitimate for IETF LLC to insist on being allowed to modify the text; but if you're just filing comments then there's no reason for this.
>> 
>> _______________________________________________
>> TLS mailing list -- tls@ietf.org
>> To unsubscribe send an email to tls-leave@ietf.org
>> _______________________________________________
>> TLS mailing list -- tls@ietf.org
>> To unsubscribe send an email to tls-leave@ietf.org
> _______________________________________________
> TLS mailing list -- tls@ietf.org
> To unsubscribe send an email to tls-leave@ietf.org
>