<?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.22 (Ruby 3.1.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-westerlund-tsvwg-sctp-crypto-chunk-00" category="std" consensus="true" submissionType="IETF" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.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-00"/>
    <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="February" day="16"/>
    <area>Transport</area>
    <workgroup>TSVWG</workgroup>
    <abstract>
      <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.</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>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>This document defines a CRYPTO chunk for the Stream Control
   Transmission Protocol (SCTP), as defined in <xref target="RFC9260"/>.</t>
      <t>This specification defines the actual CRYPTO chunk. How to enable
   it usage, how it interacts with the SCTP association establishment
   to enable endpoint authentication, key-establishment, and other
   features require a separate protection engine specification.</t>
      <t>This specification is intended to be capable of enabling mutual
   authentication of endpoints, data confidentiality, data origin
   authentication, data integrity protection, and data replay
   protection for SCTP packets after the SCTP association has been
   established. The exact properties will depend on the companion
   specification defining the protection engine used with the CRYPTO
   chunk. The protection engine specification might be based on an
   existing security protocol.</t>
      <t>Applications using SCTP CRYPTO chunk can use all transport
   features provided by SCTP and its extensions. Due to its level of
   integration as discussed in next section it will provide its
   security functions on all content of the SCTP packet, and will thus
   not impact the potential to utilize any SCTP functionalities or
   extensions.</t>
    </section>
    <section anchor="overview">
      <name>Overview</name>
      <section anchor="protocol-overview">
        <name>Protocol Overview</name>
        <t>The CRYPTO chunk is defined as a method for secure and confidential
transfer for SCTP packets.  This is implemented inside the SCTP
protocol, in a sublayer between the SCTP common header handling and
the SCTP chunk handling.  Once an SCTP packet has been received and
the SCTP common header has been used to identify the SCTP association,
the CRYPTO chunk is sent to the chosen protection engine that will
return the SCTP payload containing the unprotected SCTP chunks, those
chunks will then be handled according to current SCTP protocol
specification. <xref target="sctp-Crypto-chunk-layering"/> illustrates the CRYPTO
chunk layering in regard to SCTP and the Upper Layer Protocol (ULP).</t>
        <figure anchor="sctp-Crypto-chunk-layering">
          <name>CRYPTO Chunk Layering in Regard to SCTP and ULP</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="424" viewBox="0 0 424 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,32 L 8,288" fill="none" stroke="black"/>
                <path d="M 184,32 L 184,288" fill="none" stroke="black"/>
                <path d="M 224,160 L 224,224" fill="none" stroke="black"/>
                <path d="M 392,160 L 392,224" fill="none" stroke="black"/>
                <path d="M 8,32 L 184,32" fill="none" stroke="black"/>
                <path d="M 8,96 L 184,96" fill="none" stroke="black"/>
                <path d="M 200,96 L 216,96" fill="none" stroke="black"/>
                <path d="M 200,128 L 216,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 184,160" fill="none" stroke="black"/>
                <path d="M 224,160 L 392,160" fill="none" stroke="black"/>
                <path d="M 184,176 L 216,176" fill="none" stroke="black"/>
                <path d="M 224,192 L 392,192" fill="none" stroke="black"/>
                <path d="M 192,208 L 224,208" fill="none" stroke="black"/>
                <path d="M 8,224 L 184,224" fill="none" stroke="black"/>
                <path d="M 224,224 L 392,224" fill="none" stroke="black"/>
                <path d="M 200,256 L 216,256" fill="none" stroke="black"/>
                <path d="M 8,288 L 184,288" fill="none" stroke="black"/>
                <path d="M 184,224 L 200,256" fill="none" stroke="black"/>
                <path d="M 184,160 L 200,128" fill="none" stroke="black"/>
                <polygon class="arrowhead" points="224,176 212,170.4 212,181.6" fill="black" transform="rotate(0,216,176)"/>
                <polygon class="arrowhead" points="208,96 196,90.4 196,101.6" fill="black" transform="rotate(180,200,96)"/>
                <polygon class="arrowhead" points="200,208 188,202.4 188,213.6" fill="black" transform="rotate(180,192,208)"/>
                <g class="text">
                  <text x="88" y="68">ULP</text>
                  <text x="244" y="100">User</text>
                  <text x="288" y="100">Level</text>
                  <text x="348" y="100">Messages</text>
                  <text x="36" y="132">SCTP</text>
                  <text x="84" y="132">Chunks</text>
                  <text x="144" y="132">Handler</text>
                  <text x="244" y="132">SCTP</text>
                  <text x="312" y="132">Unprotected</text>
                  <text x="392" y="132">Payload</text>
                  <text x="100" y="180">CRYPTO</text>
                  <text x="276" y="180">Protection</text>
                  <text x="348" y="180">Engine</text>
                  <text x="96" y="196">Chunk</text>
                  <text x="96" y="212">Handler</text>
                  <text x="264" y="212">Key</text>
                  <text x="324" y="212">Management</text>
                  <text x="36" y="260">SCTP</text>
                  <text x="84" y="260">Header</text>
                  <text x="144" y="260">Handler</text>
                  <text x="244" y="260">SCTP</text>
                  <text x="304" y="260">Protected</text>
                  <text x="376" y="260">Payload</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
+---------------------+
|                     |
|        ULP          |
|                     |
+---------------------+ <-- User Level Messages
|                     |
| SCTP Chunks Handler | +-- SCTP Unprotected Payload
|                     |/
+---------------------+    +--------------------+
|        CRYPTO       +--->| Protection Engine  |
|        Chunk        |    +--------------------+
|       Handler       |<---+   Key Management   |
+---------------------+    +--------------------+
|                     |\
| SCTP Header Handler | +-- SCTP Protected Payload
|                     |
+---------------------+
]]></artwork>
          </artset>
        </figure>
        <t>Use of the CRYPTO chunk is defined per SCTP association and a SCTP
association uses a single protection engine. Different associations
within the same SCTP endpoint may use or not use the CRYPTO chunk, and
different associations may use different protection engines.</t>
        <t>On the outgoing direction, once the SCTP stack has created the
unprotected SCTP packet payload containing control and/or DATA chunks,
that payload will be sent to the protection engine to be
protected. The format of the protected payload depends on the
protection engine but the unprotected payload will typically be
encrypted and integrity tagged before being encapsulated in a CRYPTO
chunk.</t>
        <t>The SCTP protection engine performs protection operations on the whole
unprotected SCTP packet payload, i.e., all chunks after the SCTP
common header. Information protection is kept during the lifetime of
the association and no information is sent unprotected except than the
initial SCTP handshake, the SCTP common Header, the SCTP CRYPTO chunk
header and the SHUTDOWN-COMPLETE chunk.</t>
        <t>SCTP CRYPTO chunk capability is agreed by the peers at the
initialization of the SCTP association, during that phase the peers
exchange information about the protection engines available. Once
the peers have agreed on what protection to use, the SCTP endpoints start
sending SCTP CRYPTO chunks containing the initialization
information related to the protection engine including key agreement and
endpoint authentication. This is depending on the chosen protection engine thus is
not being detailed in the current specification.</t>
        <t>When the endpoint authentication has been completed, the association
is meant to be initialized and the ULP is informed about that, from
this time on it's possible for the ULPs to exchange data.</t>
        <t>CRYPTO chunks will never be retransmitted, retransmission is
implemented by SCTP endpoint at chunk level as in the legacy.  Duplicated
CRYPTO chunks, whenever they will be accepted by the protection
engine, will result in duplicated SCTP chunks and will be handled as
duplicated chunks by SCTP endpoint in the same way a duplicated SCTP packet
with those SCTP chunks would have been.</t>
      </section>
      <section anchor="protection-engines">
        <name>Protection Engines Considerations</name>
        <t>The protection engine, independently from the security
characteristics, needs to be capable working on an unreliable
transport mechanism same as UDP and have its own key management
capability.</t>
        <t>SCTP CRYPTO chunk directly exploits the protection engine by
requesting protection and unprotection of a buffer, in particular the
protection buffer shall never exceed the SCTP payload size thus
protection engine shall 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.</t>
        <t>Key management of protection engine is RECOMMENDED to use the SCTP
CRYPTO chunk for handshaking, in that case any packet being exchanged
between protection engine peers shall be transported as payload of
Crypto chunk (see <xref target="crypto-chunk"/>).</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 specified
in the specification for that protection engine.</t>
        <t>Out-of-band communication between protection engines MAY exploit the
Flags byte provided by the CRYPTO chunk header (see
<xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>).</t>
        <t>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.</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.</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>SCTP implementation will be responsible for handling ICMP messages and
their validation as specified in <xref target="RFC9260"/> Section 10. This includes
for SCTP packets sent by the protection engines key management
function. 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>
    <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.</t>
    </section>
    <section anchor="new-parameter-type">
      <name>New Parameter Type</name>
      <t>This section defines the new parameter type that will be used to
negotiate the use of the CRYPTO chunk and protection engines during
association setup. <xref target="sctp-Crypto-chunk-init-parameter"/> illustrates
the new parameter type.</t>
      <table anchor="sctp-Crypto-chunk-init-parameter">
        <name>New INIT/INIT-ACK Parameter</name>
        <thead>
          <tr>
            <th align="right">Parameter Type</th>
            <th align="left">Parameter Name</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="right">0x80xx</td>
            <td align="left">Protected Association</td>
          </tr>
        </tbody>
      </table>
      <t>Note that the parameter format requires the receiver to ignore the
parameter and continue processing if the parameter is not understood.
This is accomplished (as described in <xref target="RFC9260"/>, Section 3.2.1.)  by
the use of the upper bits of the parameter type.</t>
      <section anchor="protectedassoc-parameter">
        <name>Protected Association Parameter</name>
        <t>This parameter is used to carry the list of proposed protection
engines and the chosen protection engine during INIT/INIT-ACK
handshake.</t>
        <figure anchor="sctp-Crypto-chunk-init-options">
          <name>Protected Association Parameter</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="80" y="84">Parameter</text>
                  <text x="140" y="84">Type</text>
                  <text x="168" y="84">=</text>
                  <text x="204" y="84">0x80xx</text>
                  <text x="360" y="84">Parameter</text>
                  <text x="428" y="84">Length</text>
                  <text x="228" y="132">Protection</text>
                  <text x="304" y="132">Engines</text>
                  <text x="392" y="180">Padding</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Parameter Type = 0x80xx    |       Parameter Length        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                      Protection Engines                       |
|                                                               |
|                               +-------------------------------+
|                               |            Padding            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Parameter Type: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value MUST be set to 0x80xx.</t>
          </dd>
          <dt>Parameter Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value holds the length of the Protection Engines field in
bytes plus 4.</t>
          </dd>
          <dt>Protection Engines: variable length</dt>
          <dd>
            <t>In the INIT chunk this holds the list of protection engines in descending order of preference,
i.e. the most preferred comes first, and the least preferred last in
this field. In the INIT-ACK chunk this holds a single chosen
protection engine. Each protection engine is specified by a 16-bit
unsigned integer.</t>
          </dd>
          <dt>Padding: 0 or 16 bits</dt>
          <dd>
            <t>If the length of the Protection Engines field is not a multiple
of 4 bytes, the sender MUST pad the chunk with all zero bytes
to make the chunk 32-bit aligned. The Padding MUST NOT be longer
than 2 bytes and it MUST be ignored by the receiver.</t>
          </dd>
        </dl>
        <t>RFC-Editor Note: Please replace 0x08xx with the actual parameter type
value assigned by IANA and then remove this note.</t>
      </section>
    </section>
    <section anchor="new-chunk-types">
      <name>New Chunk Types</name>
      <section anchor="crypto-chunk">
        <name>Crypto Chunk (CRYPTO)</name>
        <t>This section defines the new chunk type that will be used to
transport protected SCTP payload.
<xref target="sctp-Crypto-chunk-newchunk-crypt"/> illustrates the new chunk type.</t>
        <table anchor="sctp-Crypto-chunk-newchunk-crypt">
          <name>CRYPTO Chunk Type</name>
          <thead>
            <tr>
              <th align="right">Chunk Type</th>
              <th align="left">Chunk Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x4X</td>
              <td align="left">Crypto Chunk (CRYPTO)</td>
            </tr>
          </tbody>
        </table>
        <t>RFC-Editor Note: Please replace 0x4x with the actual chunk type value
assigned by IANA and then remove this note.</t>
        <t>It should be noted that the CRYPTO chunk format requires the receiver
stop processing this SCTP packet, discard the unrecognized chunk and
all further chunks, and report the unrecognized chunk in an ERROR
chunk using the 'Unrecognized Chunk Type' error cause.  This is
accomplished (as described in <xref target="RFC9260"/> Section 3.2.) by the use of
the upper bits of the chunk type.</t>
        <t>The CRYPTO chunk is used to hold the protected payload of a plain SCTP
packet.</t>
        <figure anchor="sctp-Crypto-chunk-newchunk-crypt-struct">
          <name>CRYPTO Chunk Structure</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">Type</text>
                  <text x="72" y="84">=</text>
                  <text x="100" y="84">0x4X</text>
                  <text x="176" y="84">Chunk</text>
                  <text x="224" y="84">Flags</text>
                  <text x="360" y="84">Chunk</text>
                  <text x="412" y="84">Length</text>
                  <text x="264" y="132">Payload</text>
                  <text x="384" y="180">Padding</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x4X  |  Chunk Flags  |         Chunk Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                            Payload                            |
|                                                               |
|                               +-------------------------------+
|                               |           Padding             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Chunk Type: 8 bits (unsigned integer)</dt>
          <dd>
            <t>This value MUST be set to 0x4X for all CRYPTO chunks.</t>
          </dd>
          <dt>Chunk Flags: 8 bits</dt>
          <dd>
            <t>This is used by the protection engine and ignored by SCTP.</t>
          </dd>
          <dt>Chunk Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value holds the length of the Payload in bytes plus 4.</t>
          </dd>
          <dt>Payload: variable length</dt>
          <dd>
            <t>This holds the encrypted data.</t>
          </dd>
          <dt>Padding: 0, 8, 16, or 24 bits</dt>
          <dd>
            <t>If the length of the Payload is not a multiple of 4 bytes, the sender
MUST pad the chunk with all zero bytes to make the chunk 32-bit
aligned.  The Padding MUST NOT be longer than 3 bytes and it MUST
be ignored by the receiver.</t>
          </dd>
        </dl>
      </section>
      <section anchor="pvalid-chunk">
        <name>Protected Association Parameter Validation Chunk (PVALID)</name>
        <t>This section defines the new chunk types that will be used to validate
the negotiation of the protection engine selected for CRYPTO chunk.
This to prevent down grade attacks on the negotiation of protection
engines. <xref target="sctp-Crypto-chunk-newchunk-pvalid-chunk"/> illustrates the
new chunk type.</t>
        <table anchor="sctp-Crypto-chunk-newchunk-pvalid-chunk">
          <name>PVALID Chunk Type</name>
          <thead>
            <tr>
              <th align="right">Chunk Type</th>
              <th align="left">Chunk Name</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="right">0x4X</td>
              <td align="left">Protected Association Parameter Validation (PVALID)</td>
            </tr>
          </tbody>
        </table>
        <t>It should be noted that the PVALID chunk format requires the receiver
stop processing this SCTP packet, discard the unrecognized chunk and
all further chunks, and report the unrecognized chunk in an ERROR
chunk using the 'Unrecognized Chunk Type' error cause.  This is
accomplished (as described in <xref target="RFC9260"/> Section 3.2.) by the use of
the upper bits of the chunk type.</t>
        <t>The PVALID chunk is used to hold the protection engines list.</t>
        <figure anchor="sctp-Crypto-chunk-newchunk-PVALID">
          <name>PVALID Chunk Structure</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 136,64 L 136,96" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 264,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="44" y="84">Type</text>
                  <text x="72" y="84">=</text>
                  <text x="100" y="84">0x4X</text>
                  <text x="184" y="84">Flags</text>
                  <text x="216" y="84">=</text>
                  <text x="232" y="84">0</text>
                  <text x="360" y="84">Chunk</text>
                  <text x="412" y="84">Length</text>
                  <text x="228" y="132">Protection</text>
                  <text x="304" y="132">Engines</text>
                  <text x="384" y="180">Padding</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Type = 0x4X  |   Flags = 0   |         Chunk Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                      Protection Engines                       |
|                                                               |
|                               +-------------------------------+
|                               |           Padding             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Chunk Type: 8 bits (unsigned integer)</dt>
          <dd>
            <t>This value MUST be set to 0x4X.</t>
          </dd>
          <dt>Chunk Flags: 8 bits</dt>
          <dd>
            <t>MUST be set to zero on transmit and MUST be ignored on receipt.</t>
          </dd>
          <dt>Chunk Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>This value holds the length of the Protection Engines field in bytes plus 4.</t>
          </dd>
          <dt>Protection Engines: variable length</dt>
          <dd>
            <t>This holds the list of protection engines where each protection engine is
specified by a 16-bit unsigned integer. The field MUST be identical to the
content of the Protected Association Parameter (<xref target="protectedassoc-parameter"/>)
Protection Engines field that the endpoint sent in the INIT or INIT-ACK chunk.</t>
          </dd>
          <dt>Padding: 0 or 16 bits</dt>
          <dd>
            <t>If the length of the
Protection Engines field is not a multiple of 4 bytes, the sender MUST
pad the chunk with all zero bytes to make the chunk 32-bit
aligned.  The Padding MUST NOT be longer than 2 bytes and it
MUST be ignored by the receiver.</t>
          </dd>
        </dl>
        <t>RFC-Editor Note: Please replace 0x4X with the actual chunk type value
assigned by IANA and then remove this note.</t>
      </section>
    </section>
    <section anchor="error_handling">
      <name>Error Handling</name>
      <t>This specification introduces a new set of error causes that are to be
used when SCTP endpoint detects a faulty condition. The special case is
when the error is detected by the protection engine that may provide
additional information.</t>
      <section anchor="enoprotected">
        <name>Mandatory Protected Association Parameter Missing</name>
        <t>When an initiator SCTP endpoint sends an INIT chunk that doesn't
contain the Protected Association parameter towards an SCTP endpoint
that only accepts protected associations, the responder endpoint SHALL
raise a Missing Mandatory Parameter error. The ERROR chunk will
contain the cause code 'Missing Mandatory Parameter' (2) (see
<xref target="RFC9260"/> section 3.3.10.7) and the protected association parameter
identifier <xref target="protectedassoc-parameter"/> in the missing param
Information field.</t>
        <figure anchor="sctp-Crypto-init-chunk-missing-protected">
          <name>ERROR Missing Protected Association Paramater</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,96" fill="none" stroke="black"/>
                <path d="M 264,128 L 264,192" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="96" y="84">Cause</text>
                  <text x="140" y="84">Code</text>
                  <text x="168" y="84">=</text>
                  <text x="184" y="84">2</text>
                  <text x="360" y="84">Cause</text>
                  <text x="412" y="84">Length</text>
                  <text x="172" y="116">Number</text>
                  <text x="212" y="116">of</text>
                  <text x="256" y="116">missing</text>
                  <text x="316" y="116">params</text>
                  <text x="352" y="116">=</text>
                  <text x="368" y="116">N</text>
                  <text x="72" y="148">Protected</text>
                  <text x="160" y="148">Association</text>
                  <text x="220" y="148">ID</text>
                  <text x="336" y="148">Missing</text>
                  <text x="392" y="148">Param</text>
                  <text x="436" y="148">Type</text>
                  <text x="468" y="148">#2</text>
                  <text x="72" y="180">Missing</text>
                  <text x="128" y="180">Param</text>
                  <text x="172" y="180">Type</text>
                  <text x="212" y="180">#N-1</text>
                  <text x="336" y="180">Missing</text>
                  <text x="392" y="180">Param</text>
                  <text x="436" y="180">Type</text>
                  <text x="468" y="180">#N</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Cause Code = 2         |         Cause Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Number of missing params = N                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Protected Association ID    |     Missing Param Type #2     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Missing Param Type #N-1    |     Missing Param Type #N     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <t>Cause Length is equal to the number of missing parameters 8 + N * 2
according to <xref target="RFC9260"/>, section 3.3.10.2.</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 followed
by ERROR chunk containing the relevant Error Type and Causes.</t>
        <figure anchor="sctp-eprotect-error-structure">
          <name>Error in Protection Cause Format</name>
          <artset>
            <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="176" width="528" viewBox="0 0 528 176" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
                <path d="M 8,64 L 8,160" fill="none" stroke="black"/>
                <path d="M 264,64 L 264,160" fill="none" stroke="black"/>
                <path d="M 520,64 L 520,160" fill="none" stroke="black"/>
                <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
                <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
                <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
                <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
                <g class="text">
                  <text x="16" y="36">0</text>
                  <text x="176" y="36">1</text>
                  <text x="336" y="36">2</text>
                  <text x="496" y="36">3</text>
                  <text x="16" y="52">0</text>
                  <text x="32" y="52">1</text>
                  <text x="48" y="52">2</text>
                  <text x="64" y="52">3</text>
                  <text x="80" y="52">4</text>
                  <text x="96" y="52">5</text>
                  <text x="112" y="52">6</text>
                  <text x="128" y="52">7</text>
                  <text x="144" y="52">8</text>
                  <text x="160" y="52">9</text>
                  <text x="176" y="52">0</text>
                  <text x="192" y="52">1</text>
                  <text x="208" y="52">2</text>
                  <text x="224" y="52">3</text>
                  <text x="240" y="52">4</text>
                  <text x="256" y="52">5</text>
                  <text x="272" y="52">6</text>
                  <text x="288" y="52">7</text>
                  <text x="304" y="52">8</text>
                  <text x="320" y="52">9</text>
                  <text x="336" y="52">0</text>
                  <text x="352" y="52">1</text>
                  <text x="368" y="52">2</text>
                  <text x="384" y="52">3</text>
                  <text x="400" y="52">4</text>
                  <text x="416" y="52">5</text>
                  <text x="432" y="52">6</text>
                  <text x="448" y="52">7</text>
                  <text x="464" y="52">8</text>
                  <text x="480" y="52">9</text>
                  <text x="496" y="52">0</text>
                  <text x="512" y="52">1</text>
                  <text x="72" y="84">Cause</text>
                  <text x="116" y="84">Code</text>
                  <text x="144" y="84">=</text>
                  <text x="172" y="84">TBA9</text>
                  <text x="360" y="84">Cause</text>
                  <text x="412" y="84">Length</text>
                  <text x="104" y="116">Extra</text>
                  <text x="152" y="116">Cause</text>
                  <text x="188" y="116">#1</text>
                  <text x="360" y="116">Extra</text>
                  <text x="408" y="116">Cause</text>
                  <text x="444" y="116">#2</text>
                  <text x="96" y="148">Extra</text>
                  <text x="144" y="148">Cause</text>
                  <text x="188" y="148">#N-1</text>
                  <text x="360" y="148">Extra</text>
                  <text x="408" y="148">Cause</text>
                  <text x="444" y="148">#N</text>
                </g>
              </svg>
            </artwork>
            <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Cause Code = TBA9         |         Cause Length          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Extra Cause #1        |         Extra Cause #2        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Extra Cause #N-1       |         Extra Cause #N        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </artset>
        </figure>
        <dl newline="true">
          <dt>Casuse Code: 16 bits (unsigned integer)</dt>
          <dd>
            <t>The SCTP Error Chunk Cause Code indicating "Error in Protection" is TBA9.</t>
          </dd>
          <dt>Cause Length: 16 bits (unsigned integer)</dt>
          <dd>
            <t>Is for N extra Causes equal to  4 + N * 2</t>
          </dd>
          <dt>Extra Cause: 16 bits (unsigned integer)</dt>
          <dd>
            <t>Each Extra Cause indicate an additional piece of information as part
of the error. There MAY be 0 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 ERROR chunk with error
in protection cause code (specified in
<xref target="eprotect"/>) and the "No Supported Protection
Engine" extra cause code identifier 0x00.</t>
        </section>
        <section anchor="ekeyhandshake">
          <name>Error During Protection Handshake</name>
          <t>If the protection engine specifies a handshake for example for
authentication, and key management is implemented inband, it may happen
that the procedure has errors. In such case an ERROR chunk will be
sent with error in protection cause code (specified in
<xref target="eprotect"/>) and extra cause
"Error During Protection Handshake" identifier 0x01.</t>
        </section>
        <section anchor="evalidate">
          <name>Failure in Protection Engines Validation</name>
          <t>A Failure may occur during protection engine Validation (see
<xref target="protected-state"/>).  In such case an ERROR 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. This error MUST be sent together with an SCTP abort to
terminate the SCTP association.</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
ERROR chunk with "Error in Protection" cause (specified in
<xref target="eprotect"/>) and extra cause "Timeout During
Protection Handshake or Validation" identifier 0x03 to indicate this
failure.  To indicate in which phase the timeout occurred an additional
extra cause code is added. If the protection engine specifies that key
management is implemented inband and the T-valid timeout occurs during
the handshake the Cause-Specific code to add is "Error During
Protection Handshake" identifier 0x01.  If the T-valid timeout occurs
during the protection association parameter validation, the extra
cause code to use is "Failure in Protection Engines Validation"
identifier 0x02.</t>
        </section>
      </section>
      <section anchor="eengine">
        <name>Critical Error from Protection Engine</name>
        <t>Protection engine MAY inform local SCTP endpoint about errors, in such
case it's to be defined in the protection engine specification
document.  When an Error in the protection engine compromises the
protection mechanism, the protection engine may stop processing data
altogether, thus the local SCTP endpoint will not be able to send or
receive any chunk for the specified Association.  This will cause the
Association to be closed by legacy timer-based mechanism. Since the
Association protection is compromised no further data will be sent and
the remote peer will also experience timeout on the Association.</t>
      </section>
      <section anchor="non-critical-errors">
        <name>Non-critical Error in the Protection Engine</name>
        <t>A non-critical error in the protection engine means that the
protection engine is capable of recovering without the need
of the whole Association to be restarted.</t>
        <t>From SCTP perspective, a non-critical error will be perceived
as a temporary problem in the transport and will be handled
with retransmissions and SACKS according to <xref target="RFC9260"/>.</t>
        <t>When the protection engine will experience a non-critical error,
an ABORT chunk SHALL NOT be sent. This way non-critical errors
are handled and how the protection engine will recover from
these errors is being described in the Protection Engine Specifications.</t>
      </section>
    </section>
    <section anchor="state-diagram">
      <name>Protected SCTP State Diagram</name>
      <t>The <xref target="sctp-Crypto-state-diagram"/> shows the changes of the SCTP
association state machine as described in <xref target="RFC9260"/> section 4.</t>
      <figure anchor="sctp-Crypto-state-diagram">
        <name>SCTP State Diagram with Crypto</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1120" width="552" viewBox="0 0 552 1120" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 80,528 L 80,1024" fill="none" stroke="black"/>
              <path d="M 128,544 L 128,1008" fill="none" stroke="black"/>
              <path d="M 184,64 L 184,96" fill="none" stroke="black"/>
              <path d="M 208,1072 L 208,1104" fill="none" stroke="black"/>
              <path d="M 224,96 L 224,128" fill="none" stroke="black"/>
              <path d="M 224,176 L 224,528" fill="none" stroke="black"/>
              <path d="M 224,832 L 224,864" fill="none" stroke="black"/>
              <path d="M 224,1024 L 224,1064" fill="none" stroke="black"/>
              <path d="M 232,592 L 232,624" fill="none" stroke="black"/>
              <path d="M 248,64 L 248,88" fill="none" stroke="black"/>
              <path d="M 256,416 L 256,448" fill="none" stroke="black"/>
              <path d="M 264,256 L 264,288" fill="none" stroke="black"/>
              <path d="M 272,528 L 272,536" fill="none" stroke="black"/>
              <path d="M 272,552 L 272,584" fill="none" stroke="black"/>
              <path d="M 272,1008 L 272,1064" fill="none" stroke="black"/>
              <path d="M 280,48 L 280,88" fill="none" stroke="black"/>
              <path d="M 304,96 L 304,128" fill="none" stroke="black"/>
              <path d="M 312,176 L 312,248" fill="none" stroke="black"/>
              <path d="M 312,288 L 312,408" fill="none" stroke="black"/>
              <path d="M 312,448 L 312,544" fill="none" stroke="black"/>
              <path d="M 320,624 L 320,824" fill="none" stroke="black"/>
              <path d="M 320,864 L 320,1064" fill="none" stroke="black"/>
              <path d="M 336,1072 L 336,1104" fill="none" stroke="black"/>
              <path d="M 360,256 L 360,288" fill="none" stroke="black"/>
              <path d="M 360,544 L 360,584" fill="none" stroke="black"/>
              <path d="M 368,416 L 368,448" fill="none" stroke="black"/>
              <path d="M 408,592 L 408,624" fill="none" stroke="black"/>
              <path d="M 408,832 L 408,864" fill="none" stroke="black"/>
              <path d="M 296,32 L 352,32" fill="none" stroke="black"/>
              <path d="M 200,48 L 232,48" fill="none" stroke="black"/>
              <path d="M 8,80 L 168,80" fill="none" stroke="black"/>
              <path d="M 320,80 L 424,80" fill="none" stroke="black"/>
              <path d="M 472,80 L 544,80" fill="none" stroke="black"/>
              <path d="M 224,96 L 304,96" fill="none" stroke="black"/>
              <path d="M 200,112 L 224,112" fill="none" stroke="black"/>
              <path d="M 224,128 L 304,128" fill="none" stroke="black"/>
              <path d="M 320,176 L 448,176" fill="none" stroke="black"/>
              <path d="M 88,256 L 216,256" fill="none" stroke="black"/>
              <path d="M 264,256 L 360,256" fill="none" stroke="black"/>
              <path d="M 264,288 L 360,288" fill="none" stroke="black"/>
              <path d="M 320,336 L 464,336" fill="none" stroke="black"/>
              <path d="M 256,416 L 368,416" fill="none" stroke="black"/>
              <path d="M 256,448 L 368,448" fill="none" stroke="black"/>
              <path d="M 320,496 L 464,496" fill="none" stroke="black"/>
              <path d="M 80,528 L 272,528" fill="none" stroke="black"/>
              <path d="M 128,544 L 360,544" fill="none" stroke="black"/>
              <path d="M 232,592 L 408,592" fill="none" stroke="black"/>
              <path d="M 232,624 L 408,624" fill="none" stroke="black"/>
              <path d="M 328,720 L 456,720" fill="none" stroke="black"/>
              <path d="M 224,832 L 408,832" fill="none" stroke="black"/>
              <path d="M 224,864 L 408,864" fill="none" stroke="black"/>
              <path d="M 328,912 L 512,912" fill="none" stroke="black"/>
              <path d="M 128,1008 L 272,1008" fill="none" stroke="black"/>
              <path d="M 80,1024 L 224,1024" fill="none" stroke="black"/>
              <path d="M 208,1072 L 336,1072" fill="none" stroke="black"/>
              <path d="M 208,1104 L 336,1104" fill="none" stroke="black"/>
              <path d="M 288,128 L 312,176" fill="none" stroke="black"/>
              <path d="M 224,176 L 248,128" fill="none" stroke="black"/>
              <path d="M 296,32 C 287.16936,32 280,39.16936 280,48" fill="none" stroke="black"/>
              <path d="M 200,48 C 191.16936,48 184,55.16936 184,64" fill="none" stroke="black"/>
              <path d="M 232,48 C 240.83064,48 248,55.16936 248,64" fill="none" stroke="black"/>
              <path d="M 200,112 C 191.16936,112 184,104.83064 184,96" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="368,584 356,578.4 356,589.6" fill="black" transform="rotate(90,360,584)"/>
              <polygon class="arrowhead" points="328,1064 316,1058.4 316,1069.6" fill="black" transform="rotate(90,320,1064)"/>
              <polygon class="arrowhead" points="328,824 316,818.4 316,829.6" fill="black" transform="rotate(90,320,824)"/>
              <polygon class="arrowhead" points="320,408 308,402.4 308,413.6" fill="black" transform="rotate(90,312,408)"/>
              <polygon class="arrowhead" points="320,248 308,242.4 308,253.6" fill="black" transform="rotate(90,312,248)"/>
              <polygon class="arrowhead" points="288,88 276,82.4 276,93.6" fill="black" transform="rotate(90,280,88)"/>
              <polygon class="arrowhead" points="280,1064 268,1058.4 268,1069.6" fill="black" transform="rotate(90,272,1064)"/>
              <polygon class="arrowhead" points="280,584 268,578.4 268,589.6" fill="black" transform="rotate(90,272,584)"/>
              <path class="jump" d="M 272,552 C 278,552 278,536 272,536" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="256,88 244,82.4 244,93.6" fill="black" transform="rotate(90,248,88)"/>
              <polygon class="arrowhead" points="232,1064 220,1058.4 220,1069.6" fill="black" transform="rotate(90,224,1064)"/>
              <g class="text">
                <text x="384" y="36">(from</text>
                <text x="424" y="36">any</text>
                <text x="468" y="36">state)</text>
                <text x="104" y="68">receive</text>
                <text x="156" y="68">INIT</text>
                <text x="344" y="68">receive</text>
                <text x="400" y="68">ABORT</text>
                <text x="496" y="68">[ABORT]</text>
                <text x="452" y="84">or</text>
                <text x="36" y="100">generate</text>
                <text x="96" y="100">State</text>
                <text x="148" y="100">Cookie</text>
                <text x="340" y="100">delete</text>
                <text x="384" y="100">TCB</text>
                <text x="484" y="100">send</text>
                <text x="528" y="100">ABORT</text>
                <text x="84" y="116">send</text>
                <text x="124" y="116">INIT</text>
                <text x="160" y="116">ACK</text>
                <text x="268" y="116">CLOSED</text>
                <text x="492" y="116">delete</text>
                <text x="536" y="116">TCB</text>
                <text x="368" y="164">[ASSOCIATE]</text>
                <text x="348" y="196">create</text>
                <text x="392" y="196">TCB</text>
                <text x="340" y="212">send</text>
                <text x="380" y="212">INIT</text>
                <text x="112" y="228">receive</text>
                <text x="168" y="228">valid</text>
                <text x="344" y="228">start</text>
                <text x="400" y="228">T1-init</text>
                <text x="456" y="228">timer</text>
                <text x="108" y="244">COOKIE</text>
                <text x="164" y="244">ECHO</text>
                <text x="64" y="260">(1)</text>
                <text x="108" y="276">create</text>
                <text x="152" y="276">TCB</text>
                <text x="312" y="276">COOKIE-WAIT</text>
                <text x="384" y="276">(2)</text>
                <text x="100" y="292">send</text>
                <text x="148" y="292">COOKIE</text>
                <text x="192" y="292">ACK</text>
                <text x="352" y="324">receive</text>
                <text x="404" y="324">INIT</text>
                <text x="440" y="324">ACK</text>
                <text x="340" y="356">send</text>
                <text x="388" y="356">COOKIE</text>
                <text x="436" y="356">ECHO</text>
                <text x="340" y="372">stop</text>
                <text x="392" y="372">T1-init</text>
                <text x="448" y="372">timer</text>
                <text x="344" y="388">start</text>
                <text x="408" y="388">T1-cookie</text>
                <text x="472" y="388">timer</text>
                <text x="312" y="436">COOKIE-ECHOED</text>
                <text x="392" y="436">(3)</text>
                <text x="352" y="484">receive</text>
                <text x="412" y="484">COOKIE</text>
                <text x="456" y="484">ACK</text>
                <text x="340" y="516">stop</text>
                <text x="400" y="516">T1-cookie</text>
                <text x="464" y="516">timer</text>
                <text x="292" y="612">PROTECTION</text>
                <text x="368" y="612">PENDING</text>
                <text x="428" y="612">If</text>
                <text x="496" y="612">INIT/INIT-ACK</text>
                <text x="432" y="628">has</text>
                <text x="488" y="628">Protected</text>
                <text x="464" y="644">Association</text>
                <text x="456" y="660">Parameter</text>
                <text x="520" y="660">start</text>
                <text x="448" y="676">T-valid</text>
                <text x="508" y="676">timer.</text>
                <text x="360" y="708">[CRYPTO</text>
                <text x="420" y="708">SETUP]</text>
                <text x="348" y="740">send</text>
                <text x="384" y="740">and</text>
                <text x="432" y="740">receive</text>
                <text x="372" y="756">protection</text>
                <text x="444" y="756">engine</text>
                <text x="512" y="756">handshake</text>
                <text x="340" y="772">by</text>
                <text x="376" y="772">means</text>
                <text x="412" y="772">of</text>
                <text x="452" y="772">CRYPTO</text>
                <text x="512" y="772">chunks.</text>
                <text x="320" y="852">PROTECTED</text>
                <text x="368" y="900">[ENDPOINT</text>
                <text x="456" y="900">VALIDATION]</text>
                <text x="348" y="932">send</text>
                <text x="384" y="932">and</text>
                <text x="432" y="932">receive</text>
                <text x="356" y="948">PVALID</text>
                <text x="396" y="948">by</text>
                <text x="432" y="948">means</text>
                <text x="468" y="948">of</text>
                <text x="356" y="964">CRYPTO</text>
                <text x="412" y="964">chunk.</text>
                <text x="272" y="1092">ESTABLISHED</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
                                   .-------- (from any state)
                       .-----.    |
         receive INIT |       |   |    receive ABORT      [ABORT]
--------------------- |       v   v    --------------  or ----------
generate State Cookie |    +---------+ delete TCB         send ABORT
        send INIT ACK  '---+  CLOSED |                    delete TCB
                           +--+----+-+
                             /      \
                            /        \  [ASSOCIATE]
                           |          |-----------------
                           |          | create TCB
                           |          | send INIT
          receive valid    |          | start T1-init timer
          COOKIE  ECHO     |          v
      (1) -----------------|    +-----------+
          create TCB       |    |COOKIE-WAIT| (2)
          send COOKIE ACK  |    +-----+-----+
                           |          |
                           |          | receive INIT ACK
                           |          |-------------------
                           |          | send COOKIE ECHO
                           |          | stop T1-init timer
                           |          | start T1-cookie timer
                           |          v
                           |   +-------------+
                           |   |COOKIE-ECHOED| (3)
                           |   +------+------+
                           |          |
                           |          | receive COOKIE ACK
                           |          |-------------------
                           |          | stop T1-cookie timer
         +-----------------+-----+    |
         |     +-----------------)----+-----+
         |     |                 |          |
         |     |                 v          v
         |     |            +---------------------+
         |     |            |  PROTECTION PENDING | If INIT/INIT-ACK
         |     |            +----------+----------+ has Protected
         |     |                       |            Association
         |     |                       |            Parameter start
         |     |                       |            T-valid timer.
         |     |                       |
         |     |                       | [CRYPTO SETUP]
         |     |                       |-----------------
         |     |                       | send and receive
         |     |                       | protection engine handshake
         |     |                       | by means of CRYPTO chunks.
         |     |                       |
         |     |                       |
         |     |                       v
         |     |           +----------------------+
         |     |           |       PROTECTED      |
         |     |           +-----------+----------+
         |     |                       |
         |     |                       | [ENDPOINT VALIDATION]
         |     |                       |------------------------
         |     |                       | send and receive
         |     |                       | PVALID by means of
         |     |                       | CRYPTO chunk.
         |     |                       |
         |     |                       |
         |     +-----------------+     |
         +-----------------+     |     |
                           |     |     |
                           v     v     v
                         +---------------+
                         |  ESTABLISHED  |
                         +---------------+
]]></artwork>
        </artset>
      </figure>
      <section anchor="new-states">
        <name>New States</name>
        <t>This section describes details on the amendment to the SCTP
association establishment state machine.</t>
        <section anchor="protection-pending-state">
          <name>PROTECTION PENDING</name>
          <t>The presence of a Protected Association Parameter in the INIT or INIT-ACK chunk makes the State
Machine entering PROTECTION PENDING state instead of ESTABLISHED.</t>
          <t>When entering PROTECTION PENDING state, a T-valid timer is started
that will cover the whole validation time including the in-band key
establishment. The value of T-valid is dependent on the protection
engine and may also be further adjusted based if expected RTT values
are outside of the ones commonly occurring on the general Internet,
see <xref target="t-valid-considerations"/>.</t>
          <t>If key establishment is in-band, the protection engine will start the
handshake with its peer and in case of failure or T-valid timeout, it
will generate an ERROR chunk and an ABORT chunk.  The ERROR handling
follows what specified in <xref target="ekeyhandshake"/>.  When Handshake has been
successfully completed, the association state machine will enter
PROTECTED state.</t>
          <t>The protection engine specification MUST specify when PROTECTED state
can be entered for each endpoint. If key establishment is out-of-band,
after starting T-valid timer the SCTP association will enter PROTECTED
state per protection engine specification when the necessary security
context is in place.</t>
        </section>
        <section anchor="protected-state">
          <name>PROTECTED</name>
          <t>The association state machine can only reach PROTECTED state from
PROTECTION PENDING state (see <xref target="protection-pending-state"/>). When entering into
PROTECTED state the T-valid timer is running and the protection engine
has completed the key establishment so that protected data can be sent to
the peer.</t>
          <t>From this time on, only CRYPTO chunks can be sent to the remote peer
and any other type of plain text SCTP chunks coming from the remote
peer will be silently discarded.</t>
          <t>In PROTECTED state the association initiating SCTP Endpoint
(initiator) MUST validate the INIT sent protected association
parameter, thus the initiator will send a PVALID chunk that will
contain exactly the same list of Protection Engines as previously sent
in protected association parameter of INIT chunk and in the same order.</t>
          <t>When the responder will receive PVALID, it will compare the list of
protection engines with the list received in the INIT chunk, if they
are identical it will reply to the initiator with a PVALID chunk
containing the Protection Engine previously sent as protected
association parameter in INIT-ACK chunk, it will clear the T-valid
timer and will move into ESTABLISHED state.</t>
          <t>If the lists of Protection Engines don't match, it will generate an
ERROR chunk and an ABORT chunk. ERROR CAUSE will indicate "Failure in
Protection Engines Validation" and the SCTP association will be
terminated.</t>
          <t>After sending PVALID, the initiator will wait for the responder to
reply with the PVALID confirmation. The initiator will compare the
Protection Engine received from the responder, if the value is the
same it will clear the T-valid timer and move into ESTABLISHED state.
If the chosen Protection Engines don't match, it will generate an
ERROR chunk and an ABORT chunk. ERROR CAUSE will indicate "Failure in
Protection Engines Validation" that is critical.</t>
          <t>If T-valid timer expires either at initiator or responder, it will generate
an ERROR chunk and an ABORT chunk.  The ERROR handling follows what
specified in <xref target="etmout"/>.</t>
        </section>
        <section anchor="t-valid-considerations">
          <name>Consideration on T-valid</name>
          <t>The timer T-Valid supervises initializations that depend on how
the handshake is specified for the Protection Engine and also on
the characteristics of the transport network.</t>
          <t>This specification recommends a default value of 30 seconds for
T-valid. This value is expected to be superseded by recommendations in
the Protection Engine Specification for each Protection Engine.</t>
        </section>
      </section>
    </section>
    <section anchor="procedures">
      <name>Procedures</name>
      <section anchor="establishment-procedure">
        <name>Establishment of a Protected Association</name>
        <t>An SCTP Endpoint acting as initiator willing to create a Protected
association shall send to the remote peer an INIT chunk containing the
Protected Association parameter (see <xref target="protectedassoc-parameter"/>)
where all the supported Protection Engines are listed, given in
descending order of preference (see
<xref target="sctp-Crypto-chunk-init-options"/>).</t>
        <t>As alternative, an SCTP Endpoint acting as responder willing to
support only protected associations shall consider INIT chunk not
containing the Protected Association parameter as an error, thus it
will reply with an ERROR chunk according to what specified in
<xref target="enoprotected"/> indicating that for this endpoint mandatory protected
association parameter is missing.</t>
        <t>An SCTP Endpoint acting as responder, when receiving an INIT chunk
with protected association parameter, will search the list of
protection engines for the most preferred commonly supported choice
and will reply with INIT-ACK containing the protected association
parameter with the chosen protection engine. When the responder cannot
find a supported protection engine, it will reply with ABORT and Error
in Protection with the extra cause code for "No Supported Protection
Engine" (<xref target="eprotlist"/>).</t>
        <t>When initiator and responder have agreed on a protected association by
means of handshaking INIT/INIT-ACK with a common protection engine,
only control chunks and CRYPTO chunks will be accepted. Any DATA
chunk being sent on a Protected association will be silently
discarded.</t>
        <t>After completion of initial handshake, that is after COOKIE-ECHO and
COOKIE-ACK, the Protection Engine shall initialize itself by
transferring its own data as Payload of the CRYPTO chunk (see
<xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>) if necessary.  At
completion of Protection Engine initialization, the setup of the
Protected association is complete and from that time on only CRYPTO
chunks will be exchanged.  Any plain text chunks will be silently
discarded.</t>
        <t>After completion of protected association initialization, the
initiator MUST send to the responder a PVALID chunk (see
<xref target="sctp-Crypto-chunk-newchunk-pvalid-chunk"/>) containing the list of
Protection Engines previously sent in the protected association
parameter of the INIT chunk. The responder receiving the PVALID chunk
will compare the Protection Engines list with the one previously
received in the INIT chunk, if they are exactly the same, with the
same Protection engine in the same position, it will reply to the
initiator with a PVALID chunk containing the chosen Protection Engine,
otherwise it will reply with an ABORT chunk. If the association was
not aborted the protected association is considered successfully
established.</t>
        <t>When the initiator receive the PVALID chunk, it will compare with the
previous chosen Protection Engine and in case of mismatch with the one
received previously in the protected association parameter in the
INIT-ACK chunk, it will reply with ABORT, otherwise the protected
association is successfully established.</t>
      </section>
      <section anchor="termination-procedure">
        <name>Termination of a Protected Association</name>
        <t>Besides the procedures for terminating an association explained in
<xref target="RFC9260"/>, the protection engine SHALL ask SCTP endpoint for
terminating an association when having an internal error or by
detecting a security violation, using the procedure described
in <xref target="eengine"/>.  The internal design of Protection
Engines and their capability is out of the scope of the current
document.</t>
      </section>
    </section>
    <section anchor="protected-data-handling">
      <name>Protected Data Chunk Handling</name>
      <t>With reference to the State Diagram as shown in
<xref target="sctp-Crypto-state-diagram"/> and Figure 3 of <xref target="RFC9260"/>, the
handling of Control chunks, Data chunks and Crypto chunks follows the
rules defined below:</t>
      <ul spacing="normal">
        <li>When the association is in states CLOSED, COOKIE-WAIT, and
COOKIE-ECHOED, any Control chunk is sent unprotected (i.e. plain
text). No DATA chunks shall be sent in these states and DATA chunks
received shall be silently discarded.</li>
        <li>When the association is in state PROTECTION PENDING, any Control
chunk is sent unprotected (i.e. plain text). No DATA chunks shall be
sent in these states and DATA chunks received shall be silently
discarded. CRYPTO Chunks can be sent by the Protection Engine to
establish its security context.</li>
        <li>When the association is in states PROTECTED, any SCTP chunk except
for DATA and CRYPTO chunks, will be used to create an SCTP payload
that will be encrypted by the Protection Engine and the result from
that encryption will be the used as payload for a CRYPTO chunk that
will be the only chunk in the SCTP packet to be sent. DATA chunks
received shall be silently discarded.</li>
        <li>When the association is in states ESTABLISHED and in the states for
association shutdown, i.e. SHUTDOWN-PENDING, SHUTDOWN-SENT,
SHUTDOWN-RECEIVED, SHUTDOWN-ACK-SENT as defined by <xref target="RFC9260"/>, any
SCTP chunk including DATA chunks, but excluding CRYPTO chunk, will be
used to create an SCTP payload that will be encrypted by the
Protection Engine and the result from that encryption will be the used
as payload for a CRYPTO chunk that will be the only chunk in the SCTP
packet to be sent.</li>
      </ul>
      <figure anchor="sctp-Crypto-encrypt-chunk-states-1">
        <name>Plain Text SCTP Packet</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,192" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,192" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 520,160" fill="none" stroke="black"/>
              <path d="M 8,192 L 520,192" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="236" y="84">Common</text>
                <text x="292" y="84">Header</text>
                <text x="248" y="116">Chunk</text>
                <text x="284" y="116">#1</text>
                <text x="240" y="148">.</text>
                <text x="256" y="148">.</text>
                <text x="272" y="148">.</text>
                <text x="248" y="180">Chunk</text>
                <text x="284" y="180">#n</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Common Header                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Chunk #1                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            . . .                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Chunk #n                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <t>The diagram shown in <xref target="sctp-Crypto-encrypt-chunk-states-1"/> describes
the structure of any plain text SCTP packet being sent or received
when the association has not reached the PROTECTED state yet. SCTP
packet as depicted in <xref target="sctp-Crypto-encrypt-chunk-states-2"/> may also
be sent in PROTECTION PENDING state and in any later state of the
association.</t>
      <figure anchor="sctp-Crypto-encrypt-chunk-states-2">
        <name>Protected SCTP Packets</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="528" viewBox="0 0 528 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px">
              <path d="M 8,64 L 8,128" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,128" fill="none" stroke="black"/>
              <path d="M 8,64 L 520,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 520,96" fill="none" stroke="black"/>
              <path d="M 8,128 L 520,128" fill="none" stroke="black"/>
              <g class="text">
                <text x="16" y="36">0</text>
                <text x="176" y="36">1</text>
                <text x="336" y="36">2</text>
                <text x="496" y="36">3</text>
                <text x="16" y="52">0</text>
                <text x="32" y="52">1</text>
                <text x="48" y="52">2</text>
                <text x="64" y="52">3</text>
                <text x="80" y="52">4</text>
                <text x="96" y="52">5</text>
                <text x="112" y="52">6</text>
                <text x="128" y="52">7</text>
                <text x="144" y="52">8</text>
                <text x="160" y="52">9</text>
                <text x="176" y="52">0</text>
                <text x="192" y="52">1</text>
                <text x="208" y="52">2</text>
                <text x="224" y="52">3</text>
                <text x="240" y="52">4</text>
                <text x="256" y="52">5</text>
                <text x="272" y="52">6</text>
                <text x="288" y="52">7</text>
                <text x="304" y="52">8</text>
                <text x="320" y="52">9</text>
                <text x="336" y="52">0</text>
                <text x="352" y="52">1</text>
                <text x="368" y="52">2</text>
                <text x="384" y="52">3</text>
                <text x="400" y="52">4</text>
                <text x="416" y="52">5</text>
                <text x="432" y="52">6</text>
                <text x="448" y="52">7</text>
                <text x="464" y="52">8</text>
                <text x="480" y="52">9</text>
                <text x="496" y="52">0</text>
                <text x="512" y="52">1</text>
                <text x="236" y="84">Common</text>
                <text x="292" y="84">Header</text>
                <text x="236" y="116">CRYPTO</text>
                <text x="288" y="116">Chunk</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art" align="center"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Common Header                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         CRYPTO Chunk                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </artset>
      </figure>
      <t>The diagram shown in <xref target="sctp-Crypto-encrypt-chunk-states-2"/> describes
the structure of an SCTP packet being sent after the PROTECTED state
has been reached. Such packets are built with the SCTP common
header. Only one CRYPTO chunk can be sent in a SCTP packet.</t>
      <section anchor="data-sending">
        <name>Protected Data Chunk Transmission</name>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTION PENDING state, it MAY perform protection
engine key management inband depending on how the specification for the
chosen Protection Engine has been defined.  In such case, the CRYPTO
chunk Handler will receive plain control chunks from the SCTP chunk
handler and payload for CRYPTO chunks from the protection engine.
Plain control chunks and CRYPTO chunks MUST NOT be bundled within the
same SCTP packet.</t>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTED state, the CRYPTO chunk handler will receive
control chunks and DATA chunks from the SCTP chunk handler as a
complete SCTP payload with maximum size limited by PMTU reduced by the
size of the SCTP common header and the CRYPTO chunk overhead.</t>
        <t>That plain payload will be sent to the protection engine in use for
that specific association, the protection engine will return an
encrypted payload.</t>
        <t>Depending on the specification for the chosen protection engine, when
forming the CRYPTO chunk header the CRYPTO chunk handler MAY set the
chunk header flags (see <xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>).</t>
        <t>An SCTP packet containing an SCTP CRYPTO chunk SHALL be delivered
without delay and SCTP bundling SHALL NOT be performed.</t>
      </section>
      <section anchor="data-receiving">
        <name>Protected Data Chunk Reception</name>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTION PENDING state, it MAY handle key management
inband depending on how the specification for the chosen protection
engine has been defined.  In such case, the CRYPTO chunk handler will
receive plain control chunks and CRYPTO chunks from the SCTP Header
Handler.  CRYPTO chunks will be forwarded to the protection engine
whilst plain control chunks will be forwarded to SCTP chunk handler.
During PROTECTION PENDING state, plain control chunks and CRYPTO chunks
bundled within the same SCTP packet will be handled as protocol
error.</t>
        <t>When the association state machine (see <xref target="sctp-Crypto-state-diagram"/>)
has reached the PROTECTED state, the CRYPTO chunk handler will receive
CRYPTO chunks from the SCTP Header Handler.  Payload from CRYPTO
chunks will be forwarded to the protection engine in use for that
specific association for decryption, the protection engine will return
a plain SCTP Payload.  The plain SCTP payload will be forwarded to
SCTP Chunk Handler that will split it in separated chunks and will
handle them according to <xref target="RFC9260"/>.</t>
        <t>Depending on the specification for the chosen protection engine, when
receiving the CRYPTO chunk header the CRYPTO Chunk Handler MAY handle
the Flags (see <xref target="sctp-Crypto-chunk-newchunk-crypt-struct"/>) according
to that specification.</t>
        <t>Meta data belonging to the SCTP packet received SHALL be tied to the
relevant chunks and forwarded transparently to the SCTP endpoint.</t>
        <section anchor="sctp-header-handler">
          <name>SCTP Header Handler</name>
          <t>The SCTP Header Handler is responsible for correctness of the SCTP
common header, it receives the SCTP packet from the lower transport
layer, discriminates among associations and forwards the payload and
relevant data to the SCTP protection engine for handling.</t>
          <t>In the opposite direction it creates the SCTP common header and fills
it with the relevant information for the specific association and
delivers it towards the lower transport layer.</t>
        </section>
      </section>
    </section>
    <section anchor="IANA-Consideration">
      <name>IANA Considerations</name>
      <t>This document defines two new registries in the Stream Control
Transmission Protocol (SCTP) Parameters group that IANA
maintains. Theses registries are for the protection engine identifiers
and extra cause codes for protection related errors. It also adds
registry entries into several other registries in the Stream Control
Transmission Protocol (SCTP) Parameters group:</t>
      <ul spacing="normal">
        <li>Two new SCTP Chunk Types</li>
        <li>One new SCTP Chunk Parameter Type</li>
        <li>One new SCTP Error Cause Codes</li>
      </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>
    <section anchor="Security-Considerations">
      <name>Security Considerations</name>
      <t>All the security and privacy considerations of the security protocol
used as the protection engine applies.</t>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <t>Using a security protocol in the SCTP CRYPTO chunk might lower the
privacy properties of the security protocol as the SCTP Verification
Tag is an unique identifier for the association.</t>
      </section>
      <section anchor="Downgrade-Attacks">
        <name>Downgrade Attacks</name>
        <t>The CRYPTO chunk provides a mechanism for preventing downgrade attacks
that detects downgrading attempts between protection engines and
terminates the association. The chosen protection engine is the same
as if the peers had been communicating in the absence of an attacker.</t>
        <t>The protection engine initial handshake is verified before the
association is set as ESTABLISHED, thus no user data are sent before
validation.</t>
        <t>The downgrade protection is only as strong as the weakest of the
supported protection engines as an active attacker can trick the
endpoints to negotiate the weakest protection engine and then
modify the weakly protected CRYPTO chunks to deceive the endpoints
that the negotiation of the protection engines is validated. This
is similar to the downgrade protection in TLS 1.3 specified in
Section 4.1.3. of <xref target="RFC8446"/> where downgrade protection is not
provided when TLS 1.2 with static RSA is used. It is RECOMMENDED
to only support a limited set of strongly profiled protection
engines.</t>
      </section>
    </section>
    <section anchor="requirements">
      <name>Requirements towards the protection engines</name>
      <t>This section specifies what is to be specified in the description
of a protection engine.</t>
      <ul spacing="normal">
        <li>Define how to protect the plain text set of chunks and encapsulate
them in the CRYPTO Chunk payload.</li>
        <li>Can define its usage of the 8-bit chunk Flags field in the CRYPTO
chunk</li>
        <li>Is required to register the defined protection engine(s) with IANA
per <xref target="iana-protection-engines"/>.</li>
        <li>Define how it and in such case how it transmits SCTP packets that
are not created by the SCTP chunk handler, and instead by the
Protection engine. This requires consideration of congestion
control and path MTU.</li>
        <li>Detail the state transition between PROTECTION PENDING and
PROTECTED state (see <xref target="state-diagram"/>).</li>
      </ul>
    </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="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>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
RwN6WKgzx6aZctreObK1FYhS2IJTw6+yZctEAdyywxXZl8Gs0Zp/CfBbOxfF
jJGEDZZLGUn6dbaA/SgbtWzJGYsLgueqtmBb0akXIAXYQ4YWTZ/Riy5g9fAc
7EGkasQcGjPWN5xSFmixKRW5Y0snOQepBCzscgqNZR/yFcDMImeAEagHK9Eq
STh05e5Q+GeFyHFuVJCv4tzFE70PWmY7u4S5l7hvlrn8pztkF4RrSoK4XWWI
r8u2js+RaMFRhsVXenAgLMZs4MDxCifPekzB85PbQGWJdVDHrvzDjuOTZHex
bwUAQG590S7Z2oiij6YAM2ohyTnEXSy5+oHBGC7mKIB/Pjm0SrgTGi76++1k
FzXEY/ZuXwJdmmJA4aUYclbNaxf3F65DaRkFsO/ZpZm9x7AtHC2z2pyDkJxT
hJQK06COBnIdqKIxoLdMBgxqaw+WkvdxwdpXmPcRbNZC0cEbGQhrdOIcRi1C
iPYihfYqBp87l7zmPIXljXdCSG5QZDvEOTCANMcHr9/00SSfrda3YoF3xJ1V
LVERwdesJ8lhDY0ouVi1jeXmFfK2fO5C/ZE6Hp75mcD3yWPLycjXB7ZrL6OD
3MBDJFx3fQs2bk85PGi/j3hJvGBTVagiwBShIxLRDTVicTucO4437JscCVeo
yTVChjM+S+yA2HutnAIvxi0KirwDOHL/4MFgAhyFfZw7AHQfQO8dNGwwfZUM
nJNT+vvt0X97d/z26BD/Pnu5/+qV+0PJE2cvT9+9OvR/+TedyY4f4VsdfaV2
wCTcYXfAzumb6fHpyf6rnX56IaqKVvABPawr04gHLTTVXhy8+T//+8kzOPj/
IgmXcPL8AfMs4QO6+STBqQDI80d0+Smk/qwiOxpjEdk6b0BVomQvUMWuC0ru
Q/AB/E7MNajVFVADhiqmN2vgLw/ABh2v7ZdjzBC+lfRNy2/CLDB4WrunMYwT
5AbgNiURQRVmUTY5nba3XnsyWtwxXVRl734UHaxN067TkX50BPsdxPF+lV4z
wONTFxLhFyfIMDDe/PjDd48/fNCfglDtfrCqTwNB13hJNvSK4D8+OZ5+g/81
3j/4yc+4A6xrWf+wU+klhlZPysY40ylYuwTmxACsna3CNhRw9UWBoTJSJNxL
khQD2mFrIoPiojO6KOBtAbyvbsoSDEwbJAjzJ/VDkg4B/gYMa+Q41tPJ7uTJ
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
i1HoImHs6lax0572dm2w5Zy1ntWGSt9aCsMzumDAgYGyi0AXnL2nAWxEg8xk
61Qz0VQJKpMrrtWqnGOTLvt0VPAeRwJh9HlQG+am9bdGOY8eW+ZJ+qYG/raX
kXR5UHgU+Qr4dWU9d2mQFnr66kw/mTyNa93PXLt8+GniKmi+e/bsOQoU6ksw
dEZYcy10JXdt8xS7LIgwcprP9NszEnXIuch9Dn+/PTo4ff366OTw6BAjXWFZ
OdCnTV+RW74ZAxi4F3S7aM/pwNcTiKlCQikKdiQA+fFBFTzd7dro7+axN9hJ
AnrYoYRATWl1FFRVVMWWSG5S+nf6kEwmTj8o7UO8Np8iK/sNgnJAx9m6btEf
g40wKQwqM0dhSJ8EA3MdZDZPgWpU2jpbuHSf78j5wRyRg5TRBYAShIapOLML
hzuureOGlBRrNsr22RLs7fph/cjfxIfjrekq7KFAwW0PSnljM2z9vV/yvVzg
AVsLIoHcvgVnQo6DCcPss3Ne9n4uw0hm4E6Ukhuldb/c1bnwxH01izvRXOAX
C2AVOTeTtqkPnA4HMHg9fWf3hy1Ama9zRzPcClXPOjmSSKxAOaJ1L+vZhpc7
qQwT9f8AgP6vFpLLAAA=

-->

</rfc>
