[lamps] Mohamed Boucadair's Discuss on draft-ietf-lamps-pq-composite-sigs-15: (with DISCUSS and COMMENT)

Mohamed Boucadair via Datatracker <noreply@ietf.org> Tue, 31 March 2026 09:07 UTC

Return-Path: <noreply@ietf.org>
X-Original-To: spasm@ietf.org
Delivered-To: spasm@mail2.ietf.org
Received: from [10.244.6.44] (unknown [4.156.85.76]) by mail2.ietf.org (Postfix) with ESMTP id AEE1AD3F7915; Tue, 31 Mar 2026 02:07:39 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ietf.org; s=ietf1; t=1774948059; bh=11P2rK4sdWWsQiR5vN9TgruTpqXnpdiY5+EszkLG2lI=; h=From:To:Cc:Subject:Reply-To:Date; b=RFG7Nq0C8IddniHhBm0lWSZnbkGa50Fhm/lqNUOyR1mOAdBP1SPw7WiwQQVPwIWYP 9XWz2zCIh2D40XjMK7BcrcT7l3VDy2vpUdcZXdd4yaUX+zZRihyitPc2JcY5Xbg457 fzpoJRVTM7htfDrIjHEtseqmSEsfVsYutfvNj8N8=
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
From: Mohamed Boucadair via Datatracker <noreply@ietf.org>
To: The IESG <iesg@ietf.org>
X-Test-IDTracker: no
X-IETF-IDTracker: 12.60.0
Auto-Submitted: auto-generated
Precedence: bulk
Message-ID: <177494805963.1623947.10168045227852376086@dt-datatracker-5775bcb475-pnkww>
Date: Tue, 31 Mar 2026 02:07:39 -0700
Message-ID-Hash: INVCIFZD2FS45ZPNN3TLOE5W5EIWKPJF
X-Message-ID-Hash: INVCIFZD2FS45ZPNN3TLOE5W5EIWKPJF
X-MailFrom: noreply@ietf.org
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-spasm.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: draft-ietf-lamps-pq-composite-sigs@ietf.org, housley@vigilsec.com, lamps-chairs@ietf.org, spasm@ietf.org
X-Mailman-Version: 3.3.9rc6
Reply-To: Mohamed Boucadair <mohamed.boucadair@orange.com>
Subject: [lamps] Mohamed Boucadair's Discuss on draft-ietf-lamps-pq-composite-sigs-15: (with DISCUSS and COMMENT)
List-Id: This is the mail list for the LAMPS Working Group <spasm.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/spasm/C1oyS0AOxpO8Z8CR5tv0VroErfw>
List-Archive: <https://mailarchive.ietf.org/arch/browse/spasm>
List-Help: <mailto:spasm-request@ietf.org?subject=help>
List-Owner: <mailto:spasm-owner@ietf.org>
List-Post: <mailto:spasm@ietf.org>
List-Subscribe: <mailto:spasm-join@ietf.org>
List-Unsubscribe: <mailto:spasm-leave@ietf.org>

Mohamed Boucadair has entered the following ballot position for
draft-ietf-lamps-pq-composite-sigs-15: Discuss

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)


Please refer to https://www.ietf.org/about/groups/iesg/statements/handling-ballot-positions/ 
for more information about how to handle DISCUSS and COMMENT positions.


The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-lamps-pq-composite-sigs/



----------------------------------------------------------------------
DISCUSS:
----------------------------------------------------------------------

Hi Mike, John, Massimiliano, Jan, and Scott,

Thank you for the effort put into this specification. The document reads well
... even for an OPS AD :-)

I trust that the test vectors, in particular, were checked by WG participants
other than the authors.

Please find below some comments below. I also flagged some nits and other minor
edits that I will send in a PR for authors convenience.

# ML-DSA is normative for composite ML-DSA

CURRENT:
   Composite ML-DSA is a Post-Quantum / Traditional hybrid signature
   scheme which combines ML-DSA as specified in [FIPS.204] and [RFC9881]

   …

   As this specification uses ML-DSA as a component of all composite
   algorithms, all security considerations from [RFC9881] apply.

Please move RFC9881 from Informative to Normative.

## As I’m there, I’d like to check one related part:

Section 2 says the following:
  This specification assumes a seed-based keygen for ML-DSA.

Maybe I’m misreading this, but is this saying that only the seed mode is
supported? If so, isn’t that a deviating from 9881 where expandedKey is allowed?

# Terminology: I'm adding this as a DISCUSS point as I think this is important
to ensure consistency among specs in this area

Section 2:
   This specification is consistent with the terminology defined in
   [RFC9794].  In addition, the following terminology is used throughout
   this specification:

I interpret this as the terms that follow are not listed in RFC9794 but are an
addition. However, it is not clear to me the rationale followed here. For
example,

## we do have this entry grabbed from RFC9794 with an explicit pointer to that
RFC:

   *COMPOSITE CRYPTOGRAPHIC ELEMENT*: [RFC9794] defines composites as: A
   cryptographic element that incorporates multiple component
   cryptographic elements of the same type in a multi-algorithm scheme.

The citation does not match exactly the entry as defined in 9794:

      A cryptographic element that incorporates multiple component
      cryptographic elements of the same type for use in a multi-
      algorithm scheme, such that the resulting composite cryptographic
      element is exposed as a singular interface of the same type as the
      component cryptographic elements.

## … and this one which is already defined in RFC9794 but repeated here

   *POST-QUANTUM TRADITIONAL (PQ/T) HYBRID SCHEME*: A multi-algorithm
   scheme where at least one component algorithm is a post-quantum
   algorithm and at least one is a traditional algorithm.

## Unless there is a need to deviate from RFC9794, I would suggest to rely on
the terms/definitions in RFC9794 (and make that RFC as normative) and only
define here new terms not listed in RFC9794.

# Given the side-channel implication, any reason why this isn’t a MUST?

CURRENT:
   Note that in step 4 above, both component signature processes are
   invoked, and no indication is given about which one failed.  This
   SHOULD be done in a timing-invariant way to prevent side-channel
   attackers from learning which component algorithm failed.


----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

# Abstract: regional requirement, not an absolute one

OLD:
   These combinations are tailored to meet regulatory
   guidelines.

NEW:
   These combinations are tailored to meet regulatory
   Guidelines in certain regions.

# Backward compatibility

## Usual

CURRENT:
   *APPLICATION BACKWARDS COMPATIBILITY*: The usual definition of
   backwards compatibility, meaning whether an upgraded and non-upgraded
   application can successfully establish communication.

### If this is usual definition, then do we need to have a dedicated entry for
it here?

### I suggest

NEW:
   *APPLICATION BACKWARDS COMPATIBILITY*: A property indicating whether an
   upgraded and non-upgraded application can successfully establish
   communication.

## Section 10.2 has the following:

   The term "application backwards compatibility" is used here to mean
   that existing systems as they are deployed today can interoperate
   with the upgraded systems of the future.

Why the definition is repeated here? is there any difference between the intent
here and the relevant entry in Section 1.1?

Unless there is subtlety there, I suggest to delete that text as it is
redundant with the terminology section.

## I don’t parse the following:

CURRENT:
   *PROTOCOL BACKWARDS COMPATIBILITY*: A property whereby a new feature
   can be added to a protocol without requiring any changes to the
   protocol's specification and only minimal changes to its
   implementations (such as adding new identifiers).

Adding a new feature is a change per se!

### Can we please update this definition to better reflect the intended
property?

### Do we need this term at the first place? This is only mentioned once with
self-contained context.

## Internal inconsistency

Section 1:
   Backwards compatibility in the sense of upgraded systems continuing
   to interoperate with legacy systems is not directly covered in this
   specification, but is the subject of Section 10.2.

I’m having troubles to digest the intent of this sentence as it conveys
conflicting messages (at least for me).

## If the intent is to say that backward compatibility is not ensured then
maybe reword to, e.g.:

NEW:
   Backwards compatibility in the sense of upgraded systems continuing
   to interoperate with legacy systems is not directly covered in this
   specification. Refer to Section 10.2 for more details.

# Notations

Can we please add "->" to the list of notations?

# Section 2.1: Broken reference

CURRENT:
   Given this design of Composite ML-DSA, it is possible to split the
   pre-hashing step out from the signature generation process -- see
   {#impl-cons-external-ph} for further discussion and sample
   algorithms.

# Section 2.1: HashML-DSA

CURRENT:
   Note that while the overall construction of Composite ML-DSA is
   similar to that of HashML-DSA, the ML-DSA component inside the
   composite is "pure" ML-DSA; implementing this specification does not
   require an implementation of HashML-DSA.

Shouldn’t this be more explicit that HashML-DSA is disallowed per the same
rationale as in rfc9881#section-8.3?

# Section 3.1

CURRENT:
   Errors produced by the component KeyGen() routines MUST be forwarded
   on to the calling application.

I don’t understand the use of “forwarded” in this context? Isn’t the API call
internal within a system?

Maybe s/forwarded on/communicated?

# Section 3.1.1: Modified process and implications

CURRENT:
   In cases where it is desirable to have a deterministic KeyGen of one
   or both component keys from a seed, this process MAY be modified to
   expose an interface of Composite-ML-DSA<OID>.KeyGen(seed) such that
   one component algorithm is generated from the seed and the other from
   random, or the input seed is cryptographically expanded to produce
   seeds for both components.  Implementation details and security
   analysis of such a modified key generation process is outside the
   scope of this document.

Shouldn’t this need be highlighted in the SEC or OPS cons section so that
appropriate analysis in done before making use of a modified process?

# Section 4: Table 1

Can we please add a pointer to Section 4 of FIPS.204 to indicate the source of
that table?

# Section 6: Obvious

CURRENT:
   Labels are represented here as ASCII strings, but implementers MUST
   convert them to byte strings using the obvious ASCII conversions
   prior to concatenating them with other byte values as described in
   Section 2.2.

do we need to keep “obvious” here? If it was, then why calling it out :-)

# Section 6: Key sizes

CURRENT:
   For all RSA key types and sizes, the exponent is RECOMMENDED to be
   65537.  Implementations MAY support only 65537 and reject other
   exponent values.  Legacy RSA implementations that use other values
   for the exponent MAY be used within a composite, but need to be
   careful when interoperating with other implementations.

Given the interoperability issues there, I suggest to add relevant operational
considerations under the OPS Cons section to cover at least the following:

* Implems need to expose which sizes they support
* Implems need to offer a configuration knob to control the size.

# Section 10: Operational Considerations

## I suggest to rename “Implementation Considerations” to “Operational
Considerations” as that section is more about operational guidance. This would
be also consistent with the approach in 9881.

## Inherit ML-DSA Operational Considerations

There are important considerations that are inherited by the composite design.
Can we please add a note to increase awareness about considerations listed in
rfc9881#section-8?

## Hidden Operational Consideration

Section 1.3:
   Composite ML-DSA is NOT RECOMMENDED for use in
   applications where it is has not been shown that EUF-CMA is
   acceptable.

This reco is IMO hidden in the introduction part. Given the importance of this
reco for those who will deploy, I suggest we have this more visible as part of
the OPS Considerations section.

Hope this helps.

Cheers,
Med