<?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.35 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-singh-skip-00" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="SKIP">Secure Key Integration Protocol (SKIP)</title>
    <seriesInfo name="Internet-Draft" value="draft-singh-skip-00"/>
    <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="2026" month="April" day="14"/>
    <area>General</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>SKIP</keyword>
    <keyword>IKEv2 PPK</keyword>
    <abstract>
      <?line 117?>

<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 127?>

<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>
      <t>Implementations <bcp14>MAY</bcp14> employ the following key exchange mechanisms for
quantum resistance:</t>
      <ul spacing="normal">
        <li>
          <t>Hybrid Key Exchange: Hybrid post-quantum key exchange groups
X25519MLKEM768, SecP256r1MLKEM768, and SecP384r1MLKEM1024 as per
<xref target="I-D.ietf-tls-ecdhe-mlkem"/> which combine both classical and post-quantum
key exchange mechanisms.</t>
        </li>
        <li>
          <t>Post-Quantum Key Exchange: Post-quantum key exchange via ML-KEM-512,
ML-KEM-768, and ML-KEM-1024 as per <xref target="I-D.ietf-tls-mlkem"/> which use
lattice-based key encapsulation mechanism (KEM).</t>
        </li>
      </ul>
    </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 <bcp14>MUST</bcp14> have a length of 128 bits.</t>
        </section>
        <section anchor="key">
          <name>Key</name>
          <t>The key bytes, returned as a hexadecimal-encoded string, <bcp14>MUST</bcp14> 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 entropy supplied by randomStr field <bcp14>MUST</bcp14> have a default length of 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>
        <reference anchor="I-D.ietf-tls-hybrid-design" target="https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-tls-ecdhe-mlkem" target="https://datatracker.ietf.org/doc/draft-ietf-tls-ecdhe-mlkem/">
          <front>
            <title>Hybrid key exchange in TLS 1.3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="I-D.ietf-tls-mlkem" target="https://datatracker.ietf.org/doc/draft-ietf-tls-mlkem/">
          <front>
            <title>Post-Quantum Key Exchange in TLS 1.3</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 808?>

<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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
/1bLYFKLmgAA

-->

</rfc>
