[Last-Call] Re: [TLS] Re: Last Call: <draft-ietf-tls-mldsa-03.txt> (Use of ML-DSA in TLS 1.3) to Informational RFC

"D. J. Bernstein" <djb@cr.yp.to> Wed, 03 June 2026 23:29 UTC

Return-Path: <djb-dsn2-1406711340.7506@cr.yp.to>
X-Original-To: last-call@mail2.ietf.org
Delivered-To: last-call@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id C1382FA651CD for <last-call@mail2.ietf.org>; Wed, 3 Jun 2026 16:29:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1780529376; bh=IKQC6JC2zfNNP4nEK9dsZXk+yzZ8l54E3iVtvnaaKAI=; h=Date:From:To:Subject:In-Reply-To; b=yBVQwqjwMf5te+JU/h+mB6NnWrNno9Yk7IDPtO36P4YmnwjOO3Ol5NFhd44BoqlCD vuzJ5BZXk+LMelEcQx+IqCPJXzZhXpW4no70Ud6xpiECH4Y8QeWyZTR4QpORqMa7AY TePRVaX3l9cyCbadT4LGOmyeD6r8PPs4BNakURb4=
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -4.197
X-Spam-Level:
X-Spam-Status: No, score=-4.197 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=unavailable autolearn_force=no
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 6swIHaZQ0qqs for <last-call@mail2.ietf.org>; Wed, 3 Jun 2026 16:29:35 -0700 (PDT)
Received: from salsa.cs.uic.edu (salsa.cs.uic.edu [131.193.32.108]) by mail2.ietf.org (Postfix) with SMTP id 68FC7FA651BB for <last-call@ietf.org>; Wed, 3 Jun 2026 16:29:35 -0700 (PDT)
Received: (qmail 953858 invoked by uid 1010); 3 Jun 2026 23:29:34 -0000
Received: from unknown (unknown) by unknown with QMTP; 3 Jun 2026 23:29:34 -0000
Received: (qmail 2368796 invoked by uid 1000); 3 Jun 2026 23:29:34 -0000
Date: Wed, 03 Jun 2026 23:29:34 -0000
Message-ID: <20260603232934.2368794.qmail@cr.yp.to>
From: "D. J. Bernstein" <djb@cr.yp.to>
To: Nadim Kobeissi <nadim@symbolic.software>, tls@ietf.org, last-call@ietf.org
Mail-Followup-To: tls@ietf.org, last-call@ietf.org
In-Reply-To: <740B69BC-BB0D-427C-8A5A-BF5E6FEEC061@symbolic.software>
Message-ID-Hash: JMPJMFU6KYMALTFKNBXMXYRWC4YY6AJR
X-Message-ID-Hash: JMPJMFU6KYMALTFKNBXMXYRWC4YY6AJR
X-MailFrom: djb-dsn2-1406711340.7506@cr.yp.to
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: [Last-Call] Re: [TLS] Re: Last Call: <draft-ietf-tls-mldsa-03.txt> (Use of ML-DSA in TLS 1.3) to Informational RFC
List-Id: IETF Last Calls <last-call.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/last-call/S8CgtiIUhfswiy44IPShlePypuc>
List-Archive: <https://mailarchive.ietf.org/arch/browse/last-call>
List-Help: <mailto:last-call-request@ietf.org?subject=help>
List-Owner: <mailto:last-call-owner@ietf.org>
List-Post: <mailto:last-call@ietf.org>
List-Subscribe: <mailto:last-call-join@ietf.org>
List-Unsubscribe: <mailto:last-call-leave@ietf.org>

Nadim Kobeissi writes:
> I think everyone agrees that we will see severe vulnerabilities in
> *all* software.

That sounds exaggerated to me. Occasionally code is backed by mechanisms
providing very high assurance of zero bugs. Some further code ends up
bug-free through being small enough, well enough reviewed, and well
enough tested. But then tons of code is big, poorly reviewed, and poorly
tested. The variations matter for evaluating security risks---and, in
particular, evaluating the damage done by solo PQ.

> This is a risk we mitigate against through
> best-practice software engineering, through better research and
> through test vectors.

_And_ taking further mitigation steps recognizing that there are still
vulnerabilities, often context-specific steps such as deploying VMs,
deploying firewalls, and making sure that PQ is rolled out as ECC+PQ.

ECC+PQ is an example of how these further steps often produce dramatic
real-world security improvements. CECPQ2b, for example, rescued tens of
millions of user sessions. The _only_ reason that the SIKE break didn't
break those sessions is that CECPQ2b was ECC+SIKE rather than solo SIKE.
There's no reason to think that serious attackers such as NSA wouldn't
already have figured out the attack before those sessions happened.

The SIKE break was via a mathematical break of the spec, but software
bugs can easily be even worse---more attackers finding and exploiting
the bugs; even less computational time for the attacks, allowing the
attacks to be scaled to many more targets. And, of course, an attacker
figuring out how to break _signature_ software used for TLS then gets to
break confidentiality _and_ integrity.

IETF does not control software engineering. It _does_ control which TLS
options it will endorse. At that layer, there are currently two choices:
(1) common-sense ECC+PQ; (2) damaging security with solo PQ.

We'll see more ML-DSA CVEs. Some will be severe. Some will be found and
exploited by attackers before the public finds them. Can IETF escape
responsibility for this damage by blaming the libraries that aren't
doing best-practice software engineering? No, this would violate an IETF
promise: "IETF participants use their best engineering judgment to find
the best solution for the whole Internet, not just the best solution for
any particular network, technology, vendor, or user."

> > I prefer to put most of my testing efforts into more advanced test
> > mechanisms that systematically cover larger classes of software flaws
> > and are easier to scale to large volumes of code.
> Fantastic! Do it!

I guess you're asking for some pointers. See, e.g., SUPERCOP (continual
test improvements; now covering 4913 implementations contributed by
hundreds of people; the test mechanisms are also deployed in lib25519,
lib1305, libmceliece, and libntruprime); saferewrite (used for cryptoint
et al.); djbsort (which I already suggested that you look at to get an
idea of what I think is a reasonable level of quality assurance).

---D. J. Bernstein


===== NOTICES =====

IETF BCP 78, "Rights Contributors Provide to the IETF Trust", Section 5
(normative), "Rights in Contributions", provides a modification right
"unless explicitly disallowed in the notices contained in a Contribution
(in the form specified by the Legend Instructions)".

The official language from IETF's "Legend Instructions" for the
situation that "the Contributor does not wish to allow modifications nor
to allow publication as an RFC" is as follows: "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."
<https://trustee.ietf.org/wp-content/uploads/Corrected-TLP-5.0-legal-provsions.pdf>

The same language is used in, e.g., RFC 5831. The same language hereby
applies to this document. This is not disclaiming or limiting the
applicability of IETF policies; it is strictly following IETF policies.

IESG claims that the "explicitly disallowed" provision in BCP 78 is
limited to the examples in Section 3 in BCP 78. That is incorrect. BCP
78 states that Section 5, "Rights in Contributions", is normative, while
Section 3, "Exposition of Why These Procedures Are the Way They Are", is
informative. The opt-out provision in the normative text is clear, and
cannot be limited by an informative section. BCP 78 does not give IESG
any authority to issue changes or purported clarifications of the rules.

Rationale for exercising the BCP 78 opt-out provision: I'm fine with
redistribution of copies of this document. The issue is instead with
modification, such as (1) IESG's May 2025 posting of an IESG-mangled
version of an appeal that I had filed and (2) IETF management selling
IETF mailing-list text to AI companies. This goes far beyond what
copyright law allows as fair use (such as giving quotes for purposes of
commentary). When I complained about the mangled document, the IETF
Executive Director responded not by apologizing but instead by asserting
that IETF management "has a license" to do anything it wants.