<?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.7.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-cisco-skip-02" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.1 -->
  <front>
    <title abbrev="SKIP">Secure Key Integration Protocol (SKIP)</title>
    <seriesInfo name="Internet-Draft" value="draft-cisco-skip-02"/>
    <author initials="R." surname="Singh" fullname="Rajiv Singh" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Drive</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>US</country>
        </postal>
        <email>rajisin2@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Hill" fullname="Craig Hill">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>170 West Tasman Drive</street>
          <city>San Jose</city>
          <region>CA</region>
          <code>95134</code>
          <country>US</country>
        </postal>
        <email>crhill@cisco.com</email>
      </address>
    </author>
    <author initials="S." surname="Kawaguchi" fullname="Scott Kawaguchi">
      <organization>QuSecure, Inc.</organization>
      <address>
        <postal>
          <street>1900 South Norfolk Street, Suite 350/11</street>
          <city>San Mateo</city>
          <region>CA</region>
          <code>94403</code>
          <country>US</country>
        </postal>
        <email>scott@qusecure.com</email>
      </address>
    </author>
    <author initials="J." surname="Lupo" fullname="Joey Lupo">
      <organization>QuSecure, Inc.</organization>
      <address>
        <postal>
          <street>1900 South Norfolk Street, Suite 350/11</street>
          <city>San Mateo</city>
          <region>CA</region>
          <code>94403</code>
          <country>US</country>
        </postal>
        <email>jlupo@qusecure.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="03"/>
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>SKIP</keyword>
    <keyword>IKEv2 PPK</keyword>
    <abstract>
      <?line 108?>

<t>This document specifies the Secure Key Integration Protocol (SKIP), a two-party
protocol that allows a client to securely obtain a key from an independent Key
Provider. SKIP enables network and security operators to provide
quantum-resistant keys suitable for use with quantum-resistant cryptographic
algorithms such as AES-256. It can also be used to provide an additional layer
of security to an already quantum-resistant secure channel protocol for a
defense-in-depth strategy, and/or enforce key management policies.</t>
    </abstract>
  </front>
  <middle>
    <?line 118?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Many existing secure channel protocols such as the Internet Key Exchange
Protocol Version 2 (IKEv2) and Transport Layer Security (TLS) utilize public
key cryptography that is vulnerable to Cryptographically Relevant Quantum
Computers (CRQC)<xref target="PQCRYPTO"/>. One solution to mitigate this threat is to
replace the vulnerable public key algorithms with different algorithms that are
believed to be resistant to quantum computers. An alternate solution is to
augment the original protocol by providing each protocol principal with a
pre-shared key. If the pre-shared key has sufficient entropy and is mixed into
the protocol's key derivation process in a quantum-resistant manner (such as
via a pseudorandom function (PRF) instantiated using symmetric cryptography
primitives), and other encryption and authentication algorithms are
quantum-resistant, then the whole system is considered to be quantum-resistant.
Many secure channel protocols already support the ability to mix a pre-shared
key into their key derivation process. For example, <xref target="RFC8784"/> specifies an
IKEv2 extension that utilizes a post-quantum pre-shared key (PPK) in order to
provide quantum resistance to the IKEv2 handshake and the resulting IPsec
session.</t>
      <t>One common solution to distributing these pre-shared keys is to use out of band
mechanism. This approach, however, has a number of drawbacks. For one, the
administrative burden of installing the keys scales quadratically with the
number of peers. Second, key management best practices suggests periodic
rotation of keys, which requires additional and recurring support. Lastly,
manual administration increases the likelihood that a low entropy key (e.g,. a
password) is chosen. This misconfiguration would degrade any quantum resistance
security benefits that we hope to achieve by mixing in the key in the first
place. Instead, a more dynamic and automated source of key provisioning should
be preferred <xref target="RFC4107"/>.</t>
      <t>This document describes the Secure Key Integration Protocol (SKIP), a protocol
designed to facilitate the dynamic provisioning of keys to protocol principals.
SKIP operates in a model where the two principals, called encryptors, are
situated at each end of a point-to-point connection. Each encryptor is
associated and co-located with a Key Provider (KP). Each KP is capable of
producing the same key upon request from its associated encryptor, allowing
this key to function as a pre-shared key between the two encryptors. For
example, when integrated with the IKEv2 PPK extension (refer
<xref target="skip-with-ikev2"/>), SKIP can be used to provide each peer with a fresh PPK
per session. Furthermore, SKIP defines a method by which a KP can provide
entropy to an encryptor.</t>
      <t>SKIP defines a modular and extensible security architecture. The keys provided
to encryptors can be used to provide quantum-resistance to vulnerable secure
channel protocols without reducing security guarantees against classical (i.e.,
non-quantum) adversaries, provide an additional layer of security to an already
quantum-resistant secure channel protocol for a defense-in-depth strategy,
and/or enforce key management policies. It imposes no restriction on the means
by which two KPs synchronize a key. KPs may employ one or more technologies
believed to be quantum-resistant, including, but not limited to post-quantum
cryptography (PQC), quantum key distribution (QKD), a trusted third-party
protocol, or a one-time pad (OTP) <xref target="CSFC"/>. The KPs can be upgraded, replaced,
or reconfigured independent of the underlying encryptors, supporting goals such
as cryptographic agility, defense-in-depth, and high availability. Moreover,
SKIP can help enforce key management and rotation policies for any protocol
that supports the use of a pre-shared key, such as Media Access Control
Security (MACsec).</t>
      <figure>
        <name>SKIP Network Overview</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 416 256" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,208" fill="none" stroke="black"/>
              <path d="M 32,160 L 32,192" fill="none" stroke="black"/>
              <path d="M 40,64 L 40,96" fill="none" stroke="black"/>
              <path d="M 88,104 L 88,152" fill="none" stroke="black"/>
              <path d="M 120,64 L 120,96" fill="none" stroke="black"/>
              <path d="M 136,160 L 136,192" fill="none" stroke="black"/>
              <path d="M 160,48 L 160,64" fill="none" stroke="black"/>
              <path d="M 160,96 L 160,160" fill="none" stroke="black"/>
              <path d="M 160,192 L 160,208" fill="none" stroke="black"/>
              <path d="M 256,48 L 256,64" fill="none" stroke="black"/>
              <path d="M 256,96 L 256,160" fill="none" stroke="black"/>
              <path d="M 256,192 L 256,208" fill="none" stroke="black"/>
              <path d="M 280,160 L 280,192" fill="none" stroke="black"/>
              <path d="M 288,64 L 288,96" fill="none" stroke="black"/>
              <path d="M 336,104 L 336,152" fill="none" stroke="black"/>
              <path d="M 368,64 L 368,96" fill="none" stroke="black"/>
              <path d="M 384,160 L 384,192" fill="none" stroke="black"/>
              <path d="M 408,48 L 408,208" fill="none" stroke="black"/>
              <path d="M 8,48 L 160,48" fill="none" stroke="black"/>
              <path d="M 256,48 L 408,48" fill="none" stroke="black"/>
              <path d="M 40,64 L 120,64" fill="none" stroke="black"/>
              <path d="M 288,64 L 368,64" fill="none" stroke="black"/>
              <path d="M 128,78 L 280,78" fill="none" stroke="black"/>
              <path d="M 128,82 L 280,82" fill="none" stroke="black"/>
              <path d="M 40,96 L 120,96" fill="none" stroke="black"/>
              <path d="M 288,96 L 368,96" fill="none" stroke="black"/>
              <path d="M 32,160 L 136,160" fill="none" stroke="black"/>
              <path d="M 280,160 L 384,160" fill="none" stroke="black"/>
              <path d="M 32,192 L 136,192" fill="none" stroke="black"/>
              <path d="M 280,192 L 384,192" fill="none" stroke="black"/>
              <path d="M 8,208 L 160,208" fill="none" stroke="black"/>
              <path d="M 256,208 L 408,208" fill="none" stroke="black"/>
              <g class="text">
                <text x="76" y="36">Location</text>
                <text x="120" y="36">A</text>
                <text x="324" y="36">Location</text>
                <text x="368" y="36">B</text>
                <text x="208" y="68">IKEv2</text>
                <text x="80" y="84">Encryptor</text>
                <text x="328" y="84">Encryptor</text>
                <text x="60" y="132">SKIP</text>
                <text x="308" y="132">SKIP</text>
                <text x="48" y="180">Key</text>
                <text x="100" y="180">Provider</text>
                <text x="144" y="180">=</text>
                <text x="160" y="180">=</text>
                <text x="176" y="180">=</text>
                <text x="192" y="180">=</text>
                <text x="208" y="180">=</text>
                <text x="224" y="180">=</text>
                <text x="240" y="180">=</text>
                <text x="256" y="180">=</text>
                <text x="272" y="180">=</text>
                <text x="296" y="180">Key</text>
                <text x="348" y="180">Provider</text>
                <text x="208" y="196">Arbitrary</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
          Location A                     Location B
     +------------------+           +------------------+
     |   +---------+    |   IKEv2   |   +---------+    |
     |   |Encryptor|====================|Encryptor|    |
     |   +---------+    |           |   +---------+    |
     |         |        |           |         |        |
     |    SKIP |        |           |    SKIP |        |
     |         |        |           |         |        |
     |  +------------+  |           |  +------------+  |
     |  |Key Provider|= = = = = = = = =|Key Provider|  |
     |  +------------+  | Arbitrary |  +------------+  |
     +------------------+           +------------------+

]]></artwork>
        </artset>
      </figure>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>SKIP defines the interface through which two encryptors can obtain a key from
their co-located Key Providers. The diagram <xref target="exchange"/> provides an overview
of the steps involved.</t>
      <figure anchor="exchange">
        <name>SKIP Key Exchange</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 640 288" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,272" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,112" fill="none" stroke="black"/>
              <path d="M 48,120 L 48,264" fill="none" stroke="black"/>
              <path d="M 128,64 L 128,112" fill="none" stroke="black"/>
              <path d="M 176,64 L 176,112" fill="none" stroke="black"/>
              <path d="M 216,120 L 216,264" fill="none" stroke="black"/>
              <path d="M 256,64 L 256,112" fill="none" stroke="black"/>
              <path d="M 272,48 L 272,184" fill="none" stroke="black"/>
              <path d="M 272,200 L 272,272" fill="none" stroke="black"/>
              <path d="M 344,48 L 344,176" fill="none" stroke="black"/>
              <path d="M 344,208 L 344,272" fill="none" stroke="black"/>
              <path d="M 360,64 L 360,112" fill="none" stroke="black"/>
              <path d="M 400,120 L 400,264" fill="none" stroke="black"/>
              <path d="M 440,64 L 440,112" fill="none" stroke="black"/>
              <path d="M 512,64 L 512,112" fill="none" stroke="black"/>
              <path d="M 576,120 L 576,264" fill="none" stroke="black"/>
              <path d="M 616,64 L 616,112" fill="none" stroke="black"/>
              <path d="M 632,48 L 632,272" fill="none" stroke="black"/>
              <path d="M 8,48 L 160,48" fill="none" stroke="black"/>
              <path d="M 176,48 L 272,48" fill="none" stroke="black"/>
              <path d="M 344,48 L 632,48" fill="none" stroke="black"/>
              <path d="M 24,64 L 128,64" fill="none" stroke="black"/>
              <path d="M 176,64 L 256,64" fill="none" stroke="black"/>
              <path d="M 360,64 L 440,64" fill="none" stroke="black"/>
              <path d="M 512,64 L 616,64" fill="none" stroke="black"/>
              <path d="M 24,112 L 128,112" fill="none" stroke="black"/>
              <path d="M 176,112 L 256,112" fill="none" stroke="black"/>
              <path d="M 360,112 L 440,112" fill="none" stroke="black"/>
              <path d="M 512,112 L 616,112" fill="none" stroke="black"/>
              <path d="M 56,144 L 72,144" fill="none" stroke="black"/>
              <path d="M 176,144 L 208,144" fill="none" stroke="black"/>
              <path d="M 56,160 L 72,160" fill="none" stroke="black"/>
              <path d="M 192,160 L 208,160" fill="none" stroke="black"/>
              <path d="M 224,192 L 272,192" fill="none" stroke="black"/>
              <path d="M 352,192 L 392,192" fill="none" stroke="black"/>
              <path d="M 408,240 L 424,240" fill="none" stroke="black"/>
              <path d="M 552,240 L 568,240" fill="none" stroke="black"/>
              <path d="M 408,256 L 432,256" fill="none" stroke="black"/>
              <path d="M 552,256 L 568,256" fill="none" stroke="black"/>
              <path d="M 8,272 L 160,272" fill="none" stroke="black"/>
              <path d="M 176,272 L 272,272" fill="none" stroke="black"/>
              <path d="M 344,272 L 632,272" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="576,240 564,234.4 564,245.6" fill="black" transform="rotate(0,568,240)"/>
              <polygon class="arrowhead" points="416,256 404,250.4 404,261.6" fill="black" transform="rotate(180,408,256)"/>
              <polygon class="arrowhead" points="400,192 388,186.4 388,197.6" fill="black" transform="rotate(0,392,192)"/>
              <polygon class="arrowhead" points="216,160 204,154.4 204,165.6" fill="black" transform="rotate(0,208,160)"/>
              <polygon class="arrowhead" points="64,144 52,138.4 52,149.6" fill="black" transform="rotate(180,56,144)"/>
              <g class="text">
                <text x="124" y="36">Location</text>
                <text x="168" y="36">A</text>
                <text x="484" y="36">Location</text>
                <text x="528" y="36">B</text>
                <text x="40" y="84">Key</text>
                <text x="92" y="84">Provider</text>
                <text x="216" y="84">Encryptor</text>
                <text x="400" y="84">Encryptor</text>
                <text x="528" y="84">Key</text>
                <text x="580" y="84">Provider</text>
                <text x="72" y="100">Alice</text>
                <text x="216" y="100">Alice</text>
                <text x="400" y="100">Bob</text>
                <text x="560" y="100">Bob</text>
                <text x="92" y="148">1.</text>
                <text x="120" y="148">Get</text>
                <text x="152" y="148">key</text>
                <text x="92" y="164">2.</text>
                <text x="144" y="164">key,keyId</text>
                <text x="284" y="196">3.</text>
                <text x="320" y="196">keyId</text>
                <text x="460" y="228">4.</text>
                <text x="488" y="228">Get</text>
                <text x="448" y="244">key</text>
                <text x="480" y="244">for</text>
                <text x="520" y="244">keyId</text>
                <text x="452" y="260">5.</text>
                <text x="504" y="260">key,keyId</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
           Location A                                   Location B
+------------------- ------------+        +-----------------------------------+
| +------------+     +---------+ |        | +---------+        +------------+ |
| |Key Provider|     |Encryptor| |        | |Encryptor|        |Key Provider| |
| |   Alice    |     |  Alice  | |        | |   Bob   |        |    Bob     | |
| +------------+     +---------+ |        | +---------+        +------------+ |
|    |                    |      |        |      |                     |      |
|    |<-- 1. Get key -----|      |        |      |                     |      |
|    |--- 2. key,keyId -->|      |        |      |                     |      |
|    |                    |      |        |      |                     |      |
|    |                    |-------3. keyId ----->|                     |      |
|    |                    |      |        |      |                     |      |
|    |                    |      |        |      |      4. Get         |      |
|    |                    |      |        |      |--- key for keyId -->|      |
|    |                    |      |        |      |<--- 5. key,keyId ---|      |
+------------------- ------------+        +-----------------------------------+
]]></artwork>
        </artset>
      </figure>
      <ol spacing="normal" type="1"><li>
          <t>Encryptor Alice initiates a request to KP Alice for a key.</t>
        </li>
        <li>
          <t>KP Alice generates a key and a unique identifier keyId, synchronizes the key
and keyId with KP Bob through an arbitrary protocol, returns the key and
keyId to encryptor Alice, and finally zeroizes the local copy of the key.</t>
        </li>
        <li>
          <t>Encryptor Alice establishes a connection with encryptor Bob and exchanges
the keyId.</t>
        </li>
        <li>
          <t>Encryptor Bob initiates a request to KP Bob for the key associated with the
keyId provided by encryptor Alice.</t>
        </li>
        <li>
          <t>KP Bob responds with the key associated with the keyId and zeroizes its
local copy.</t>
        </li>
      </ol>
      <t>At the end of this exchange, encryptors Alice and encryptor Bob possess the
same key, which can be utilized as a pre-shared key in another protocol,
thereby enhancing its security against potential quantum threats.</t>
    </section>
    <section anchor="skip-interface">
      <name>SKIP Interface</name>
      <t>The connection between the Key Provider and the encryptor is established using
IP over Ethernet. The communication protocol used is Hypertext Transfer
Protocol (HTTP) over Transport Layer Security (TLS) as per <xref target="RFC9110"/>, with
TLS versions 1.2 or 1.3 <xref target="RFC8446"/>. The table below lists
supported TLS ciphersuites and authentication modes.</t>
      <table anchor="AuthModes">
        <name>TLS Authentication Modes.</name>
        <thead>
          <tr>
            <th align="left">Mode</th>
            <th align="left">TLS version</th>
            <th align="left">Ciphers (Algorithm)</th>
            <th align="left">Requirement</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Certificate</td>
            <td align="left">TLS 1.2</td>
            <td align="left">TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</td>
            <td align="left">
              <bcp14>RECOMMENDED</bcp14></td>
          </tr>
          <tr>
            <td align="left">Pre-Shared Key (PSK)</td>
            <td align="left">TLS 1.2</td>
            <td align="left">TLS_DHE_PSK_WITH_AES_256_CBC_SHA384, TLS_DHE_PSK_WITH_AES_256_CBC_SHA</td>
            <td align="left">
              <bcp14>RECOMMENDED</bcp14></td>
          </tr>
          <tr>
            <td align="left">Certificate/PSK</td>
            <td align="left">TLS 1.3</td>
            <td align="left">TLS_AES_256_GCM_SHA384</td>
            <td align="left">
              <bcp14>REQUIRED</bcp14></td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="skip-methods-and-status-codes">
      <name>SKIP Methods and Status Codes</name>
      <t>An encryptor uses the following methods to interact with a Key Provider:</t>
      <table anchor="Methods">
        <name>SKIP Methods.</name>
        <thead>
          <tr>
            <th align="left">NO.</th>
            <th align="left">Method</th>
            <th align="left">Path</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">1.</td>
            <td align="left">GET</td>
            <td align="left">https://{host-identifier:port}/capabilities</td>
            <td align="left">Get the capabilities of the KP</td>
          </tr>
          <tr>
            <td align="left">2.</td>
            <td align="left">GET</td>
            <td align="left">https://{host-identifier:port}/key?remoteSystemID=Bob</td>
            <td align="left">Get a key that is shared with KP having localSystemID Bob</td>
          </tr>
          <tr>
            <td align="left">3.</td>
            <td align="left">GET</td>
            <td align="left">https://{host-identifier:port}/key?remoteSystemID=Bob&amp;size=128</td>
            <td align="left">Get a key of size 128 bits that is shared with KP having localSystemID Bob</td>
          </tr>
          <tr>
            <td align="left">4.</td>
            <td align="left">GET</td>
            <td align="left">https://{host-identifier:port}/key/{keyId}?remoteSystemID=Alice</td>
            <td align="left">Get the key for the specified keyId that is shared with KP having localSystemID Alice</td>
          </tr>
          <tr>
            <td align="left">5.</td>
            <td align="left">GET</td>
            <td align="left">https://{host-identifier:port}/entropy</td>
            <td align="left">Get a random string having the default length of 256 bits</td>
          </tr>
          <tr>
            <td align="left">6.</td>
            <td align="left">GET</td>
            <td align="left">https://{host-identifier:port}/entropy?minentropy=128</td>
            <td align="left">Get a random string having the specified length of 128 bits</td>
          </tr>
        </tbody>
      </table>
      <t>The host-identifier is an IPv4/v6 address or a hostname providing HTTPS
services on standard port 443 or any port in the user-defined range. A KP
<bcp14>SHOULD</bcp14> return one of the following HTTP status codes in response to a request
made by an encryptor:</t>
      <table>
        <name>General Status Codes.</name>
        <thead>
          <tr>
            <th align="left">Code</th>
            <th align="left">Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">200</td>
            <td align="left">No problems were encountered</td>
          </tr>
          <tr>
            <td align="left">404</td>
            <td align="left">A path that doesn't correspond to those described in <xref target="Methods"/> was provided</td>
          </tr>
          <tr>
            <td align="left">405</td>
            <td align="left">A bad method was used. Only 'GET' is supported</td>
          </tr>
        </tbody>
      </table>
      <t>Data in the HTTP response from a KP to an encryptor is encoded in JSON format
as described in <xref target="RFC8259"/>.</t>
      <section anchor="get-capabilities">
        <name>Get Capabilities</name>
        <t>Get capabilities method returns a JSON response detailing the capabilities of
the KP. It provides an encryptor with an overview of services supported by the
KP.</t>
        <figure>
          <name>The schema of get capabilities response body.</name>
          <sourcecode type="json" markers="false"><![CDATA[
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "entropy": {
      "type": "boolean"
    },
    "key": {
      "type": "boolean"
    },
    "algorithm": {
      "type": "string"
    },
    "localSystemID": {
      "type": "string"
    },
    "remoteSystemID": {
      "type": "array",
      "items": [
        {
          "type": "string"
        },
        {
          "type": "string"
        }
      ]
    }
  },
  "required": [
    "entropy",
    "key",
    "algorithm",
    "localSystemID",
    "remoteSystemID"
  ]
}
]]></sourcecode>
        </figure>
        <figure>
          <name>An example get capabilities response body.</name>
          <sourcecode type="json" markers="false"><![CDATA[
{
  "entropy" : true,
  "key" : true,
  "algorithm": "PRF",
  "localSystemID": "Alice",
  "remoteSystemID": [
    "Bob",
    "Eve"
  ]
}
]]></sourcecode>
        </figure>
        <t>The fields returned in the capabilities JSON response are as follows:</t>
        <table>
          <name>SKIP capability response fields.</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">entropy</td>
              <td align="left">True if the KP supports the GET /entropy method</td>
            </tr>
            <tr>
              <td align="left">key</td>
              <td align="left">True if the KP supports the GET /key method</td>
            </tr>
            <tr>
              <td align="left">algorithm</td>
              <td align="left">Identifier or description of the algorithm used by the KP for generating and synchronizing keys</td>
            </tr>
            <tr>
              <td align="left">localSystemID</td>
              <td align="left">Identifier or name associated with the KP</td>
            </tr>
            <tr>
              <td align="left">remoteSystemID</td>
              <td align="left">List of identifiers of remote KPs with which the queried KP can synchronize a key</td>
            </tr>
          </tbody>
        </table>
        <t>The frequency at which an encryptor requests the capabilities of its co-located
KP can depend on the expected frequency of changes in the KP network. If the KP
supports dynamically learning of a newly onboarded KP, then an encryptor <bcp14>MAY</bcp14>
download the capabilities on each SKIP execution to ensure it receives an
up-to-date remoteSystemID list. Conversely, if the KP network is unlikely to
change, an encryptor <bcp14>MAY</bcp14> download the capabilities only once and cache the
results. Implementation <bcp14>MUST</bcp14> support at least 16 bytes for Algorithm field and
32 bytes for localSystemID and remoteSystemID.</t>
        <section anchor="local-systemid">
          <name>Local SystemID</name>
          <t>Each KP is associated with an identifier, represented by the localSystemID
field in the capabilities response. The uniqueness of this identifier is
crucial if there are multiple KPs connected to a single encryptor, or if a
single KP is communicating with multiple peer KPs. An implementor can choose
the scope of the uniqueness of this identifier to be either global or
connection-specific.</t>
          <ol spacing="normal" type="1"><li>
              <t>Global Uniqueness: The identifier is unique to all the KPs within the
  network.</t>
            </li>
            <li>
              <t>Connection-Specific Uniqueness: The identifier is unique among all the KP
connections attached to the encryptor. This option is available only if the
KP can only share keys with exactly one other KP (and vice versa).</t>
            </li>
          </ol>
        </section>
        <section anchor="remote-systemid">
          <name>Remote SystemID</name>
          <t>The remoteSystemID field contains a list of identifiers for KPs with which the
queried KP can synchronize a key. At least one identifier <bcp14>MUST</bcp14> be specified in
the list. A list entry <bcp14>MAY</bcp14> use a glob pattern to represent more than one KP
identifier. This feature can shorten the length of the remoteSystemID list in
large networks with numerous KPs. For example, two KP identifiers KP_ALICE_LOC1
and KP_BOB_LOC1 can be expressed with a single list entry KP_*_LOC1. The
following glob patterns are supported in accordance with <xref target="POSIX"/> standards:</t>
          <table>
            <name>SKIP remote system id glob patterns.</name>
            <thead>
              <tr>
                <th align="left">Pattern</th>
                <th align="left">Description</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">*</td>
                <td align="left">matches multiple characters</td>
              </tr>
              <tr>
                <td align="left">?</td>
                <td align="left">matches any single character</td>
              </tr>
              <tr>
                <td align="left">[list]</td>
                <td align="left">matches any single character in the list</td>
              </tr>
              <tr>
                <td align="left">[!list]</td>
                <td align="left">matches any single character not in the list</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="get-key">
        <name>Get Key</name>
        <t>Get key method returns a JSON response containing a key along with a
corresponding key identifier. It facilitates the delivery of a key from a KP to
an encryptor.</t>
        <figure>
          <name>The schema of the get key response body.</name>
          <sourcecode type="json" markers="false"><![CDATA[
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "keyId": {
      "type": "string"
    },
    "key": {
      "type": "string"
    }
  },
  "required": [
    "keyId",
    "key"
  ]
}
]]></sourcecode>
        </figure>
        <figure>
          <name>An example get key response body.</name>
          <sourcecode type="json" markers="false"><![CDATA[
{
   "keyId" : "1726e9AE76234FB1dd1283d4dca1911e1f93864d70f3069e",
   "key" : "ad229dfb8a276e74c1f3b6c09349a69fb2fed73c541270663f0e5cbbfb031670"
}
]]></sourcecode>
        </figure>
        <t>The fields returned in the key response are as follows</t>
        <table>
          <name>SKIP key response fields.</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">keyId</td>
              <td align="left">Hexadecimal-encoded identifier string associated with the key</td>
            </tr>
            <tr>
              <td align="left">key</td>
              <td align="left">Hexadecimal-encoded bytes of the key string</td>
            </tr>
          </tbody>
        </table>
        <t>An encryptor can request a (keyId, key) pair, or a key associated with a
specific keyId. In the typical SKIP flow, the initiating encryptor will request
a fresh (keyId, key) pair from its co-located KP and then pass the keyId to the
responder encryptor. The responder encryptor will then retrieve the key from
its co-located KP using the given keyId. To request a specific key, the
hexadecimal-encoded keyId is specified within the URL along with the
remoteSystemID as outlined in method 4 of <xref target="Methods"/>. An encryptor can also
request keys of a specific bit size by encoding the size within the URL as
outlined in method 3 of <xref target="Methods"/>.</t>
        <t>A KP <bcp14>SHOULD</bcp14> return the following HTTP status codes in response to key request
by an encryptor.</t>
        <table>
          <name>Get key Status Codes.</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">200</td>
              <td align="left">OK</td>
            </tr>
            <tr>
              <td align="left">400</td>
              <td align="left">A malformed keyId was requested or the key was not found</td>
            </tr>
            <tr>
              <td align="left">500</td>
              <td align="left">There was an internal error while trying to read or zeroize the key</td>
            </tr>
          </tbody>
        </table>
        <section anchor="keyid">
          <name>keyId</name>
          <t>Each key supplied by a KP is associated with a unique key identifier. The bit
position in a keyId uniquely maps only to a particular key, guaranteeing that
any key request for a specific keyId always yields the same key. The key <bcp14>MUST
NOT</bcp14> be recoverable with knowledge of the keyId alone. An encryptor in
possession of a valid keyId can use it to request its associated KP for the
corresponding key. The keyId is returned in responses and supplied in requests
as a hexadecimal-encoded string and has a default length of 128 bits.</t>
        </section>
        <section anchor="key">
          <name>Key</name>
          <t>The key bytes, returned as a hexadecimal-encoded string have a default length
of 256 bits. A KP <bcp14>MUST</bcp14> zeroize its local copy of a key after it is provided to
an encryptor.</t>
        </section>
      </section>
      <section anchor="get-entropy">
        <name>Get Entropy</name>
        <t>Get entropy method returns a JSON response containing a randomly generated
entropy string and the length of this string in bits. encryptors can request an
entropy sample for its internal consumption. The KPs <bcp14>MUST NOT</bcp14> utilize the
entropy sample for any other purpose.</t>
        <figure>
          <name>The schema of the get entropy response body.</name>
          <sourcecode type="json" markers="false"><![CDATA[
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "randomStr": {
      "type": "string"
    },
    "minentropy": {
      "type": "integer"
    }
  },
  "required": [
    "randomStr",
    "minentropy"
  ]
}
]]></sourcecode>
        </figure>
        <figure>
          <name>An example get entropy response body.</name>
          <sourcecode type="json" markers="false"><![CDATA[
{
   "randomStr" : "AD229DFB8A276E74C1F3B6C09349A69FB2FED73C541270663F0E5CBBFB031670",
   "minentropy" : 256
}
]]></sourcecode>
        </figure>
        <t>The default length of the entropy supplied by randomStr field is 256 bits.
An encryptor can request an entropy sample of a specific bit size by
encoding the minentropy size within the URL as outlined
in method 6 of <xref target="Methods"/>.</t>
        <table>
          <name>SKIP entropy response fields.</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">randomStr</td>
              <td align="left">Hexadecimal-encoded random bytes string</td>
            </tr>
            <tr>
              <td align="left">minentropy</td>
              <td align="left">Length of random bytes provided in response</td>
            </tr>
          </tbody>
        </table>
        <t>A KP <bcp14>SHOULD</bcp14> return the following HTTP status codes in response to
entropy request by the encryptors.</t>
        <table>
          <name>Get entropy Status Codes.</name>
          <thead>
            <tr>
              <th align="left">Code</th>
              <th align="left">Meaning</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">200</td>
              <td align="left">OK</td>
            </tr>
            <tr>
              <td align="left">503</td>
              <td align="left">A hardware random number generator is not available or the entropy pool doesn't have enough entropy bits</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="skip-with-ikev2">
      <name>SKIP with IKEv2</name>
      <t>SKIP can be used to dynamically supply post-quantum pre-shared keys (PPKs)
in the IKEv2 PPK protocol extension <xref target="RFC8784"/>.
The process of how SKIP is utilized in this context is outlined below.</t>
      <figure anchor="skipIkeExchange">
        <name>SKIP Protocol Exchange</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 904 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,48 L 8,464" fill="none" stroke="black"/>
              <path d="M 24,64 L 24,112" fill="none" stroke="black"/>
              <path d="M 48,120 L 48,456" fill="none" stroke="black"/>
              <path d="M 144,64 L 144,112" fill="none" stroke="black"/>
              <path d="M 288,64 L 288,112" fill="none" stroke="black"/>
              <path d="M 328,120 L 328,456" fill="none" stroke="black"/>
              <path d="M 368,64 L 368,112" fill="none" stroke="black"/>
              <path d="M 384,48 L 384,240" fill="none" stroke="black"/>
              <path d="M 384,272 L 384,328" fill="none" stroke="black"/>
              <path d="M 384,344 L 384,424" fill="none" stroke="black"/>
              <path d="M 384,440 L 384,464" fill="none" stroke="black"/>
              <path d="M 504,48 L 504,240" fill="none" stroke="black"/>
              <path d="M 504,272 L 504,328" fill="none" stroke="black"/>
              <path d="M 504,344 L 504,424" fill="none" stroke="black"/>
              <path d="M 504,440 L 504,464" fill="none" stroke="black"/>
              <path d="M 520,64 L 520,112" fill="none" stroke="black"/>
              <path d="M 560,120 L 560,456" fill="none" stroke="black"/>
              <path d="M 600,64 L 600,112" fill="none" stroke="black"/>
              <path d="M 760,64 L 760,112" fill="none" stroke="black"/>
              <path d="M 856,120 L 856,456" fill="none" stroke="black"/>
              <path d="M 880,64 L 880,112" fill="none" stroke="black"/>
              <path d="M 896,48 L 896,464" fill="none" stroke="black"/>
              <path d="M 8,48 L 384,48" fill="none" stroke="black"/>
              <path d="M 504,48 L 896,48" fill="none" stroke="black"/>
              <path d="M 24,64 L 144,64" fill="none" stroke="black"/>
              <path d="M 288,64 L 368,64" fill="none" stroke="black"/>
              <path d="M 520,64 L 600,64" fill="none" stroke="black"/>
              <path d="M 760,64 L 880,64" fill="none" stroke="black"/>
              <path d="M 24,112 L 144,112" fill="none" stroke="black"/>
              <path d="M 288,112 L 368,112" fill="none" stroke="black"/>
              <path d="M 520,112 L 600,112" fill="none" stroke="black"/>
              <path d="M 760,112 L 880,112" fill="none" stroke="black"/>
              <path d="M 56,142 L 136,142" fill="none" stroke="black"/>
              <path d="M 56,146 L 136,146" fill="none" stroke="black"/>
              <path d="M 216,142 L 320,142" fill="none" stroke="black"/>
              <path d="M 216,146 L 320,146" fill="none" stroke="black"/>
              <path d="M 568,142 L 656,142" fill="none" stroke="black"/>
              <path d="M 568,146 L 656,146" fill="none" stroke="black"/>
              <path d="M 736,142 L 848,142" fill="none" stroke="black"/>
              <path d="M 736,146 L 848,146" fill="none" stroke="black"/>
              <path d="M 56,176 L 112,176" fill="none" stroke="black"/>
              <path d="M 272,176 L 320,176" fill="none" stroke="black"/>
              <path d="M 568,176 L 624,176" fill="none" stroke="black"/>
              <path d="M 784,176 L 848,176" fill="none" stroke="black"/>
              <path d="M 56,224 L 96,224" fill="none" stroke="black"/>
              <path d="M 272,224 L 320,224" fill="none" stroke="black"/>
              <path d="M 568,224 L 608,224" fill="none" stroke="black"/>
              <path d="M 800,224 L 848,224" fill="none" stroke="black"/>
              <path d="M 336,256 L 376,256" fill="none" stroke="black"/>
              <path d="M 512,256 L 552,256" fill="none" stroke="black"/>
              <path d="M 56,288 L 72,288" fill="none" stroke="black"/>
              <path d="M 56,320 L 120,320" fill="none" stroke="black"/>
              <path d="M 256,320 L 320,320" fill="none" stroke="black"/>
              <path d="M 336,336 L 400,336" fill="none" stroke="black"/>
              <path d="M 480,336 L 552,336" fill="none" stroke="black"/>
              <path d="M 824,368 L 848,368" fill="none" stroke="black"/>
              <path d="M 568,400 L 640,400" fill="none" stroke="black"/>
              <path d="M 776,400 L 848,400" fill="none" stroke="black"/>
              <path d="M 336,432 L 384,432" fill="none" stroke="black"/>
              <path d="M 496,432 L 552,432" fill="none" stroke="black"/>
              <path d="M 8,464 L 384,464" fill="none" stroke="black"/>
              <path d="M 504,464 L 896,464" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="856,368 844,362.4 844,373.6" fill="black" transform="rotate(0,848,368)"/>
              <polygon class="arrowhead" points="856,176 844,170.4 844,181.6" fill="black" transform="rotate(0,848,176)"/>
              <polygon class="arrowhead" points="856,144 844,138.4 844,149.6" fill="black" transform="rotate(0,848,144)"/>
              <polygon class="arrowhead" points="576,400 564,394.4 564,405.6" fill="black" transform="rotate(180,568,400)"/>
              <polygon class="arrowhead" points="576,224 564,218.4 564,229.6" fill="black" transform="rotate(180,568,224)"/>
              <polygon class="arrowhead" points="576,144 564,138.4 564,149.6" fill="black" transform="rotate(180,568,144)"/>
              <polygon class="arrowhead" points="560,432 548,426.4 548,437.6" fill="black" transform="rotate(0,552,432)"/>
              <polygon class="arrowhead" points="560,336 548,330.4 548,341.6" fill="black" transform="rotate(0,552,336)"/>
              <polygon class="arrowhead" points="560,256 548,250.4 548,261.6" fill="black" transform="rotate(0,552,256)"/>
              <polygon class="arrowhead" points="344,432 332,426.4 332,437.6" fill="black" transform="rotate(180,336,432)"/>
              <polygon class="arrowhead" points="344,256 332,250.4 332,261.6" fill="black" transform="rotate(180,336,256)"/>
              <polygon class="arrowhead" points="328,320 316,314.4 316,325.6" fill="black" transform="rotate(0,320,320)"/>
              <polygon class="arrowhead" points="328,224 316,218.4 316,229.6" fill="black" transform="rotate(0,320,224)"/>
              <polygon class="arrowhead" points="328,144 316,138.4 316,149.6" fill="black" transform="rotate(0,320,144)"/>
              <polygon class="arrowhead" points="64,288 52,282.4 52,293.6" fill="black" transform="rotate(180,56,288)"/>
              <polygon class="arrowhead" points="64,176 52,170.4 52,181.6" fill="black" transform="rotate(180,56,176)"/>
              <polygon class="arrowhead" points="64,144 52,138.4 52,149.6" fill="black" transform="rotate(180,56,144)"/>
              <g class="text">
                <text x="156" y="36">Location</text>
                <text x="200" y="36">A</text>
                <text x="676" y="36">Location</text>
                <text x="720" y="36">B</text>
                <text x="48" y="84">Key</text>
                <text x="100" y="84">Provider</text>
                <text x="328" y="84">Encryptor</text>
                <text x="560" y="84">Encryptor</text>
                <text x="784" y="84">Key</text>
                <text x="836" y="84">Provider</text>
                <text x="80" y="100">Alice</text>
                <text x="328" y="100">Alice</text>
                <text x="560" y="100">Bob</text>
                <text x="816" y="100">Bob</text>
                <text x="180" y="132">SKIP</text>
                <text x="700" y="132">SKIP</text>
                <text x="160" y="148">TLS</text>
                <text x="192" y="148">PSK</text>
                <text x="680" y="148">TLS</text>
                <text x="712" y="148">PSK</text>
                <text x="32" y="180">(1)</text>
                <text x="136" y="180">Get</text>
                <text x="208" y="180">/capabilities</text>
                <text x="648" y="180">Get</text>
                <text x="720" y="180">/capabilities</text>
                <text x="872" y="180">(1)</text>
                <text x="164" y="212">localSystemID:</text>
                <text x="248" y="212">Alice</text>
                <text x="676" y="212">localSystemID:</text>
                <text x="752" y="212">Bob</text>
                <text x="168" y="228">remoteSystemID:</text>
                <text x="248" y="228">Bob</text>
                <text x="344" y="228">(2)</text>
                <text x="544" y="228">(2)</text>
                <text x="680" y="228">remoteSystemID:</text>
                <text x="768" y="228">Alice</text>
                <text x="424" y="244">(3)</text>
                <text x="464" y="244">IKEv2</text>
                <text x="448" y="260">(IKE_SA_INIT)</text>
                <text x="32" y="292">(4)</text>
                <text x="96" y="292">Get</text>
                <text x="208" y="292">/key?remoteSystemID=Bob</text>
                <text x="32" y="324">(5)</text>
                <text x="156" y="324">key:K,</text>
                <text x="216" y="324">keyId:I</text>
                <text x="444" y="324">(IKE_AUTH)</text>
                <text x="440" y="340">keyId:I</text>
                <text x="576" y="340">(6)</text>
                <text x="576" y="372">Get</text>
                <text x="704" y="372">/key/I?remoteSystemID=Alice</text>
                <text x="872" y="372">(7)</text>
                <text x="544" y="404">(8)</text>
                <text x="676" y="404">key:K,</text>
                <text x="736" y="404">keyId:I</text>
                <text x="416" y="436">IKEv2</text>
                <text x="452" y="436">SA</text>
                <text x="476" y="436">UP</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
               Location A                                                       Location B
+----------------------------------------------+              +------------------------------------------------+
| +--------------+                 +---------+ |              | +---------+                   +--------------+ |
| | Key Provider |                 |Encryptor| |              | |Encryptor|                   | Key Provider | |
| |    Alice     |                 |  Alice  | |              | |   Bob   |                   |     Bob      | |
| +--------------+                 +---------+ |              | +---------+                   +--------------+ |
|    |              SKIP                |      |              |      |               SKIP                 |    |
|    |<========== TLS PSK =============>|      |              |      |<=========== TLS PSK ==============>|    |
|    |                                  |      |              |      |                                    |    |
| (1)|<------- Get /capabilities -------|      |              |      |-------- Get /capabilities -------->|(1) |
|    |                                  |      |              |      |                                    |    |
|    |       localSystemID: Alice       |      |              |      |       localSystemID: Bob           |    |
|    |------ remoteSystemID: Bob ------>|(2)   |              |   (2)|<----- remoteSystemID: Alice -------|    |
|    |                                  |      |   (3) IKEv2  |      |                                    |    |
|    |                                  |<-----  (IKE_SA_INIT) ----->|                                    |    |
|    |                                  |      |              |      |                                    |    |
| (4)|<-- Get /key?remoteSystemID=Bob   |      |              |      |                                    |    |
|    |                                  |      |              |      |                                    |    |
| (5)|--------- key:K, keyId:I -------->|      |  (IKE_AUTH)  |      |                                    |    |
|    |                                  |--------- keyId:I --------->|(6)                                 |    |
|    |                                  |      |              |      |                                    |    |
|    |                                  |      |              |      |Get /key/I?remoteSystemID=Alice --->|(7) |
|    |                                  |      |              |      |                                    |    |
|    |                                  |      |              |   (8)|<--------- key:K, keyId:I ----------|    |
|    |                                  |      |              |      |                                    |    |
|    |                                  |<------ IKEv2 SA UP ------->|                                    |    |
|    |                                  |      |              |      |                                    |    |
+----------------------------------------------+              +------------------------------------------------+
]]></artwork>
        </artset>
      </figure>
      <t>(1) Each encryptor establishes a secure TLS connection with its corresponding
     Key Provider and retrieves the capabilities of the co-located Key Provider
     using the get capabilities method (refer <xref target="get-capabilities"/>).</t>
      <t>(2) The Key Provider responds with its capabilities. For simplicity, only the
     localSystemID and remoteSystemID fields are shown in the capabilities
     response in the diagram.</t>
      <t>(3) As part of IKE_SA_INIT exchange, encryptors propose the use of IKEv2 PPK
     extension by including USE_PPK notification payload, having type 16435,
     protocol ID of 0, no Security Parameter Index (SPI), and the localSystemID
     of its co-located Key Provider as notification data.</t>
      <t>(4) Encryptor Alice invokes the get key method with Key Provider Alice to
     obtain a (keyId, key) pair (refer <xref target="get-key"/>). The key request URL is
     encoded as https://{host-identifier:port}/key?remoteSystemID=Bob.</t>
      <t>(5) Key Provider Alice responds with a key and its associated keyId.</t>
      <t>(6) Encryptor Alice transmits the keyId to the peer encryptor Bob as part of
     IKE_AUTH request message using PPK_IDENTITY notification payload, having
     type 16436, protocol ID of 0, no SPI, and PPK_ID Type as 2 (PPK_ID_FIXED)
     followed by keyId as notification data.</t>
      <t>(7) Encryptor Bob invokes the get key method with Key Provider Bob to retrieve
     the key associated with the keyId. The key request URL is encoded as
     https://{host-identifier:port}/key/{keyId}?remoteSystemID=Alice.</t>
      <t>(8) Key Provider Bob responds with the key associated with the keyId.</t>
      <t>At the end of this exchange, both encryptors possess the identical key, which
is utilized to create key material for the IKEv2/IPsec Security Associations
(SAs). <xref target="QRIPSEC"/></t>
      <t>Although this document uses IKEv2 with SKIP as an example, it's important to
note that SKIP is a generic protocol that can be integrated with any existing
security protocols by adding suitable extensions to provide quantum resistance.</t>
    </section>
    <section anchor="skip-use-cases">
      <name>SKIP Use Cases</name>
      <t>This section of the document describes the use cases where SKIP can be
leveraged and deployed, particularly in scenarios requiring robust
network encryption across a wide range of industries.</t>
      <section anchor="high-speed-data-center-interconnect">
        <name>High Speed Data Center Interconnect</name>
        <t>High speed data center interconnection (DCI) connects multiple data centers
using high speed connectivity. The DCI encryption use case caters to industries
that require secure, high speed data transport between multiple data centers
for critical operations such as disaster recovery backups, synchronous and
asynchronous replication, and extending data center fabric in a private data
center or within a colocation space.</t>
        <section anchor="industries-covered">
          <name>Industries covered</name>
          <t>Industries such as telecommunications carriers, financial institutions, cloud
service providers, large enterprises, government entities, and defense
agencies. For these sectors, maintaining high uptime is critical, along with
the protection and security of data transmitted across this infrastructure. The
need for robust encryption is driven by the sensitive nature of the data and
the potential consequences of data breaches or interruptions.</t>
        </section>
        <section anchor="common-topologys">
          <name>Common topology(s)</name>
          <t>The topologies typically encountered in this use case are point-to-point (p2p),
where a direct p2p link is established between two data centers. This topology
is favored for its simplicity and efficiency in handling large volumes of data
traffic.</t>
        </section>
        <section anchor="encryption-types">
          <name>Encryption types</name>
          <t>For DCI use case, p2p topologies align well with IEEE 802.1AE MAC Security
(MACsec) due to its simplicity and the capability to support high-speed
transport encryption at link rates exceeding 400 Gbps. SKIP can be integrated
with MACsec to provide dynamic key management and enhance the security of the
key exchange process. In some cases needing the flexibility of IP transport,
IPsec is applicable, although in a smaller subset of use cases. IPsec operates
at the network layer and can secure data across diverse network paths. SKIP can
be integrated with IPsec to provide PPKs which provide resistance to quantum
computing attacks.</t>
        </section>
      </section>
      <section anchor="access-and-aggregation-backhaul-networks">
        <name>Access and Aggregation Backhaul networks</name>
        <t>Backhaul networks refer to the aggregation of branch and remote sites to a
centralized location. These use cases and topologies are very common for both
enterprise and service provider networks that require access to resources and
applications typically hosted at a centralized location (i.e., private data
centers, colocation facilities, and more recently inside of public clouds).
They are indispensable for industries that require reliable and secure
connectivity from multiple locations typically over lower-cost public IP
transport (i.e., Internet, 5G, LEO). For high speed requirements, private Metro
Ethernet transport services can be leveraged.</t>
        <section anchor="industries-covered-1">
          <name>Industries covered</name>
          <t>Backhaul networks are essential for industries like telecommunication, service
providers, enterprises, government, and commercial entities for secure access
to vital resources relevant to the mission and business.</t>
        </section>
        <section anchor="common-topologys-1">
          <name>Common topology(s)</name>
          <t>Topologies found in this use case typically include point-to-point connections
in a hub-and-spoke topology, but can also support other diverse topologies such
as point to multipoint, full/partial-mesh, or ring configurations, depending on
the network topology, redundancy and security requirements.</t>
        </section>
        <section anchor="encryption-types-1">
          <name>Encryption types</name>
          <t>IPsec is utilized for securing site-to-site connections in the various
topologies, enabling secure data transmission between branch offices to a
central corporate networks and data centers, or to and from a data center or
colocation facility.</t>
          <t>MACsec is typically implemented when Metro Ethernet backhaul is leveraged to
provide the high-speed encryption capabilities needed to secure point-to-point
or point-to-multipoint connections over these high-speed transport options.</t>
        </section>
      </section>
      <section anchor="cloud-service-providers">
        <name>Cloud service providers</name>
        <t>Cloud service providers (CSPs) deliver infrastructure, applications and
workload management services to a wide spectrum of industries. These industries
entrust their sensitive and confidential data to CSPs, which necessitates
secure handling of data during transit or at rest. While the ability exists
today for securing the private link connection from a CSP partner into the CSP
environment, the ability for operators to leverage the global infrastructure of
the CSP for optimal and cost-effective inter and intra-region transport is
becoming more common as a WAN transport alternative.</t>
        <section anchor="industries-covered-2">
          <name>Industries covered</name>
          <t>Enterprise, financial services, healthcare, education and government entities
are some of the top industries that utilize the cloud service providers.</t>
        </section>
        <section anchor="common-topologys-2">
          <name>Common topology(s)</name>
          <t>Topologies in this use case are varied and include point-to-point, hub and
spoke, full/partial mesh, or a hybrid approach combining elements of the
aforementioned topology types.</t>
        </section>
        <section anchor="encryption-types-2">
          <name>Encryption types</name>
          <t>IPsec is the most common type of encryption used to securely route traffic from
customer network to the cloud service provider network, or for the
intra/inter-region design options aforementioned above. MACsec is another
option for those operators wanting to leverage a high-speed private link from
the enterprise into the private domain of the CSP, and this form of secure
high-speed connectivity into the cloud is available today from some public
CSP's.</t>
        </section>
      </section>
      <section anchor="scale-target">
        <name>Scale target</name>
        <t>SKIP is designed to be both flexible and scalable, making it suitable for
networks ranging from small-scale to large-scale. It enables the provision of
post-quantum security without requiring an overhaul of the existing encryption
framework.</t>
      </section>
      <section anchor="skip-usage">
        <name>SKIP usage</name>
        <t>SKIP can be utilized across all the use cases and delivers all the benefits
highlighted in this document. It allow operators to leverage external QKD or
PQC cloud-based key sources and benefit from the automated provisioning,
refresh, and entropy of the imported PPK, either for MACsec or IPsec.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document updates the use of the USE_PPK (16435) notify message as
defined in <xref target="RFC8784"/> to include the localSystemID of the Key Provider as
notification data.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>SKIP is designed to facilitate the secure distribution of keys over a network.
Its security depends primarily on two considerations: the strength of keys
generated by the Key Provider (KP) and the secure delivery of keys from KPs to
encryptors.</t>
      <t>For the first consideration, this document does not impose any restrictions on
the mechanism used by a KP to generate the key. In general, the same security
considerations for generating a post-quantum pre-shared key (PPK) outlined in
<xref target="RFC8784"/> apply equally here. In particular, it is strongest practice to ensure
that a key generated by a KP has at least 256 bits of entropy, which will
provide 128 bits of post-quantum security when Grover's algorithm <xref target="GROVER"/> is
taken into account.</t>
      <t>For the secure delivery of keys within SKIP, there are three different links
(physical or logical) to consider: (1) the link between the two KPs, (2) the
link between the two encryptors, and (3) the link between a KP and an
encryptor. We will address each in turn. For (1), the mechanism by which two
KPs synchronize a key is intentionally out-of-scope for SKIP, such that it can
interoperate with various hardware or software technologies. It should be
clear, however, that this key synchronization mechanism should be
quantum-resistant if the key is intended to upgrade an existing protocol to
quantum resistance. To this end, KPs can employ one or more technologies
believed to be quantum-resistant, including, but not limited to: post-quantum
cryptography (PQC), quantum key distribution (QKD), a trusted third-party
protocol, or a one-time pad (OTP). For (2), this document makes no assumptions
about the security of this link. Indeed, the primary purpose of SKIP is to
augment an existing protocol between the two encryptors in the face of future
quantum computing or other cryptanalytic advances. As such, the only
SKIP-related piece of data to traverse this link is an opaque key identifier,
from which it <bcp14>MUST</bcp14> be infeasible to derive the corresponding key. After the
SKIP exchange completes, the two encryptors can use the key as a pre-shared
key. The link in (3) between the KP and encryptor is specified in <xref target="AuthModes"/>
to be HTTP over TLS v1.2 or v1.3, with support for both certificate and
pre-shared key (PSK) authentication modes of TLS. The inclusion of certificates
based on Rivest-Shamir-Adelman (RSA) and elliptic curve cryptography (ECC) that
are known to have vulnerabilities to quantum computers recognizes the reality
of interoperating with encryptors that do not yet have access to post-quantum
cryptography, in addition to the the lack of post-quantum x509 certificates at
the time of writing. The use of PSK-based authentication is <bcp14>RECOMMENDED</bcp14> since
it is believed to be quantum-resistant, though the use of PSKs can introduce
the same administrative challenges that SKIP is trying to solve for the
encryptor-to-encryptor link. To mitigate these issues, an implementor <bcp14>SHOULD</bcp14>
seek to limit the exposure of the KP-to-encryptor link by co-locating the KP
and encryptor, and employ techniques such as network segmentation. Where
feasible, running the KP on the same physical device as the encryptor as a
co-process or hosted application can also significantly reduce the exposure of
this link. Post-quantum key exchange algorithms <bcp14>MAY</bcp14> also be
used to secure this link when they are widely deployed.</t>
      <t>Finally, there is an additional security consideration that the identifier
scheme used for KPs can potentially leak information about the larger network
topology or about specific software or hardware versions in use. In particular,
access to the remoteSystemID list in the KP capabilities response may help an
adversary in finding lateral compromises within a network or new insertion
points into the network. To mitigate this threat, an identifier scheme based on
random pseudonyms can remove any correspondence between the KP and its location
or underlying technology. The use of the glob patterns in the remoteSystemID
field can also conceal specific details about the KP network by collapsing
groups of KPs into a single entry in the remoteSystemID list.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8784">
          <front>
            <title>Mixing Preshared Keys in the Internet Key Exchange Protocol Version 2 (IKEv2) for Post-quantum Security</title>
            <author fullname="S. Fluhrer" initials="S." surname="Fluhrer"/>
            <author fullname="P. Kampanakis" initials="P." surname="Kampanakis"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="V. Smyslov" initials="V." surname="Smyslov"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>The possibility of quantum computers poses a serious challenge to cryptographic algorithms deployed widely today. The Internet Key Exchange Protocol Version 2 (IKEv2) is one example of a cryptosystem that could be broken; someone storing VPN communications today could decrypt them at a later time when a quantum computer is available. It is anticipated that IKEv2 will be extended to support quantum-secure key exchange algorithms; however, that is not likely to happen in the near term. To address this problem before then, this document describes an extension of IKEv2 to allow it to be resistant to a quantum computer by using preshared keys.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8784"/>
          <seriesInfo name="DOI" value="10.17487/RFC8784"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="GROVER" target="https://doi.org/10.1145/237814.237866">
          <front>
            <title>A Fast Quantum Mechanical Algorithm for Database Search, STOC '96: Proceedings of the Twenty- Eighth Annual ACM Symposium on the Theory of Computing, pp. 212-219</title>
            <author initials="L. K." surname="Grover" fullname="Lov K. Grover">
              <organization/>
            </author>
            <date year="1996" month="July"/>
          </front>
        </reference>
        <reference anchor="QRIPSEC" target="https://www.qusecure.com/resources/ipsec-case-study-with-cisco-core-networking/">
          <front>
            <title>Engineering Quantum Resistance: An IPsec Case Study</title>
            <author initials="C." surname="Hill" fullname="Craig Hill">
              <organization/>
            </author>
            <author initials="S." surname="Kawaguchi" fullname="Scott Kawaguchi">
              <organization/>
            </author>
            <author initials="J." surname="Lupo" fullname="Joey Lupo">
              <organization/>
            </author>
            <date year="2024" month="February"/>
          </front>
        </reference>
        <reference anchor="POSIX" target="https://doi.org/10.1109/IEEESTD.2009.5393893">
          <front>
            <title>IEEE/ISO/IEC International Standard - Information technology Portable Operating System Interface (POSIX(TM)) Base Specifications, Issue 7, in ISO/IEC/IEEE 9945:2009(E)</title>
            <author>
              <organization/>
            </author>
            <date year="2009" month="September"/>
          </front>
        </reference>
        <reference anchor="PQCRYPTO" target="https://media.defense.gov/2021/Aug/04/2002821837/-1/-1/1/Quantum_FAQs_20210804.PDF">
          <front>
            <title>National Security Agency | Frequently Asked Question - Quantum Computing and Post-Quantum Cryptography</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="August"/>
          </front>
        </reference>
        <reference anchor="CSFC" target="https://www.nsa.gov/Portals/75/documents/resources/everyone/csfc/capability-packages/Symmetric%20Key%20Management%20Requirements%20v2_1.pdf">
          <front>
            <title>National Security Agency Central Security Service - Commercial Solutions for Classified (CSfc) Symmetric Key Management Requirements Annex V2.1</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="May"/>
          </front>
        </reference>
        <reference anchor="RFC4107">
          <front>
            <title>Guidelines for Cryptographic Key Management</title>
            <author fullname="S. Bellovin" initials="S." surname="Bellovin"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="June" year="2005"/>
            <abstract>
              <t>The question often arises of whether a given security system requires some form of automated key management, or whether manual keying is sufficient. This memo provides guidelines for making such decisions. When symmetric cryptographic mechanisms are used in a protocol, the presumption is that automated key management is generally but not always needed. If manual keying is proposed, the burden of proving that automated key management is not required falls to the proposer. 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="107"/>
          <seriesInfo name="RFC" value="4107"/>
          <seriesInfo name="DOI" value="10.17487/RFC4107"/>
        </reference>
      </references>
    </references>
    <?line 787?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>David McGrew, Scott Fluher, Lionel Florit, and Amjad Inamdar made significant contributions
to this work.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="D." surname="McGrew" fullname="David McGrew">
        <organization>Cisco Systems, Inc.</organization>
        <address>
          <email>mcgrew@cisco.com</email>
        </address>
      </contact>
      <contact initials="S." surname="Fluhrer" fullname="Scott Fluhrer">
        <organization>Cisco Systems, Inc.</organization>
        <address>
          <email>sfluhrer@cisco.com</email>
        </address>
      </contact>
      <contact initials="A." surname="Inamdar" fullname="Amjad Inamdar">
        <organization>Cisco Systems, Inc.</organization>
        <address>
          <email>amjads@cisco.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
UilYZROtTBsGPstjYlh3xEalX1LjvCYdBVImAAyLJV2uw1y0TKoF44sWhYWT
BjceM1Mh/tWtSP3EL2ChmWZu31Nn8qHpiSglIKrJI2H8WAYyotM84j9FsjG2
rMqptl9c7ZheXlwxocGcSLFa4E6kHNlNWcIphQUkSzfj7YGtxTotaMkb1oHT
Ed2YeghYi0BroN3KKmYbK0xyRFqvNrIDiKuxxMwkcCz6DhImMatuZ1ezTOK1
HpveZuoKPnxgdzk7GGgj3g4+fSLq4CWEXtui0oqWQCzGYm9MO2rKHnFac2XZ
rjpfFJCb2AWmQ1JXk4xlAondKe132lXCWkKgGuNZ/d1uf9GP3YyJ+Fd7ogVJ
w4IX1kwOa+V2NlxJCRn7cBuCVxhWasaJg8rH56YprwpkEUaeoieSOViXzEAR
RAetpdCNA2yyCElRqTRmMQnB7slagkkIN9l20tO9TpDlmZWcpCnHJFnKsCCx
27nPvlAb7YsWq+he+0Jtti+Cz7QvYB8lcMHBesvBe6FviXQRip5pUv4DRwkg
8BdXJJaWWTQtiOGQ4h+KvonHM7JxNVF7voQMJbVBuKzz5tCYq8pziypGjCdd
QOUVzzEOYVLofGbVPYUlaFga22Qe0O6wkoT1JqdEYE/9+OKZGMY49UJv06SI
V0zkjmLcEvjdKiEGMg9jtf365mqH2Pzv4A2B7QFCxXwtQc5ZjpFYMZZG3Amo
l0JbocdKdW1DGyfpgv4q0iXr9h5rNWIajyd5aCw44pJNs5fIkjXIzhoZiFY8
TSa0cW/DJDWqZk9d0lrAHdoJHAOZ6nS+iUpYebDKhiUZIb1sWcsnlskGZhFy
rJCN1zhlx5mil3CXqWHEJsQpjgOon9qsvByeEuHvEDf55z//qcKwvJ0EnhP4
ZW6U+qFq+3Gvn0qb33fXfn7vfd72Whp+bLz9vX0k3Lr9dd3w45ld0Y/ft/x4
r1catoxof+4fUTV/W224+tpryNSwueHK628fsYHy3681XHvtGn70NYGP36uV
/2u+vn/EYTFKiFsWy3tG/BrKAckGH05IsLEvrEu0283ZLC2/3+p2cey8RQyf
NLrvtyINd8yWeDC/32I8vzI+tNe38FHquy31KQgePWo6GV+GGcmniYauKdsW
anepti5/ur7Z6si/6tVr/v3N2Y8/Xbw5e4bfr38YvnzpfgnMF9c/vP7p5bP6
t7rl6evLy7NXz6QxPVWNR8HW5fDnLWE3W6+vbi5evxq+3BK921eBw0IbZg/t
pyCuwLpeGVjdmM/hn55e/b//2z8AmyVTdtDvH5MpK3886T+GXQsFypj8GUwr
/pMYzjIgE0+TlgFlNk2hESYVK65wdpDRBz5H+kUQ/MffgJm/n6g/jKJ5/+CP
5gEm3HhocdZ4yDhbf7LWWJDY8qhlGIfNxvMVTDfhHf7c+Nvi3Xv4hz+RYapV
t//kT38M4DZ05oWlqqaaBp6duLOUiuT6gmRHLfBXNLA1F3EgfgpPcfc3Yini
kjg+Sa4Zrag2fkdaUaMnwVGhcgubkY4koeewT27zlLSFhjDwNuEDwqD544mG
ls3bVa07ve3L9X3/cY2JqCaz9tjkCg9fG4Q+pv5WuZlqCBW/vxVhwg+bjbk/
ejxMcezhuPJH96TZH/33aT5Sq7xdnvEXv8F8VVMQqLq9arxb/bv1Y9PfH2hR
+z31XPMBg6zvt/QHIhn0WJmh/7+Iqcc/fkt/933yq/VnsLzPcDPM3Rrs/wHw
3dvfgazer9Af1o45Vl6otcX7iv7+gA4Pm8TgiOtX5y9GrXhkmedXKxg4v7Mn
P6xc0P5w/MOwgyRL2BMPC976TSoYfua9mJ+w+oJBr3484dhAacaHKnCqkZWT
UA8qgeUDr7TBfse3IUvrtANrRzNBKHswqHswHiuWYC873a022kinWBSZ6wed
oC/px/ciCKyiRoxx2kKaxH/rIndQQIaRDgH3hpFEPNH9dTQRWsJRmpRTnnHt
5BK46xEBvjhABO0lIDMdX5BkO/C7xseb8Y+3wL6bZu3Ecp5mN23rRYEjZ2X+
veCwZ/sjy3ueZ3FZO6Q29Gy6xVQcxpKKZ1MjjQT1UI44jDeQdUE79Y6vTAgW
GTON6ZOFDzcVT8Y68ayX21rccoARt3rkoJxkcirkCAQ6SqEZEQQI+3rgBKwd
UcbJM88r0ClNxroR5CQRZ7GPxBRyYSesfXvL7nsCGz5Lewbiuz096jEHXgH8
sqQEqTPAmulKFCccjSwye5DlXEDsBKNufljOdVHp95Wc08JpWHuTf7iB44I7
feAUN+QTBjlGQoTap08dXveA3qpbORcuSZYO4B7p9/bNgdPBwZH1h8jJ/Ujj
eABhf2VgnAIEJzqJkjlNC0f8rO+tHdHBCQ0sf1SX9FsbH/ZAARc+lQ7Vtota
22nj3w/+fPSNKxYFp4RRiR7Sje8AAFDg/nr75nr49q8XNz+8HZ5dvx0cHr09
fXr6lswC+rXDH5ydPvvhDP9d/fD56SU+3H9yAABqZZ8BuCKCvhaCfsHncNcv
dtoBQO/0thUI6rvz4EcGAysAeBjYpZYrGNj3AGiZz1ctgbG4+C+WdEMiD1BC
acUXxh42aYbf98RGls15ya5rIbDrKqwWcDDRR8HQ81Nj8wizH+fG32983nxs
wrZQGFVt5w8nRKCvXvcIYhkJhHgV0mdf/0M9XOqQz26+pjWtVh/wPD+7kd5s
gNaHKTyltdw9wWb8VIdfwZvXDg80LmCn8akRhiQ0HoRn8CXwEMf+E+094rsS
1nfx7HtraPjwiEphg0kMt7cKwjS8BfpYCtlerAlD8Ox/Ozz/pyRx831/8KQJ
D5z58IHjxcidUH4RgAbGgy+EcfcDS+NPq7CKUK3X0Kq8bFKbwACrX30JsM50
XF/uwy8B3R4dbSYgg14TJwL/PQFjYOJTTz0OF2mlUp1NCGBaAuI/gn2B5+gr
4PnTLMnMr7LKnw9PjdUaIkcPwsssV/IVcfNMuBcE6Ap8WJgQ8cC3B7u3RzhH
KqAUseqNTxHL60UHQdRfB6VENpY4viltaC1L/YODfWVd9/jbnI4TJyy64giK
McWJ7qkhEUFgXFaiV8tpzniFZWJIjAImGzGnTjKjTZZyPG+112CGY/7RsnFa
CFbKzJmZ6VczwDYSAg/a28PaveJjQtJMENmF820aHkkOHM/zVR0f7B2wA1nN
Q1aLaQvFuS6z73DOXRhlWqJh8lKrho/zwwez6vBmhvU5p+n4UDoehbE9gsVH
0PQQ7kaGyndE1d/xjnWq1YMQE/0ZsjO5Ww252Nsi6kNsvyUIXlS3iBIBCqaw
ctTLGmyGVeeJIUFBSfg2TqpWJt3Fa46NePSId9OpJ1gCPGhIGjN3a9KF0ruD
KdZVmLjQmxUZFYiM4pNN37tYAy5CvfY3yoGs2TY1XkdLtj+oK/Y8/lP9UuZZ
8IGMna3/VUZTPQu3TtQWmAvxFrzrylMOjZd8t72DXXn2aAtJDFtIpkOjfPQL
WQzyjGCE/k7A05sP7NncMnzIPfCajvI8pa0iscWfJDVii5j5Z3/rAuHaWghv
azZoSIHPbdSUSW2twqIIl1s2t2MrQSoNPf+b8+1+8Ly8rWN5433+9+a3vwf2
L+5hy8ROxQ4CtwYeitcw2IqhdgwEGPMTE1K9Ib8D1xcKARFOVveBo/hRHi97
3wUSloQ9152FxTuyfb7fGodpqbGHV2jUwq8k25NniUn4f/u0sHX15lwocnXB
t1jybxk8rayrwRZpMnbiZ7d6w2yhgUsszDdO9YajunQal4ZHCJ9Z4wZNthFK
YpqIr5KFzzk68XilUs+YcUkY6W/wAza/ogCRFVXAPea068ZROrQYpzIZvvg1
g0IL9B89PCgHA3zdgHZQR1920ItauSFGHHu4NrpF3YLdG8KDAR80WONetOks
tfsQTzhsCIM2tda1QVlravNtPWTX3DvT5r6gQV8mJYd51OocG1DyHYeO8MDm
jG2KMBhdQIU0gVZr8TVrg9Zi3QRz2KQaT3jzHqkVzLGkDEVLBOyZyC5fMhpl
rWy1/aDM1id8gYFTYlpssJB+T6owsFqPRC2N09NuUWppEkVcjDqpm44ATUwj
+2VJfBU2pjGkVndIUMlGOSm1jCoTtd2YxOXw5yDO77I0D+OWiWQSICd5K+91
5MKNdVYi1CpBMFikEV6O6OnFHFGMnDS+ssZwcfUQvAKPlE6XHW832UQY0pEW
GQfQItQrsC7QVXjVffDylI2bNCLQOUIzkGhqBHCBn8JxZRwiOM22ceYhbCRk
evbJPFpWJnjHy/Fk9gdP+f7A+6C5gySE2J86q3GP+DA1VfZh4EVkrm4vZBC5
fcAxUgQ+jibcDm8MGQhcbRzdkrZ4HOVkIWOryPiZG+ZTEBULTu2SlSlEBswQ
hg4hxAFc4r2VyLJQwQ2baj8eFJouEV9g3piQ09olS8TJc3S9cugldc1pH4ld
HeoG2yWa5kiIZ6sxQgyziwS7byYSO6ET9mhP0nxEU8qLoPY8d40JGvX4OOe5
fPKT6/SE0dU0Lc2xDKadpoZwhSsJ4pGUbrZpgFOe03o0m1z5eSOEsxwc2w0C
NaEGnailqkDWsU0gqKNJJXZcDreYriSaDbG+2BayqujOMCN+yr4MEQdyDPM+
jKrUxCMyBunrbVA1pwBy0OaOIek3wp4dId5M17a90CZS2HFegGj4Fk6PXbTO
44OHeDyRjN2xgNbDJm/rke9qSLJAovPBhYYCBfSEJTMUROCFTCqwUpF6BOy6
jWeiMqehGPa0JvVYButjHXIqPwM6hUkk27F2cVTryGEoCLIUqaKWfAwassVM
FzmZnbw3GrkrElTawOCLq7fDlxenZ29fvj7tI5oVT56+fsp/20MgEjdwidSB
4maTesigVv/BbZhjBLXvwscN5wR5ph/OjyKy5WMOJea+kXuGFGNk1xi3iqiQ
Vwa9X6w8Qm34D/eHIsM5wjmi4yMkLOCDBjLaG/9pvTFnIQkOXPP2xn8Djv7+
cGPDhBmjdePfmdYPNEbgbqODNa3F6EM22SpuLkvPBr89l4zFwMZxPOAgMLuT
FUWT3ZdbPh0GtZPG6I3KJ/6LykuyKI2/MU2QwCxaSJ0XK16RYCUA/l/sK2BH
7uea5RscBY1P77GJZSyvr8+xaoHBiVm3FStPfYFBa0cn+3Wr/3hwpI+HZ4+P
BvsH50/7cdwfPNmPD+Io7B/3+7o/Pt5/cnQQP94b7+8dHYvt6szfrTAeDI7j
8ehJOHh8pB8fRP3x/ugo2jvePzgOj47Ho8FYx4/3o8OD/uDx3tHR/nhPH0aj
0Xi0t98/ery39aBp+8VzvceibfTVtGFXTNhvNV+NnXjhuvuB5hSTwJmFadf5
+mqhZDzhGwIFVs3O9u5E66zjLGynbdCt8I4GYnxTp3HSB1FhQyhCtW1CT+if
HWIzSWGi/dsCHkjns3qOxGmoC5Pks5xzFghDMaaF6JgISg7aaETzU0+k91gn
uM3FWYOiTkryYyivbNxAppBZ50VgiKYUGDZWJ7+KzqRVywuBhDsrkFSLrDl3
PIQYzvXRJQuX9y9KYFks3OQeQn0UScrktGWVBWq4rZ3+Uiua6qc3L30OLTNr
6BVE8vmiShOzLQz7PwDdeB511ribK4+8/8BCyzoh83AH9YjMPT6/kwiZPHZn
Oni4CmMZtECxvwoFESCw1zw/+cKDE6FtoZqVU5Per3xq4p2VvH7x8Oef092B
dDck7SDFmYCjAJxmmGnRMy+MCS+gLYzzRRavdnco3d2wBYcvQ0mjK5BTpYsC
xD1NUFag4Fwa1nRD7t+EKXk8yT8NEUa9dhoCS4DhFZuWuRLphmki9mq4ycq1
Bs+qSoEdSYQWoNKRSbAVlkMYkSYp8m7mxtpnQxQ5SUnEqXO8s1w6mhAoTlmy
pU8mJiavybKI/u9CIvqliBY/KdIl27FtgUwAqWQQ4ViEbSye1Lssv0t1PNEe
j+Z+yW5Y2W+k95vALePQC9VtmCZ27bEdYZYklSyQQL2SiGk8fWABa2qag1hY
iS8n7daRsA+3WIlj/UgyxbFpC2+yUgwpU/zR+vGyPcw1ViI0UYs8ll+dGpiH
hpmGt3ptjMA7wpbTVzH4LPUCSc2oRCOxxqyi8xG+O0lc10iNAn0mXmRWolc8
yp+lSMv5NxGoDfOMXRqoh8NVGxFMX97SasgEV9IJnDDJ6v5ElQIpYO5us6MU
w2I2l0Rim4NnEzhcIRJQT0tP2DAmKHBRIOXxX6+sCwqvq+JzFfY6KKGtBecS
6+Jhxb0ed73fL9HhLVa/4WDKBwbK+PAZKePPzp8+GZIyfvb44LR/vv/06JSV
8eHR8fnTwfnZs8f7p04ZP987Ozx9+vT8qVHGRbf3JkS90mZ6UEffMJeH9fR1
/iBeK0NwnqRwMzVeI9oLbpvfo6VmaoV6N+osQUNnqXGwQX1xSlRQqy9H6+pL
81zsy6wKPgxx096k9ZtQGlH+PY0frb1Z4BzFIbnRxnE7X29asxDWlrhhJXyr
khbU3cvCGV+2l///mwW4PLACv6I+99ljHu7ti9I3DYv4DoaqWTFT+MRIDYkc
ga7neXOLxhaa53nqQmpYYOqMQ//tB3VglafK2Zfr6pwYaqzOcO5u0FY+wT92
4j28vK8yTsmlccqdwOyvuoKDi8+uSzl4pXl6zEFs8SSi6ml+J+DBX25j2m0C
JcQvArsTz/zh+OpNyXD4+aKEuLafB5Lk7stSaXb0ha1bsujWulQbcswMGbZl
mm0GyKTZNUP111OAWpPu7IAtqXeN9yt92zw8L5qyZcC2rDw3oFrLzWs2VcqL
K11P1PtXoHQdOCbxVljXB2x72tqBMqnzJtWvTq7nKHVErTdS7tcS9ZoDeu03
dGB6uC9X7BtmuLkHDLjd3+GEM/ywNt8M4zZv7h+w+2D77h8/0kD/nhl6DRqn
wSeNyOPPGnCl/Wo0uTegQUjT3SQtHEIGO+0D0guzJGvtBWJ/Ub4Kpdv7O7ba
xLei9L7PzSS45uPb6+Hbi1cXNzv3Zol+44CNf+5/+sCA2we8BkLRGxMJfhsq
fejzX2mGhztu43L+6smLjjhBTi68beta8SIOf7r5Yee3nWEDpgYw2DNHD2di
/ftQ+msMaAlu96I9/0LQ8Pjfz0u/asDtJ7W02Ux138LaHnx6Tw9fzNrsrSDX
Q/XTlXJU+lsM2Pjn/qf3Dvgv17xtfjnKzV2802eflWbuG9su6dQllwdkfEFx
WS3510ybNiXOOEN0JYNajqQ8N7DYOmuptfZAqz1wkZ+1lyaR/rxzrg2ZCFKM
jww5+qDrf/DpE0KHoAqIO9KHrJlWzXPxWkoITIkAsSTiMl7i/JeAJvVgEJ49
LubIFS5x0xIvJ105n4X5wlRiYcBJwxiWfNoAVHkKQHvGNpyaSGqp6ipf9YU7
PFht9o6WdSE39dP12VuYx2T4u7L8NOwSUY8dl0y1nGvVPzrYPzRh/c6YpvnS
UHsdFKlzictXIc1CwwV+kcX6vdq+vrowJYHXYwq5v7Uw1hVaKpvwxWEVMpYO
dlpKJNzm7wzFTZphKZJG53csTarcQGHr56yfAzcIjR6DvtxBjfUzwZmXmLW1
HjUC/avSGnl6hztt4Dbpt67osHJkY2oYUDdH61iqkHQ+S6r1w2uJk1ypkeAo
USZnVRk385kuy3CizY4lenp78ezs1c3Fzc/3Epb05qjrqLOBsK4uhHqkY3WD
BgTTgJ099OTt+cV/nT3bke7EUSiOXnMotol8Hu+s1Xf4AuLh4he5Y3JmMg9V
adhENh7FSE/fmGnKE3yysw7yF1aVeKhsxCj3S2qUfo0Ic9iK87G6UETgO9Rw
6RCKONgSh8QzEBZs02KZhe3KxSv13REGUki8YPt6WNJO/PDhd+bOmE/wIKco
HjqZqma1M84tF67IU2TpKKfWLuIxqb4rufBmYcrGB1nONX3DyrkDQ3GZSnlf
7/YG47hcLSTrXwZQV06uS53i5DqOpQy0uWXB8Wr/boaWQsx16YufiOfjappS
ihyXRlobKbuh5jEERcT1pKXCsOd+DVLU46YtLVVFYo3SoaijWZ9/p1zPo4x0
FhZJXpoy15hHkY8WZRXYYHu/AHxUEHkQBu8wIc5qlaLd8QKnDVpOctUPKJF5
TYwo5tuN+J4Qlib0X6OLBPxNyd9gPyspqSNHkp6+sv3s9GLHKjBeFKfXpgyE
bU3rHm0Ht1yeExuWuvEnYlGnIK0KU5zATkIqb5rTPqNHdfzuefDK1f2w5Una
gcNmoEWTfSTloZkybM3OOCnDstKFjRFYKhRMX8zLupAPonuRTRD6D1AR1XDE
Tl0GmAnRR+g4HIHUWS7Ouda9wBeY9yZxk98TPVsfdTkPhT4f4XIMixnFEOo4
8B65azB0qhslVaCXFQWijjtcECiTlIGMdlK1MNcHRWm+iG1ytd0paCCRzlrK
GiYlYgEmGDubmdsVWA/rGOrmOq1BiFtpnApYcWV77CQu/joj1cCeufNSLuZc
hhbHAWZ1Ol60lLumwdBh8+qVsUcCJIW56qJsDUkxyMZF6G5tkwjpDIQDWpDd
5RMjmFzBkWDmpKsE9+DC+JkEi1s+gEFBCAycK6iD03tJCxLFnD8bFcjH0ZzX
zpuqWIiVYRb1VC4GqEjvxG1Q2+UOH6GYv/lOHAnHS5eN1G57huJ2EBTllbLk
2/PBfKcTCFcKicKJtCtFD1WaZO9Wa/S46j53eWPnmIB5CyEEzzi8zQuDR64y
5NR82QHm+o2IWRuuSuBsZqGl2zwlJuoQFNDijSWzA+g4q5cD+kwZgITANOw8
Owy/hx4uBabudGouCuFbr57sDXr94Zm6HJ46iRfYursqlryQFsgbBgaHKtlc
I9Bql9lOUHMcnyVXglSpD0ZyXS6M41ix56N52WsUNa+FW8BAC2S+lLKl79+t
1yyWCk/akGi9F2Bb4XNXQs3dpHGBmydmVkplBjQ+Dk5JpprZwti5qvlpJxCN
QW6YAI8bQbSHVitgVlXOUDqfDL3FqNRsYzlp2DNXvdlS/EEo+o+VZ1ItXNK+
Mmsmy9aSPRwnnHrmGqAegYfHoEVJkBE9NOIU02So2EfNKuqu0HZ9lRjydd4Z
EWpqOAPK4WRS6Ik5OqQvpuEidTkgwdoTJaaOsQZCrzHu8SAkc3aiNXuJEDkc
P1ciEYpQNDsrCJh5lb6uweTqbYOCc32W9qYRbE3olEHNuw3zbPL4Gt6GtA1l
3qyXm1vORPTNnbTzORN0a7knQdjGKvimonyb5IP0qeWdyU1wMoUTeZCwyBfB
JXxTDd8xIlcbsdwizRU8c8k4IPUhoW2ale6erVqhaE6x0GnCHzmZogNfYZGg
ZadMWBD9aXPhMVhJRTfKUVxNoLq48niEmbm9maqjDp931Muz1zsiHj11pvBK
INeouiS7KA9syTRP3XE1HQxPcarmZnVhnUiBMqQYiQRbQRcyO9f1iY4dOfD0
hA0aQsfceOEuobMaAw9l9rzQGq5CuEVZY4/iCntlltlF5tJm7nQEbRPcbbMc
rXeHxN2uycx6JcWTsyZBvTy+gPnddDHq0ugkCfJ3TkovpY6/u4jNygyJxrNs
zNustuC9DIIrkpjK8BfpaIs03WX7IEy7JCmnHMPPFkHjjpmyY7KTOYFY0uUs
q6wBw80PGRK9lk3dySe2TbLX8X9naLpVYzuLWBZQhX8bGY/GD3cLg2aBhbUT
78hVet51br7+Jmtr1RDDInMoByucEU5TQjB2R03IWcOAKRlpXNMltulMvjrO
6aWrXAe1HY0kTvxt7rJcIWaQYcB70pUxZEOBtxW1qg0+7zYpYKNWIHy1oeGN
hWAWa95gp0mNuHLBPakppoF65kiicnsD1kwj95RPdQruuSYRymDDc1wUeVXu
2HyxFfW6oxqyAcICK8Np354C47gWh4Gz/YrIP+pltmLCGonn2YNYfejsFZfj
rrVz4TG0NWLDx4SqcgV4bWFNQhFCtzntLTD4daqp1dZjoWzGV1Jx7kzFt4b0
1F8lBH9aX23G3giQdxwumztDjBbh36wVepa0IUYCjZ0AmRjbwt/oIU3yNiHT
UrinPxxGaFw2aUlN3GySE91cE1svCINJ8wpxigZhZdUlTZ3FnamPLv5P7LGu
XKLtUU6Cm02Ik3MtQUhlo2hwRPhfh6+8T+1lgNTvZll05iSGb5Za8iA7X0PT
JNMVHvp4Ye+5IwBbDNCAjwmg4hoTjXjOmuD34qdFcVgn8c8SJq2mF5id8fK0
y5IOZAdvC5YdTT6vHJ8nEbMcFUnsbnUDnkdiL+vU3I9glP2Q1pSfEGa00waX
wr0fZOosUKG1mIVk/zH13HTPeOyIOGGRLyr2eoMrS15VRDgmxBee7LkHw/Yr
nqtNhWCK22UKtHQnl4JZdqVWZhqOiAR6qubVphxuYHLppWMc5NQb5g63L0r2
jNs4oc8kGxvWlv33FJt6mzotNoc3w5IcbTJ7OJOwfjNzVyHpwBunoWO6PgVd
jSIAhrGAXzBpmwtIaZzvDAO/xo185uLiwPpV/fvURlocy2LmWV2XWoktNwvf
SaHgxs20QW3ChLjPe2JggKnXLWXIXKx5+ZOziu0lucZhI/e18aVlfpip0z/q
m6msu9OULGNBaoPO7eWvNU0GYxyKmbINj4zbdoFTk2bYq6ufbFylpjxD034y
kqx+bS/i4/VKcZ2752qx7l+eLt+jtoEfwwPI+Rw/vngGTePqx1NZ3y4umJca
zp5RZUcVNDPLdzf1+TffdQIyKQtmFOIGkIBggyvxtms+3enYYhpjLsDCu4R+
463Pzu6L4ashKl7wxZ/mDKB5rd9iHrsEcXMSyoH25pxzm48xd+RAaOkOrvjO
k7HNIPybiQv+u/h1hSuuHV26wqvNo8qg7azpUX1+sQJ9G/Wv3CZoVU7/yix7
mSDrTWFdEeTCr50tajZOh0l6FgkX22A3WdSA4URGqQoX04+uA5dO5Mo9rV73
51xPFkIvIZ+hY8JALhBH5Xvh98bBKndANsHprBzbIOBcKhbwfWh8nuLdh1Za
E8LdLupKVNnyiHYi9lCL/UryMO3UyXcWbUETO2slrj7jZlYvHTWoiSnk6HXi
G+J6wM03gKQ+UumYnDGaXI7KTPV9o3UhpMBc9onBGisUSoXYsq4u5KqvsnDk
TWeVSiQdOy3f1USFf6Kd6cF4eF6A2L4rvWJgf3v+5vVfzt78HUpWFb6TaxRz
LtKxwPW7bp03EYg5OsAm4JUwpYBQ2l17dz1DtJXB9ny6lHv+uBjSBL/u8Bmi
WbATjmrhjQpZuHoB5Aso1QgJgexu/aJxkSbRNsIw1roLbQY4J8a5/O6/aknl
tvVguZwVWPCiyMRlQsAJudWk6t/fF7Te36cSybPL5K5C7OFF1c3HXalTBOIU
7PE5ihQOZpM+YL3EODHFy2gM2zoTBLp/Pq74d/8uQJYUcqMqDgMj1Pvybunl
Udw9nDXIpl68m13dw/oNikldWsDO0NiQ5tI+OZc1crQ+ac2DlnNQ5L7LuTQu
7rUXAP7GFx6e/NtuPDTkNNhZ5ZWkF8mFkWFp8zHJxBhBX1l3usPoJ7rucZQO
znaNijjjCzwkFRNfWgnlXYreujSbN5O78TeUy3vHCxh5QfNGdjZnC+N74pZk
fKfLCjcqxrdYZuTgig9KYEVgFstPWrJUtI5EywjWkCb93Dix7HRN9eZ8Hq6n
hHcCFliyI2kX2epOZJwSQ01Et5Urv401tp4LPeTcX3AYU8rOnGlgkqnmpOQW
BNkk7DocY+3mcTmHlilkzJka11pcrdzX0SjqwMV+Xd3+T58CoXjOpJNLKHCD
g7lEgv7dlzsmnEPQOuVV5F3AAJNwTfrhPoS2+yOwKDSITIK3lc1G97qkLcl6
Jr14g0J/Fe5amCVFd0iCY0Yo2n5zPRStQ6cpEh8jRRRNi9HcfGenpzsmGR8l
xzJE4dGMOWXN3j5rfVf1UYqhQ6jVOEqf1PffFGTSQzFgP49jqq7EnLeOpuo0
c4qlNlly9ZnERobR4VMpcyOttURZ8oTRuzW5/P5w77iBN5L5rAMxm6Cv73Ai
nU1MNT7ZxrQ0Ro1fWR+iFP+WiTLBFd+iiDzMIV2kjT+O0DOsY1z7bMrqcX3P
5rXttDVSZOtaR4fjNK5eRIk75py97RAN50RN6sLFSAQQZ04mRtGD3UtMUM5j
GvX+JLc0KLVmm58ZurHaCMvecfmLq/VxILFtmKL1mL24Chp7z5g5In1Y4qCW
RB3pYB0OpZ64ApHw05GuE1hG01HFIsvqEWwlT0aj04NizU6KsGwmuDL7IDW2
6xIaC3fSVfs6Pb8/WR5MSnxYxXcu61WMBJ7AuPKJsXFy61TDksvdce8k/pv+
GI8Zs2JZ2TMweFXTpYs2gv4oF0FZ3VB4t3dzs5NoDZ3dKih+qb6As+ZNXqmt
A8hXZ9s4CKlrCu4q9dLZbedkJ7sNnBsocD4rYJs/cnngTqMC1q2m5W7qSZjR
ryr+Qc0jhOG0le+zpNBeoBlXPPOtwaT62TuvOY5hnIh4goiUQ4gZ0cUs4cAv
G7pjaRKVePUdDizBXnKUDkkyKfWQ+6fgq/uN/XII5es0q4oqg3bL2AOTfDwv
9SLOs+XM1pqY5bdi29UyFQEpbULOlt1g+HBpTH1ds9Pvlg3eZx3NdWFBg80m
ok2BU7cvIhR4BZXZpZUK96VHFl5RWeYMaRrO+c6oSZEv5iz2QGhiFtVlTCtZ
mg1rTYSP5Agcz8B1MIxctRdxo354tProE3IEJKFbx3VdhGchGXjqMnpe6LuO
uo7yqlLn6WIKJf4lXJIp/YkNKyxrOPuFVMyLLJzFISnMUMI91sBpz1aD5WNP
XnbxO/x/D6gsecuWAAA=

-->

</rfc>
