Hi Mahesh, 

I addressed them. I rephrased to 

If the checks fail, the responder MUST reject the initiator's
improper public key and SHOULD send a Notify payload of type INVALID_SYNTAX
as a response to the request to prevent resource exhaustion or denial 
of service risks.

> Section 2.2, opening sentence:
229 >    Receiving and handling of malformed ML-KEM public keys or ciphertexts
230 >    must follow the input validation described in the Module-Lattice-
231 >    Based KEM standard [FIPS203].
> Why a "must" and not a "MUST"? This sentence sets the scope for the Recipient 
> Tests section and appears intended to be normative. It should use "MUST".

We have a generic must initially, but the normative language later has "MUST" 
for specific test. The intro sentence talks about the general idea. 

I fixed all the nits as well. 

Thank you


-----Original Message-----
From: Mahesh Jethanandani via Datatracker <[email protected]> 
Sent: Friday, June 26, 2026 7:51 PM
To: The IESG <[email protected]>
Cc: [email protected]; [email protected]; 
[email protected]; [email protected]
Subject: [EXTERNAL] Mahesh Jethanandani's Discuss on 
draft-ietf-ipsecme-ikev2-mlkem-07: (with DISCUSS and COMMENT)

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.



Mahesh Jethanandani has entered the following ballot position for
draft-ietf-ipsecme-ikev2-mlkem-07: 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-ipsecme-ikev2-mlkem/



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

I have, but one DISCUSS that I think should be simple to fix.

Section 2.2, Recipient Tests:

229 >    Receiving and handling of malformed ML-KEM public keys or ciphertexts
230 >    must follow the input validation described in the Module-Lattice-
231 >    Based KEM standard [FIPS203].  Responders MUST perform the checks on
232 >    the initiator public key specified in section 7.2 of the Module-
233 >    Lattice-Based KEM standard [FIPS203] before the Encaps(pk) operation.
234 >    If the checks fail, the responder SHOULD reject the initiator's
235 >    improper public key and send a Notify payload of type INVALID_SYNTAX
236 >    as a response to the request to prevent resource exhaustion or denial
237 >    of service risks.

Why a SHOULD and not a MUST?

The first sentence mandates (MUST) that the responder perform the Section 7.2 
FIPS 203 key type checks before calling Encaps(pk). Once those checks have 
failed, there are only two viable paths: (a) reject the key and signal an 
error, or (b) call Encaps(pk) anyway. Path (b) violates FIPS 203 — Encaps(pk) 
is not defined for a key that fails the Section 7.2 type checks — so path (a) 
is the only conformant behavior.
Using SHOULD for path (a) leaves open path (b) without describing the "valid 
reasons in particular circumstances" that RFC 2119 requires when SHOULD is 
used. The document itself gives the reason for rejecting (prevent resource 
exhaustion and DoS) but gives no reason for not rejecting in the first place, 
making the SHOULD unanchored.

The asymmetry with the initiator's ciphertext check heightens my concern. The 
initiator case (lines 241–247) uses MUST throughout: "the initiator MUST reject 
the ciphertext and MUST fail the exchange." Both parties are validating 
untrusted input before a cryptographic operation; the normative level should be 
parallel/similar. The responder's SHOULD should be MUST.


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

Section 2.2, opening sentence:

229 >    Receiving and handling of malformed ML-KEM public keys or ciphertexts
230 >    must follow the input validation described in the Module-Lattice-
231 >    Based KEM standard [FIPS203].

Why a "must" and not a "MUST"? This sentence sets the scope for the Recipient 
Tests section and appears intended to be normative. It should use "MUST".

----------------------------------------------------------------------
NIT
----------------------------------------------------------------------

All comments below are about very minor potential issues that you may choose to 
address in some way - or ignore - as you see fit. Some were flagged by 
automated tools (via https://github.com/larseggert/ietf-reviewtool), so there 
will likely be some false positives. There is no need to let me know what you 
did with these suggestions.

Section 2.1:

210 >    Although, this document focuses on using ML-KEM as the second key

s/Although,/Although/

Section 3, last paragraph (sentence missing terminal period):

345 >    (including traffic selectors), but not the information and data
346 >    encrypted after the CREATE_CHILD_SA (and IKE_FOLLOWUP_KE with ML-
347 >    KEM)

Add a period after "KEM)".

Appendix A:

531 >    ML-KEM-768 and ML-KEM-1024 public keys and ciphertexts, specufically,

s/specufically/specifically/



_______________________________________________
IPsec mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to