<?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.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-westerlund-tsvwg-sctp-crypto-chunk-02" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.0 -->
  <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-02"/>
    <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="September" day="08"/>
    <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 most 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 that are possible to use between two SCTP peers with
   full security and SCTP association state.</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 their SCTP protocol
specifications. <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" stroke-linecap="round">
                <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
SCTP association is established and the peers have agreed on what
protection to use, the SCTP endpoints may 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 and may be done out-of-band of the SCTP association.</t>
        <t>When the endpoint authentication and key establishment has been
completed, the association is considered to be secured and the ULP is
informed about that. From this time on it's possible for the ULPs to
exchange data securely.</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. SCTP CRYPTO provides support for in-band key management, on
those cases 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 protection engine initialization, that is after the SCTP
association reaches the ESTABLISHED state (see <xref target="RFC9260"/> Section 4),
but before protection engine key-management has completed and the
Protected Assocation Parameter Validation is completed, the in-band
Key Management MAY 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 protection engine has been
intialized and the validation has occured, any protection engine that
uses in-band 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.
SCTP CRYPTO chunk state evolution is described in <xref target="init-state-machine"/>.</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>This section deals with the handling of an unexpected INIT chunk during an
Association lifetime as described in <xref target="RFC9260"/> section 5.2 The introduction of
CRYPTO CHUNK opens for two alternatives depending on if the protection engine
preserves its state (crypto context) or not.</t>
        <t>When the encryption engine can preserve the crypto context, meaning that
encrypted data belonging to the current Association can be encrypted and
decrypted, the request for SCTP Restart SHOULD use INIT chunk in CRYPTO chunk.</t>
        <t>When the crypto context is not preserved, the SCTP Restart can only be
accomplished by means of plain text INIT.  This opens to a man-in-the-middle
attack where a malicious attacker may theoretically generate an INIT chunk with
proper parameters and hijack the SCTP association.</t>
        <section anchor="init-chunk-in-crypto-chunk">
          <name>INIT chunk in CRYPTO chunk</name>
          <t>If the crypto context has been preserved the peer aiming for a SCTP Restart can
still send CRYPTO chunks that can be processed by the remote peer.  In such case
the peer willing to restart the Association SHOULD send the INIT chunk in a
CRYPTO chunk and encrypt it.  At reception of the CRYPTO chunk containing INIT,
the receiver will follow the procedure described in <xref target="RFC9260"/> section 5.2.2
with the exception that all the chunks will be sent in CRYPTO chunks.</t>
          <t>An endpoint supporting SCTP Association Restart and implementing Crypto Chunk
MUST accept receiving SCTP packets with a verification tag with value 0.  The
endpoint 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. Note
that type of trial decrypting of the SCTP packets will increase the resource
consumption per packet with the number of matching SCTP associations.</t>
          <t>Note that the Association Restart will update the verification tags for both
endpoints.  At the end of the unexpected INIT handshaking the receiver of INIT
chunk SHALL trigger the creation of a new DTLS connection to be executed as soon
as possible to verify the peer identity.</t>
        </section>
        <section anchor="init-chunk-as-plain-text">
          <name>INIT chunk as plain text</name>
          <t>If the crypto context isn't preserved the peer aiming for a SCTP Restart can
only perform an INIT in plain text. Supporting this option opens up the SCTP
association to an availability attack, where an capable attacker may be able to
hijack the SCTP association. Therefore an implementation should only support and
enable this option if restart is crucial.</t>
          <t>To mount the attack the attacker needs to be able to process copies of packets
sent from the target endpoint towards its peer for the targeted SCTP
association. In addition the attacker needs to be able to send IP packets with
a source address of the target's peer. If the attacker can send an SCTP INIT
that appear to be from the peer, if the target is allowing this option it will
generate an INIT ACK back, and assuming the attacker succesfully completes the
restart handshake process the attack has managed to change the VTAG for the
association and the peer will no longer respond, leading to a SCTP associatons
failure.</t>
          <t>As mitigation an SCTP endpoint supporting Association Restart by means of plain
text INIT SHOULD support is the following. The endpoint receiving an INIT
should send HEARTBEATs protected by CRYPTO CHUNK to its peer to validate that
the peer is unreachable. If the endpoint receive an HEARTBEAT ACK within a
reasonable time (at least a couple of RTTs) the restart INIT SHOULD be discarded
as the peer obviously can respond, and thus have no need for a restart. A
capable attacker can still succeed in its attack supressing the HEARTBEAT(s)
through packet filtering, congestion overload or any other method preventing the
HEARTBEATS or there ACKs to reach their destination. If it has been validated
that the peer is unreachable, the INIT chunk will trigger the procedure
described in <xref target="RFC9260"/> section 5.2.2</t>
          <t>Note that the Association Restart will update the verification tags for both
endpoints.  At the end of the unexpected INIT handshaking the receiver of INIT
chunk SHALL trigger the creation of a new DTLS connection to be executed as soon
as possible.  Also note that failure in handshaking of a new DTLS connection is
considered a protocol violation and will lead to Association Abort (see
<xref target="ekeyhandshake"/>).</t>
        </section>
      </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" stroke-linecap="round">
                <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" stroke-linecap="round">
                <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" stroke-linecap="round">
                <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" stroke-linecap="round">
                <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" stroke-linecap="round">
                <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 in-band, 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, i.e. when the
PVALID chunks <xref target="pvalid-chunk"/> are exchanged to validate the protection
engine offered. 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 in-band 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="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>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>Additionally, 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>When initiator and responder have agreed on a protected association by
means of handshaking INIT/INIT-ACK with a common protection engine the
SCTP association establishment continue until it has reached the
ESTABLISHED state. However, before the SCTP assocation is protected by
the Crypto Chunk and its protection engine some additional states
needs to be passed. First the protection engine needs be initilizied
in the PROTECTION INTILIZATION state. When that has been accomplished
one enters the VALIDATION state where one validates the exchange of
the Protected Association Parameter. If that is successful one enters
the PROTECTED state. This state sequence is depicted in
<xref target="init-state-machine"/>.</t>
        <t>Until the procedure has reached the PROTECTED state the only usage
of DATA Chunks that is accepted is DATA Chunks with the Protection
Engine PPID. Any other DATA chunk being sent on a Protected
association SHALL be silently discarded.</t>
        <t>The Protection Engine may initialize itself by transferring its own
messages as payload of the DATA chunk if necessary. The Crypto Chunk
initialization SHOULD be supervised by a T-valid timer that depends on
the protection engine and may also be further adjusted based on whether
expected RTT values are outside of the ones commonly occurring on the
general Internet, see <xref target="t-valid-considerations"/>. At completion of
Protection Engine initialization the setup of the Protected
association is complete and one enters the VALIDATION state, and from
that time on only CRYPTO chunks will be exchanged. Any plain text
chunk will be silently discarded.</t>
        <t>If protection engine 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 endpoint will generate an ABORT chunk.
The ERROR handling follows what specified in <xref target="ekeyhandshake"/>.</t>
        <t>The protection engine specification MUST specify when VALIDATION state
can be entered for each endpoint. If key establishment is out-of-band,
after starting T-valid timer the SCTP association will enter the
VALIDATION state per protection engine specification when the
necessary security context is in place.</t>
        <t>When entering the VALIDATION state, 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 transmission of the PVALID chunk MUST
be done reliably. 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. ERROR CAUSE will indicate "Failure
in Protection Engines Validation" and the SCTP association will be
terminated. If the association was not aborted the protected
association is considered successfully established and the PROTECTED
state is entered.</t>
        <t>When the initiator receives 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 with the ERROR CAUSE "Failure
in Protection Engines Validation", otherwise the protected association
is successfully established and the initiator enters the PROTECTED
state.</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>
        <t>In the PROTECTED state any ULP SCTP messages for any PPID MAY be
exchanged in the protected SCTP association.</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"/>.
During the termination procedure all Control Chunks SHALL be protected
except SHUTDOWN-COMPLETE. The internal design of Protection
Engines and their capability is out of the scope of the current
document.</t>
      </section>
      <section anchor="init-state-machine">
        <name>Protection Initialization State Machine</name>
        <figure anchor="sctp-Crypto-state-diagram">
          <name>Crypto Chunk State Diagram</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="528" width="368" viewBox="0 0 368 528" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                <path d="M 8,144 L 8,176" fill="none" stroke="black"/>
                <path d="M 16,320 L 16,352" fill="none" stroke="black"/>
                <path d="M 48,32 L 48,64" fill="none" stroke="black"/>
                <path d="M 48,480 L 48,512" fill="none" stroke="black"/>
                <path d="M 112,64 L 112,136" fill="none" stroke="black"/>
                <path d="M 112,176 L 112,312" fill="none" stroke="black"/>
                <path d="M 112,352 L 112,472" fill="none" stroke="black"/>
                <path d="M 176,32 L 176,64" fill="none" stroke="black"/>
                <path d="M 176,480 L 176,512" fill="none" stroke="black"/>
                <path d="M 200,320 L 200,352" fill="none" stroke="black"/>
                <path d="M 224,144 L 224,176" fill="none" stroke="black"/>
                <path d="M 48,32 L 176,32" fill="none" stroke="black"/>
                <path d="M 48,64 L 176,64" fill="none" stroke="black"/>
                <path d="M 8,144 L 224,144" fill="none" stroke="black"/>
                <path d="M 8,176 L 224,176" fill="none" stroke="black"/>
                <path d="M 120,256 L 248,256" fill="none" stroke="black"/>
                <path d="M 16,320 L 200,320" fill="none" stroke="black"/>
                <path d="M 16,352 L 200,352" fill="none" stroke="black"/>
                <path d="M 120,400 L 304,400" fill="none" stroke="black"/>
                <path d="M 48,480 L 176,480" fill="none" stroke="black"/>
                <path d="M 48,512 L 176,512" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="120,472 108,466.4 108,477.6" fill="black" transform="rotate(90,112,472)"/>
                <polygon class="arrowhead" points="120,312 108,306.4 108,317.6" fill="black" transform="rotate(90,112,312)"/>
                <polygon class="arrowhead" points="120,136 108,130.4 108,141.6" fill="black" transform="rotate(90,112,136)"/>
                <g class="text">
                  <text x="112" y="52">ESTABLISHED</text>
                  <text x="132" y="100">If</text>
                  <text x="200" y="100">INIT/INIT-ACK</text>
                  <text x="272" y="100">has</text>
                  <text x="328" y="100">Protected</text>
                  <text x="168" y="116">Association</text>
                  <text x="256" y="116">Parameter</text>
                  <text x="60" y="164">PROTECTION</text>
                  <text x="160" y="164">INITILIZATION</text>
                  <text x="144" y="212">start</text>
                  <text x="200" y="212">T-valid</text>
                  <text x="260" y="212">timer.</text>
                  <text x="152" y="244">[CRYPTO</text>
                  <text x="212" y="244">SETUP]</text>
                  <text x="140" y="276">send</text>
                  <text x="176" y="276">and</text>
                  <text x="224" y="276">receive</text>
                  <text x="164" y="292">protection</text>
                  <text x="236" y="292">engine</text>
                  <text x="304" y="292">handshake</text>
                  <text x="108" y="340">VALIDATION</text>
                  <text x="160" y="388">[ENDPOINT</text>
                  <text x="248" y="388">VALIDATION]</text>
                  <text x="140" y="420">send</text>
                  <text x="176" y="420">and</text>
                  <text x="224" y="420">receive</text>
                  <text x="148" y="436">PVALID</text>
                  <text x="188" y="436">by</text>
                  <text x="224" y="436">means</text>
                  <text x="260" y="436">of</text>
                  <text x="148" y="452">CRYPTO</text>
                  <text x="204" y="452">chunk.</text>
                  <text x="112" y="500">PROTECTED</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
     +---------------+
     |  ESTABLISHED  |
     +-------+-------+
             |
             | If INIT/INIT-ACK has Protected
             | Association Parameter
             v
+--------------------------+
| PROTECTION INITILIZATION |
+------------+-------------+
             |
             | start T-valid timer.
             |
             | [CRYPTO SETUP]
             |-----------------
             | send and receive
             | protection engine handshake
             v
 +----------------------+
 |      VALIDATION      |
 +-----------+----------+
             |
             | [ENDPOINT VALIDATION]
             |------------------------
             | send and receive
             | PVALID by means of
             | CRYPTO chunk.
             v
     +---------------+
     |   PROTECTED   |
     +---------------+
]]></artwork>
          </artset>
        </figure>
      </section>
      <section anchor="key-management-considerations">
        <name>Considerations on Key Management</name>
        <t>When the Association is in PROTECTION INITILIZATION 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 crypto chunk PROTECTED state and the SCTP
assocation is in ESTABLISHED or 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 anchor="protected-data-handling">
      <name>Protected Data Chunk Handling</name>
      <t>With reference to the Crypto Chunk states and the state Diagram as
shown in 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 Crypto Chunk is in state PROTECTED and the SCTP association
is in states ESTABLISHED or 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" stroke-linecap="round">
              <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 Crypto Chunk is not in VALIDATION or PROTECTED state.</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" stroke-linecap="round">
              <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 Crypto Chunk
VALIDATION or 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 Crypto Chunk state machine hasn't reached the VALIDATION state, the
protection enigne MAY perform protection engine key management in-band
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 Crypto Chunk has reached the VALIDATION and 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 Crypto Chunk state machine hasn't reached the VALIDATION
state, it MAY handle key management in-band 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 Crypto Chunk state machine has reached the VALIDATION or
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
Crypto Chunk is considered protected, 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 INITILIZATION and
VALIDATION.</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+1963rbRpbg/3oKrPwjdoekbdlxEn2TmVEkua2JLWklOune
nf32g0iIQpsE2AAoWrG9r7L7IPtr58X23KrqFFAgpcTpnu4ZpTuRSKAup879
VsPh0EzLSZEusr1kWqVXzXCd1U1WzVfFdNjUN+vZsJ40y+Gkul025XByvSre
DZ/smiZv5vDKRVNl6SI5KIumKufJuEqLepHXdV4WyVlVNuUEPn14cTA+e5Qc
nP/xbHyaHOAQJr28rLIbGAC+Cr8pL+tynjVZvWcmabOX1M3U5MtqL2mqVd3s
PnnyLUy/nu0l44sff/q9SWEBezzxsqwaU68uZQHN7RJWeHw0fpkkD5J0Xpd7
yU5eTLNlBv8qmp1BsnO8/z38p6zgt/Pxyx1jbrJile2ZJJlV5WqpBk72YaLk
p7J6lxez5Pf4bfKQAPQInl6k+RxWiH/+c541V6OymuEgeXO9utxLZvMyL1bz
x3eFsDHpqrkuqz0zhFGSvKj3kuTNKPnJvYkf86m9SWfFqm59BdPvJUdVPqnr
ssAPMl7hgh4e+RX8cyYPjSblQs32LyM4v2z1b/8bxm8aOwrP+C/ldRH7tm/S
P8Hzo4U82DfhAUxYVld5lfuJDubpapqX+ou+OSb86GjJj4azmLy4KitYQX5D
Z3v+8uCb589f7Bn4/Xh4ONp4INNmXuNLSdKk1SwDjNy5bpplvff48TRt0qZK
J++yamRP/TGQ013OGYd9vMPjMi3tHMJwswrIySPd6/Q2q5KLbLKq8uY2eXg4
fn3xCACWNNfZLyY+ntViWEI/Q/lvH64lm/EtiR1Ncme8i60hjoF+HX1YuG0p
G7AxtowQL/30EdzcNvNGHMXnAJ9wY6siS3af7D4zxhQttN19+vRb+fX5N99+
Jb9+9eTFU4vXT3dfuF+/fi6/frv74glg+3A4TNLLGlG2MWZ8ndcJYOtqAcww
mWb1pMovszpJk0UGqDFNgGaSdDpFfsdIC8i5vM4nyRKQK5s0gGemKe+LiqNk
jC94vm+I5cECrvIimzJy65XB73nRIM+eJjBdVqSX8ywBmC1WRQ4iAuaozbLK
b9LJLa95uZzbL2CstElWtcyY4gdZXoEwsSS2tMtLAZXT+bxc160RSjVZhutL
k3V6yyPjQrM6nxW0OFhGdoNrztKbrJ5W5XKJ0IOR4SkEGfCQxRLOHT6EhS6y
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
DmZ5Q3/tNOoVXpmQsnhNFZ9BbxZUBdbTVpL5m5hmPA714DA3KFD9Bsk3A1gj
3WCx+3yzCmhX0tb4evQ90MLupvH16nswgtP4tqh8rPA96yp8aFxsUvlQp9rm
Z1ENAEQNOftx//XxIepdS3La31fvqqOKlwsAiNOOHYgq6SVSyEBJzxIuCTOv
aCkUQ+WO8lN0i86qdGpDKC4ntDVT1wkUdzs6sg9g0NH7zC/T++5xKO44tmqF
eqXOCKeX+5XDTZqavPufmtpvoqkF0N2gqWnDHm3+/ziKmehk39Hm/qYVs79j
n+O/A8VMKKmlmgWc76+mmvUqYa1nSWFAiSXNiIjztX06pbT/XjafXxPr92D+
Mv/l+M7eSk7wyvq8fiaJ+/26Xj/unEqrdpCbctL/3NbkJO2m+tsk8cMPH3rj
UJ/wbrNeyDk56nNyMt/4jhy7IINCZ+k9PZebpr+rJmsVyb+gJhu6Lq0q/Sud
l8+7rstf58R6kByRlvDKVnB8eEBqw/+0JR1OIw4vUpECDOqljNqh9HVTKoe6
XoG7//LVINdZO4mLa6BxoKsUTpH6xHASHyM7zYwbRVAAqbhSH54sV1XUW2rr
uZ8AXUuhruRQJaNsTbxJsRaqrG630s2bnFVBAFpROgpS5ZzcR62xlReaSKZ1
qw6B1ojF7sUXjZF8+A3Uq1zWkirZTo/jHCTKu+Asc52eptOObZ0IZXNhH0G7
TE45qdIc71dyu1XwcWugs+DzIjVVJTYFe+Hq90kJJswXG8b7Inm4+8jm1MQ0
0mejp09GXz/y2YaxjXkYGdepr0o28TrLuBayNPrK6K7KHAX6u1VP+eeATukA
T+k7tVylntIDfxn19MQnzutTQZ35pAvIz7WGONGBruXgYNGXkJb1+ge7nxcO
sSlOhk83r+Hks61hk3pKwXBWTeVYhp4GRTtlTuDW2M9M082hchaGAc5h34U/
r5zKo6srNJJwMcg3yZfJifkdYHJfufrAeXyEteyOOK0wVBtNCxckOd9245B+
fKJ0nbTwdYCJsRSnNtwpx8kr25eM+lfdFci2kQTL77zQShLII3kOoLdPApof
IwxRNyeQz0mF5wbcGJpE9RXnzBoWs62e3moyX2baaqoHstrnE1LXXgqOWysl
sRVY2DhLNeZ2vNZIwv50yqmf2XswHES5GEXVEn+BJd3kZ70SrI6sr/N5zX3S
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
l+HTPh0u/BMFQug5QYvWmwqtp6O2ePjQjdlQdYj5fIGD4Vh5GD6Gb37ZenPz
Pli1DzjVaMsr/13slYuj8duz/9H6trP0zoSZxJtFdrS/71KmU+nbAOur04Q9
S3qj0lvtXvQ7XwbvbN700cnh2enxyViNuXXvvxAEIsNVA+r2E2Glfxss+NOP
/Yr3d7DfP70pe58pcJqnM6wbsH0+tCeOCfeQn9iQscmXgOqbg+DY8ab7Nz5l
4cMDsKyGPoehbeUrnah1/x0qBX1EI2aMTYBopUmw69leS08CQbleIu4lUTkM
SUoJ4eQw3lAcOOpSrmE+dZde6ZCvWRWuUcdo46b0HV4RSe7VWhN6T+FVzfps
V2th1I34FP1tMOKgE7u147UNoJdshJ5R0As2rh26PfFCvmcABEy94oz5yNUq
x5sWsqL6s2k2lQtxbSMTnApbNZtjn9ERLX9s5VS4qxC73sUgtjnq4jeit+W1
oPDE3VbstmClcTwkHdZ77eqWv6rWLjsc/rpctxJ1graANjoWV/jJoSduP1Dz
KrAbswpM0HziLzOI3GoeKaZwd5HVBHsqzpQCa0z2fYKKUInfon4lIBnpMmy6
G1WchnL/G8KgzqZ8OuHFcwgWE99XWJzhfDexugvdcvcQUzKYm6nyVoevQ0zZ
GKo61584C8AGUcU6DriikJil0FozSeyOzZ2rActe4j2QWfIMQdVRXfV1aVbN
s81AcNH2snYq9VCconYmQuOSlS1m43Vh6z1jhj46mXbYjiz/4PXpxdHhIDk4
Pf3h+Gj40/7xmLybRj44Onh1it8jbwnWR4iIZKmvnHxIGZn+foVHeLuOYra1
v7xR+XTqTANTPe0tUv9azD+qNhockdqp4qx9rgITAKbFWy234C/JlAoyCFYN
duQZGAKAU8PPQM84Pvn9wH9ycXQyVn+eHx0cHf8IADbuI1A/6Sm+BU9O9DbE
HDwNvthYesLIPYCKM9d0xzL6ne0VgYrLDjrNimyKRGF0b8iQvfvOU5vYu/UY
IouQS07SRt+IZ4fDEfjSWR8Z4XsieKkmImFcJMk1w3Enqe7gtekyCA1HQJW+
ZppK0CRVRseF3dWWLWL9u66viv0ccMz4FV3w3vvUb92Ehsn4QQymf7E1JCP6
Z+PPXwgOxW+9hk12glCwOPiZEQ6fuu4zFNAaY/iBqPGMqHGDsYBakTU6nKgM
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
qGP5/wf/+zGkleAAAA==

-->

</rfc>
