As I understand, your case "ADDKE1 [A, B], ADDKE2 [A, B], ADDKE3 [A, B]" is not allowed mainly because, from the security view point, such proposal does not enhance security while increases the complexity for both side (to run the same algorithm twice or more).
For such a proposal, as requiring to select select one algorithm in each ADDKE, the responder has to select something like "ADDKE1 [A], ADDKE2 [B], ADDKE3 [A]". However, such an answer is not allowed according to 2.2.1 in RFC 9370. So, a failure will happen. 2.2.1 "The responder performs the negotiation using the standard IKEv2 procedure described in Section 3.3 of [RFC7296]. However, for the ADDKE Transform Types, the responder's choice MUST NOT contain duplicated algorithms (those with an identical Transform ID and attributes), except for the Transform ID of NONE." So, to prepare aproposal, the initiator may need to do as follows: - If the initiator wants the responder to select either A or B, the proposal should be: "ADDKE1 [A, B]". - If the initiator wants the responder to select A and B, the proposal should be: "ADDKE1 [A], ADDKE2 [B] ". - If the initiator wants the responder to select A OR (A and B), the proposal should be: "ADDKE1 [A], ADDKE2 [B, None]". - If the initiator wants the responder to select None OR A OR B OR (A and B), the proposal should be: "ADDKE1 [A, None], ADDKE2 [B, None]". - ... Guilin -----Original Message----- From: lilun (F) <[email protected]> Sent: Friday, 24 April 2026 4:12 pm To: [email protected]; Tobias Brunner <[email protected]> Cc: [email protected] Subject: [IPsec] Re: Triggering discussion on RFC 9370 ADDKE algorithm selection and potential issues Hi Thanks Tobias, and all work group, Thank you for the reply. I think strongSwan already does an excellent job implementing RFC 9370, and your example illustrates the cases we are encountering. Actually but, my main point is whether we could explore a potential specification draft/update/extension to handle these redundant scenarios more gracefully. Reviewing some of our failed test cases, I am wondering if we could relax or clarify the restrictions. In practice, many developers might configure ADDKEs by simply filling them with the exact same list of supported algorithms. For example, an initiator might send: ADDKE1 [A, B], ADDKE2 [A, B], ADDKE3 [A, B] Currently, this redundant configuration leads to negotiation failure. It would be much more robust if the responder could tolerate the redundancy and intelligently select algorithms—for example, selecting A for ADDKE1, B for ADDKE2, and another A for ADDKE3—thus still resulting in a successful hybrid exchange. If there is interest in exploring this in the Work Group for algorithm selection issues and more, I would be very happy to request a presentation slot at IETF 126 to elaborate above content and some deep thinking. Best regards, Lun Li -----Original Message----- From: Tobias Brunner <[email protected]> Sent: April 16, 2026 18:54 To: lilun (F) <[email protected]>; [email protected] Cc: [email protected]; [email protected] Subject: Re: [IPsec] Triggering discussion on RFC 9370 ADDKE algorithm selection and potential issues On 16.04.26 12:18, lilun (F) wrote: > Hi Everyone, > > Following our earlier research in the PQUIP WG regarding PQC migration > in telecom systems, our team have recently been implementing IKEv2 > migration based on RFC 9370. During this process, we encountered some > negotiation failures related to ADDKEs that I would like to bring to > the WG's attention for discussion. > > During our PoC testing, we observed that IKE configuration errors— > specifically, configuring the same algorithm redundantly in ADDKE > payloads during IKE negotiation—frequently lead to negotiation failures. > > According to RFC 9370, Section 2.2.1 (which also references RFC 7296, > Section 2.7), the implementation shall be strictly limited: > > /"the responder MUST select one of the algorithms proposed using this > type... the responder's choice MUST NOT contain duplicated algorithms > (those with an identical Transform ID and attributes), except for the > Transform ID of NONE."/ The important part there is "responder's choice". It's perfectly fine to configure as well as send the same algorithms in ADDKEs as initiator. The responder just has to make sure its proposal selection process does result in a unique algorithm for each ADDKE (except for NONE). > Based on feedback from our testing, some errors may be occurred > frequently in the configuration, and they were negotiation failed. > After troubleshooting, We found that the error was due to the same > algorithm being configured in ADDKEs during IKE in a redundance. For > example, placing ML-KEM-768 in multiple ADDKEs > > I would like to start a discussion on whether these strict in 2.2.1 > limitations for ADDKEs could have consideration for future releases > (for instance, in PQC-specific profiles like ML-KEM). Considering the > real- world possibility of configuration redundancies. > > Interestingly, also as part of our research verification, we found > that some open-source implementations (e.g., strongSwan) handle ADDKE > differently. Instead of strict responder selection, the algorithm > negotiation is often simplified to finding the intersection of > multiple ADDKEs between peers. Yes, we have simplified the process a bit in so far that we only check individual ADDKEs (sequentially) and avoid duplicates overall. So we currently can't handle situations like ADDKE1[A, B], ADDKE2[B, C] with a local config of ADDKE1[B, A], ADDKE2[B, A]. We'd select ADDKE1[B] (preferring the local config and order by default) but that prevents selecting it for ADDKE2, so no valid proposal results. However, ADDKE1[A], ADDKE2[B] would technically be acceptable by both peers (in this particular example disabling prefer_configured_proposals would make it work). Regards, Tobias _______________________________________________ IPsec mailing list -- [email protected] To unsubscribe send an email to [email protected] _______________________________________________ IPsec mailing list -- [email protected] To unsubscribe send an email to [email protected]
