<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.0.7) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-ietf-emu-bootstrapped-tls-10" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TLS-POK">Bootstrapped TLS Authentication with Proof of Knowledge (TLS-POK)</title>

    <author initials="O." surname="Friel" fullname="Owen Friel">
      <organization>Cisco</organization>
      <address>
        <email>ofriel@cisco.com</email>
      </address>
    </author>
    <author initials="D." surname="Harkins" fullname="Dan Harkins">
      <organization>Hewlett-Packard Enterprise</organization>
      <address>
        <email>daniel.harkins@hpe.com</email>
      </address>
    </author>

    <date year="2025" month="September" day="30"/>

    
    
    

    <abstract>


<?line 69?>

<t>This document defines a mechanism that enables a bootstrapping device to establish trust and mutually authenticate against a TLS server. Bootstrapping devices have a public/private key pair, and this mechanism enables a TLS server to prove to the device that it knows the public key, and the device to prove to the TLS server that it knows the private key. The mechanism leverages existing Device Provisioning Protocol (DPP) and TLS standards and can be used in an Extensible Authentication Protocol (EAP) exchange with an EAP server.</t>



    </abstract>



  </front>

  <middle>


<?line 73?>

<section anchor="introduction"><name>Introduction</name>

<t>On-boarding devices with no, or limited, user interface can be difficult.  Sometimes a credential is needed to access an <xref target="IEEE802.1X"></xref>/EAP-based network, and network connectivity is needed to obtain a credential.
This poses a challenge for on-boarding devices.</t>

<t>If a device has a public / private keypair, and trust in the integrity of a device's public key can be obtained in an out-of-band fashion, a device can be authenticated and provisioned with a usable credential for <xref target="IEEE802.1X"></xref>/EAP-based network access.  While this authentication can be strong, the device's authentication of the network is somewhat weaker.  <xref target="duckling"></xref> presents a functional security model to address this asymmetry.</t>

<t>Device on-boarding protocols such as the Device Provisioning Profile <xref target="DPP"></xref>, also referred to as Wi-Fi Easy Connect, address this use case but they have drawbacks. <xref target="DPP"></xref> for instance does not support wired network access, and does not specify how the device's DPP keypair can be used in a TLS handshake.  This document describes an an authentication mechanism that a device can use to mutually authenticate against a TLS server, and describes how that authentication protocol can be used in an EAP exchange for <xref target="IEEE802.1X"></xref> wired network access. This protocol is called TLS Proof of Knowledge or TLS-POK.</t>

<t>This document does not address the problem of wireless network discovery, where a bootstrapping device detects multiple different wireless networks and needs a more robust and scalable mechanism than simple round-robin to determine the correct network to attach to. DPP addresses this issue for Wi-Fi but DPP's discovery will not work on a wired 802.1X ethernet port, but TLS-POK will. Therefore, TLS-POK <bcp14>SHOULD NOT</bcp14> be used for bootstrapping against wireless networks, and <bcp14>SHOULD</bcp14> be used for bootstrapping against wired networks.</t>

<section anchor="terminology"><name>Terminology</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?>

<t>The following terminology is used throughout this document.</t>

<t><list style="symbols">
  <t>802.1X: IEEE Port-Based Network Access Control</t>
  <t>BSK: Bootstrap Key which is an elliptic curve public/private key pair from a cryptosystem suitable for doing ECDSA</t>
  <t>DPP: Device Provisioning Protocol <xref target="DPP"></xref></t>
  <t>EAP:  Extensible Authentication Protocol <xref target="RFC3748"/></t>
  <t>EC:  Elliptic Curve</t>
  <t>ECDSA: Elliptic Curve Digital Signature Algorithm</t>
  <t>EPSK: External Pre-Shared Key</t>
  <t>EST: Enrollment over Secure Transport <xref target="RFC7030"/></t>
  <t>NAI: Network Access Identifier</t>
  <t>PSK: Pre-Shared Key</t>
  <t>TEAP: Tunnel Extensible Authentication Protocol <xref target="RFC7170"/></t>
</list></t>

</section>
<section anchor="bootstrapping-overview"><name>Bootstrapping Overview</name>

<t>A bootstrapping device holds a public / private elliptic curve (EC) key pair which this document refers to as a Bootstrap Key (BSK). The private key of the BSK is known only by the device. The public key of the BSK is known by the device, is known by the owner or holder of the device, and is provisioned on the TLS server by the TLS server operator. In order to establish trust and mutually authenticate, the TLS server proves to the device that it knows the public part of the BSK, and the device proves to the TLS server that it knows the private part of the BSK. More details on the BSK are given in <xref target="bootstrap-key"/>.</t>

<t>The TLS server could be an EAP server for <xref target="IEEE802.1X"></xref> network access, or could for example be an Enrollment over Secure Transport (EST) <xref target="RFC7030"/> server. In the case of authentication against an EAP server, the EAP server <bcp14>SHOULD</bcp14> provision the device with a credential that it uses for subsequent EAP authentication.</t>

</section>
<section anchor="eap-network-access"><name>EAP Network Access</name>

<t>Enterprise deployments typically require an <xref target="IEEE802.1X"></xref>/EAP-based authentication to obtain network access. Protocols like Enrollment over Secure Transport (EST) <xref target="RFC7030"/> can be used to enroll devices with a Certification Authority to allow them to authenticate using 802.1X/EAP. This creates a problem for bootstrapping devices where a certificate is needed for EAP authentication and 802.1X network access is needed to obtain a certificate.</t>

<t>Devices whose BSK public key can be obtained in an out-of-band fashion and provisioned on the EAP server can perform a TLS-based EAP exchange, for instance Tunnel Extensible Authentication Protocol (TEAP) <xref target="RFC7170"/>, and authenticate the TLS exchange using the authentication mechanisms defined in <xref target="bootstrapping-in-tls-13"/>. This network connectivity can then be used to perform an enrollment protocol (such as provided by <xref target="RFC7170"/>) to obtain a credential for subsequent EAP authentication. Certificate lifecycle management may also be performed in subsequent TEAP transactions..</t>

</section>
<section anchor="supported-eap-methods"><name>Supported EAP Methods</name>

<t>This document defines a bootstrapping mechanism that results in a certificate being provisioned on a device that can be used for subsequent EAP authentication. Therefore, an EAP method supporting the provisioning of a certificate on a device is required. The only EAP method that currently supports provisioning of a certificate on a device is TEAP, therefore this document assumes that TEAP is the only supported EAP method. Section <xref target="using-tls-bootstrapping-in-eap"/> describes how TLS-POK is used with TEAP, including defining a suitable Network Access Identifier (NAI).</t>

<t>If future EAP methods are defined supporting certificate provisioning, then TLS-POK could potentially be used with those methods. Defining how this would work is out of scope of this document.</t>

</section>
</section>
<section anchor="bootstrap-key"><name>Bootstrap Key</name>

<t>The mechanism for device on-boarding defined in this document relies on an elliptic curve (EC) bootstrap key (BSK). This BSK <bcp14>MUST</bcp14> be from a cryptosystem suitable for doing ECDSA. A bootstrapping client device has an associated EC BSK. The BSK may be static and baked into device firmware at manufacturing time, or may be dynamic and generated at on-boarding time by the device. The BSK public key <bcp14>MUST</bcp14> be encoded as the DER representation of an ASN.1 SEQUENCE SubjectPublicKeyInfo from <xref target="RFC5480"/>. The subjectPublicKey <bcp14>MUST</bcp14> be the compressed format of the public key. Note that the BSK public key encoding <bcp14>MUST</bcp14> include the ASN.1 AlgorithmIdentifier in addition to the subjectPublicKey. If the BSK public key can be shared in a trustworthy manner with a TLS server, a form of "entity authentication" (the step from which all subsequent authentication proceeds) can be obtained.</t>

<t>The exact mechanism by which the TLS server gains knowledge of the BSK public key is out of scope of this specification, but possible mechanisms include scanning a QR code to obtain a base64 encoding of the DER representation of the ASN.1 SubjectPublicKeyInfo or uploading of a Bill of Materials (BOM) which includes this information. More information on QR encoding is given in <xref target="alignment-with-wi-fi-alliance-device-provisioning-profile"/>. If the QR code is physically attached to the client device, or the BOM is associated with the device, the assumption is that the BSK public key obtained in this bootstrapping method belongs to the client. In this model, physical possession of the device implies legitimate ownership of the device.</t>

<t>The TLS server may have knowledge of multiple BSK public keys corresponding to multiple devices, and existing TLS mechanisms are leveraged that enable the server to identity a specific bootstrap public key corresponding to a specific device.</t>

<t>Using the process defined herein, the client proves to the TLS server that it has possession of the private key of its BSK. Provided that the mechanism in which the server obtained the BSK public key is trustworthy, a commensurate amount of authenticity of the resulting connection can be obtained. The server also proves that it knows the client's BSK public key which, if the client does not gratuitously expose its public key, can be used to obtain a modicum of correctness, that the client is connecting to the correct server (see <xref target="duckling"></xref>).</t>

<section anchor="alignment-with-wi-fi-alliance-device-provisioning-profile"><name>Alignment with Wi-Fi Alliance Device Provisioning Profile</name>

<t>The definition of the BSK public key aligns with <xref target="DPP"></xref>. This, for example, enables the QR code format as defined in <xref target="DPP"></xref> to be reused for TLS-POK. Therefore, a device that supports both wired LAN and Wi-Fi LAN connections can have a single QR code printed on its label, or dynamically display a single QR code on a display, and the bootstrap key can be used for DPP if the device bootstraps against a Wi-Fi network, or TLS-POK if the device bootstraps against a wired network. Similarly, a common bootstrap public key format could be imported into a BOM into a server that handles devices connecting over both wired and Wi-Fi networks.</t>

<t><xref target="DPP"></xref>, and therefore TLS-POK, does not support the use of RSA or post-quantum crypto systems due to the size of public key and its unsuitableness to be represented in a QR code. If <xref target="DPP"></xref> is modified in the future to support post-quantum crypto systems, this memo will be updated to track support.</t>

<t>Any bootstrapping method defined for, or used by, <xref target="DPP"></xref> is compatible with TLS-POK.</t>

</section>
</section>
<section anchor="bootstrapping-in-tls-13"><name>Bootstrapping in TLS 1.3</name>

<t>Bootstrapping in TLS 1.3 leverages <xref target="RFC8773"/> Certificate-Based Authentication with an External Pre-Shared Key. The External PSK (EPSK) is derived from the BSK public key as described in <xref target="external-psk-derivation"/>, and the EPSK is imported using <xref target="RFC9258"/> Importing External Pre-Shared Keys (PSKs) for TLS 1.3. As the BSK public key is an ASN.1 SEQUENCE SubjectPublicKeyInfo from <xref target="RFC5480"/>, and not a full PKI Certificate, the client must present the BSK as a raw public key as described in <xref target="RFC7250"/> and use ECDSA as defined in <xref target="NIST.FIPS.186-5"/> for authentication.</t>

<t>The TLS PSK handshake gives the client proof that the TLS server knows the BSK public key. Certificate-based authentication of the client to the server using the BSK gives the server proof that the client knows the BSK private key. This satisfies the proof of ownership requirements outlined in <xref target="introduction"/>.</t>

<section anchor="external-psk-derivation"><name>External PSK Derivation</name>

<t>An <xref target="RFC9258"/> EPSK is made up of the tuple of (Base Key, External Identity, Hash). The Base Key is the DER-encoded ASN.1 subjectPublicKeyInfo representation of the BSK public key. Zero byte padding <bcp14>MUST NOT</bcp14> be added to the DER-encoded representation of the BSK public key.</t>

<t>The External Identity is derived from the DER-encoded representation of the BSK public key using <xref target="RFC5869"/> with the SHA-256 hash algorithm <xref target="sha2"></xref> as follows:</t>

<figure><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="480" viewBox="0 0 480 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<g class="text">
<text x="28" y="36">epskid</text>
<text x="64" y="36">=</text>
<text x="188" y="36">HKDF-Expand(HKDF-Extract(&lt;&gt;,</text>
<text x="324" y="36">Base</text>
<text x="368" y="36">Key),</text>
<text x="280" y="52">&quot;tls13-bspsk-identity&quot;,</text>
<text x="388" y="52">L)</text>
<text x="28" y="68">where:</text>
<text x="24" y="84">-</text>
<text x="60" y="84">epskid</text>
<text x="100" y="84">is</text>
<text x="128" y="84">the</text>
<text x="164" y="84">EPSK</text>
<text x="220" y="84">External</text>
<text x="292" y="84">Identity</text>
<text x="24" y="100">-</text>
<text x="52" y="100">Base</text>
<text x="88" y="100">Key</text>
<text x="116" y="100">is</text>
<text x="144" y="100">the</text>
<text x="208" y="100">DER-encoded</text>
<text x="280" y="100">ASN.1</text>
<text x="388" y="100">subjectPublicKeyInfo</text>
<text x="92" y="116">representation</text>
<text x="164" y="116">of</text>
<text x="192" y="116">the</text>
<text x="224" y="116">BSK</text>
<text x="268" y="116">public</text>
<text x="312" y="116">key</text>
<text x="24" y="132">-</text>
<text x="40" y="132">L</text>
<text x="76" y="132">equals</text>
<text x="120" y="132">32,</text>
<text x="152" y="132">the</text>
<text x="196" y="132">length</text>
<text x="236" y="132">in</text>
<text x="276" y="132">octets</text>
<text x="316" y="132">of</text>
<text x="344" y="132">the</text>
<text x="392" y="132">SHA-256</text>
<text x="452" y="132">output</text>
<text x="24" y="148">-</text>
<text x="44" y="148">&lt;&gt;</text>
<text x="68" y="148">is</text>
<text x="88" y="148">a</text>
<text x="116" y="148">NULL</text>
<text x="156" y="148">salt</text>
<text x="200" y="148">which</text>
<text x="236" y="148">is</text>
<text x="256" y="148">a</text>
<text x="292" y="148">string</text>
<text x="332" y="148">of</text>
<text x="352" y="148">L</text>
<text x="384" y="148">zeros</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
epskid = HKDF-Expand(HKDF-Extract(<>, Base Key),
                       "tls13-bspsk-identity", L)
where:
  - epskid is the EPSK External Identity
  - Base Key is the DER-encoded ASN.1 subjectPublicKeyInfo
    representation of the BSK public key
  - L equals 32, the length in octets of the SHA-256 output
  - <> is a NULL salt which is a string of L zeros
]]></artwork></artset></figure>

<t>SHA-256 <bcp14>MUST</bcp14> be used when deriving epskid using <xref target="RFC5869"/>.</t>

<t>The <xref target="RFC9258"/> ImportedIdentity structure is defined as:</t>

<figure><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="128" width="328" viewBox="0 0 328 128" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<g class="text">
<text x="28" y="36">struct</text>
<text x="64" y="36">{</text>
<text x="52" y="52">opaque</text>
<text x="204" y="52">external_identity&lt;1...2^16-1&gt;;</text>
<text x="52" y="68">opaque</text>
<text x="160" y="68">context&lt;0..2^16-1&gt;;</text>
<text x="52" y="84">uint16</text>
<text x="148" y="84">target_protocol;</text>
<text x="52" y="100">uint16</text>
<text x="128" y="100">target_kdf;</text>
<text x="8" y="116">}</text>
<text x="88" y="116">ImportedIdentity;</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
struct {
   opaque external_identity<1...2^16-1>;
   opaque context<0..2^16-1>;
   uint16 target_protocol;
   uint16 target_kdf;
} ImportedIdentity;
]]></artwork></artset></figure>

<t>and is created using the following values:</t>

<figure><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="96" width="264" viewBox="0 0 264 96" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<g class="text">
<text x="72" y="36">external_identity</text>
<text x="152" y="36">=</text>
<text x="188" y="36">epskid</text>
<text x="32" y="52">context</text>
<text x="72" y="52">=</text>
<text x="128" y="52">&quot;tls13-bsk&quot;</text>
<text x="64" y="68">target_protocol</text>
<text x="136" y="68">=</text>
<text x="204" y="68">TLS1.3(0x0304)</text>
<text x="44" y="84">target_kdf</text>
<text x="96" y="84">=</text>
<text x="120" y="84">&lt;as</text>
<text x="152" y="84">per</text>
<text x="204" y="84">RFC9258&gt;</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
external_identity = epskid
context = "tls13-bsk"
target_protocol = TLS1.3(0x0304)
target_kdf = <as per RFC9258>
]]></artwork></artset></figure>

<t>The ImportedIdentity context value <bcp14>MUST</bcp14> be "tls13-bsk". This informs the server that the mechanisms specified in this document for deriving the EPSK and executing the TLS handshake <bcp14>MUST</bcp14> be used. The EPSK and ImportedIdentity are used in the TLS handshake as specified in <xref target="RFC9258"/>. Multiple ImportedIdentity values may be imported as per <xref target="RFC9258"/> section 5.1. The target_kdf follows <xref target="RFC9258"/> and aligns with the cipher suite hash algorithms advertised in the TLS 1.3 handshake between the device and the server.</t>

<t>A server can choose a tradeoff between performance and storage by precomputing the identity of every bootstrapped key with every hash algorithm that it uses in TLS and use that to quickly lookup the bootstrap key and generate the PSK. Servers that choose not to employ this optimization will have to do a runtime check with every bootstrap key it holds against the identity the client provides.</t>

<t>Test vectors for derivation of an EPSK External Identity from a BSK are given in the appendix.</t>

</section>
<section anchor="tls-13-handshake-details"><name>TLS 1.3 Handshake Details</name>

<t>The client includes the "tls_cert_with_extern_psk" extension in the ClientHello, per <xref target="RFC8773"/>. The client identifies the BSK public key by inserting the serialized content of ImportedIdentity into the PskIdentity.identity in the PSK extension, per <xref target="RFC9258"/>. The client <bcp14>MUST</bcp14> also include the <xref target="RFC7250"/> "client_certificate_type" extension in the ClientHello and <bcp14>MUST</bcp14> specify type of RawPublicKey.</t>

<t>Upon receipt of the ClientHello, the server looks up the client's EPSK key in its database using the mechanisms documented in <xref target="RFC9258"/>. If no match is found, the server <bcp14>MUST</bcp14> terminate the TLS handshake with an alert. If the server finds the matching BSK public key, it includes the "tls_cert_with_extern_psk" extension in the ServerHello message, and the corresponding EPSK identity in the "pre_shared_key" extension. When these extensions have been successfully negotiated, the TLS 1.3 key schedule <bcp14>MUST</bcp14> include both the EPSK in the Early Secret derivation and an (EC)DHE shared secret value in the Handshake Secret derivation.</t>

<t>After successful negotiation of these extensions, the full TLS 1.3 handshake is performed with the additional caveat that the server <bcp14>MUST</bcp14> send a CertificateRequest message and the client <bcp14>MUST</bcp14> authenticate with a raw public key (its BSK) per <xref target="RFC7250"/>. The BSK is always an elliptic curve key pair, therefore the type of the client's Certificate <bcp14>MUST</bcp14> be ECDSA and <bcp14>MUST</bcp14> contain the client's BSK public key as a DER-encoded ASN.1 subjectPublicKeyInfo SEQUENCE.</t>

<t>Note that the client <bcp14>MUST NOT</bcp14> share its BSK public key with the server until after the client has completed processing of the ServerHello and verified the TLS key schedule. The PSK proof is completed at this stage, and the server has proven to the client that it knows the BSK public key, and it is therefore safe for the client to send the BSK public key to the server in the Certificate message. If the PSK verification step fails when processing the ServerHello, the client terminates the TLS handshake and the BSK public key <bcp14>MUST NOT</bcp14> be shared with the server.</t>

<t>When the server processes the client's Certificate, it <bcp14>MUST</bcp14> ensure that it is identical to the BSK public key that it used to generate the EPSK and ImportedIdentity for this handshake.</t>

<t>When clients are configured to trust the first network which proves possession of their public key (as in <xref target="duckling"></xref>), they <bcp14>MAY</bcp14> forgo the checking of the server's certificate in the CertificateVerify and rely on the integrity of the bootstrapping method employed to distribute its key in order to validate trust in the authenticated TLS connection.</t>

<t>The handshake is shown in <xref target="arch-one"/>.</t>

<figure title="TLS 1.3 TLS-POK Handshake" anchor="arch-one"><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="472" viewBox="0 0 472 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,80 L 8,128" fill="none" stroke="black"/>
<path d="M 8,48 L 64,48" fill="none" stroke="black"/>
<path d="M 408,48 L 464,48" fill="none" stroke="black"/>
<path d="M 224,128 L 288,128" fill="none" stroke="black"/>
<path d="M 224,288 L 288,288" fill="none" stroke="black"/>
<path d="M 224,336 L 288,336" fill="none" stroke="black"/>
<polygon class="arrowhead" points="296,336 284,330.4 284,341.6" fill="black" transform="rotate(0,288,336)"/>
<polygon class="arrowhead" points="296,128 284,122.4 284,133.6" fill="black" transform="rotate(0,288,128)"/>
<polygon class="arrowhead" points="232,288 220,282.4 220,293.6" fill="black" transform="rotate(180,224,288)"/>
<g class="text">
<text x="28" y="36">Client</text>
<text x="428" y="36">Server</text>
<text x="48" y="68">ClientHello</text>
<text x="100" y="84">cert_with_extern_psk</text>
<text x="136" y="100">client_cert_type=RawPublicKey</text>
<text x="56" y="116">key_share</text>
<text x="76" y="132">pre_shared_key</text>
<text x="424" y="148">ServerHello</text>
<text x="296" y="164">+</text>
<text x="388" y="164">cert_with_extern_psk</text>
<text x="224" y="180">+</text>
<text x="352" y="180">client_cert_type=RawPublicKey</text>
<text x="384" y="196">+</text>
<text x="432" y="196">key_share</text>
<text x="344" y="212">+</text>
<text x="412" y="212">pre_shared_key</text>
<text x="384" y="228">{EncryptedExtensions}</text>
<text x="388" y="244">{CertificateRequest}</text>
<text x="416" y="260">{Certificate}</text>
<text x="392" y="276">{CertificateVerify}</text>
<text x="428" y="292">{Finished}</text>
<text x="56" y="308">{Certificate}</text>
<text x="80" y="324">{CertificateVerify}</text>
<text x="44" y="340">{Finished}</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
         Client                                            Server
         --------                                          --------
         ClientHello
         + cert_with_extern_psk
         + client_cert_type=RawPublicKey
         + key_share
         + pre_shared_key           -------->
                                                        ServerHello
                                             + cert_with_extern_psk
                                    + client_cert_type=RawPublicKey
                                                        + key_share
                                                   + pre_shared_key
                                              {EncryptedExtensions}
                                               {CertificateRequest}
                                                      {Certificate}
                                                {CertificateVerify}
                                    <--------            {Finished}
         {Certificate}
         {CertificateVerify}
         {Finished}                 -------->
]]></artwork></artset></figure>

</section>
</section>
<section anchor="using-tls-bootstrapping-in-eap"><name>Using TLS Bootstrapping in EAP</name>

<t>Upon "link up", an Authenticator on an 802.1X-protected port will issue an EAP Identity request to the newly connected peer. For unprovisioned devices that desire to take advantage of TLS-POK, there is no initial realm in which to construct an NAI (see <xref target="RFC7542"/>). This document uses the NAI mechanisms defined in <xref target="I-D.ietf-emu-eap-arpa"/> and defines the EAP username "tls-pok-dpp" for use with the TEAP realm "teap.eap.arpa". The username "tls-pok-dpp" <bcp14>MUST</bcp14> be included yielding an initial identity of "tls-pok-dpp@teap.eap.arpa". This identifier <bcp14>MUST</bcp14> be included in the EAP Identity response in order to indicate to the Authenticator that TEAP is the desired EAP method. <xref target="I-D.ietf-emu-eap-arpa"/> recommends how the device should behave if the Authenticator does not support TEAP or TLS-POK.</t>

<figure><artset><artwork  type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="400" width="320" viewBox="0 0 320 400" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
<path d="M 8,48 L 64,48" fill="none" stroke="black"/>
<path d="M 200,48 L 272,48" fill="none" stroke="black"/>
<g class="text">
<text x="16" y="36">EAP</text>
<text x="52" y="36">Peer</text>
<text x="208" y="36">EAP</text>
<text x="252" y="36">Server</text>
<text x="204" y="68">&lt;-</text>
<text x="268" y="68">EAP-Request/</text>
<text x="228" y="84">Identity</text>
<text x="56" y="116">EAP-Response/</text>
<text x="36" y="132">Identity</text>
<text x="112" y="148">(tls-pok-dpp@teap.eap.arpa)</text>
<text x="236" y="148">-&gt;</text>
<text x="204" y="180">&lt;-</text>
<text x="268" y="180">EAP-Request/</text>
<text x="248" y="196">EAP-Type=TEAP</text>
<text x="204" y="212">(TLS</text>
<text x="252" y="212">Start)</text>
<text x="56" y="244">EAP-Response/</text>
<text x="56" y="260">EAP-Type=TEAP</text>
<text x="20" y="276">(TLS</text>
<text x="92" y="276">client_hello</text>
<text x="164" y="276">with</text>
<text x="108" y="292">tls_cert_with_extern_psk</text>
<text x="24" y="308">and</text>
<text x="104" y="308">pre_shared_key)</text>
<text x="180" y="308">-&gt;</text>
<text x="160" y="340">.</text>
<text x="160" y="356">.</text>
<text x="160" y="372">.</text>
</g>
</svg>
</artwork><artwork  type="ascii-art"><![CDATA[
    EAP Peer                EAP Server
    --------                ----------
                            <- EAP-Request/
                            Identity

    EAP-Response/
    Identity
    (tls-pok-dpp@teap.eap.arpa) ->

                            <- EAP-Request/
                            EAP-Type=TEAP
                           (TLS Start)

    EAP-Response/
    EAP-Type=TEAP
    (TLS client_hello with
     tls_cert_with_extern_psk
     and pre_shared_key) ->
     
                       .
                       .
                       .
]]></artwork></artset></figure>

<t>Both client and server have derived the EPSK and associated <xref target="RFC9258"/> ImportedIdentity from the BSK public key as described in <xref target="external-psk-derivation"/>. When the client starts the TLS exchange in the EAP transaction, it includes the ImportedIdentity structure in the pre_shared_key extension in the ClientHello. When the server receives the ClientHello, it extracts the ImportedIdentity and looks up the EPSK and BSK public key. As previously mentioned in <xref target="bootstrap-key"/>, the exact mechanism by which the server has gained knowledge of or been provisioned with the BSK public key is outside the scope of this document.</t>

<t>The server continues with the TLS handshake and uses the EPSK to prove that it knows the BSK public key. When the client replies with its Certificate, CertificateVerify and Finished messages, the server <bcp14>MUST</bcp14> ensure that the public key in the Certificate message matches the BSK public key.</t>

<t>Once the TLS handshake completes, the client and server have established mutual trust. The server can then proceed to provision a credential onto the client using, for example, the mechanisms outlined in <xref target="RFC7170"/>.</t>

<t>The client can then use this provisioned credential for subsequent EAP authentication. The BSK is only used during bootstrap, and is not used for any subsequent EAP authentication.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document adds the following to the "EAP Provisioning Identifiers" registry in the "Extensible Authentication Protocol (EAP) Registry" group.</t>

<t>NAI: tls-pok-dpp@teap.eap.arpa
Method Type: TEAP
Reference: THIS DOCUMENT</t>

</section>
<section anchor="implementation-considerations"><name>Implementation Considerations</name>

<t>Three key points are documented above, and are repeated here.</t>

<t><list style="symbols">
  <t>The subjectPublicKey contained in the ASN.1 SEQUENCE SubjectPublicKeyInfo <bcp14>MUST</bcp14> be the compressed format of the public key.</t>
  <t>When deriving the External PSK from the BSK, zero byte padding <bcp14>MUST NOT</bcp14> be added to the DER-encoded representation of the BSK public key.</t>
  <t>SHA-256 <bcp14>MUST</bcp14> be used when using <xref target="RFC5869"/> to derive the External PSK from the BSK.</t>
  <t>The BSK public key <bcp14>MUST NOT</bcp14> be freely available on the network.</t>
</list></t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>Bootstrap and trust establishment by the TLS server is based on proof of knowledge of the client's bootstrap public key, a non-public datum. The TLS server obtains proof that the client knows its bootstrap public key and, in addition, also possesses its corresponding private key.</t>

<t>Trust on the part of the client is based on successful completion of the TLS 1.3 handshake using the EPSK derived from the BSK. This proves to the client that the server knows its BSK public key. In addition, the client assumes that knowledge of its BSK public key is not widely disseminated and therefore any server that proves knowledge of its BSK public key is the appropriate server from which to receive provisioning, for instance via <xref target="RFC7170"/>. <xref target="duckling"></xref> describes a security model for this type of "imprinting".</t>

<t>An attack on the bootstrapping method which substitutes the public key of a rogue device for the public key of an honest device can result in the TLS server on-boarding and trusting the rogue device.</t>

<t>If an adversary has knowledge of the bootstrap public key, the adversary may be able to make the client bootstrap against the adversary's network. For example, if an adversary intercepts and scans QR labels on clients, and the adversary can force the client to connect to its server, then the adversary can complete the TLS-POK handshake with the client and the client will connect to the adversary's server. Since physical possession implies ownership, there is nothing to prevent a stolen device from being on-boarded.</t>

<t>The BSK keypair used for ECDSA <bcp14>MUST</bcp14> be generated and validated according to section 6.2 of <xref target="NIST.FIPS.186-5"/>.</t>

<t>Manufacturers <bcp14>SHOULD</bcp14> use a unique BSK for every single device they manufacture. If multiple devices share the same BSK, then network operators cannot differentiate between these devices, and cannot ensure that only specific authorized devices are allowed connect to their networks.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="NIST.FIPS.186-5" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-5.pdf">
  <front>
    <title>Digital Signature Standard (DSS)</title>
    <author fullname="Dustin Moody" surname="Moody">
      <organization>Information Technology Laboratory</organization>
    </author>
    <author>
      <organization>National Institute of Standards and Technology</organization>
      <address>
        <postal>
          <country>US</country>
          <city>Gaithersburg</city>
        </postal>
      </address>
    </author>
    <date year="2023"/>
  </front>
  <seriesInfo name="NIST Federal Information Processing Standards Publications" value="186-5"/>
  <seriesInfo name="DOI" value="10.6028/NIST.FIPS.186-5"/>
</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>
<reference anchor="RFC5480">
  <front>
    <title>Elliptic Curve Cryptography Subject Public Key Information</title>
    <author fullname="S. Turner" initials="S." surname="Turner"/>
    <author fullname="D. Brown" initials="D." surname="Brown"/>
    <author fullname="K. Yiu" initials="K." surname="Yiu"/>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <author fullname="T. Polk" initials="T." surname="Polk"/>
    <date month="March" year="2009"/>
    <abstract>
      <t>This document specifies the syntax and semantics for the Subject Public Key Information field in certificates that support Elliptic Curve Cryptography. This document updates Sections 2.3.5 and 5, and the ASN.1 module of "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5480"/>
  <seriesInfo name="DOI" value="10.17487/RFC5480"/>
</reference>
<reference anchor="RFC8773">
  <front>
    <title>TLS 1.3 Extension for Certificate-Based Authentication with an External Pre-Shared Key</title>
    <author fullname="R. Housley" initials="R." surname="Housley"/>
    <date month="March" year="2020"/>
    <abstract>
      <t>This document specifies a TLS 1.3 extension that allows a server to authenticate with a combination of a certificate and an external pre-shared key (PSK).</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8773"/>
  <seriesInfo name="DOI" value="10.17487/RFC8773"/>
</reference>
<reference anchor="RFC9258">
  <front>
    <title>Importing External Pre-Shared Keys (PSKs) for TLS 1.3</title>
    <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
    <author fullname="C. A. Wood" initials="C. A." surname="Wood"/>
    <date month="July" year="2022"/>
    <abstract>
      <t>This document describes an interface for importing external Pre-Shared Keys (PSKs) into TLS 1.3.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9258"/>
  <seriesInfo name="DOI" value="10.17487/RFC9258"/>
</reference>
<reference anchor="RFC7250">
  <front>
    <title>Using Raw Public Keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
    <author fullname="P. Wouters" initials="P." role="editor" surname="Wouters"/>
    <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
    <author fullname="J. Gilmore" initials="J." surname="Gilmore"/>
    <author fullname="S. Weiler" initials="S." surname="Weiler"/>
    <author fullname="T. Kivinen" initials="T." surname="Kivinen"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>This document specifies a new certificate type and two TLS extensions for exchanging raw public keys in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS). The new certificate type allows raw public keys to be used for authentication.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7250"/>
  <seriesInfo name="DOI" value="10.17487/RFC7250"/>
</reference>
<reference anchor="RFC5869">
  <front>
    <title>HMAC-based Extract-and-Expand Key Derivation Function (HKDF)</title>
    <author fullname="H. Krawczyk" initials="H." surname="Krawczyk"/>
    <author fullname="P. Eronen" initials="P." surname="Eronen"/>
    <date month="May" year="2010"/>
    <abstract>
      <t>This document specifies a simple Hashed Message Authentication Code (HMAC)-based key derivation function (HKDF), which can be used as a building block in various protocols and applications. The key derivation function (KDF) is intended to support a wide range of applications and requirements, and is conservative in its use of cryptographic hash functions. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="5869"/>
  <seriesInfo name="DOI" value="10.17487/RFC5869"/>
</reference>

<reference anchor="I-D.ietf-emu-eap-arpa">
   <front>
      <title>The eap.arpa. domain and EAP provisioning</title>
      <author fullname="Alan DeKok" initials="A." surname="DeKok">
         <organization>InkBridge Networks</organization>
      </author>
      <date day="4" month="September" year="2025"/>
      <abstract>
	 <t>   This document defines the eap.arpa. domain for use only in Network
   Access Identifiers (NAIs) as a way for Extensible Authentication
   Protocol (EAP) peers to signal to EAP servers that they wish to
   obtain limited, and unauthenticated, network access.  EAP peers
   signal which kind of access is required via certain predefined
   identifiers which use the Network Access Identifier (NAI) format of
   RFC 7542.  A table of identifiers and meanings is defined, which
   includes entries for RFC 9140.

   This document updates RFC5216 and RFC9190 to define an
   unauthenticated provisioning method.  Those specifications suggested
   that such a method has possible, but they did not define how it would
   be done.  This document also updates RFC9140 to deprecate &quot;eap-
   noob.arpa&quot;, and replace it with &quot;@noob.eap.arpa&quot;

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-emu-eap-arpa-10"/>
   
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="IEEE802.1X" >
  <front>
    <title>Port-Based Network Access Control</title>
    <author initials="" surname="IEEE" fullname="IEEE">
      <organization>IEEE</organization>
    </author>
    <date year="2010"/>
  </front>
</reference>
<reference anchor="DPP" >
  <front>
    <title>Device Provisioning Profile</title>
    <author >
      <organization>Wi-Fi Alliance</organization>
    </author>
    <date year="2020"/>
  </front>
</reference>
<reference anchor="duckling" target="https://www.cl.cam.ac.uk/~fms27/papers/1999-StajanoAnd-duckling.pdf">
  <front>
    <title>The Resurrecting Duckling: Security Issues for Ad-Hoc Wireless Networks</title>
    <author initials="F." surname="Stajano" fullname="Frank Stajano">
      <organization></organization>
    </author>
    <author initials="R." surname="Anderson" fullname="Ross Anderson">
      <organization></organization>
    </author>
    <date year="1999"/>
  </front>
</reference>
<reference anchor="sha2" target="https://doi.org/10.6028/NIST.FIPS.180-4">
  <front>
    <title>FIPS 180-4 Secure Hash Standard (SHS)</title>
    <author >
      <organization>National Institute of Standards and Technology</organization>
    </author>
    <date year="2015" month="August"/>
  </front>
</reference>


<reference anchor="RFC3748">
  <front>
    <title>Extensible Authentication Protocol (EAP)</title>
    <author fullname="B. Aboba" initials="B." surname="Aboba"/>
    <author fullname="L. Blunk" initials="L." surname="Blunk"/>
    <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
    <author fullname="J. Carlson" initials="J." surname="Carlson"/>
    <author fullname="H. Levkowetz" initials="H." role="editor" surname="Levkowetz"/>
    <date month="June" year="2004"/>
    <abstract>
      <t>This document defines the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication methods. EAP typically runs directly over data link layers such as Point-to-Point Protocol (PPP) or IEEE 802, without requiring IP. EAP provides its own support for duplicate elimination and retransmission, but is reliant on lower layer ordering guarantees. Fragmentation is not supported within EAP itself; however, individual EAP methods may support this. This document obsoletes RFC 2284. A summary of the changes between this document and RFC 2284 is available in Appendix A. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3748"/>
  <seriesInfo name="DOI" value="10.17487/RFC3748"/>
</reference>
<reference anchor="RFC7030">
  <front>
    <title>Enrollment over Secure Transport</title>
    <author fullname="M. Pritikin" initials="M." role="editor" surname="Pritikin"/>
    <author fullname="P. Yee" initials="P." role="editor" surname="Yee"/>
    <author fullname="D. Harkins" initials="D." role="editor" surname="Harkins"/>
    <date month="October" year="2013"/>
    <abstract>
      <t>This document profiles certificate enrollment for clients using Certificate Management over CMS (CMC) messages over a secure transport. This profile, called Enrollment over Secure Transport (EST), describes a simple, yet functional, certificate management protocol targeting Public Key Infrastructure (PKI) clients that need to acquire client certificates and associated Certification Authority (CA) certificates. It also supports client-generated public/private key pairs as well as key pairs generated by the CA.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7030"/>
  <seriesInfo name="DOI" value="10.17487/RFC7030"/>
</reference>
<reference anchor="RFC7170">
  <front>
    <title>Tunnel Extensible Authentication Protocol (TEAP) Version 1</title>
    <author fullname="H. Zhou" initials="H." surname="Zhou"/>
    <author fullname="N. Cam-Winget" initials="N." surname="Cam-Winget"/>
    <author fullname="J. Salowey" initials="J." surname="Salowey"/>
    <author fullname="S. Hanna" initials="S." surname="Hanna"/>
    <date month="May" year="2014"/>
    <abstract>
      <t>This document defines the Tunnel Extensible Authentication Protocol (TEAP) version 1. TEAP is a tunnel-based EAP method that enables secure communication between a peer and a server by using the Transport Layer Security (TLS) protocol to establish a mutually authenticated tunnel. Within the tunnel, TLV objects are used to convey authentication-related data between the EAP peer and the EAP server.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7170"/>
  <seriesInfo name="DOI" value="10.17487/RFC7170"/>
</reference>
<reference anchor="RFC7542">
  <front>
    <title>The Network Access Identifier</title>
    <author fullname="A. DeKok" initials="A." surname="DeKok"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>In order to provide inter-domain authentication services, it is necessary to have a standardized method that domains can use to identify each other's users. This document defines the syntax for the Network Access Identifier (NAI), the user identifier submitted by the client prior to accessing resources. This document is a revised version of RFC 4282. It addresses issues with international character sets and makes a number of other corrections to RFC 4282.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7542"/>
  <seriesInfo name="DOI" value="10.17487/RFC7542"/>
</reference>



    </references>

</references>


<?line 332?>

<section anchor="test-vectors"><name>Test Vectors</name>

<section anchor="test-vector-1-prime256v1"><name>Test Vector 1: prime256v1</name>

<t>Base64 encoding of BSK:</t>

<t><spanx style="verb">MDkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDIgACMvLyoOykj8sFJxSoZfzafuVEvM+kNYCxpEC6KITLb9g=</spanx></t>

<t>Base64 encoding of epskid:</t>

<t><spanx style="verb">Bd+lLlg/ERdtYacfzDfh1LjdL0+QWJQHdYXoS7JDSkA=</spanx></t>

</section>
<section anchor="test-vector-2-secp384r1"><name>Test Vector 2: secp384r1</name>

<t>Base64 encoding of BSK:</t>

<t><spanx style="verb">MEYwEAYHKoZIzj0CAQYFK4EEACIDMgACwDXKQ1pytcR1WbfqPaNGaXQ0RJnijJG1em8ZKilryZRDfNioq7+EPquT6l9laRvw</spanx></t>

<t>Base64 encoding of epskid:</t>

<t><spanx style="verb">yMWK26ec3klVFewg2znKntQgVoRcRRjW81n677GL+8w=</spanx></t>

</section>
<section anchor="test-vector-3-secp521r1"><name>Test Vector 3: secp521r1</name>

<t>Base64 encoding of BSK:</t>

<t><spanx style="verb">MFgwEAYHKoZIzj0CAQYFK4EEACMDRAADAIiHIAOXdPVuI8khCnJQHT1j53rQRnFCcY3CZUvxdXKJR9KW5RVB3HDQfmkoQWHEz4XngXUeFyDXliEo3eF6vhqDMFgwEAYHKoZIzj0CAQYFK4EEACMDRAADAIiHIAOXdPVuI8khCnJQHT1j53rQRnFCcY3CZUvxdXKJR9KW5RVB3HDQfmkoQWHEz4XngXUeFyDXliEo3eF6vhqD</spanx></t>

<t>Base64 encoding of epskid:</t>

<t><spanx style="verb">D+s3Ex81A8N36ECI3AdXwBzrOXuonZUMdhhHXVINhg8=</spanx></t>

</section>
<section anchor="test-vector-4-brainpoolp256r1"><name>Test Vector 4: brainpoolP256r1</name>

<t>Base64 encoding of BSK:</t>

<t><spanx style="verb">MDowFAYHKoZIzj0CAQYJKyQDAwIIAQEHAyIAA3fyUWqiV8NC9DAC88JzmVqnoT/reuCvq8lHowtwWNOZ</spanx></t>

<t>Base64 encoding of epskid:</t>

<t><spanx style="verb">j2TLWcXtrTej+f3q7EZrhp5SmP31uk1ZB23dfcR93EY=</spanx></t>

</section>
</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA8U82XbbRpbv/AqM8hBpLNKi5EVWJ+mmRapFa1+85mQ8IFAk
YYEAjQJE0zrOt8y3zJfNXaoKVQAoyzndZ3SykCBw69bdt0K73W618iiPxZ63
9jJNc5ln/nwuQu/6+MrrFflUJHkU+HmUJt4iyqfeeZamYw/+OUrSRSzCifDW
4d72+dnRxlrLH40ycbvnqSutMA0SfwbAw8wf5+1I5OO2mBXtkbVUO49lu7vV
glXEJM2We57Mw1Y0z/a8PCtkvr219WJru9WSuZ+EH/04TQDeUsjWPNrzfs/T
YNOTaZZnYizh03KGH/5otXxAPs32Wl675cFflMg976zjHWSRiOkKI3a2EIl1
Mc0me95+JIOUvoqZH8V7sF284R8BXu8E6cwB2u94h352A58tsH0/ca4S3EMB
FMvz9rkf3PhZ6A2SXGTzLJLCXiz0E1isM+Wn/zGdC1qylaTZDBhxC9BbcP/p
8Oq6czA8v+p0d5+1n+4RCLNpzyx6SszzY2+YSOB0kQvk3hUSE3CQHvzfuxbB
NEnjdLKkJ5VAIHCPgHv9aBLlAOMqmiR+XmTCAPDW+1dXG/yYn01EvudN83wu
9x4/DtOoAyg87m51nm1t7z6uYEzPhMD0PRC0CTDa297a3mm1omRsdoobHQ4G
g92t7U73XdMeiQV4i/rO5LcuEBHwu2fv7Rwkpv3SlyDppyJfpNmN1wsCIaW3
nyZ5lsYWdttbIJ3wvX9+vpLKb6P2QeT14jjyk0DYK/XFbRQI1JvbSAInomSC
X8ZRLJw1tmmNsAhuYrilaaG2+r/a9EEHmfDJT1JznTd/kPnJTeW3yrOXHa+X
hCKTaVJ5+DIFGpjf7I2sXU+FdylkkWUiyHEbfY2sdyWCIovypTeUshDSAw56
vbB9mAZAmUzESFhFZ7nWKCyLxaITxJ3An3X8oFPcPP5zPJPbzx/P/Tmg8rj7
4sWLttoSYNfWdOrMw7FFRrwNkZZTf/vfpxFb7Se8YwE6LqeWLlwd/gVdAHBN
utB92mq1223PH6GlDPJW63oaSQ9MajEDq+yFYhwlQGvfmwGyYDTkzMunfu6J
xB/F9ENpZpFdIUtinnoCbOkojgB1srC041mRF34cL4liyuoLz5/4IDBwBzkE
KbJbkXW8lw1wpTf1b+EBb14A6OAx2LVbhHAjlt7cj7JNWiXHLZT4lqiW4BHB
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
M8tTHZ5VjpA659NvI9/1V/ZL5Ky3mFVfHWdq2rqVtBbNaNQeHlzr0OAiHWu6
0fLQWAVmTNEV8YtAq++V5ANeWTopTAKpux2VmxJINBOsbVhvUuMTJfYAilYT
63ilUWItYPZq6tWFCc+zSJ8HQuqa26ywxCPzoBrM4cNE2Ka+EbaAlSDskQzz
+M+ynPY/sOOQqIIfvYgqEPNc6jeXgT24uOSDD3TcVvUcyt5U+TBSDQgcOJhx
pQZrRFQ4AMDW2zuSBgg6aNNkpxJYpcleieasr1S/shaskkG/b+QqQvltOnym
j5uZcVynIJVPVZiCSQWtj+NCMflFljDUIT6erwWlPH75kocV6JU9Jp7iLql2
Y9ZJXuwkqu5FiG+0SDN9DEyPYD3rbKMQNc1Zg/CdmOPDOBmk3o5S0AxUkUQ4
NYj4UFxKQz7q9Io5SyOW1glkbutVz8Op1ioZRyxfkecnxuqOk34jD52yQbtm
3qIX8YsMzBiXrJyyU/fb6QKf2tcn4PjtwDQ3o9Ghg9MYTPIsjSUFQHHrSAkW
cvA9kOisaTLpDU8mqTfJmQtedw/d1ExApHHbBfddP4uKb/Vqtf4b/k76N4vB
4v3hUfph+PXT1n7v4v1Qfe73LoL+cNLbP7k9XqZny5tPu/Lg1Zer9MP4qz8u
3gxuTx7dnL7f/zIf7D87Gl4fj15MfkWYjUvyEKVa9WX4KD6OJ48Hl2H+3g/G
X/vjaff4U3i89eji7auLw/D9u/Tq+av+1U1PQaxscXsP5Wm+s/sk63rf2+Lg
/WLQc7Z4cPRkMOjtD/snsL1F/93RRXe+zIPL7tvR+PO5f/pP/93F1uWrJPr0
6p9dMdv9cBTF2fLDZX98GqWfnz8anH8urp/FL2L/8nbxsC0vT94ebT8Twc5N
/OZALCbbX5OjJL+YvEkvg8vLT293u8mz58//efxod9G85R3e8tPtbvZdph5M
Vuz4pH/Z6/V7w+hw2Dt7F56/KYa7N9P9BGh+3f30dCe7uEwO9oP3O/sfXt9+
Cd8dvbp8cfT26eWblzuH/Yvx7Ca9eHs4+PrkXTJ591ocLPvv4miQ7oiDZ7fT
z/3/r3UfxoH+I7kz+LLb7e2e7jwb7A93euG7xcuv2dm7Ik0+vD4Jp9PDd2+G
p9PJbjMHnux5oww81TxN43NQru/zoZ8uDlx6vDpaXvR7i+GwdzE47C2Hvd7O
ePn67efoze7p/ot+b39399XX2ZvPSXr9OBPF/u3n3fgwXeSLt6dnHx62z0/b
18dvg3d5di0+PRrvfH4++JBN50+vZuc73eKm++Hl9k44Di5f7Azeq33+H4KX
NBSVYQAA

-->

</rfc>

