<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" submissionType="IETF" ipr="trust200902" docName="draft-ietf-ipsecme-ikev2-auth-announce-10" number="9593" updates="" obsoletes="" consensus="true" tocInclude="true" symRefs="true" sortRefs="true" xml:lang="en" prepTime="2024-07-23T10:03:26" indexInclude="true" scripts="Common,Latin" tocDepth="3">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-ipsecme-ikev2-auth-announce-10" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9593" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Announcing Supported Auth Methods">Announcing Supported Authentication Methods in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
    <seriesInfo name="RFC" value="9593" stream="IETF"/>
    <author initials="V." surname="Smyslov" fullname="Valery Smyslov">
      <organization showOnFrontPage="true">ELVIS-PLUS</organization>
      <address>
        <postal>
          <street>PO Box 81</street>
          <city>Moscow (Zelenograd)</city>
          <code>124460</code>
          <country>Russian Federation</country>
        </postal>
        <phone>+7 495 276 0211</phone>
        <email>svan@elvis.ru</email>
      </address>
    </author>
    <date month="07" year="2024"/>
    <area>SEC</area>
    <workgroup>ipsecme</workgroup>
    <keyword>signature</keyword>
    <keyword>digital signature</keyword>
    <keyword>credentials</keyword>
    <keyword>intermediate exchange</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1"> This specification defines a mechanism that allows implementations
      of the Internet Key Exchange Protocol Version 2 (IKEv2) to indicate the list of
      supported authentication methods to their peers while establishing IKEv2
      Security Associations (SAs).  This mechanism improves
   interoperability when IKEv2 partners are configured with multiple
   credentials of different types for authenticating each other.
      </t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9593" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology-and-notation">Terminology and Notation</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-protocol-details">Protocol Details</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-exchanges">Exchanges</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-supported_auth_methods-noti">SUPPORTED_AUTH_METHODS Notify Message Type</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.2.2">
                  <li pn="section-toc.1-1.3.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.1.1"><xref derivedContent="3.2.1" format="counter" sectionFormat="of" target="section-3.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-2-octet-announcement">2-Octet Announcement</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.2.1"><xref derivedContent="3.2.2" format="counter" sectionFormat="of" target="section-3.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-3-octet-announcement">3-Octet Announcement</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.3.1"><xref derivedContent="3.2.3" format="counter" sectionFormat="of" target="section-3.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-multi-octet-announcement">Multi-octet Announcement</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-interaction-with-ikev2-exte">Interaction with IKEv2 Extensions concerning Authentication</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.7.2">
              <li pn="section-toc.1-1.7.2.1">
                <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.7.2.2">
                <t indent="0" pn="section-toc.1-1.7.2.2.1"><xref derivedContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples-of-announcing-supp">Examples of Announcing Supported Authentication Methods</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="A.1" format="counter" sectionFormat="of" target="section-appendix.a.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-no-need-to-use-the-ike_inte">No Need to Use the IKE_INTERMEDIATE Exchange</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="A.2" format="counter" sectionFormat="of" target="section-appendix.a.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-with-use-of-the-ike_interme">With Use of the IKE_INTERMEDIATE Exchange</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="intro" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1"> The Internet Key Exchange Protocol Version 2 (IKEv2), defined in <xref target="RFC7296" format="default" sectionFormat="of" derivedContent="RFC7296"/>, 
            performs authenticated key exchange in IPsec. IKEv2, unlike its predecessor IKEv1, 
            defined in <xref target="RFC2409" format="default" sectionFormat="of" derivedContent="RFC2409"/>, doesn't include a mechanism to negotiate an authentication
            method that the peers would use to authenticate each other. It is assumed that each peer selects whichever 
            authentication method it thinks is appropriate, depending on authentication credentials it has.
      </t>
      <t indent="0" pn="section-1-2"> This approach generally works well when there is no ambiguity in selecting authentication credentials.
            SA establishment failure between peers may occur when there are several credentials of different types configured on one peer, 
            while only some of them are supported on the other peer. Another problem situation is when a single 
            credential may be used to produce different types of authentication tokens (e.g., signatures of different formats).

   Since IKEv2 requires that each peer use exactly one authentication method,
   and it doesn't provide means for peers to indicate to the other side
   which authentication methods they support, the peer that supports a
   wider range of authentication methods (or authentication token
   formats) could improperly select a method (or format) that is not
   supported by the other side.
      </t>
      <t indent="0" pn="section-1-3"> Emerging post-quantum signature algorithms may bring additional challenges for implementations,
            especially if so-called hybrid schemes are used (e.g., see <xref target="I-D.ietf-lamps-pq-composite-sigs" format="default" sectionFormat="of" derivedContent="COMPOSITE-SIGS"/>).
      </t>
      <t indent="0" pn="section-1-4">
            This specification defines an extension to the IKEv2 protocol that allows peers to 
            announce their supported authentication methods, thus decreasing risks of SA establishment
            failure in situations when there are several ways for the peers to authenticate themselves.
      </t>
    </section>
    <section anchor="mustshouldmay" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-terminology-and-notation">Terminology and Notation</name>
      <t indent="0" pn="section-2-1">
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
    "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be
    interpreted as described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
      </t>
    </section>
    <section anchor="protocol" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-protocol-details">Protocol Details</name>
      <t indent="0" pn="section-3-1">When establishing an IKE SA, each party may send to its peer a list of the authentication methods it supports and is configured to use.
            For this purpose, this specification introduces a new Notify Message Type SUPPORTED_AUTH_METHODS.
            The Notify payload with this Notify Message Type is utilized to convey the supported
            authentication methods of the party sending it. The sending party may 
            additionally specify that some of the authentication methods are only for use with 
            the particular trust anchors. The receiving party may take this information into consideration 
            when selecting an algorithm for its authentication (i.e., the algorithm used for calculation of the AUTH payload) 
            if several alternatives are available.
            To simplify the receiver's task of linking the announced authentication methods with the trust anchors,
            the protocol ensures that the SUPPORTED_AUTH_METHODS notification is always co-located
            with the CERTREQ payload in the same message.
      </t>
      <section anchor="exchange" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-exchanges">Exchanges</name>
        <t indent="0" pn="section-3.1-1"> The initiator starts the IKE_SA_INIT exchange as usual. If the responder is willing to use this extension, it includes a new notification SUPPORTED_AUTH_METHODS
                in the IKE_SA_INIT response message. This notification contains a list of authentication methods supported by the responder, ordered by their preference.
        </t>
        <figure anchor="ikesainit" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-the-ike_sa_init-exchange">The IKE_SA_INIT Exchange</name>
          <artwork align="left" pn="section-3.1-2.1">
Initiator                              Responder
-----------                            -----------
HDR, SAi1, KEi, Ni --&gt;
                                   &lt;-- HDR, SAr1, KEr, Nr, [CERTREQ,]
                                     [N(SUPPORTED_AUTH_METHODS)(...)]
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-3"> If the initiator doesn't support this extension, it ignores the received notification as an unknown status notify.
        </t>
        <t indent="0" pn="section-3.1-4"> Regardless of whether the notification is received, if the initiator supports and  is willing to use this extension, 
                it includes the SUPPORTED_AUTH_METHODS notification in the IKE_AUTH request message, 
                with a list of authentication methods supported by the initiator, ordered by their preference.
        </t>
        <figure anchor="ikeauth" align="left" suppress-title="false" pn="figure-2">
          <name slugifiedName="name-the-ike_auth-exchange">The IKE_AUTH Exchange</name>
          <artwork align="left" pn="section-3.1-5.1">
Initiator                              Responder
-----------                            -----------
HDR, SK {IDi, [CERT,] [CERTREQ,] 
[IDr,] AUTH, SAi2, TSi, TSr,
[N(SUPPORTED_AUTH_METHODS)(...)] }  --&gt;
                                   &lt;-- HDR, SK {IDr, [CERT,]
                                            AUTH, SAr2, TSi, TSr }
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-6">
  Because the responder sends the SUPPORTED_AUTH_METHODS notification in
  the IKE_SA_INIT exchange, it must take into account that the 
  response message could grow so much that the IP fragmentation might take place.
        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1-7">
          <li pn="section-3.1-7.1">
            <t indent="0" pn="section-3.1-7.1.1">the SUPPORTED_AUTH_METHODS notification to be included is so large, that the responder suspects
                    that IP fragmentation of the resulting IKE_SA_INIT response message may happen;</t>
          </li>
          <li pn="section-3.1-7.2">
            <t indent="0" pn="section-3.1-7.2.1">both peers support the IKE_INTERMEDIATE exchange, defined in <xref target="RFC9242" format="default" sectionFormat="of" derivedContent="RFC9242"/> (i.e.,
                    the responder has received and is going to send the INTERMEDIATE_EXCHANGE_SUPPORTED notification);</t>
          </li>
        </ul>
        <t indent="0" pn="section-3.1-8">

                then the responder <bcp14>MAY</bcp14> choose not to send an actual list of the supported authentication
                methods in the IKE_SA_INIT exchange and instead ask the initiator to start the IKE_INTERMEDIATE
                exchange for the list to be sent in. This would allow using IKE fragmentation <xref target="RFC7383" format="default" sectionFormat="of" derivedContent="RFC7383"/> for long messages 
                (which cannot be used in the IKE_SA_INIT exchange), thus avoiding IP fragmentation. 
                In this case, the responder includes a SUPPORTED_AUTH_METHODS notification containing no data in the IKE_SA_INIT response.
        </t>
        <t indent="0" pn="section-3.1-9"> If the initiator receives the empty SUPPORTED_AUTH_METHODS notification in the IKE_SA_INIT exchange,
                it means that the responder is going to send the list of the supported authentication methods in the 
                IKE_INTERMEDIATE exchange. If this exchange is to be initiated anyway for some other reason, then 
                the responder <bcp14>MAY</bcp14> use it to send the SUPPORTED_AUTH_METHODS notification. Otherwise, the initiator 
                <bcp14>MAY</bcp14> start the IKE_INTERMEDIATE exchange for this sole purpose by sending an empty IKE_INTERMEDIATE request.
                The initiator <bcp14>MAY</bcp14> also indicate its identity (and possibly the perceived responder's identity too)
                by including the IDi payload (possibly along with the IDr payload) in the IKE_INTERMEDIATE request. 
                This information could help the responder to send back only those authentication methods 
                that are configured to be used for authentication of this particular initiator. 
                If these payloads are sent, they <bcp14>MUST</bcp14> be identical to the IDi/IDr payloads sent later in the IKE_AUTH request.
        </t>
        <t indent="0" pn="section-3.1-10">If the responder has sent any CERTREQ payload in the IKE_SA_INIT, then it <bcp14>SHOULD</bcp14> resend the same 
                payload(s) in the IKE_INTERMEDIATE response containing the SUPPORTED_AUTH_METHODS notification
                if any of the included Announcements has a non-zero Cert Link field (see Sections <xref target="ann-3" format="counter" sectionFormat="of" derivedContent="3.2.2"/> and <xref target="ann-m" format="counter" sectionFormat="of" derivedContent="3.2.3"/>).
                This requirement allows peers to have a list of Announcements and a list of CAs in the same message,
                which simplifies their linking. Note that this requirement is always fulfilled for the IKE_SA_INIT and IKE_AUTH exchanges.
                However, if for any reason the responder doesn't resend CERTREQ payload(s) in the IKE_INTERMEDIATE exchange, then
                the initiator <bcp14>MUST NOT</bcp14> abort negotiation. Instead, the initiator <bcp14>MAY</bcp14> either link the Announcements to the CAs received in the IKE_SA_INIT response,
                or it <bcp14>MAY</bcp14> ignore the Announcements containing links to CAs.
        </t>
        <t indent="0" pn="section-3.1-11">If multiple IKE_INTERMEDIATE exchanges take place during IKE SA establishments, it is <bcp14>RECOMMENDED</bcp14> that the responder
                use the last IKE_INTERMEDIATE exchange (the one just before IKE_AUTH) to send the list of supported authentication methods.
                However, it is not always possible for the responder to know how many IKE_INTERMEDIATE exchanges
                the initiator will use. In this case the responder <bcp14>MAY</bcp14> send the list in any IKE_INTERMEDIATE exchange.
                If the initiator sends IDi/IDr in an IKE_INTERMEDIATE request, then it is <bcp14>RECOMMENDED</bcp14> that the responder
                sends back the list of authentication methods in the response.
        </t>
        <figure anchor="ikeint" align="left" suppress-title="false" pn="figure-3">
          <name slugifiedName="name-using-the-ike_intermediate-">Using the IKE_INTERMEDIATE Exchange for Sending Authentication Methods</name>
          <artwork align="left" pn="section-3.1-12.1">
Initiator                              Responder
-----------                            -----------
HDR, SAi1, KEi, Ni --&gt;
                                   &lt;-- HDR, SAr1, KEr, Nr, [CERTREQ,]
                                       [N(SUPPORTED_AUTH_METHODS)()]

HDR, SK {..., [IDi, [IDr,]]}  --&gt;
                                   &lt;-- HDR, SK {..., [CERTREQ,]
                                   [N(SUPPORTED_AUTH_METHODS)(...)] }

HDR, SK {IDi, [CERT,] [CERTREQ,] 
[IDr,] AUTH, SAi2, TSi, TSr,
[N(SUPPORTED_AUTH_METHODS)(...)] }  --&gt;
                                   &lt;-- HDR, SK {IDr, [CERT,]
                                            AUTH, SAr2, TSi, TSr }
</artwork>
        </figure>
        <t indent="0" pn="section-3.1-13"> Note that sending the SUPPORTED_AUTH_METHODS notification and using information obtained from it 
                are optional for both the initiator and the responder. If multiple SUPPORTED_AUTH_METHODS notifications are included 
                in a message, all their announcements form a single ordered list, unless overridden by other extension 
                (see <xref target="interaction" format="default" sectionFormat="of" derivedContent="Section 4"/>).
        </t>
      </section>
      <section anchor="format" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-supported_auth_methods-noti">SUPPORTED_AUTH_METHODS Notify Message Type</name>
        <t indent="0" pn="section-3.2-1"> The format of the SUPPORTED_AUTH_METHODS Notify payload is shown below.

        </t>
        <figure anchor="notify" align="left" suppress-title="false" pn="figure-4">
          <name slugifiedName="name-supported_auth_methods-notif">SUPPORTED_AUTH_METHODS Notify Payload Format</name>
          <artwork align="left" pn="section-3.2-2.1">
                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Payload  |C|  RESERVED   |         Payload Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Protocol ID  |   SPI Size    |      Notify Message Type      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~          List of Supported Auth Methods Announcements         ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
        </figure>
        <t indent="0" pn="section-3.2-3">

               The Notify payload format is defined in <xref target="RFC7296" section="3.10" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7296#section-3.10" derivedContent="RFC7296"/>.
               When a Notify payload of type SUPPORTED_AUTH_METHODS is sent, the
               Protocol ID field is set to 0, the SPI Size is set to 0 (meaning there is no SPI field), 
               and the Notify Message Type is set to 16443.
        </t>
        <t indent="0" pn="section-3.2-4"> Notification data contains the list of supported authentication methods announcements. 
               Each individual announcement is a variable-size data blob whose format depends
               on the announced authentication method. The blob always starts with an octet containing the length of the blob
               followed by an octet containing the authentication method. Authentication methods are represented
               as values from the "IKEv2 Authentication Method" registry defined in <xref target="IKEV2-IANA" format="default" sectionFormat="of" derivedContent="IKEV2-IANA"/>.
               The meaning of the remaining octets of the blob, if any, depends on the authentication method. 
               Note that, for the currently defined authentication methods, the length octet
               fully defines both the format and the semantics of the blob.
        </t>
        <t indent="0" pn="section-3.2-5"> If more authentication methods are defined in the future, the corresponding documents
               must describe the semantics of the announcements for these methods. Implementations
               <bcp14>MUST</bcp14> ignore announcements whose semantics they don't understand.
        </t>
        <section anchor="ann-2" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.1">
          <name slugifiedName="name-2-octet-announcement">2-Octet Announcement</name>
          <t indent="0" pn="section-3.2.1-1"> If the announcement contains an authentication method that is not concerned
                   with public key cryptography, then the following format is used.
    
          </t>
          <figure anchor="authmethod1" align="left" suppress-title="false" pn="figure-5">
            <name slugifiedName="name-2-octet-announcement-format">2-Octet Announcement Format</name>
            <artwork align="left" pn="section-3.2.1-2.1">
                     1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Length (=2)  |  Auth Method  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
          </figure>
          <dl spacing="normal" indent="3" newline="false" pn="section-3.2.1-3">
            <dt pn="section-3.2.1-3.1">Length:</dt>
            <dd pn="section-3.2.1-3.2">Length of the blob in octets; must be 2 for this case.</dd>
            <dt pn="section-3.2.1-3.3">Auth Method:</dt>
            <dd pn="section-3.2.1-3.4">Announced authentication method.</dd>
          </dl>
          <t indent="0" pn="section-3.2.1-4">

                    This format is applicable for the authentication methods "Shared Key Message Integrity Code" (2) and "NULL Authentication" (13).
                    Note that the authentication method "Generic Secure Password Authentication Method" (12) would also
                    fall in this category; however, it is negotiated separately (see <xref target="RFC6467" format="default" sectionFormat="of" derivedContent="RFC6467"/>), and
                    for this reason there is no point to announce it via this mechanism. See also <xref target="interaction" format="default" sectionFormat="of" derivedContent="Section 4"/>.
          </t>
        </section>
        <section anchor="ann-3" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.2">
          <name slugifiedName="name-3-octet-announcement">3-Octet Announcement</name>
          <t indent="0" pn="section-3.2.2-1"> If the announcement contains an authentication method that is concerned
                    with public key cryptography, then the following format is used. This format 
                    allows linking the announcement with a particular trust anchor from the 
                    Certificate Request payload.
    
          </t>
          <figure anchor="authmethod2" align="left" suppress-title="false" pn="figure-6">
            <name slugifiedName="name-3-octet-announcement-format">3-Octet Announcement Format</name>
            <artwork align="left" pn="section-3.2.2-2.1">
                     1                   2
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Length (=3)  |  Auth Method  |   Cert Link   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
          </figure>
          <dl spacing="normal" indent="3" newline="false" pn="section-3.2.2-3">
            <dt pn="section-3.2.2-3.1">Length:</dt>
            <dd pn="section-3.2.2-3.2">Length of the blob in octets; must be 3 for this case.</dd>
            <dt pn="section-3.2.2-3.3">Auth Method:</dt>
            <dd pn="section-3.2.2-3.4">Announced authentication method.</dd>
            <dt pn="section-3.2.2-3.5">Cert Link:</dt>
            <dd pn="section-3.2.2-3.6">Links this announcement with a particular CA.</dd>
          </dl>
          <t indent="0" pn="section-3.2.2-4">

                    If the Cert Link field contains a non-zero value N, it means that the announced authentication method is intended to be used 
                    only with the N-th trust anchor (CA certificate) from the Certificate Request payload(s) sent by this peer. If it is zero,
                    then this authentication method may be used with any CA.
                    If multiple CERTREQ payloads were sent, the CAs from all of them are treated as a single list for the purpose of the linking.
                    If no Certificate Request payload were received, the content of this field <bcp14>MUST</bcp14> be ignored and treated as zero.
          </t>
          <t indent="0" pn="section-3.2.2-5"> This format is applicable for the authentication methods "RSA Digital Signature" (1),
                    "DSS Digital Signature" (3), "ECDSA with SHA-256 on the P-256 curve" (9), 
                    "ECDSA with SHA-384 on the P-384 curve" (10) and "ECDSA with SHA-512 on the P-521 curve" (11).
                    Note, however, that these authentication methods are currently superseded by 
                    the "Digital Signature" (14) authentication method, which has a different announcement format,
                    described below.
          </t>
        </section>
        <section anchor="ann-m" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.3">
          <name slugifiedName="name-multi-octet-announcement">Multi-octet Announcement</name>
          <t indent="0" pn="section-3.2.3-1"> The following format is currently used only with the "Digital Signature" (14) authentication method.

          </t>
          <figure anchor="authmethod3" align="left" suppress-title="false" pn="figure-7">
            <name slugifiedName="name-multi-octet-announcement-fo">Multi-octet Announcement Format</name>
            <artwork align="left" pn="section-3.2.3-2.1">
                     1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Length (&gt;3)  |  Auth Method  |   Cert Link   |               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               +
|                                                               |
~                      AlgorithmIdentifier                      ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
          </figure>
          <dl spacing="normal" indent="3" newline="false" pn="section-3.2.3-3">
            <dt pn="section-3.2.3-3.1">Length:</dt>
            <dd pn="section-3.2.3-3.2">Length of the blob in octets; must be greater than 3 for this case.</dd>
            <dt pn="section-3.2.3-3.3">Auth Method:</dt>
            <dd pn="section-3.2.3-3.4">Announced authentication method. At the time of writing this document, only value 14 ("Digital Signature") is allowed.</dd>
            <dt pn="section-3.2.3-3.5">Cert Link:</dt>
            <dd pn="section-3.2.3-3.6">Links this announcement with a particular CA; see <xref target="ann-3" format="default" sectionFormat="of" derivedContent="Section 3.2.2"/> for details.</dd>
            <dt pn="section-3.2.3-3.7">AlgorithmIdentifier:</dt>
            <dd pn="section-3.2.3-3.8">The variable-length ASN.1 object that is encoded using Distinguished Encoding Rules (DER) <xref target="X.690" format="default" sectionFormat="of" derivedContent="X.690"/> and identifies the signature algorithm (see <xref target="RFC5280" section="4.1.1.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc5280#section-4.1.1.2" derivedContent="RFC5280"/>).
              </dd>
          </dl>
          <t indent="0" pn="section-3.2.3-4">
                    The "Digital Signature" authentication method, defined in <xref target="RFC7427" format="default" sectionFormat="of" derivedContent="RFC7427"/>, 
                    supersedes previously defined signature authentication methods. In this case,
                    the real authentication algorithm is identified via AlgorithmIdentifier ASN.1 object.
                    <xref target="RFC7427" section="A" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7427#appendix-A" derivedContent="RFC7427"/> contains examples of commonly used ASN.1 objects.
          </t>
        </section>
      </section>
    </section>
    <section anchor="interaction" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-interaction-with-ikev2-exte">Interaction with IKEv2 Extensions concerning Authentication</name>
      <t indent="0" pn="section-4-1"> Generally in IKEv2 each party independently determines the way it authenticates itself to the peer.
          In other words, authentication methods selected by the peers need not be the same.
          However, some IKEv2 extensions break this rule. 
      </t>
      <t indent="0" pn="section-4-2"> The prominent example is "Secure Password Framework for Internet Key Exchange Version 2" <xref target="RFC6467" format="default" sectionFormat="of" derivedContent="RFC6467"/>, 
          which defines a framework for using secure password authentication in IKEv2. 
          With this framework, peers negotiate using one of the secure password methods in the IKE_SA_INIT exchange -- 
          the initiator sends a list of supported methods in the request, and the responder picks one of them and sends it back 
          in the response.
      </t>
      <t indent="0" pn="section-4-3"> If peers negotiate secure password authentication, then the selected method is used by both initiator and responder,
          and no other authentication methods are involved. For this reason, there is no point to announce 
          supported authentication methods in this case. Thus, if the peers choose to go with secure password authentication,
          they <bcp14>MUST NOT</bcp14> send the SUPPORTED_AUTH_METHODS notification.
      </t>
      <t indent="0" pn="section-4-4">In the situation when peers are going to use Multiple Authentication Exchanges <xref target="RFC4739" format="default" sectionFormat="of" derivedContent="RFC4739"/>,
          they <bcp14>MAY</bcp14> include multiple SUPPORTED_AUTH_METHODS notifications (instead of one), each containing authentication methods
          appropriate for each authentication round. The notifications are included in the order 
          of the preference of performing authentication rounds.
      </t>
    </section>
    <section anchor="iana" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-5-1">This document defines a new type in the "IKEv2 Notify Message Status Types" registry:</t>
      <table anchor="notify_msg_status_type" align="center" pn="table-1">
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1">Value</th>
            <th align="left" colspan="1" rowspan="1">Notify Message Status Type</th>
            <th align="left" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">16443</td>
            <td align="left" colspan="1" rowspan="1">SUPPORTED_AUTH_METHODS</td>
            <td align="left" colspan="1" rowspan="1">RFC 9593</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="sec" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-6-1"> Security considerations for the IKEv2 protocol are discussed in <xref target="RFC7296" format="default" sectionFormat="of" derivedContent="RFC7296"/>. 
            Security properties of different authentication methods vary.
            Refer to corresponding documents, listed in the "IKEv2 Authentication Method" registry on <xref target="IKEV2-IANA" format="default" sectionFormat="of" derivedContent="IKEV2-IANA"/> for discussion 
            of security properties of each authentication method.
      </t>
      <t indent="0" pn="section-6-2"> Announcing authentication methods gives an eavesdropper additional information about peers' capabilities. 
            If a peer advertises "NULL Authentication" along with other methods, then an active on-path attacker can encourage peers 
            to use NULL authentication by removing all other announcements. Note that this is not a real "downgrade" attack, 
            since authentication methods in IKEv2 are not negotiated, and in this case NULL authentication should be allowed by local security policy. 
      </t>
      <t indent="0" pn="section-6-3"> Similarly, if an on-path attacker can break some of the announced authentication methods online, 
            then the attacker can encourage peers to use one of these weaker methods 
            by removing all other announcements, and if this succeeds, then perform a person-in-the-middle attack.
      </t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-lamps-pq-composite-sigs" to="COMPOSITE-SIGS"/>
    <references pn="section-7">
      <name slugifiedName="name-references">References</name>
      <references pn="section-7.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IKEV2-IANA" target="https://www.iana.org/assignments/ikev2-parameters/" quoteTitle="true" derivedAnchor="IKEV2-IANA">
          <front>
            <title>Internet Key Exchange Version 2 (IKEv2) Parameters</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC5280" target="https://www.rfc-editor.org/info/rfc5280" quoteTitle="true" derivedAnchor="RFC5280">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t indent="0">This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="RFC7296" target="https://www.rfc-editor.org/info/rfc7296" quoteTitle="true" derivedAnchor="RFC7296">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="C. Kaufman" initials="C." surname="Kaufman"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="Y. Nir" initials="Y." surname="Nir"/>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="October" year="2014"/>
            <abstract>
              <t indent="0">This document describes version 2 of the Internet Key Exchange (IKE) protocol. IKE is a component of IPsec used for performing mutual authentication and establishing and maintaining Security Associations (SAs). This document obsoletes RFC 5996, and includes all of the errata for it. It advances IKEv2 to be an Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="79"/>
          <seriesInfo name="RFC" value="7296"/>
          <seriesInfo name="DOI" value="10.17487/RFC7296"/>
        </reference>
        <reference anchor="RFC7427" target="https://www.rfc-editor.org/info/rfc7427" quoteTitle="true" derivedAnchor="RFC7427">
          <front>
            <title>Signature Authentication in the Internet Key Exchange Version 2 (IKEv2)</title>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <author fullname="J. Snyder" initials="J." surname="Snyder"/>
            <date month="January" year="2015"/>
            <abstract>
              <t indent="0">The Internet Key Exchange Version 2 (IKEv2) protocol has limited support for the Elliptic Curve Digital Signature Algorithm (ECDSA). The current version only includes support for three Elliptic Curve groups, and there is a fixed hash algorithm tied to each group. This document generalizes IKEv2 signature support to allow any signature method supported by PKIX and also adds signature hash algorithm negotiation. This is a generic mechanism and is not limited to ECDSA; it can also be used with other signature algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7427"/>
          <seriesInfo name="DOI" value="10.17487/RFC7427"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC9242" target="https://www.rfc-editor.org/info/rfc9242" quoteTitle="true" derivedAnchor="RFC9242">
          <front>
            <title>Intermediate Exchange in the Internet Key Exchange Protocol Version 2 (IKEv2)</title>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="May" year="2022"/>
            <abstract>
              <t indent="0">This document defines a new exchange, called "Intermediate Exchange", for the Internet Key Exchange Protocol Version 2 (IKEv2). This exchange can be used for transferring large amounts of data in the process of IKEv2 Security Association (SA) establishment. An example of the need to do this is using key exchange methods resistant to Quantum Computers (QCs) for IKE SA establishment. The Intermediate Exchange makes it possible to use the existing IKE fragmentation mechanism (which cannot be used in the initial IKEv2 exchange), helping to avoid IP fragmentation of large IKE messages if they need to be sent before IKEv2 SA is established.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9242"/>
          <seriesInfo name="DOI" value="10.17487/RFC9242"/>
        </reference>
        <reference anchor="X.690" quoteTitle="true" derivedAnchor="X.690">
          <front>
            <title>Information Technology - ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization showOnFrontPage="true">ITU-T</organization>
            </author>
            <date month="February" year="2021"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8825-1:2021 (E)"/>
          <seriesInfo name="ITU-T Recommendation" value="X.690"/>
        </reference>
      </references>
      <references pn="section-7.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-lamps-pq-composite-sigs" target="https://datatracker.ietf.org/doc/html/draft-ietf-lamps-pq-composite-sigs-01" quoteTitle="true" derivedAnchor="COMPOSITE-SIGS">
          <front>
            <title>Composite Signatures For Use In Internet PKI</title>
            <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
              <organization showOnFrontPage="true">Entrust Limited</organization>
            </author>
            <author initials="J." surname="Gray" fullname="John Gray">
              <organization showOnFrontPage="true">Entrust Limited</organization>
            </author>
            <author initials="M." surname="Pala" fullname="Massimiliano Pala">
              <organization showOnFrontPage="true">CableLabs</organization>
            </author>
            <author initials="J." surname="Klaussner" fullname="Jan Klaussner">
              <organization showOnFrontPage="true">D-Trust GmbH</organization>
            </author>
            <date month="May" day="24" year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-pq-composite-sigs-01"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC2409" target="https://www.rfc-editor.org/info/rfc2409" quoteTitle="true" derivedAnchor="RFC2409">
          <front>
            <title>The Internet Key Exchange (IKE)</title>
            <author fullname="D. Harkins" initials="D." surname="Harkins"/>
            <author fullname="D. Carrel" initials="D." surname="Carrel"/>
            <date month="November" year="1998"/>
            <abstract>
              <t indent="0">This memo describes a hybrid protocol. The purpose is to negotiate, and provide authenticated keying material for, security associations in a protected manner. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2409"/>
          <seriesInfo name="DOI" value="10.17487/RFC2409"/>
        </reference>
        <reference anchor="RFC4739" target="https://www.rfc-editor.org/info/rfc4739" quoteTitle="true" derivedAnchor="RFC4739">
          <front>
            <title>Multiple Authentication Exchanges in the Internet Key Exchange (IKEv2) Protocol</title>
            <author fullname="P. Eronen" initials="P." surname="Eronen"/>
            <author fullname="J. Korhonen" initials="J." surname="Korhonen"/>
            <date month="November" year="2006"/>
            <abstract>
              <t indent="0">The Internet Key Exchange (IKEv2) protocol supports several mechanisms for authenticating the parties, including signatures with public-key certificates, shared secrets, and Extensible Authentication Protocol (EAP) methods. Currently, each endpoint uses only one of these mechanisms to authenticate itself. This document specifies an extension to IKEv2 that allows the use of multiple authentication exchanges, using either different mechanisms or the same mechanism. This extension allows, for instance, performing certificate-based authentication of the client host followed by an EAP authentication of the user. When backend authentication servers are used, they can belong to different administrative domains, such as the network access provider and the service provider. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4739"/>
          <seriesInfo name="DOI" value="10.17487/RFC4739"/>
        </reference>
        <reference anchor="RFC6467" target="https://www.rfc-editor.org/info/rfc6467" quoteTitle="true" derivedAnchor="RFC6467">
          <front>
            <title>Secure Password Framework for Internet Key Exchange Version 2 (IKEv2)</title>
            <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
            <date month="December" year="2011"/>
            <abstract>
              <t indent="0">This document defines a generic way for Internet Key Exchange version 2 (IKEv2) to use any of the symmetric secure password authentication methods. Multiple methods are already specified in other documents, and this document does not add any new one. This document specifies a way to agree on which method is to be used in the current connection. This document also provides a common way to transmit, between peers, payloads that are specific to secure password authentication methods.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6467"/>
          <seriesInfo name="DOI" value="10.17487/RFC6467"/>
        </reference>
        <reference anchor="RFC7383" target="https://www.rfc-editor.org/info/rfc7383" quoteTitle="true" derivedAnchor="RFC7383">
          <front>
            <title>Internet Key Exchange Protocol Version 2 (IKEv2) Message Fragmentation</title>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="November" year="2014"/>
            <abstract>
              <t indent="0">This document describes a way to avoid IP fragmentation of large Internet Key Exchange Protocol version 2 (IKEv2) messages. This allows IKEv2 messages to traverse network devices that do not allow IP fragments to pass through.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7383"/>
          <seriesInfo name="DOI" value="10.17487/RFC7383"/>
        </reference>
      </references>
    </references>
    <section anchor="examples" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-examples-of-announcing-supp">Examples of Announcing Supported Authentication Methods</name>
      <t indent="0" pn="section-appendix.a-1"> This appendix shows some examples of announcing authentication methods. 
          This appendix is purely informative; if it disagrees with the body of this document, the other text is considered correct.
          Note that some payloads that are not relevant to this specification may be omitted for brevity.
      </t>
      <section anchor="no_intermediate_example" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.1">
        <name slugifiedName="name-no-need-to-use-the-ike_inte">No Need to Use the IKE_INTERMEDIATE Exchange</name>
        <t indent="0" pn="section-appendix.a.1-1"> This example illustrates the situation when the SUPPORTED_AUTH_METHODS Notify payload fits into the IKE_SA_INIT 
            message, and thus the IKE_INTERMEDIATE exchange is not needed. In this scenario, the responder 
            announces that it supports the "Shared Key Message Integrity Code" and the "NULL Authentication"
            authentication methods. The initiator informs the responder that it supports 
            only the "Shared Key Message Integrity Code" authentication method. 

        </t>
        <artwork align="left" pn="section-appendix.a.1-2">
Initiator                              Responder
-----------                            -----------
                     IKE_SA_INIT
HDR, SAi1, KEi, Ni --&gt;
                                   &lt;-- HDR, SAr1, KEr, Nr, 
                                       N(SUPPORTED_AUTH_METHODS(
                                       PSK, NULL))

                      IKE_AUTH
HDR, SK {IDi, 
AUTH, SAi2, TSi, TSr,
N(SUPPORTED_AUTH_METHODS(PSK))}  --&gt;
                                   &lt;-- HDR, SK {IDr,
                                       AUTH, SAr2, TSi, TSr}
</artwork>
      </section>
      <section anchor="intermediate_example" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a.2">
        <name slugifiedName="name-with-use-of-the-ike_interme">With Use of the IKE_INTERMEDIATE Exchange</name>
        <t indent="0" pn="section-appendix.a.2-1">This example illustrates the situation when the IKE_INTERMEDIATE
            exchange is used. In this scenario, the responder announces that 
            it supports the "Digital signature" authentication method using the RSASSA-PSS algorithm
            with CA1 and CA2 and the same method using the ECDSA algorithm with CA3.
            The initiator supports only the "Digital signature" authentication method using the RSASSA-PSS algorithm
            with no link to a particular CA.

        </t>
        <artwork align="left" pn="section-appendix.a.2-2">
Initiator                              Responder
-----------                            -----------
                     IKE_SA_INIT
HDR, SAi1, KEi, Ni,
N(SIGNATURE_HASH_ALGORITHMS) --&gt;
                                   &lt;-- HDR, SAr1, KEr, Nr, 
                                       CERTREQ(CA1, CA2, CA3),
                                       N(SIGNATURE_HASH_ALGORITHMS),
                                       N(SUPPORTED_AUTH_METHODS())

                   IKE_INTERMEDIATE
HDR, SK {..., IDi]}  --&gt;
                                   &lt;-- HDR, SK {..., 
                                       CERTREQ(CA1, CA2, CA3),
                                       N(SUPPORTED_AUTH_METHODS(
                                       SIGNATURE(RSASSA-PSS:1),
                                       SIGNATURE(RSASSA-PSS:2),
                                       SIGNATURE(ECDSA:3)))}

                      IKE_AUTH
HDR, SK {IDi, CERT, CERTREQ(CA2), 
AUTH, SAi2, TSi, TSr,
N(SUPPORTED_AUTH_METHODS(
SIGNATURE(RSASSA-PSS:0)))}  --&gt;
                                   &lt;-- HDR, SK {IDr, CERT,
                                       AUTH, SAr2, TSi, TSr}
</artwork>
      </section>
    </section>
    <section numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.b-1">The author would like to thank <contact fullname="Paul Wouters"/> for his valuable comments and proposals.
            The author is also grateful to  <contact fullname="Daniel Van Geest"/>, who made proposals for protocol improvement.
             <contact fullname="Reese Enghardt"/> and  <contact fullname="Rifaat Shekh-Yusef"/> contributed to the clarity of the document.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-address">Author's Address</name>
      <author initials="V." surname="Smyslov" fullname="Valery Smyslov">
        <organization showOnFrontPage="true">ELVIS-PLUS</organization>
        <address>
          <postal>
            <street>PO Box 81</street>
            <city>Moscow (Zelenograd)</city>
            <code>124460</code>
            <country>Russian Federation</country>
          </postal>
          <phone>+7 495 276 0211</phone>
          <email>svan@elvis.ru</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
