[CFRG] Re: RG Last Call on draft-irtf-cfrg-hybrid-kems-12 and draft-irtf-cfrg-concrete-hybrid-kems-04

"D. J. Bernstein" <djb@cr.yp.to> Fri, 10 July 2026 20:05 UTC

Return-Path: <djb-dsn2-1406711340.7506@cr.yp.to>
X-Original-To: cfrg@mail2.ietf.org
Delivered-To: cfrg@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 9691A114BE1F4 for <cfrg@mail2.ietf.org>; Fri, 10 Jul 2026 13:05:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1783713957; bh=GemUqvDcvOtCWxeKzR0zQDGgHOkue+bFfAtlWCW1GSo=; h=Date:From:To:Subject:In-Reply-To; b=HCHb+jI8UOrTPuJFh/MKave+1W9ritI/sehrZLeT4bqs3yxdaq7Ihu6yLARpiTTm4 75NnTTlKyAhzJWN/1nxD4dcPrkiRvIBy2TT8KcUpv1e8CVLGP4Iz+n9NqRNbpRSux4 GRVJFQV17lJX982Rj9u4evNNDJbaD00YVHjGIlAA=
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=ham 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 dW97yON_65KL for <cfrg@mail2.ietf.org>; Fri, 10 Jul 2026 13:05:56 -0700 (PDT)
Received: from salsa.cs.uic.edu (salsa.cs.uic.edu [131.193.32.108]) by mail2.ietf.org (Postfix) with SMTP id CEE87114BE1EC for <cfrg@irtf.org>; Fri, 10 Jul 2026 13:05:56 -0700 (PDT)
Received: (qmail 2350126 invoked by uid 1010); 10 Jul 2026 20:05:55 -0000
Received: from unknown (unknown) by unknown with QMTP; 10 Jul 2026 20:05:55 -0000
Received: (qmail 518139 invoked by uid 1000); 10 Jul 2026 20:05:43 -0000
Date: Fri, 10 Jul 2026 20:05:43 -0000
Message-ID: <20260710200543.518137.qmail@cr.yp.to>
From: "D. J. Bernstein" <djb@cr.yp.to>
To: cfrg@irtf.org
Mail-Followup-To: cfrg@irtf.org
In-Reply-To: <CAOjisRyRbkNif7mGD5TcoEcUsmbfeKE_wVHq+JH8VMySLcC47g@mail.gmail.com>
Message-ID-Hash: XMTCLE7UDXILCLHBOTWDITDQQSNRHKDL
X-Message-ID-Hash: XMTCLE7UDXILCLHBOTWDITDQQSNRHKDL
X-MailFrom: djb-dsn2-1406711340.7506@cr.yp.to
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-cfrg.irtf.org-0; header-match-cfrg.irtf.org-1; 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: [CFRG] Re: RG Last Call on draft-irtf-cfrg-hybrid-kems-12 and draft-irtf-cfrg-concrete-hybrid-kems-04
List-Id: Crypto Forum Research Group <cfrg.irtf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/cfrg/jjWJGjtFRnw0FAsByCmh0lSYz4g>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cfrg>
List-Help: <mailto:cfrg-request@irtf.org?subject=help>
List-Owner: <mailto:cfrg-owner@irtf.org>
List-Post: <mailto:cfrg@irtf.org>
List-Subscribe: <mailto:cfrg-join@irtf.org>
List-Unsubscribe: <mailto:cfrg-leave@irtf.org>

Nick Sullivan writes:
> Please reply on-list with your
> position on each document: ready to publish as-is, ready with specific
> changes, or not ready, together with the technical reasons.

Not ready.

1. Combiners should rely on a single security target for KEMs. This
single security target should be IND-CCA2. IND-CCA2 is the most common
design goal for KEMs, and IND-CCA2 has been shown sufficient for a wide
range of protocols.

Mixing security targets is confusing and error-prone. Consider, e.g.,
Adam Langley's comment from 2018 that "CPA vs CCA security is a subtle
and dangerous distinction, and if we're going to invest in a
post-quantum primitive, better it not be fragile". It's easy to destroy
security by plugging a merely-IND-CPA KEM into a protocol that needs
IND-CCA2 (or software that's reusing ephemeral keys).

Similarly, it's easy to destroy security by plugging an IND-CCA2 KEM
into a protocol that actually needs something more, such as the "C2PRI"
target introduced in 2024. Having a combiner rely on C2PRI is begging
for security failures.

Does the popularity of IND-CCA2 necessarily mean that it's the right
target? No. But we should recognize the value of having a standard
contract between KEMs and their applications. Multiple targets are a
complication in this central interface, and adding such complications
needs a _really_ convincing justification.

It's common (although not universal) practice to reject IND-CPA for
these security reasons even though aiming for IND-CPA rather than
IND-CCA2 typically saves >50% of dec time. The dec time simply isn't
important enough to justify the security risks. The cost savings of
relying on C2PRI rather than IND-CCA2 are even smaller than that.

2. I see no justification for the complication of specifying more than
one combiner.

To be clear, I'm not saying that this combiner should be trivial
concatenation (even though concatenation suffices for some important
protocols such as TLS and SSH). What I _am_ saying is that a few extra
lines of code produce a unified combiner that, with negligible cost
beyond concatenation, handles every application handled by these specs.

The cost arguments that I've seen elsewhere for cutting combiner corners
do not hold up to scrutiny. Nobody has any examples of an application
where the cost differences are noticeable.

Meanwhile the complications of multiple options

    (1) unnecessarily offload a decision onto implementors who are less
        well positioned than CFRG to make those decisions,
    
    (2) create a more complicated API for libraries that implement all
        options to punt on the decision (I'd expect a unified combiner
        to end up with _less_ overall code in the ecosystem), and

    (3) feed straight into recent anti-hybrid arguments hyping how hard
        it is to settle on the "+" part of ECC+PQ.

As a side note, it's circular for proponents of solo PQ to add unneeded
complications into the "+" and then point to those as arguments against
ECC+PQ. Procedurally, CFRG should be trying to avoid perceptions of
conflicts of interest.

3. For the concrete KEMs, https://cr.yp.to/papers.html#safecurves
reviews how X25519 avoids various security dangers of NIST P-256. I see
no justification for the complication of allowing NIST P-256 as another
option.

I _do_ see justification for the complication of providing options at a
mix of security levels in case lower security levels are broken, but the
way the draft handles this is unnecessarily risky.

Public attacks over the past 15 years have chopped lattice security
levels down by roughly 1/3. We don't know where this will stop. We don't
know how far ahead attackers are. I'm horrified to hear about recent
claims along the lines of "I am unaware of any lattice cryptanalysts who
have 'gone dark' in a way similar to how Coppersmith did in ~2005" from
people who evidently (1) don't realize how systematically NSA has been
hiring mathematicians and (2) don't realize that Coppersmith by himself
is a formidable lattice cryptanalyst.

An application that can afford to use ML-KEM-1024 rather than ML-KEM-768
should be doing so. It's a mistake for the draft to tie this to the ECC
choice. An application that's satisfied with the maturity and security
of its existing X25519 code shouldn't have to choose between

    (1) preserving that on the ECC side and
    (2) obtaining an extra security margin on the PQ side.

I'm not saying that there's clearly no value in higher ECC security
levels. I'm saying that the considerations there are different from the
considerations in picking PQ security levels, and the draft creates
unnecessary risks by tying these choices together.

---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 had the power to do whatever it wanted.