<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-westerlund-tsvwg-sctp-crypto-chunk-01" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.3 -->
  <front>
    <title abbrev="SCTP CRYPTO Chunk">Stream Control Transmission Protocol (SCTP) CRYPTO Chunk</title>
    <seriesInfo name="Internet-Draft" value="draft-westerlund-tsvwg-sctp-crypto-chunk-01"/>
    <author initials="M." surname="Westerlund" fullname="Magnus Westerlund">
      <organization>Ericsson</organization>
      <address>
        <email>magnus.westerlund@ericsson.com</email>
      </address>
    </author>
    <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
      <organization>Ericsson</organization>
      <address>
        <email>john.mattsson@ericsson.com</email>
      </address>
    </author>
    <author initials="C." surname="Porfiri" fullname="Claudio Porfiri">
      <organization>Ericsson</organization>
      <address>
        <email>claudio.porfiri@ericsson.com</email>
      </address>
    </author>
    <date year="2023" month="June" day="28"/>
    <area>Transport</area>
    <workgroup>TSVWG</workgroup>
    <abstract>
      <?line 67?>

<t>This document describes a method for adding cryptographic protection
to the Stream Control Transmission Protocol (SCTP). The SCTP CRYPTO
chunk defined in this document is intended to enable communications
privacy for applications that use SCTP as their transport protocol and
allows applications to communicate in a way that is designed to
prevent eavesdropping and detect tampering or message forgery.</t>
      <t>The CRYPTO chunk defined here in is one half of a complete
solution. Where a companion specification is required to define how
the content of the CRYPTO chunk is protected, authenticated, and
protected against replay, as well as how key management is
accomplished.</t>
      <t>Applications using SCTP CRYPTO chunk can use all transport
features provided by SCTP and its extensions but with some limitations.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-westerlund-tsvwg-sctp-crypto-chunk/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Transport Area Working Group (tsvwg) Working Group mailing list (<eref target="mailto:tsvwg@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/tsvwg/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/tsvwg/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/gloinul/draft-westerlund-tsvwg-sctp-crypto-chunk"/>.</t>
    </note>
  </front>
  <middle>
    <?line 85?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a CRYPTO chunk for the Stream Control
   Transmission Protocol (SCTP), as defined in <xref target="RFC9260"/>.</t>
      <t>This specification defines the actual CRYPTO chunk. How to enable
   it usage, how it interacts with the SCTP association establishment
   to enable endpoint authentication, key-establishment, and other
   features require a separate protection engine specification.</t>
      <t>This specification is intended to be capable of enabling mutual
   authentication of endpoints, data confidentiality, data origin
   authentication, data integrity protection, and data replay
   protection for SCTP packets after the SCTP association has been
   established. The exact properties will depend on the companion
   specification defining the protection engine used with the CRYPTO
   chunk. The protection engine specification might be based on an
   existing security protocol.</t>
      <t>Applications using SCTP CRYPTO chunk can use all transport features
   provided by SCTP and its extensions. However, there can be some
   limitations or additional requirements for them to function such as
   those noted for SCTP restart and use of Dynamic Address
   Reconfiguration, see <xref target="sec-asconf"/> and <xref target="sec-restart"/>. Due to its
   level of integration as discussed in next section it will provide
   its security functions on all content of the SCTP packet, and will
   thus not impact the potential to utilize any SCTP functionalities
   or extensions.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>The CRYPTO chunk is defined as a method for secure and confidential
transfer for SCTP packets.  This is implemented inside the SCTP
protocol, in a sublayer between the SCTP common header handling and
the SCTP chunk handling.  Once an SCTP packet has been received and
the SCTP common header has been used to identify the SCTP association,
the CRYPTO chunk is sent to the chosen protection engine that will
return the SCTP payload containing the unprotected SCTP chunks, those
chunks will then be handled according to current SCTP protocol
specification. <xref target="sctp-Crypto-chunk-layering"/> illustrates the CRYPTO
chunk layering in regard to SCTP and the Upper Layer Protocol (ULP).</t>
        <figure anchor="sctp-Crypto-chunk-layering">
          <name>CRYPTO Chunk Layering in Regard to SCTP and ULP</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="448" viewBox="0 0 448 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,336" fill="none" stroke="black"/>
                <path d="M 136,32 L 136,96" fill="none" stroke="black"/>
                <path d="M 152,32 L 152,96" fill="none" stroke="black"/>
                <path d="M 184,96 L 184,336" fill="none" stroke="black"/>
                <path d="M 224,208 L 224,272" fill="none" stroke="black"/>
                <path d="M 320,32 L 320,96" fill="none" stroke="black"/>
                <path d="M 400,208 L 400,272" fill="none" stroke="black"/>
                <path d="M 440,80 L 440,224" fill="none" stroke="black"/>
                <path d="M 8,32 L 136,32" fill="none" stroke="black"/>
                <path d="M 152,32 L 320,32" fill="none" stroke="black"/>
                <path d="M 320,64 L 424,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 320,96" fill="none" stroke="black"/>
                <path d="M 336,128 L 352,128" fill="none" stroke="black"/>
                <path d="M 200,176 L 216,176" fill="none" stroke="black"/>
                <path d="M 8,208 L 184,208" fill="none" stroke="black"/>
                <path d="M 224,208 L 400,208" fill="none" stroke="black"/>
                <path d="M 192,240 L 216,240" fill="none" stroke="black"/>
                <path d="M 408,240 L 424,240" fill="none" stroke="black"/>
                <path d="M 8,272 L 184,272" fill="none" stroke="black"/>
                <path d="M 224,272 L 400,272" fill="none" stroke="black"/>
                <path d="M 200,304 L 216,304" fill="none" stroke="black"/>
                <path d="M 8,336 L 184,336" fill="none" stroke="black"/>
                <path d="M 184,272 L 200,304" fill="none" stroke="black"/>
                <path d="M 320,96 L 336,128" fill="none" stroke="black"/>
                <path d="M 184,208 L 200,176" fill="none" stroke="black"/>
                <path d="M 424,64 C 432.83064,64 440,71.16936 440,80" fill="none" stroke="black"/>
                <path d="M 424,240 C 432.83064,240 440,232.83064 440,224" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="416,240 404,234.4 404,245.6" fill="black" transform="rotate(180,408,240)"/>
                <polygon class="arrowhead" points="224,240 212,234.4 212,245.6" fill="black" transform="rotate(0,216,240)"/>
                <polygon class="arrowhead" points="200,240 188,234.4 188,245.6" fill="black" transform="rotate(180,192,240)"/>
                <g class="text">
                  <text x="204" y="52">Protection</text>
                  <text x="276" y="52">Engine</text>
                  <text x="356" y="52">Keys</text>
                  <text x="72" y="68">ULP</text>
                  <text x="192" y="84">Key</text>
                  <text x="252" y="84">Management</text>
                  <text x="380" y="116">User</text>
                  <text x="384" y="132">Level</text>
                  <text x="36" y="148">SCTP</text>
                  <text x="84" y="148">Chunks</text>
                  <text x="144" y="148">Handler</text>
                  <text x="396" y="148">Messages</text>
                  <text x="244" y="180">SCTP</text>
                  <text x="312" y="180">Unprotected</text>
                  <text x="392" y="180">Payload</text>
                  <text x="100" y="228">CRYPTO</text>
                  <text x="276" y="228">Protection</text>
                  <text x="348" y="228">Engine</text>
                  <text x="96" y="244">Chunk</text>
                  <text x="96" y="260">Handler</text>
                  <text x="276" y="260">Protection</text>
                  <text x="356" y="260">Operator</text>
                  <text x="36" y="308">SCTP</text>
                  <text x="84" y="308">Header</text>
                  <text x="144" y="308">Handler</text>
                  <text x="244" y="308">SCTP</text>
                  <text x="304" y="308">Protected</text>
                  <text x="376" y="308">Payload</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+---------------+ +--------------------+
|               | | Protection Engine  |  Keys
|      ULP      | |                    +-------------.
|               | |   Key Management   |              |
+---------------+-+---+----------------+              |
|                     |                 \    User     |
|                     |                  +-- Level    |
| SCTP Chunks Handler |                      Messages |
|                     |                               |
|                     | +-- SCTP Unprotected Payload  |
|                     |/                              |
+---------------------+    +---------------------+    |
|        CRYPTO       |    | Protection Engine   |    |
|        Chunk        |<-->|                     |<--'
|       Handler       |    | Protection Operator |
+---------------------+    +---------------------+
|                     |\
| SCTP Header Handler | +-- SCTP Protected Payload
|                     |
+---------------------+
]]></artwork>
          </artset>
        </figure>
        <t>Use of the CRYPTO chunk is defined per SCTP association and a SCTP
association uses a single protection engine. Different associations
within the same SCTP endpoint may use or not use the CRYPTO chunk, and
different associations may use different protection engines.</t>
        <t>On the outgoing direction, once the SCTP stack has created the
unprotected SCTP packet payload containing control and/or DATA chunks,
that payload will be sent to the protection engine to be
protected. The format of the protected payload depends on the
protection engine but the unprotected payload will typically be
encrypted and integrity tagged before being encapsulated in a CRYPTO
chunk.</t>
        <t>The SCTP protection engine performs protection operations on the whole
unprotected SCTP packet payload, i.e., all chunks after the SCTP
common header. Information protection is kept during the lifetime of
the association and no information is sent unprotected except than the
initial SCTP handshake, the SCTP common Header, the SCTP CRYPTO chunk
header and the SHUTDOWN-COMPLETE chunk.</t>
        <t>SCTP CRYPTO chunk capability is agreed by the peers at the
initialization of the SCTP association, during that phase the peers
exchange information about the protection engines available. Once the
peers have agreed on what protection to use, the SCTP endpoints start
sending Protection Engine's payloads in SCTP DATA chunks containing
the initialization information related to the protection engine
including key agreement and endpoint authentication. This is depending
on the chosen protection engine thus is not being detailed in the
current specification.</t>
        <t>When the endpoint authentication has been completed, the association
is meant to be initialized and the ULP is informed about that, from
this time on it's possible for the ULPs to exchange data.</t>
        <t>CRYPTO chunks will never be retransmitted, retransmission is
implemented by SCTP endpoint at chunk level as in the legacy.  Duplicated
CRYPTO chunks, whenever they will be accepted by the protection
engine, will result in duplicated SCTP chunks and will be handled as
duplicated chunks by SCTP endpoint in the same way a duplicated SCTP packet
with those SCTP chunks would have been.</t>
      </section>
      <section anchor="protection-engines">
        <name>Protection Engines Considerations</name>
        <t>The protection engine, independently from the security
characteristics, needs to be capable working on an unreliable
transport mechanism same as UDP in regards to the payloads of the
CRYPTO chunk, and have its own key management capability. SCTP is
capable of providing reliable transport of key-management messages.</t>
        <t>SCTP CRYPTO chunk directly exploits the protection engine by
requesting protection and unprotection of a buffer, in particular the
protection buffer should never exceed the possible SCTP packet size
thus protection engine needs to be aware of the PMTU (see <xref target="pmtu"/>).</t>
        <t>The key management part of the protection engine is the set of data
and procedures that take care of key distribution, verification, and
update. For key management the Protection Engines uses SCTP DATA
chunks identified with a dedicated Payload Protocol Identifier. The
protection engine can specify if the transmission of any key-managment
messages are non-reliable or reliable transmitted by SCTP.</t>
        <t>During initialization, that is before Association reaches the
ESTABLISHED state (see <xref target="state-diagram"/>), inband Key Management use
DATA chunks that SHALL use the Protection Engine PPID (see
<xref target="iana-payload-protection-id"/>). These DATA chunks SHALL be sent
unprotected by the protection engine as no keys have been established
yet. As soon as the SCTP Association reaches PROTECTED state, any
protection engine that uses inband key management, i.e. sent using
SCTP DATA chunks with the Protection Engine PPID, will have their
message protected inside SCTP CRYPTO chunk protected with the
currently established key.</t>
        <t>Key management MAY use other mechanism than what provided by SCTP CRYPTO
chunks, in any case the mechanism for key management MUST be detailed
in the specification for that protection engine.</t>
        <t>The protection engines MAY exploit the Flags byte provided by the
CRYPTO chunk header (see <xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>)
for its needs. Details of the use of Flags, if different from what described in the
current document, MUST be specified in the Protection Engine Specification
document for that specific protection engine.</t>
        <t>The SCTP common header is assumed to be implicitly protected by the
protection engine. This protection is based on the assumption that
there will be a one-to-one mapping between SCTP association and
individually established security contexts. If the protection engine
does not meet that assumption further protection of the common header
is likely required.</t>
        <t>An example of protection engine can be DTLS as specified in
<xref target="I-D.westerlund-tsvwg-sctp-crypto-dtls"/>.</t>
      </section>
      <section anchor="buffering">
        <name>SCTP CRYPTO Chunk Buffering and Flow Control</name>
        <t>Protection engine and SCTP are asynchronous, meaning that the
protection engine may deliver the decrypted SCTP Payload to the SCTP
endpoint without respecting the reception order.  It's up to SCTP
endpoint to reorder the chunks in the reception buffer and to take
care of the flow control according to what specified in
<xref target="RFC9260"/>. From SCTP perspective the CRYPTO chunk processing is part
of the transport network.</t>
        <t>Even though the above allows the implementors to adopt a
multithreading design of the protection engines, the actual
implementation should consider that out-of-order handling of SCTP
chunks is not desired and may cause false congestions and
retransmissions.</t>
      </section>
      <section anchor="pmtu">
        <name>PMTU Considerations</name>
        <t>The addition of the CRYPTO chunk to SCTP reduces the room for payload,
due to the size of the CRYPTO chunk header and plain text expansion
due to ciphering algorithm and any authentication tag.  Thus, the SCTP
layer creating the plain text payload needs to know about the overhead
to adjust its target payload size appropriately.</t>
        <t>On the other hand, the protection engine needs to be informed about
the PMTU by removing from the value the sum of the common SCTP header
and the CRYPTO chunk header. This implies that SCTP can propagate
the computed PMTU at run time specifically. The way protection engine
provides the primitive for PMTU communication shall be part of the
protection engine specification.</t>
        <t>From SCTP perspective, if there is a maximum size of plain text data
that can be protected by the protection engine that must be
communicated to SCTP. As such a limit will limit the PMTU for SCTP to
the maximum plain text plus CRYPTO chunk and algorithm overhead plus
the SCTP common header.</t>
      </section>
      <section anchor="congestion">
        <name>Congestion Control Considerations</name>
        <t>The SCTP mechanism for handling congestion control does depend on
successful data transfer for enlarging or reducing the congestion
window CWND (see <xref target="RFC9260"/> section 7.2).</t>
        <t>It may happen that protection engine discards packets due to internal
checks or because it has detected a malicious attempt. As those
packets do not represent what the peer sent, it is acceptable to
ignore them, although in-situ modification on the path of a packet
resulting in discarding due to integrity failure will leave a gap, but
has to be accepted as part of the path behavior.</t>
        <t>The protection engine shall not interfere with the SCTP congestion
control mechanism, this basically means that from SCTP perspective
the congestion control is exactly the same as how specified
in <xref target="RFC9260"/>.</t>
      </section>
      <section anchor="icmp">
        <name>ICMP Considerations</name>
        <t>The SCTP implementation will be responsible for handling ICMP messages
and their validation as specified in <xref target="RFC9260"/> Section 10. This
means that the ICMP validation needs to be done in relation to the
actual sent SCTP packets with the CRYPTO chunk and not the unprotected
payload. However, valid ICMP errors or information may indirectly be
provided to the protection engine, such as an update to PMTU values
based on packet to big ICMP messages.</t>
      </section>
      <section anchor="multipath">
        <name>Path Selection Considerations</name>
        <t>When an Association is multihomed there are multiple paths between Endpoints.
The selection of the specific path to be used at a certain time belongs
to SCTP protocol that will decide according to <xref target="RFC9260"/>.
The Protection Engine shall not influence the path selection algorithm,
actually the Protection Engine will not even know what path is being used.</t>
      </section>
      <section anchor="sec-asconf">
        <name>Dynamic Address Reconfiguration Considerations</name>
        <t>When using Dynamic Address Reconfiguration <xref target="RFC5061"/> in an SCTP
association using CRYPTO Chunk the ASCONF chunk is protected, thus it
needs to be unprotected first, furthermore it MAY come from an unknown
IP Address.  In order to properly address the ASCONF chunk to the
relevant Association for being unprotected, Destination Address,
Source and Destination ports and VTag shall be exploited. If the
combination of those parameters is not unique the implementor MAY
choose to send the Crypto Chunk to all Associations that fit with the
parameters in order to find the right one. The association will
attempt de-protection operations on the crypto chunk, and if that is
successful the ASCONF chunk can be processed.</t>
        <t>The recommendation <xref target="RFC5061"/> specifies (section 4.1.1 of
<xref target="RFC5061"/>) that ASCONF message are required to be sent authenticated
with SCTP-AUTH <xref target="RFC4895"/>. For SCTP associations using Crypto Chunks,
when the Protection Engine provides strong Authentication such for
instance in case of DTLS, results in the use of redundant mechanism
for Authentication with both SCTP-AUTH and the Crypto Chunk. We
recommend to amend <xref target="RFC5061"/> for including Crypto Chunks as
Authentication mechanism for ASCONF chunks.</t>
      </section>
      <section anchor="sec-restart">
        <name>SCTP Restart Considerations</name>
        <t>SCTP Restart procedure allows an endpoint to recover an association
when the remote endpoint still has the state for the association.
However, an SCTP association that has an established protection engine
will not accept a unprotected INIT to restart it, instead it would
discard it. Thus, an endpoint attempting to restart an SCTP
association which was using Crypto Chunks MUST have the security
context for this association, and use it to encapsulate the INIT in a
CRYPTO chunk. Note, the SCTP common header will contain a verification
tag equal to 0, combined with CRYPTO chunk when carrying an INIT to
restart.</t>
        <t>An endpoint implementing Crypto Chunk MUST accept receiving SCTP
packets with a verification tag with value 0 and containing a Crypto
Chunk. The endpoit will attempt to map the packet to an association
based on source IP address, destination address and port. If the
combination of those parameters is not unique the implementor MAY
choose to send the Crypto Chunk to all Associations that fit with the
parameters in order to find the right one. The association will
attempt de-protection operations on the crypto chunk, and if that is
successful the INIT chunk can be processed as a restart attempt. Note
that this will update the verification tags for both this endpoint and
the peer. Failure to authenticate the crypto chunk payload will result
in it being discarded.</t>
        <t>Association restart when using crypto chunks has increased
requirements on the endpoint maintaining state across the restart. In
cases this is not possible or failed to be done successfully the
endpoint will be need to fall back to initiating a new SCTP association.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
    </section>
    <section anchor="new-parameter-type">
      <name>New Parameter Type</name>
      <t>This section defines the new parameter type that will be used to
negotiate the use of the CRYPTO chunk and protection engines during
association setup. <xref target="sctp-Crypto-chunk-init-parameter"/> illustrates
the new parameter type.</t>
      <table anchor="sctp-Crypto-chunk-init-parameter">
        <name>New INIT/INIT-ACK Parameter</name>
        <thead>
          <tr>
            <th align="right">Parameter Type</th>
            <th align="left">Parameter Name</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">0x80xx</td>
            <td align="left">Protected Association</td>
          </tr>
        </tbody>
      </table>
      <t>Note that the parameter format requires the receiver to ignore the
parameter and continue processing if the parameter is not understood.
This is accomplished (as described in <xref target="RFC9260"/>, Section 3.2.1.)  by
the use of the upper bits of the parameter type.</t>
      <section anchor="protectedassoc-parameter">
        <name>Protected Association Parameter</name>
        <t>This parameter is used to carry the list of proposed protection
engines and the chosen protection engine during INIT/INIT-ACK
handshake.</t>
        <figure anchor="sctp-Crypto-chunk-init-options">
          <name>Protected Association Parameter</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="80" y="84">Parameter</text>
                  <text x="140" y="84">Type</text>
                  <text x="168" y="84">=</text>
                  <text x="204" y="84">0x80XX</text>
                  <text x="360" y="84">Parameter</text>
                  <text x="428" y="84">Length</text>
                  <text x="228" y="132">Protection</text>
                  <text x="304" y="132">Engines</text>
                  <text x="392" y="180">Padding</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Parameter Type = 0x80XX    |       Parameter Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                      Protection Engines                       |
|                                                               |
|                               +-------------------------------+
|                               |            Padding            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Parameter Type: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value MUST be set to 0x80XX.</t>
          </dd>
          <dt>Parameter Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value holds the length of the Protection Engines field in
bytes plus 4.</t>
          </dd>
          <dt>Protection Engines: variable length</dt>
          <dd>
            <t>In the INIT chunk this holds the list of protection engines in descending order of preference,
i.e. the most preferred comes first, and the least preferred last in
this field. In the INIT-ACK chunk this holds a single chosen
protection engine. Each protection engine is specified by a 16-bit
unsigned integer.</t>
          </dd>
          <dt>Padding: 0 or 16 bits</dt>
          <dd>
            <t>If the length of the Protection Engines field is not a multiple
of 4 bytes, the sender MUST pad the chunk with all zero bytes
to make the chunk 32-bit aligned. The Padding MUST NOT be longer
than 2 bytes and it MUST be ignored by the receiver.</t>
          </dd>
        </dl>
        <t>RFC-Editor Note: Please replace 0x08XX with the actual parameter type
value assigned by IANA and then remove this note.</t>
      </section>
    </section>
    <section anchor="new-chunk-types">
      <name>New Chunk Types</name>
      <section anchor="crypto-chunk">
        <name>Crypto Chunk (CRYPTO)</name>
        <t>This section defines the new chunk type that will be used to
transport protected SCTP payload.
<xref target="sctp-Crypto-chunk-newchunk-crypt"/> illustrates the new chunk type.</t>
        <table anchor="sctp-Crypto-chunk-newchunk-crypt">
          <name>CRYPTO Chunk Type</name>
          <thead>
            <tr>
              <th align="right">Chunk Type</th>
              <th align="left">Chunk Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x4X</td>
              <td align="left">Crypto Chunk (CRYPTO)</td>
            </tr>
          </tbody>
        </table>
        <t>RFC-Editor Note: Please replace 0x4x with the actual chunk type value
assigned by IANA and then remove this note.</t>
        <t>It should be noted that the CRYPTO chunk format requires the receiver
stop processing this SCTP packet, discard the unrecognized chunk and
all further chunks, and report the unrecognized chunk in an ERROR
chunk using the 'Unrecognized Chunk Type' error cause.  This is
accomplished (as described in <xref target="RFC9260"/> Section 3.2.) by the use of
the upper bits of the chunk type.</t>
        <t>The CRYPTO chunk is used to hold the protected payload of a plain SCTP
packet.</t>
        <figure anchor="sctp-Crypto-chunk-newchunk-crypt-struct">
          <name>CRYPTO Chunk Structure</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">Type</text>
                  <text x="72" y="84">=</text>
                  <text x="100" y="84">0x4X</text>
                  <text x="176" y="84">Chunk</text>
                  <text x="224" y="84">Flags</text>
                  <text x="360" y="84">Chunk</text>
                  <text x="412" y="84">Length</text>
                  <text x="264" y="132">Payload</text>
                  <text x="384" y="180">Padding</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x4X  |  Chunk Flags  |         Chunk Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                            Payload                            |
|                                                               |
|                               +-------------------------------+
|                               |           Padding             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Chunk Type: 8 bits (unsigned integer)</dt>
          <dd>
            <t>This value MUST be set to 0x4X for all CRYPTO chunks.</t>
          </dd>
          <dt>Chunk Flags: 8 bits</dt>
          <dd>
            <t>This is used by the protection engine and ignored by SCTP.</t>
          </dd>
          <dt>Chunk Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value holds the length of the Payload in bytes plus 4.</t>
          </dd>
          <dt>Payload: variable length</dt>
          <dd>
            <t>This holds the encrypted data.</t>
          </dd>
          <dt>Padding: 0, 8, 16, or 24 bits</dt>
          <dd>
            <t>If the length of the Payload is not a multiple of 4 bytes, the sender
MUST pad the chunk with all zero bytes to make the chunk 32-bit
aligned.  The Padding MUST NOT be longer than 3 bytes and it MUST
be ignored by the receiver.</t>
          </dd>
        </dl>
      </section>
      <section anchor="pvalid-chunk">
        <name>Protected Association Parameter Validation Chunk (PVALID)</name>
        <t>This section defines the new chunk types that will be used to validate
the negotiation of the protection engine selected for CRYPTO chunk.
This to prevent down grade attacks on the negotiation of protection
engines. <xref target="sctp-Crypto-chunk-newchunk-pvalid-chunk"/> illustrates the
new chunk type.</t>
        <table anchor="sctp-Crypto-chunk-newchunk-pvalid-chunk">
          <name>PVALID Chunk Type</name>
          <thead>
            <tr>
              <th align="right">Chunk Type</th>
              <th align="left">Chunk Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x4X</td>
              <td align="left">Protected Association Parameter Validation (PVALID)</td>
            </tr>
          </tbody>
        </table>
        <t>It should be noted that the PVALID chunk format requires the receiver
stop processing this SCTP packet, discard the unrecognized chunk and
all further chunks, and report the unrecognized chunk in an ERROR
chunk using the 'Unrecognized Chunk Type' error cause.  This is
accomplished (as described in <xref target="RFC9260"/> Section 3.2.) by the use of
the upper bits of the chunk type.</t>
        <t>The PVALID chunk is used to hold the protection engines list.</t>
        <figure anchor="sctp-Crypto-chunk-newchunk-PVALID">
          <name>PVALID Chunk Structure</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">Type</text>
                  <text x="72" y="84">=</text>
                  <text x="100" y="84">0x4X</text>
                  <text x="184" y="84">Flags</text>
                  <text x="216" y="84">=</text>
                  <text x="232" y="84">0</text>
                  <text x="360" y="84">Chunk</text>
                  <text x="412" y="84">Length</text>
                  <text x="228" y="132">Protection</text>
                  <text x="304" y="132">Engines</text>
                  <text x="384" y="180">Padding</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x4X  |   Flags = 0   |         Chunk Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                      Protection Engines                       |
|                                                               |
|                               +-------------------------------+
|                               |           Padding             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Chunk Type: 8 bits (unsigned integer)</dt>
          <dd>
            <t>This value MUST be set to 0x4X.</t>
          </dd>
          <dt>Chunk Flags: 8 bits</dt>
          <dd>
            <t>MUST be set to zero on transmit and MUST be ignored on receipt.</t>
          </dd>
          <dt>Chunk Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value holds the length of the Protection Engines field in bytes plus 4.</t>
          </dd>
          <dt>Protection Engines: variable length</dt>
          <dd>
            <t>This holds the list of protection engines where each protection engine is
specified by a 16-bit unsigned integer. The field MUST be identical to the
content of the Protected Association Parameter (<xref target="protectedassoc-parameter"/>)
Protection Engines field that the endpoint sent in the INIT or INIT-ACK chunk.</t>
          </dd>
          <dt>Padding: 0 or 16 bits</dt>
          <dd>
            <t>If the length of the
Protection Engines field is not a multiple of 4 bytes, the sender MUST
pad the chunk with all zero bytes to make the chunk 32-bit
aligned.  The Padding MUST NOT be longer than 2 bytes and it
MUST be ignored by the receiver.</t>
          </dd>
        </dl>
        <t>RFC-Editor Note: Please replace 0x4X with the actual chunk type value
assigned by IANA and then remove this note.</t>
      </section>
    </section>
    <section anchor="error_handling">
      <name>Error Handling</name>
      <t>This specification introduces a new set of error causes that are to be
used when SCTP endpoint detects a faulty condition. The special case is
when the error is detected by the protection engine that may provide
additional information.</t>
      <section anchor="enoprotected">
        <name>Mandatory Protected Association Parameter Missing</name>
        <t>When an initiator SCTP endpoint sends an INIT chunk that doesn't
contain the Protected Association parameter towards an SCTP endpoint
that only accepts protected associations, the responder endpoint SHALL
raise a Missing Mandatory Parameter error. The ERROR chunk will
contain the cause code 'Missing Mandatory Parameter' (2) (see
<xref target="RFC9260"/> section 3.3.10.7) and the protected association parameter
identifier <xref target="protectedassoc-parameter"/> in the missing param
Information field.</t>
        <figure anchor="sctp-Crypto-init-chunk-missing-protected">
          <name>ERROR Missing Protected Association Paramater</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,128 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="96" y="84">Cause</text>
                  <text x="140" y="84">Code</text>
                  <text x="168" y="84">=</text>
                  <text x="184" y="84">2</text>
                  <text x="360" y="84">Cause</text>
                  <text x="412" y="84">Length</text>
                  <text x="172" y="116">Number</text>
                  <text x="212" y="116">of</text>
                  <text x="256" y="116">missing</text>
                  <text x="316" y="116">params</text>
                  <text x="352" y="116">=</text>
                  <text x="368" y="116">N</text>
                  <text x="72" y="148">Protected</text>
                  <text x="160" y="148">Association</text>
                  <text x="220" y="148">ID</text>
                  <text x="336" y="148">Missing</text>
                  <text x="392" y="148">Param</text>
                  <text x="436" y="148">Type</text>
                  <text x="468" y="148">#2</text>
                  <text x="72" y="180">Missing</text>
                  <text x="128" y="180">Param</text>
                  <text x="172" y="180">Type</text>
                  <text x="212" y="180">#N-1</text>
                  <text x="336" y="180">Missing</text>
                  <text x="392" y="180">Param</text>
                  <text x="436" y="180">Type</text>
                  <text x="468" y="180">#N</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Cause Code = 2         |         Cause Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Number of missing params = N                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Protected Association ID    |     Missing Param Type #2     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Missing Param Type #N-1    |     Missing Param Type #N     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <t>Note: Cause Length is equal to the number of missing parameters 8 + N
* 2 according to <xref target="RFC9260"/>, section 3.3.10.2. Also the Protection
Association ID may be present in any of the N missing params, no order
implied by the example in
<xref target="sctp-Crypto-init-chunk-missing-protected"/>.</t>
      </section>
      <section anchor="eprotect">
        <name>Error in Protection</name>
        <t>A new Error Type is defined for Crypto Chunk, it's used for any
error related to the Protection mechanism described in this
document and has a structure that allows detailed information
to be added as extra causes.</t>
        <t>This specification describes some of the causes whilst the
Protection Engine Specification MAY add further Causes related to the
related Protection Engine.</t>
        <t>When detecting an error, SCTP will send an ABORT chunk containing
the relevant Error Type and Causes.</t>
        <figure anchor="sctp-eprotect-error-structure">
          <name>Error in Protection Cause Format</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,160" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="72" y="84">Cause</text>
                  <text x="116" y="84">Code</text>
                  <text x="144" y="84">=</text>
                  <text x="172" y="84">TBA9</text>
                  <text x="360" y="84">Cause</text>
                  <text x="412" y="84">Length</text>
                  <text x="104" y="116">Extra</text>
                  <text x="152" y="116">Cause</text>
                  <text x="188" y="116">#1</text>
                  <text x="360" y="116">Extra</text>
                  <text x="408" y="116">Cause</text>
                  <text x="444" y="116">#2</text>
                  <text x="96" y="148">Extra</text>
                  <text x="144" y="148">Cause</text>
                  <text x="188" y="148">#N-1</text>
                  <text x="360" y="148">Extra</text>
                  <text x="408" y="148">Cause</text>
                  <text x="444" y="148">#N</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Cause Code = TBA9         |         Cause Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Extra Cause #1        |         Extra Cause #2        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Extra Cause #N-1       |         Extra Cause #N        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Casuse Code: 16 bits (unsigned integer)</dt>
          <dd>
            <t>The SCTP Error Chunk Cause Code indicating "Error in Protection" is TBA9.</t>
          </dd>
          <dt>Cause Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>Is for N extra Causes equal to  4 + N * 2</t>
          </dd>
          <dt>Extra Cause: 16 bits (unsigned integer)</dt>
          <dd>
            <t>Each Extra Cause indicate an additional piece of information as part
of the error. There MAY be zero to as many as can fit in the extra
cause field in the ERROR Chunk (A maximum of 32764).</t>
          </dd>
        </dl>
        <t>Editor's Note: Please replace TBA9 above with what is assigned by IANA.</t>
        <t>Below a number of defined Error Causes are defined, additional causes
can be registered with IANA following the rules in <xref target="IANA-Extra-Cause"/>.</t>
        <section anchor="eprotlist">
          <name>No Supported Protection Engine</name>
          <t>If list of protection engines contained in the INIT signal doesn't
contain at least an entry that fits the list of protection engines at
the responder, the responder will reply with an ABORT chunk with error
in protection cause code (specified in
<xref target="eprotect"/>) and the "No Supported Protection
Engine" extra cause code identifier 0x00.</t>
        </section>
        <section anchor="ekeyhandshake">
          <name>Error During Protection Handshake</name>
          <t>If the protection engine specifies a handshake for example for
authentication, and key management is implemented inband, it may happen
that the procedure has errors. In such case an ABORT chunk will be
sent with error in protection cause code (specified in
<xref target="eprotect"/>) and extra cause
"Error During Protection Handshake" identifier 0x01.</t>
        </section>
        <section anchor="evalidate">
          <name>Failure in Protection Engines Validation</name>
          <t>A Failure may occur during protection engine Validation (see
<xref target="protected-state"/>).  In such case an ABORT chunk will be sent with
error in protection cause code (specified in
<xref target="eprotect"/>) and extra cause "Failure in
Protection Engines Validation" identifier 0x02 to indicate this
failure.</t>
        </section>
        <section anchor="etmout">
          <name>Timeout During Protection Handshake or Validation</name>
          <t>Whenever a T-valid timeout occurs, the SCTP endpoint will send an
ABORT chunk with "Error in Protection" cause (specified in
<xref target="eprotect"/>) and extra cause "Timeout During
Protection Handshake or Validation" identifier 0x03 to indicate this
failure.  To indicate in which phase the timeout occurred an additional
extra cause code is added. If the protection engine specifies that key
management is implemented inband and the T-valid timeout occurs during
the handshake the Cause-Specific code to add is "Error During
Protection Handshake" identifier 0x01.  If the T-valid timeout occurs
during the protection association parameter validation, the extra
cause code to use is "Failure in Protection Engines Validation"
identifier 0x02.</t>
        </section>
      </section>
      <section anchor="eengine">
        <name>Critical Error from Protection Engine</name>
        <t>Protection engine MAY inform local SCTP endpoint about errors, in such
case it's to be defined in the protection engine specification
document.  When an Error in the protection engine compromises the
protection mechanism, the protection engine may stop processing data
altogether, thus the local SCTP endpoint will not be able to send or
receive any chunk for the specified Association.  This will cause the
Association to be closed by legacy timer-based mechanism. Since the
Association protection is compromised no further data will be sent and
the remote peer will also experience timeout on the Association.</t>
      </section>
      <section anchor="non-critical-errors">
        <name>Non-critical Error in the Protection Engine</name>
        <t>A non-critical error in the protection engine means that the
protection engine is capable of recovering without the need
of the whole Association to be restarted.</t>
        <t>From SCTP perspective, a non-critical error will be perceived
as a temporary problem in the transport and will be handled
with retransmissions and SACKS according to <xref target="RFC9260"/>.</t>
        <t>When the protection engine will experience a non-critical error,
an ABORT chunk SHALL NOT be sent. This way non-critical errors
are handled and how the protection engine will recover from
these errors is being described in the Protection Engine Specifications.</t>
      </section>
    </section>
    <section anchor="state-diagram">
      <name>Protected SCTP State Diagram</name>
      <t>The <xref target="sctp-Crypto-state-diagram"/> shows the changes of the SCTP
association state machine as described in <xref target="RFC9260"/> section 4.</t>
      <figure anchor="sctp-Crypto-state-diagram">
        <name>SCTP State Diagram with Crypto</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1072" width="552" viewBox="0 0 552 1072" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 80,528 L 80,976" fill="none" stroke="black"/>
              <path d="M 128,544 L 128,960" fill="none" stroke="black"/>
              <path d="M 184,64 L 184,96" fill="none" stroke="black"/>
              <path d="M 208,1024 L 208,1056" fill="none" stroke="black"/>
              <path d="M 224,96 L 224,128" fill="none" stroke="black"/>
              <path d="M 224,176 L 224,528" fill="none" stroke="black"/>
              <path d="M 224,800 L 224,832" fill="none" stroke="black"/>
              <path d="M 224,976 L 224,1016" fill="none" stroke="black"/>
              <path d="M 232,592 L 232,624" fill="none" stroke="black"/>
              <path d="M 248,64 L 248,88" fill="none" stroke="black"/>
              <path d="M 256,416 L 256,448" fill="none" stroke="black"/>
              <path d="M 264,256 L 264,288" fill="none" stroke="black"/>
              <path d="M 272,528 L 272,536" fill="none" stroke="black"/>
              <path d="M 272,552 L 272,584" fill="none" stroke="black"/>
              <path d="M 272,960 L 272,1016" fill="none" stroke="black"/>
              <path d="M 280,48 L 280,88" fill="none" stroke="black"/>
              <path d="M 304,96 L 304,128" fill="none" stroke="black"/>
              <path d="M 312,176 L 312,248" fill="none" stroke="black"/>
              <path d="M 312,288 L 312,408" fill="none" stroke="black"/>
              <path d="M 312,448 L 312,544" fill="none" stroke="black"/>
              <path d="M 320,624 L 320,792" fill="none" stroke="black"/>
              <path d="M 320,832 L 320,1016" fill="none" stroke="black"/>
              <path d="M 336,1024 L 336,1056" fill="none" stroke="black"/>
              <path d="M 360,256 L 360,288" fill="none" stroke="black"/>
              <path d="M 360,544 L 360,584" fill="none" stroke="black"/>
              <path d="M 368,416 L 368,448" fill="none" stroke="black"/>
              <path d="M 408,592 L 408,624" fill="none" stroke="black"/>
              <path d="M 408,800 L 408,832" fill="none" stroke="black"/>
              <path d="M 296,32 L 352,32" fill="none" stroke="black"/>
              <path d="M 200,48 L 232,48" fill="none" stroke="black"/>
              <path d="M 8,80 L 168,80" fill="none" stroke="black"/>
              <path d="M 320,80 L 424,80" fill="none" stroke="black"/>
              <path d="M 472,80 L 544,80" fill="none" stroke="black"/>
              <path d="M 224,96 L 304,96" fill="none" stroke="black"/>
              <path d="M 200,112 L 224,112" fill="none" stroke="black"/>
              <path d="M 224,128 L 304,128" fill="none" stroke="black"/>
              <path d="M 320,176 L 448,176" fill="none" stroke="black"/>
              <path d="M 88,256 L 216,256" fill="none" stroke="black"/>
              <path d="M 264,256 L 360,256" fill="none" stroke="black"/>
              <path d="M 264,288 L 360,288" fill="none" stroke="black"/>
              <path d="M 320,336 L 464,336" fill="none" stroke="black"/>
              <path d="M 256,416 L 368,416" fill="none" stroke="black"/>
              <path d="M 256,448 L 368,448" fill="none" stroke="black"/>
              <path d="M 320,496 L 464,496" fill="none" stroke="black"/>
              <path d="M 80,528 L 272,528" fill="none" stroke="black"/>
              <path d="M 128,544 L 360,544" fill="none" stroke="black"/>
              <path d="M 232,592 L 408,592" fill="none" stroke="black"/>
              <path d="M 232,624 L 408,624" fill="none" stroke="black"/>
              <path d="M 328,720 L 456,720" fill="none" stroke="black"/>
              <path d="M 224,800 L 408,800" fill="none" stroke="black"/>
              <path d="M 224,832 L 408,832" fill="none" stroke="black"/>
              <path d="M 328,880 L 512,880" fill="none" stroke="black"/>
              <path d="M 128,960 L 272,960" fill="none" stroke="black"/>
              <path d="M 80,976 L 224,976" fill="none" stroke="black"/>
              <path d="M 208,1024 L 336,1024" fill="none" stroke="black"/>
              <path d="M 208,1056 L 336,1056" fill="none" stroke="black"/>
              <path d="M 288,128 L 312,176" fill="none" stroke="black"/>
              <path d="M 224,176 L 248,128" fill="none" stroke="black"/>
              <path d="M 296,32 C 287.16936,32 280,39.16936 280,48" fill="none" stroke="black"/>
              <path d="M 200,48 C 191.16936,48 184,55.16936 184,64" fill="none" stroke="black"/>
              <path d="M 232,48 C 240.83064,48 248,55.16936 248,64" fill="none" stroke="black"/>
              <path d="M 200,112 C 191.16936,112 184,104.83064 184,96" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="368,584 356,578.4 356,589.6" fill="black" transform="rotate(90,360,584)"/>
              <polygon class="arrowhead" points="328,1016 316,1010.4 316,1021.6" fill="black" transform="rotate(90,320,1016)"/>
              <polygon class="arrowhead" points="328,792 316,786.4 316,797.6" fill="black" transform="rotate(90,320,792)"/>
              <polygon class="arrowhead" points="320,408 308,402.4 308,413.6" fill="black" transform="rotate(90,312,408)"/>
              <polygon class="arrowhead" points="320,248 308,242.4 308,253.6" fill="black" transform="rotate(90,312,248)"/>
              <polygon class="arrowhead" points="288,88 276,82.4 276,93.6" fill="black" transform="rotate(90,280,88)"/>
              <polygon class="arrowhead" points="280,1016 268,1010.4 268,1021.6" fill="black" transform="rotate(90,272,1016)"/>
              <polygon class="arrowhead" points="280,584 268,578.4 268,589.6" fill="black" transform="rotate(90,272,584)"/>
              <path class="jump" d="M 272,552 C 278,552 278,536 272,536" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="256,88 244,82.4 244,93.6" fill="black" transform="rotate(90,248,88)"/>
              <polygon class="arrowhead" points="232,1016 220,1010.4 220,1021.6" fill="black" transform="rotate(90,224,1016)"/>
              <g class="text">
                <text x="384" y="36">(from</text>
                <text x="424" y="36">any</text>
                <text x="468" y="36">state)</text>
                <text x="104" y="68">receive</text>
                <text x="156" y="68">INIT</text>
                <text x="344" y="68">receive</text>
                <text x="400" y="68">ABORT</text>
                <text x="496" y="68">[ABORT]</text>
                <text x="452" y="84">or</text>
                <text x="36" y="100">generate</text>
                <text x="96" y="100">State</text>
                <text x="148" y="100">Cookie</text>
                <text x="340" y="100">delete</text>
                <text x="384" y="100">TCB</text>
                <text x="484" y="100">send</text>
                <text x="528" y="100">ABORT</text>
                <text x="84" y="116">send</text>
                <text x="124" y="116">INIT</text>
                <text x="160" y="116">ACK</text>
                <text x="268" y="116">CLOSED</text>
                <text x="492" y="116">delete</text>
                <text x="536" y="116">TCB</text>
                <text x="368" y="164">[ASSOCIATE]</text>
                <text x="348" y="196">create</text>
                <text x="392" y="196">TCB</text>
                <text x="340" y="212">send</text>
                <text x="380" y="212">INIT</text>
                <text x="112" y="228">receive</text>
                <text x="168" y="228">valid</text>
                <text x="344" y="228">start</text>
                <text x="400" y="228">T1-init</text>
                <text x="456" y="228">timer</text>
                <text x="108" y="244">COOKIE</text>
                <text x="164" y="244">ECHO</text>
                <text x="64" y="260">(1)</text>
                <text x="108" y="276">create</text>
                <text x="152" y="276">TCB</text>
                <text x="312" y="276">COOKIE-WAIT</text>
                <text x="384" y="276">(2)</text>
                <text x="100" y="292">send</text>
                <text x="148" y="292">COOKIE</text>
                <text x="192" y="292">ACK</text>
                <text x="352" y="324">receive</text>
                <text x="404" y="324">INIT</text>
                <text x="440" y="324">ACK</text>
                <text x="340" y="356">send</text>
                <text x="388" y="356">COOKIE</text>
                <text x="436" y="356">ECHO</text>
                <text x="340" y="372">stop</text>
                <text x="392" y="372">T1-init</text>
                <text x="448" y="372">timer</text>
                <text x="344" y="388">start</text>
                <text x="408" y="388">T1-cookie</text>
                <text x="472" y="388">timer</text>
                <text x="312" y="436">COOKIE-ECHOED</text>
                <text x="392" y="436">(3)</text>
                <text x="352" y="484">receive</text>
                <text x="412" y="484">COOKIE</text>
                <text x="456" y="484">ACK</text>
                <text x="340" y="516">stop</text>
                <text x="400" y="516">T1-cookie</text>
                <text x="464" y="516">timer</text>
                <text x="292" y="612">PROTECTION</text>
                <text x="368" y="612">PENDING</text>
                <text x="428" y="612">If</text>
                <text x="496" y="612">INIT/INIT-ACK</text>
                <text x="432" y="628">has</text>
                <text x="488" y="628">Protected</text>
                <text x="464" y="644">Association</text>
                <text x="456" y="660">Parameter</text>
                <text x="520" y="660">start</text>
                <text x="448" y="676">T-valid</text>
                <text x="508" y="676">timer.</text>
                <text x="360" y="708">[CRYPTO</text>
                <text x="420" y="708">SETUP]</text>
                <text x="348" y="740">send</text>
                <text x="384" y="740">and</text>
                <text x="432" y="740">receive</text>
                <text x="372" y="756">protection</text>
                <text x="444" y="756">engine</text>
                <text x="512" y="756">handshake</text>
                <text x="320" y="820">PROTECTED</text>
                <text x="368" y="868">[ENDPOINT</text>
                <text x="456" y="868">VALIDATION]</text>
                <text x="348" y="900">send</text>
                <text x="384" y="900">and</text>
                <text x="432" y="900">receive</text>
                <text x="356" y="916">PVALID</text>
                <text x="396" y="916">by</text>
                <text x="432" y="916">means</text>
                <text x="468" y="916">of</text>
                <text x="356" y="932">CRYPTO</text>
                <text x="412" y="932">chunk.</text>
                <text x="272" y="1044">ESTABLISHED</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                                   .-------- (from any state)
                       .-----.    |
         receive INIT |       |   |    receive ABORT      [ABORT]
--------------------- |       v   v    --------------  or ----------
generate State Cookie |    +---------+ delete TCB         send ABORT
        send INIT ACK  '---+  CLOSED |                    delete TCB
                           +--+----+-+
                             /      \
                            /        \  [ASSOCIATE]
                           |          |-----------------
                           |          | create TCB
                           |          | send INIT
          receive valid    |          | start T1-init timer
          COOKIE  ECHO     |          v
      (1) -----------------|    +-----------+
          create TCB       |    |COOKIE-WAIT| (2)
          send COOKIE ACK  |    +-----+-----+
                           |          |
                           |          | receive INIT ACK
                           |          |-------------------
                           |          | send COOKIE ECHO
                           |          | stop T1-init timer
                           |          | start T1-cookie timer
                           |          v
                           |   +-------------+
                           |   |COOKIE-ECHOED| (3)
                           |   +------+------+
                           |          |
                           |          | receive COOKIE ACK
                           |          |-------------------
                           |          | stop T1-cookie timer
         +-----------------+-----+    |
         |     +-----------------)----+-----+
         |     |                 |          |
         |     |                 v          v
         |     |            +---------------------+
         |     |            |  PROTECTION PENDING | If INIT/INIT-ACK
         |     |            +----------+----------+ has Protected
         |     |                       |            Association
         |     |                       |            Parameter start
         |     |                       |            T-valid timer.
         |     |                       |
         |     |                       | [CRYPTO SETUP]
         |     |                       |-----------------
         |     |                       | send and receive
         |     |                       | protection engine handshake
         |     |                       |
         |     |                       v
         |     |           +----------------------+
         |     |           |       PROTECTED      |
         |     |           +-----------+----------+
         |     |                       |
         |     |                       | [ENDPOINT VALIDATION]
         |     |                       |------------------------
         |     |                       | send and receive
         |     |                       | PVALID by means of
         |     |                       | CRYPTO chunk.
         |     |                       |
         |     +-----------------+     |
         +-----------------+     |     |
                           |     |     |
                           v     v     v
                         +---------------+
                         |  ESTABLISHED  |
                         +---------------+
]]></artwork>
        </artset>
      </figure>
      <section anchor="new-states">
        <name>New States</name>
        <t>This section describes details on the amendment to the SCTP
association establishment state machine.</t>
        <section anchor="protection-pending-state">
          <name>PROTECTION PENDING</name>
          <t>The presence of a Protected Association Parameter in the INIT or INIT-ACK
chunk makes the State Machine entering PROTECTION PENDING state instead
of ESTABLISHED.</t>
          <t>When entering PROTECTION PENDING state, a T-valid timer is started
that will cover the whole validation time including the in-band key
establishment. The value of T-valid is dependent on the protection
engine and may also be further adjusted based if expected RTT values
are outside of the ones commonly occurring on the general Internet,
see <xref target="t-valid-considerations"/>.</t>
          <t>If key establishment is in-band, the protection engine will start the
handshake with its peer and in case of failure or T-valid timeout, the
Crypto Chunk will generate an ABORT chunk.  The ERROR handling follows
what specified in <xref target="ekeyhandshake"/>.  When Handshake has been
successfully completed, the association state machine will enter
PROTECTED state.</t>
          <t>The protection engine specification MUST specify when PROTECTED state
can be entered for each endpoint. If key establishment is out-of-band,
after starting T-valid timer the SCTP association will enter PROTECTED
state per protection engine specification when the necessary security
context is in place.</t>
          <t>Whilst in PROTECTION PENDING state, only User Layer Protocol data
belonging to the Protection Engine will be handled, such data will be
transferred as SCTP DATA chunks with the Protection Engine PPID
(see <xref target="iana-payload-protection-id"/>) for the Protection Engine handshake.</t>
        </section>
        <section anchor="protected-state">
          <name>PROTECTED</name>
          <t>The association state machine can only reach PROTECTED state from
PROTECTION PENDING state (see <xref target="protection-pending-state"/>). When entering into
PROTECTED state the T-valid timer is running and the protection engine
has completed the key establishment so that protected data can be sent to
the peer.</t>
          <t>Whilst in PROTECTION PENDING state, only User Layer Protocol data
belonging to the Protection Engine will be handled, such data will be
transferred as SCTP DATA chunks with the Protection Engine PPID
(see <xref target="iana-payload-protection-id"/>) for the Protection Engine handshake.</t>
          <t>In PROTECTED state the association initiating SCTP Endpoint
(initiator) MUST validate the INIT sent protected association
parameter, thus the initiator will send a PVALID chunk that will
contain exactly the same list of Protection Engines as previously sent
in protected association parameter of INIT chunk and in the same order.</t>
          <t>When the responder will receive PVALID, it will compare the list of
protection engines with the list received in the INIT chunk, if they
are identical it will reply to the initiator with a PVALID chunk
containing the Protection Engine previously sent as protected
association parameter in INIT-ACK chunk, it will clear the T-valid
timer and will move into ESTABLISHED state.</t>
          <t>Once in ESTABLISHED state, only CRYPTO chunks can be sent to the remote peer
and any other type of plain text SCTP chunks coming from the remote
peer will be silently discarded with the exception of SHUTDOWN-COMPLETE chunk.</t>
          <t>If the lists of Protection Engines don't match, it will generate an
ABORT chunk. ERROR CAUSE will indicate "Failure in
Protection Engines Validation" and the SCTP association will be
terminated.</t>
          <t>After sending PVALID, the initiator will wait for the responder to
reply with the PVALID confirmation. The initiator will compare the
Protection Engine received from the responder, if the value is the
same it will clear the T-valid timer and move into ESTABLISHED state.
If the chosen Protection Engines don't match, it will generate an
ABORT chunk. ERROR CAUSE will indicate "Failure in
Protection Engines Validation" that is critical.</t>
          <t>If T-valid timer expires either at initiator or responder, it will generate
an ABORT chunk.  The ERROR handling follows what
specified in <xref target="etmout"/>.</t>
        </section>
        <section anchor="key-management-considerations">
          <name>Considerations on key management</name>
          <t>When the Association is in PROTECTION PENDING state,
in-band key management shall exploit SCTP DATA chunk with the Protection Engine
PPID (see <xref target="iana-payload-protection-id"/>) that will be sent unencrypted.</t>
          <t>When the Association is in PROTECTED, ESTABLISHED or in any of the states that can
be reached after ESTABLISHED state, in-band key management shall exploit
SCTP DATA chunk that will be protected by the Protection Engine and
encapsulated in CRYPTO chunks.</t>
          <t>In-band key management shall use a dedicated Payload Protocol Identifier
assigned by IANA and defined in the specific Protection Engine Specification.</t>
        </section>
        <section anchor="t-valid-considerations">
          <name>Consideration on T-valid</name>
          <t>The timer T-Valid supervises initializations that depend on how
the handshake is specified for the Protection Engine and also on
the characteristics of the transport network.</t>
          <t>This specification recommends a default value of 30 seconds for
T-valid. This value is expected to be superseded by recommendations in
the Protection Engine Specification for each Protection Engine.</t>
        </section>
      </section>
    </section>
    <section anchor="procedures">
      <name>Procedures</name>
      <section anchor="establishment-procedure">
        <name>Establishment of a Protected Association</name>
        <t>An SCTP Endpoint acting as initiator willing to create a protected
association shall send to the remote peer an INIT chunk containing the
Protected Association parameter (see <xref target="protectedassoc-parameter"/>)
where all the supported Protection Engines are listed, given in
descending order of preference (see
<xref target="sctp-Crypto-chunk-init-options"/>).</t>
        <t>As alternative, an SCTP Endpoint acting as responder willing to
support only protected associations shall consider INIT chunk not
containing the Protected Association parameter as an error, thus it
will reply with an ABORT chunk according to what specified in
<xref target="enoprotected"/> indicating that for this endpoint mandatory protected
association parameter is missing.</t>
        <t>An SCTP Endpoint acting as responder, when receiving an INIT chunk
with protected association parameter, will search the list of
protection engines for the most preferred commonly supported choice
and will reply with INIT-ACK containing the protected association
parameter with the chosen protection engine. When the responder cannot
find a supported protection engine, it will reply with ABORT containing
Error in Protection with the extra cause code for "No Supported Protection
Engine" (<xref target="eprotlist"/>).</t>
        <t>When initiator and responder have agreed on a protected association by
means of handshaking INIT/INIT-ACK with a common protection engine,
only control chunks, CRYPTO chunks and DATA Chunks with the Protection
Engine PPID will be accepted. Any other DATA chunk being sent on a Protected
association will be silently discarded.</t>
        <t>After completion of initial handshake, that is after COOKIE-ECHO and
COOKIE-ACK, the Protection Engine shall initialize itself by
transferring its own data as payload of the DATA chunk if necessary.  At
completion of Protection Engine initialization, the setup of the
Protected association is complete and from that time on only CRYPTO
chunks will be exchanged.  Any plain text chunks will be silently
discarded.</t>
        <t>After completion of protected association initialization, the
initiator MUST send to the responder a PVALID chunk (see
<xref target="sctp-Crypto-chunk-newchunk-pvalid-chunk"/>) containing the list of
Protection Engines previously sent in the protected association
parameter of the INIT chunk. The responder receiving the PVALID chunk
will compare the Protection Engines list with the one previously
received in the INIT chunk, if they are exactly the same, with the
same Protection engine in the same position, it will reply to the
initiator with a PVALID chunk containing the chosen Protection Engine,
otherwise it will reply with an ABORT chunk. If the association was
not aborted the protected association is considered successfully
established.</t>
        <t>When the initiator receive the PVALID chunk, it will compare with the
previous chosen Protection Engine and in case of mismatch with the one
received previously in the protected association parameter in the
INIT-ACK chunk, it will reply with ABORT, otherwise the protected
association is successfully established.</t>
      </section>
      <section anchor="termination-procedure">
        <name>Termination of a Protected Association</name>
        <t>Besides the procedures for terminating an association explained in
<xref target="RFC9260"/>, the protection engine SHALL ask SCTP endpoint for
terminating an association when having an internal error or by
detecting a security violation, using the procedure described
in <xref target="eengine"/>.  The internal design of Protection
Engines and their capability is out of the scope of the current
document.</t>
      </section>
    </section>
    <section anchor="protected-data-handling">
      <name>Protected Data Chunk Handling</name>
      <t>With reference to the State Diagram as shown in
<xref target="sctp-Crypto-state-diagram"/> and Figure 3 of <xref target="RFC9260"/>, the
handling of Control chunks, Data chunks and Crypto chunks follows the
rules defined below:</t>
      <ul spacing="normal">
        <li>When the association is in states CLOSED, COOKIE-WAIT, and
COOKIE-ECHOED, any Control chunk is sent unprotected (i.e. plain
text). No DATA chunks shall be sent in these states and DATA chunks
received shall be silently discarded.</li>
        <li>When the association is in state PROTECTION PENDING, any Control
chunk is sent unprotected (i.e. plain text). No DATA chunks, except
than the one used by the Protection Engine for handshake, thus
being identified with the Protection Engine PPID
(see <xref target="iana-payload-protection-id"/>), SHALL be
sent in these states and DATA chunks with different PPID being
received shall be silently discarded. DATA Chunks with the
Protection Engine PPID (see <xref target="iana-payload-protection-id"/>)
shall be sent by the Protection Engine to establish its security context.</li>
        <li>When the association is in state PROTECTED, any SCTP chunk except
for CRYPTO chunks, will be used to create an SCTP payload
that will be encrypted by the Protection Engine and the result from
that encryption will be the used as payload for a CRYPTO chunk that
will be the only chunk in the SCTP packet to be sent. DATA chunks
received with PPID different than Protection engine PPID shall be
silently discarded. Note that User Data in PROTECTED
state are not used for creating DATA chunks, the only DATA chunk being
handled are the ones with Protection Engine PPID
(see <xref target="iana-payload-protection-id"/>) related to Protection Engine
handshake.</li>
        <li>When the association is in states ESTABLISHED and in the states for
association shutdown, i.e. SHUTDOWN-PENDING, SHUTDOWN-SENT,
SHUTDOWN-RECEIVED, SHUTDOWN-ACK-SENT as defined by <xref target="RFC9260"/>, any
SCTP chunk including DATA chunks, but excluding CRYPTO chunk, will be
used to create an SCTP payload that will be encrypted by the
Protection Engine and the result from that encryption will be the used
as payload for a CRYPTO chunk that will be the only chunk in the SCTP
packet to be sent. DATA chunks are accepted and handled according
to section 4 of <xref target="RFC9260"/>.</li>
      </ul>
      <figure anchor="sctp-Crypto-encrypt-chunk-states-1">
        <name>Plain Text SCTP Packet</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="236" y="84">Common</text>
                <text x="292" y="84">Header</text>
                <text x="248" y="116">Chunk</text>
                <text x="284" y="116">#1</text>
                <text x="240" y="148">.</text>
                <text x="256" y="148">.</text>
                <text x="272" y="148">.</text>
                <text x="248" y="180">Chunk</text>
                <text x="284" y="180">#n</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Common Header                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Chunk #1                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            . . .                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Chunk #n                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <t>The diagram shown in <xref target="sctp-Crypto-encrypt-chunk-states-1"/> describes
the structure of any plain text SCTP packet being sent or received
when the association has not reached the PROTECTED state yet. SCTP
packet as depicted in <xref target="sctp-Crypto-encrypt-chunk-states-2"/> may also
be sent in PROTECTION PENDING state and in any later state of the
association.</t>
      <figure anchor="sctp-Crypto-encrypt-chunk-states-2">
        <name>Protected SCTP Packets</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="528" viewBox="0 0 528 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,128" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="236" y="84">Common</text>
                <text x="292" y="84">Header</text>
                <text x="236" y="116">CRYPTO</text>
                <text x="288" y="116">Chunk</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Common Header                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         CRYPTO Chunk                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <t>The diagram shown in <xref target="sctp-Crypto-encrypt-chunk-states-2"/> describes
the structure of an SCTP packet being sent after the PROTECTED state
has been reached. Such packets are built with the SCTP common
header. Only one CRYPTO chunk can be sent in a SCTP packet.</t>
      <section anchor="data-sending">
        <name>Protected Data Chunk Transmission</name>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTION PENDING state, it MAY perform protection
engine key management inband depending on how the specification for the
chosen Protection Engine has been defined.  In such case, the CRYPTO
chunk Handler will receive plain control and DATA chunks from the SCTP chunk
handler.</t>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTED state, the CRYPTO chunk handler will receive
control chunks and DATA chunks from the SCTP chunk handler as a
complete SCTP payload with maximum size limited by PMTU reduced by the
size of the SCTP common header and the CRYPTO chunk overhead.</t>
        <t>That plain payload will be sent to the protection engine in use for
that specific association, the protection engine will return an
encrypted payload.</t>
        <t>Depending on the specification for the chosen protection engine, when
forming the CRYPTO chunk header the CRYPTO chunk handler MAY set the
chunk header flags (see <xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>).</t>
        <t>An SCTP packet containing an SCTP CRYPTO chunk SHALL be delivered
without delay and SCTP bundling SHALL NOT be performed.</t>
      </section>
      <section anchor="data-receiving">
        <name>Protected Data Chunk Reception</name>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTION PENDING state, it MAY handle key management
inband depending on how the specification for the chosen protection
engine has been defined.  In such case, the CRYPTO chunk handler will
receive plain control chunks and DATA chunks with Protection Engine
PPID from the SCTP Header Handler. Those plain control chunks will be
forwarded to SCTP chunk handler.</t>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTED state, the CRYPTO chunk handler will receive
CRYPTO chunks from the SCTP Header Handler.  Payload from CRYPTO
chunks will be forwarded to the protection engine in use for that
specific association for decryption, the protection engine will return
a plain SCTP Payload.  The plain SCTP payload will be forwarded to
SCTP Chunk Handler that will split it in separated chunks and will
handle them according to <xref target="RFC9260"/>.</t>
        <t>Depending on the specification for the chosen protection engine, when
receiving the CRYPTO chunk header the CRYPTO Chunk Handler MAY handle
the Flags (see <xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>) according
to that specification.</t>
        <t>Meta data belonging to the SCTP packet received SHALL be tied to the
relevant chunks and forwarded transparently to the SCTP endpoint.</t>
        <section anchor="sctp-header-handler">
          <name>SCTP Header Handler</name>
          <t>The SCTP Header Handler is responsible for correctness of the SCTP
common header, it receives the SCTP packet from the lower transport
layer, discriminates among associations and forwards the payload and
relevant data to the SCTP protection engine for handling.</t>
          <t>In the opposite direction it creates the SCTP common header and fills
it with the relevant information for the specific association and
delivers it towards the lower transport layer.</t>
        </section>
      </section>
    </section>
    <section anchor="IANA-Consideration">
      <name>IANA Considerations</name>
      <t>This document defines two new registries in the Stream Control
Transmission Protocol (SCTP) Parameters group that IANA
maintains. Theses registries are for the protection engine identifiers
and extra cause codes for protection related errors. It also adds
registry entries into several other registries in the Stream Control
Transmission Protocol (SCTP) Parameters group:</t>
      <ul spacing="normal">
        <li>Two new SCTP Chunk Types</li>
        <li>One new SCTP Chunk Parameter Type</li>
        <li>One new SCTP Error Cause Codes</li>
        <li>One new SCTP Payload Protocol Identifier</li>
      </ul>
      <section anchor="iana-protection-engines">
        <name>Protection Engine Identifier Registry</name>
        <t>IANA is requested to create a new registry called "CRYPTO Chunk
Protection Engine Identifiers". This registry is part of the Stream
Control Transmission Protocol (SCTP) Parameters grouping.</t>
        <t>The purpose of this registry is to enable identification of different
protection engines used by the CRYPTO chunk when performing the SCTP
handshake and negotiating support. Entries in the registry requires a
protection engine name, a reference to the specification for the
protection engine, and a contact. Each entry will be assigned by IANA
a unique 16-bit unsigned integer identifier for their protection
engine. Values 0-65534 are available for assignment. Value 65535 is
reserved for future extension. The proposed general form of the
registry is depicted below in <xref target="iana-protection-engine-identifier"/>.</t>
        <table anchor="iana-protection-engine-identifier">
          <name>Protection Engine Identifier Registry</name>
          <thead>
            <tr>
              <th align="right">ID Value</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
              <th align="left">Contact</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0-65534</td>
              <td align="left">Available for Assignment</td>
              <td align="left">RFC-To-Be</td>
              <td align="left"> </td>
            </tr>
            <tr>
              <td align="right">65535</td>
              <td align="left">Reserved</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
          </tbody>
        </table>
        <t>New entries are registered following the Specification Required policy
as defined by <xref target="RFC8126"/>.</t>
      </section>
      <section anchor="IANA-Extra-Cause">
        <name>Protection Error Cause Codes Registry</name>
        <t>IANA is requested to create a new registry called "Protection Error
Cause Codes". This registry is part of the Stream Control Transmission
Protocol (SCTP) Parameters grouping.</t>
        <t>The purpose of this registry is to enable identification of different
protection related errors when using CRYPTO chunk and a protection
engine.  Entries in the registry requires a Meaning, a reference to
the specification defining the error, and a contact. Each entry will
be assigned by IANA a unique 16-bit unsigned integer identifier for
their protection engine. Values 0-65534 are available for
assignment. Value 65535 is reserved for future extension. The proposed
general form of the registry is depicted below in
<xref target="iana-protection-error-cause"/>.</t>
        <table anchor="iana-protection-error-cause">
          <name>Protection Error Cause Code</name>
          <thead>
            <tr>
              <th align="right">Cause Code</th>
              <th align="left">Meaning</th>
              <th align="left">Reference</th>
              <th align="left">Contact</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0</td>
              <td align="left">Error in the Protection Engine List</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
            <tr>
              <td align="right">1</td>
              <td align="left">Error During Protection Handshake</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
            <tr>
              <td align="right">2</td>
              <td align="left">Failure in Protection Engines Validation</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
            <tr>
              <td align="right">3</td>
              <td align="left">Timeout During KEY Handshake or Validation</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
            <tr>
              <td align="right">4-65534</td>
              <td align="left">Available for Assignment</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
            <tr>
              <td align="right">65535</td>
              <td align="left">Reserved</td>
              <td align="left">RFC-To-Be</td>
              <td align="left">Authors</td>
            </tr>
          </tbody>
        </table>
        <t>New entries are registered following the Specification Required policy
as defined by <xref target="RFC8126"/>.</t>
      </section>
      <section anchor="sctp-chunk-types">
        <name>SCTP Chunk Types</name>
        <t>In the Stream Control Transmission Protocol (SCTP) Parameters group's
"Chunk Types" registry, IANA is requested to add the two new entries
depicted below in in <xref target="iana-chunk-types"/> with a reference to this
document. The registry at time of writing was available at:
https://www.iana.org/assignments/sctp-parameters/sctp-parameters.xhtml#sctp-parameters-1</t>
        <table anchor="iana-chunk-types">
          <name>New Chunk Types Registered</name>
          <thead>
            <tr>
              <th align="right">ID Value</th>
              <th align="left">Chunk Type</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBA6</td>
              <td align="left">Crypto Chunk (CRYPTO)</td>
              <td align="left">RFC-To-Be</td>
            </tr>
            <tr>
              <td align="right">TBA7</td>
              <td align="left">Protected Association Parameter Validation (PVALID)</td>
              <td align="left">RFC-To-Be</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sctp-chunk-parameter-types">
        <name>SCTP Chunk Parameter Types</name>
        <t>In the Stream Control Transmission Protocol (SCTP) Parameters group's
"Chunk Parameter Types" registry, IANA is requested to add the new
entry depicted below in in <xref target="iana-chunk-parameter-types"/> with a
reference to this document. The registry at time of writing was
available at:
https://www.iana.org/assignments/sctp-parameters/sctp-parameters.xhtml#sctp-parameters-2</t>
        <table anchor="iana-chunk-parameter-types">
          <name>New Chunk Type Parameters Registered</name>
          <thead>
            <tr>
              <th align="right">ID Value</th>
              <th align="left">Chunk Parameter Type</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBA8</td>
              <td align="left">Protected Association</td>
              <td align="left">RFC-To-Be</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sctp-error-cause-codes">
        <name>SCTP Error Cause Codes</name>
        <t>In the Stream Control Transmission Protocol (SCTP) Parameters group's
"Error Cause Codes" registry, IANA is requested to add the new
entry depicted below in in <xref target="iana-error-cause-codes"/> with a
reference to this document. The registry at time of writing was
available at:
https://www.iana.org/assignments/sctp-parameters/sctp-parameters.xhtml#sctp-parameters-24</t>
        <table anchor="iana-error-cause-codes">
          <name>Error Cause Codes Parameters Registered</name>
          <thead>
            <tr>
              <th align="right">ID Value</th>
              <th align="left">Error Cause Codes</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBA9</td>
              <td align="left">Protection Engine Error</td>
              <td align="left">RFC-To-Be</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="sctp-payload-protocol-identifier">
        <name>SCTP Payload Protocol Identifier</name>
        <t>In the Stream Control Transmission Protocol (SCTP) Parameters group's
"Payload Protocol Identifiers" registry, IANA is requested to add the new
entry depicted below in in <xref target="iana-payload-protection-id"/> with a
reference to this document. The registry at time of writing was
available at:
https://www.iana.org/assignments/sctp-parameters/sctp-parameters.xhtml#sctp-parameters-25</t>
        <table anchor="iana-payload-protection-id">
          <name>Protection Engine Protocol Identifier Registered</name>
          <thead>
            <tr>
              <th align="right">ID Value</th>
              <th align="left">SCTP Payload Protocol Identifier</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">TBA10</td>
              <td align="left">Protection Engine Protocol Identifier</td>
              <td align="left">RFC-To-Be</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="Security-Considerations">
      <name>Security Considerations</name>
      <t>All the security and privacy considerations of the security protocol
used as the protection engine applies.</t>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Using a security protocol in the SCTP CRYPTO chunk might lower the
privacy properties of the security protocol as the SCTP Verification
Tag is an unique identifier for the association.</t>
      </section>
      <section anchor="Downgrade-Attacks">
        <name>Downgrade Attacks</name>
        <t>The CRYPTO chunk provides a mechanism for preventing downgrade attacks
that detects downgrading attempts between protection engines and
terminates the association. The chosen protection engine is the same
as if the peers had been communicating in the absence of an attacker.</t>
        <t>The protection engine initial handshake is verified before the
association is set as ESTABLISHED, thus no user data are sent before
validation.</t>
        <t>The downgrade protection is only as strong as the weakest of the
supported protection engines as an active attacker can trick the
endpoints to negotiate the weakest protection engine and then
modify the weakly protected CRYPTO chunks to deceive the endpoints
that the negotiation of the protection engines is validated. This
is similar to the downgrade protection in TLS 1.3 specified in
Section 4.1.3. of <xref target="RFC8446"/> where downgrade protection is not
provided when TLS 1.2 with static RSA is used. It is RECOMMENDED
to only support a limited set of strongly profiled protection
engines.</t>
      </section>
    </section>
    <section anchor="requirements">
      <name>Requirements towards the protection engines</name>
      <t>This section specifies what is to be specified in the description
of a protection engine.</t>
      <ul spacing="normal">
        <li>Define how to protect the plain text set of chunks and encapsulate
them in the CRYPTO Chunk payload.</li>
        <li>Can define its usage of the 8-bit chunk Flags field in the CRYPTO
chunk</li>
        <li>Is required to register the defined protection engine(s) with IANA
per <xref target="iana-protection-engines"/>.</li>
        <li>Detail the state transition between PROTECTION PENDING and
PROTECTED state (see <xref target="state-diagram"/>).</li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors thank Michael Tüxen for his invaluable comments
   helping to cope with Association Restart, ASCONF handling and
   restructuring the Protection Engine architecture.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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>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="RFC4895" target="https://www.rfc-editor.org/info/rfc4895" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4895.xml">
          <front>
            <title>Authenticated Chunks for the Stream Control Transmission Protocol (SCTP)</title>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="P. Lei" initials="P." surname="Lei"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2007"/>
            <abstract>
              <t>This document describes a new chunk type, several parameters, and procedures for the Stream Control Transmission Protocol (SCTP).  This new chunk type can be used to authenticate SCTP chunks by using shared keys between the sender and receiver.  The new parameters are used to establish the shared keys. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4895"/>
          <seriesInfo name="DOI" value="10.17487/RFC4895"/>
        </reference>
        <reference anchor="RFC5061" target="https://www.rfc-editor.org/info/rfc5061" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5061.xml">
          <front>
            <title>Stream Control Transmission Protocol (SCTP) Dynamic Address Reconfiguration</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="Q. Xie" initials="Q." surname="Xie"/>
            <author fullname="M. Tuexen" initials="M." surname="Tuexen"/>
            <author fullname="S. Maruyama" initials="S." surname="Maruyama"/>
            <author fullname="M. Kozuka" initials="M." surname="Kozuka"/>
            <date month="September" year="2007"/>
            <abstract>
              <t>A local host may have multiple points of attachment to the Internet, giving it a degree of fault tolerance from hardware failures.  Stream Control Transmission Protocol (SCTP) (RFC 4960) was developed to take full advantage of such a multi-homed host to provide a fast failover and association survivability in the face of such hardware failures.  This document describes an extension to SCTP that will allow an SCTP stack to dynamically add an IP address to an SCTP association, dynamically delete an IP address from an SCTP association, and to request to set the primary address the peer will use when sending to an endpoint. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5061"/>
          <seriesInfo name="DOI" value="10.17487/RFC5061"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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>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="RFC9260" target="https://www.rfc-editor.org/info/rfc9260" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9260.xml">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author fullname="R. Stewart" initials="R." surname="Stewart"/>
            <author fullname="M. Tüxen" initials="M." surname="Tüxen"/>
            <author fullname="K. Nielsen" initials="K." surname="Nielsen"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes the Stream Control Transmission Protocol (SCTP) and obsoletes RFC 4960. It incorporates the specification of the chunk flags registry from RFC 6096 and the specification of the I bit of DATA chunks from RFC 7053. Therefore, RFCs 6096 and 7053 are also obsoleted by this document. In addition, RFCs 4460 and 8540, which describe errata for SCTP, are obsoleted by this document.</t>
              <t>SCTP was originally designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks. It is also suited to be used for other applications, for example, WebRTC.</t>
              <t>SCTP is a reliable transport protocol operating on top of a connectionless packet network, such as IP. It offers the following services to its users:</t>
              <t>The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9260"/>
          <seriesInfo name="DOI" value="10.17487/RFC9260"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="I-D.westerlund-tsvwg-sctp-crypto-dtls" target="https://datatracker.ietf.org/doc/draft-westerlund-tsvwg-sctp-crypto-dtls/">
          <front>
            <title>Datagram Transport Layer Security (DTLS) in the Stream Control Transmission Protocol (SCTP) CRYPTO Chunk</title>
            <author initials="M." surname="Westerlund" fullname="Magnus Westerlund">
              <organization>Ericsson</organization>
            </author>
            <author initials="J." surname="Preuß Mattsson" fullname="John Preuß Mattsson">
              <organization>Ericsson</organization>
            </author>
            <author initials="C." surname="Porfiri" fullname="Claudio Porfiri">
              <organization>Ericsson</organization>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963obx5Xg/3qKWuqHpRiARUqWbX6TmaFJKuJYIrkiZCff
JN9+TaAA9gjoRrobpBhJ+yq7D7K/dl5sz61u3dUAKctOJhs6sUmguy6nzv2c
Omc4HKppOSmypdnX0yqbNcMbUzemWqyL6bCpr2/mw3rSrIaT6nbVlMPJ1bp4
O3y8q5q8WcArF01lsqU+LIumKhd6XGVFvczrOi8LfV6VTTmBTx9eHI7PH+nD
1384H5/pQxxCZZeXlbmGAeCr+Jvysi4XpjH1vppkzb6um6nKV9W+bqp13ew9
fvzd4z11M9/X44sff/qdymAB+zzxqqwaVa8vZQHN7QpWeHI8fq71A50t6nJf
7+TF1KwM/KtodgZ65+Tge/hPWcFvr8fPd5S6NsXa7Cut51W5XgUD6wOYSP9U
Vm/zYq5/h9/qhwSgR/D0MssXsEL8819z08xGZTXHQfLman25r+eLMi/Wi6/u
CmGlsnVzVVb7agij6Lyo97V+NdI/uTfxYz61V9m8WNetr2D6fX1c5ZO6Lgv8
wPAKl/TwyK/gX408NJqUy2C2fxvB+Zn1f/4vGL9p7Cg847+VV0Xq275J/wOe
Hy3lwb4JD2HCsprlVe4nOlxk62lehl/0zTHhR0crfjSeReXFrKxgBfk1ne3r
54ffPn36bF/B7yfDo9HGA5k2ixpf0rrJqrkBjNy5appVvf/VV9OsyZoqm7w1
1cie+ldATnc5Zxz2qx0el2lp5wiGm1dATh7pXma3ptIXZrKu8uZWPzwav7x4
BADTzZX5ZOLjWS2GafoZyn/7cE1vxjedOhp9Z7xLrSGNgX4dfVi4bSkbsDG1
jBgv/fQJ3Nw280YcxecAn3Bj68Lovcd7T5RSRQtt93Z3v5Nfn3773dfy69eP
n+1avN7de+Z+/eap/Prd3rPHgO3D4VBnlzWibKPU+CqvNWDregnMUE9NPany
S1PrTC8NoMZUA83obDpFfsdIC8i5usonegXIZSYN4Jlqyvui4kiP8QXP9xWx
PFjALC/MlJE7XBn8nhcN8uyphulMkV0ujAaYLddFDiIC5qjVqsqvs8ktr3m1
WtgvYKys0etaZszwA5NXIEwsia3s8jJA5WyxKG/q1ghlMJnB9WX6JrvlkXGh
ps7nBS0OlmGucc0muzb1tCpXK4QejAxPIciAhyxXcO7wISx0aeo6mxtc9NxU
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
e92M9A+aFLbTSDwY+FukKSqX+itCrjetVTKNo3NVLoc6edkKFI/uz27is73E
Z0/w9V346ol+qr/Wz/Q3+lv93X0+U18Of+Y/fA2lRT+/JWL5/e/dFZrokZcA
LpClwYWVz7KGn/HTd7splfl2zxF+/hrcT/piz/brRcEc4R/nUrEjWsPPP4vt
14yII5Yr0TGZH24h8A1Xi2CO6xo0bxjkMfwdY+K+3n3GzOXhupDiGxSgMNUj
tc/RSjYAXJYPK/CMv0CybbS9+4hX5WLKbHnBCG9zQbs4NcvNgtIWNKVL1RyY
ezqK8kDkYdhuVnESI48Ls54UbU2YtJBgBZ69tQUsBnGAgcvlA1bp6UlDyVIT
M4BVUXodBRHLupHv0JuDvsTa+hotf1yA/hk+tMA/aXO0KtrsKFwzyb/Out39
Lua3SndXP9LHGZjMyURZH9u4xJzx3WdDODUYpH1qdMZECfvAEUGnlfNFsM7u
dXwsMjPnlofJ4J2nfKQDMdtRoDKyrTIrTsgeJhsVFKe/mKrkV5Rm4/KtCZ57
sof70EQG9g6WpWSr+iIeo9+eSmRQGuGe4BVXKXDIzjqCC0Vb9QFAAkJ8eDzN
0XpEBWRfn+OpGq46ARbs43ePvwX+7kI3EtyJZbdiQgCJzBCHaU4OTg8sohSc
hGD40LGCwchqpmyTIgXXopYy68BRMQkfVILYfH3IuuQjDDMHvGab+ipI16u6
xsV/oiteHIVS2xMWEze446lJA/U71vaPQPN8+nv8NLnhPr0zXkTySifO1tI2
t5/703edUw+gSCeu7nXiJ43NY7q0dSycutsuiNOr8SpQUlehRkszRHUirJuO
A4rol5wXdOfH2R9Y1MklF9rkWlw67B5xoOdNjukcv3599lou5a9rm23wxZvw
eQ/2LzhUyQlXvpiDurNyHenWjywFs2Kt0op1hHHjNnQDtRj5bxgWDW5kciIA
ZZAELra/X9XWqbNAgag+8QlyZnOgTskV6Uix/RtXbfnHXfD/5BF+/hr051Zt
E5rtr6TaJlPVk7z3gr5aV+buqq3nHvuA5J+m1QIaU+G7RVziC+NAAWrb8e1g
ljf0XwpBvcIrE3KdJqSKz6A3C6oC62kryfxNSjMex3qwvz4udzG96jfQ3w5g
jVTjde/pZhXQrqSt8fXoe6CF3U3j69X3YASn8W1R+Vjhe9JV+NC42KTyoU61
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
i7FyuZ9qUvGlafQFmXfY2JQrvlj64AM7iO97opJYDCcxdvYWX33/oAieZqOq
Zr9NOIrZjCFxoaNEhTiEg6+ELuUNEBdsmUzOIzJTWzySmoTo7snILVu65ttT
Zi5LLd1CGp7kDmuK/EF4t7mssopiM7C6pd2jz2FP1ODnshut0o5ca/Tg8IeL
DWV9fCuGLoxokuCYU/sYqJZqwbWoJQJYE1kzigPddV+vsZ+77ySAbjFsUtq/
HFuIQro3YCVsqRbligO1iwFvq/DLzQG9P5YO8IJuUx9xsW+snREV/+Z0ntg7
2SoPTtd2awmcYt8IlxbUqRjBN7eXYOhKZe7eHCRftSXp7Nr+M7IZH/qh1A66
5ekf9b3Nb4zYheI+tXyOTDTrevlg3TD2W8YL+vl3+v1PKpl+4ka4lv/r1veo
/Pg/1Rw0OeoNy6d0WJZvc8OD+EyXL7FSLshgPT783q2b+DQtRUUf0T4wJK+/
oFf14cuzi+OjdCM2P+4mkH8pberQcbThMa2l99ofNz7lGrT9EWF5cXF2eHIw
Pv7TpneCtX/ogPyuL0rTqm2bjV5xEA3esCjBClXnDaqIMN4lFz/LtuDdw7Oz
H06OtT4+fHHWnu1annu4+0h3NtnCiGF0En5j4R4+8GTDnw5Oxh8w7Bq8QfuS
xRCuBON/2Rl/I4zuDMuI0PAi8h1fTFDZ/c5P9okwv/uLqFf1neK2VwUDJkzM
93n7ettzcfrb1kOyOIB7Pz4CLHjSyx1bM3x5xxnsr/dGA499vwoiyHmmz6Sb
VChE0Nrah56nHyXp5kN7GYmFbX/6Ovh149N9bRY3vQN/SMOLk7NTfX58enRy
+jv4FKzGuGjAHScOfyUHmNNFtm9Udz8PdNRPet+nsXBHs08ZI7Scq9Gdh7j7
XP8udwMujsdvzv905/c20MK2GcULNLW0ePc3u6qs82B8dshsxPaeNOCN2O4K
P7gWL9sXFIncu1LVp+wW8ACo7/zs5HSsKff3AEnyZ6DDr4gVkqx8aYsVl7O7
vxtfjLnra9tZ8pftB3sfaT+YWuUdH7wO/93/YKcTdP+jMGnYxWnT9N1RN6X5
RDaeDfAm7EUulEfvbAjvPuBb8vSqvSBPM9Tdi1c2k2Nqu+NI2xesKbkM+r12
jEtXN5GeikxN8aonZFnUNE/aQUpswRbwxhwfDrhmWxNDe/Kf5fIOJhhLfyla
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
NtkAtkrjVNj+IpBYjiXHz6jr5/8DpJMgq6/qAAA=

-->

</rfc>
