[TLS] [Errata Verified] RFC9954 (9136)

rfc-editor@rfc-editor.org Mon, 17 August 2026 16:52 UTC

Return-Path: <rfc-editor@rfc-editor.org>
X-Original-To: tls@ietf.org
Delivered-To: tls@mail2.ietf.org
Received: from errata-celery-848864fbc6-cj426 (gaia.k8s.ietf.org [4.156.85.76]) by mail2.ietf.org (Postfix) with ESMTP id 83F5612B2C6C4; Mon, 17 Aug 2026 09:52:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1786985562; bh=9OEvcLAreqnv7LcBPzneMEJkywYWS3Xr5Bpmd876X0U=; h=Subject:From:To:Cc:Date; b=e6Lx4t4pTBufNBJBH73KuS65vZwy9g/bO0PwMggb3Ohvj3FveR8kBtyjsYDkD6kaW vaJkw4viPOLjBhZEkhqxACRm1TVb/ji7M2bYEOAZZkZG0C/srfoJ6xcDzgyuOWXkHZ y05M8MAMAgYlUBozx8nukLqTcv5oOotTr2VNmw0U=
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: rfc-editor@rfc-editor.org
To: sfluhrer@cisco.com, shay.gueron@gmail.com, dstebila@uwaterloo.ca, nmalykh@protokols.ru
Date: Mon, 17 Aug 2026 16:52:42 -0000
message-id: <178698556227.17.1836638529899995390@rfc-editor.org>
Message-ID-Hash: QC65VIWXNVBKWMU4Y7WBMLFLTAGJAWU7
X-Message-ID-Hash: QC65VIWXNVBKWMU4Y7WBMLFLTAGJAWU7
X-MailFrom: rfc-editor@rfc-editor.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-tls.ietf.org-0; header-match-tls.ietf.org-1; header-match-tls.ietf.org-2; header-match-tls.ietf.org-3; header-match-tls.ietf.org-4; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: tls@ietf.org, iana@iana.org, rfc-editor@rfc-editor.org, iesg@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [TLS] [Errata Verified] RFC9954 (9136)
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/i2TlYbKQccNCuY5l2moQi0MBWko>
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>

The following errata report has been verified for RFC9954,
"Hybrid Key Exchange in TLS 1.3"

--------------------------------------
You may review the report below and at:
https://errata.rfc-editor.org/eid9136/

--------------------------------------

Status: Verified
Type: Editorial
Reported by: Nikolai Malykh <nmalykh@protokols.ru>
Date Reported: Aug. 17, 2026, 8:57 a.m.
Verified by: Madison Church (RFC Production Center)

Section 3.2 says:

Original Text
-------------
Recall that, in TLS 1.3 ([TLS13], Section 4.2.8), a KEM public key or
KEM ciphertext is represented as a KeyShareEntry:

       struct {
           NamedGroup group;
           opaque key_exchange<1..2^16-1>;
       } KeyShareEntry;

   These are transmitted in the extension_data fields of
   KeyShareClientHello and KeyShareServerHello extensions:

       struct {
           KeyShareEntry client_shares<0..2^16-1>;
       } KeyShareClientHello;

       struct {
           KeyShareEntry server_share;
       } KeyShareServerHello;

   The client's shares are listed in descending order of client
   preference; the server selects one algorithm and sends its
   corresponding share.

   For a hybrid key exchange, the key_exchange field of a KeyShareEntry
   is the concatenation of the key_exchange field for each of the
   constituent algorithms.  The order of shares in the concatenation
   MUST be the same as the order of algorithms indicated in the
   definition of the NamedGroup.

   For the client's share, the key_exchange value contains the
   concatenation of the pk outputs of the corresponding KEMs' KeyGen
   algorithms if that algorithm corresponds to a KEM or the (EC)DH
   ephemeral key share if that algorithm corresponds to an (EC)DH group.
   For the server's share, the key_exchange value contains the
   concatenation of the ct outputs of the corresponding KEMs' Encaps
   algorithms if that algorithm corresponds to a KEM or the (EC)DH
   ephemeral key share if that algorithm corresponds to an (EC)DH group.

   Section 4.2.8 of [TLS13] requires that "The key_exchange values for
   each KeyShareEntry MUST be generated independently."  In the context
   of this document, the same algorithm may appear in multiple named
   groups; thus, this document relaxes the above requirement to allow
   the same key_exchange value for the same algorithm to be reused in
   multiple KeyShareEntry records sent within the same ClientHello.
   However, key_exchange values for different algorithms MUST be
   generated independently.  Explicitly, if the NamedGroup is the hybrid
   key exchange MyECDHMyPQKEM, the KeyShareEntry.key_exchange values
   MUST be generated in one of the following two ways:

Corrected Text
--------------
Recall that, in TLS 1.3 ([TLS13], Section 4.3.8), a KEM public key or
KEM ciphertext is represented as a KeyShareEntry:

       struct {
           NamedGroup group;
           opaque key_exchange<1..2^16-1>;
       } KeyShareEntry;

   These are transmitted in the extension_data fields of
   KeyShareClientHello and KeyShareServerHello extensions:

       struct {
           KeyShareEntry client_shares<0..2^16-1>;
       } KeyShareClientHello;

       struct {
           KeyShareEntry server_share;
       } KeyShareServerHello;

   The client's shares are listed in descending order of client
   preference; the server selects one algorithm and sends its
   corresponding share.

   For a hybrid key exchange, the key_exchange field of a KeyShareEntry
   is the concatenation of the key_exchange field for each of the
   constituent algorithms.  The order of shares in the concatenation
   MUST be the same as the order of algorithms indicated in the
   definition of the NamedGroup.

   For the client's share, the key_exchange value contains the
   concatenation of the pk outputs of the corresponding KEMs' KeyGen
   algorithms if that algorithm corresponds to a KEM or the (EC)DH
   ephemeral key share if that algorithm corresponds to an (EC)DH group.
   For the server's share, the key_exchange value contains the
   concatenation of the ct outputs of the corresponding KEMs' Encaps
   algorithms if that algorithm corresponds to a KEM or the (EC)DH
   ephemeral key share if that algorithm corresponds to an (EC)DH group.

   Section 4.3.8 of [TLS13] requires that "The key_exchange values for
   each KeyShareEntry MUST be generated independently."  In the context
   of this document, the same algorithm may appear in multiple named
   groups; thus, this document relaxes the above requirement to allow
   the same key_exchange value for the same algorithm to be reused in
   multiple KeyShareEntry records sent within the same ClientHello.
   However, key_exchange values for different algorithms MUST be
   generated independently.  Explicitly, if the NamedGroup is the hybrid
   key exchange MyECDHMyPQKEM, the KeyShareEntry.key_exchange values
   MUST be generated in one of the following two ways:

Notes
-----
There is a typo in the section number - 4.2.8 instead of 4.3.8

--------------------------------------
RFC9954 (draft-ietf-tls-hybrid-design)
--------------------------------------
Title               : Hybrid Key Exchange in TLS 1.3
Publication Date    : July 2026
Author(s)           : D. Stebila, S. Fluhrer, S. Gueron
Category            : Informational
Source              : tls (sec)
Stream              : IETF