<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-schwenkschuster-wimse-credential-exchange-03" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="WIMSE Credential Exchange">WIMSE Credential Exchange</title>
    <seriesInfo name="Internet-Draft" value="draft-schwenkschuster-wimse-credential-exchange-03"/>
    <author fullname="Arndt Schwenkschuster" role="editor">
      <organization>Defakto Security</organization>
      <address>
        <email>arndts.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2025" month="October" day="20"/>
    <area>AREA</area>
    <workgroup>Workload Identity in Multi System Environments</workgroup>
    <keyword>workload</keyword>
    <keyword>identity</keyword>
    <keyword>credential</keyword>
    <keyword>exchange</keyword>
    <abstract>
      <?line 62?>

<t>WIMSE defines Workload Identity and its representation through credentials. Typically, a credential is provisioned to the workload, allowing it to represent itself. The credential format is usually chosen by the platform. Common formats are JSON Web Tokens or X.509 certificates. However, workloads often encounter situations where a different identity or credential is required.</t>
      <t>This document describes various situations where a workload requires another credential. It also outlines different ways this can be acchieved and compares them.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-wimse.github.io/draft-ietf-wimse-s2s-protocol/draft-ietf-wimse-s2s-protocol.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-schwenkschuster-wimse-credential-exchange/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Workload Identity in Multi System Environments Working Group mailing list (<eref target="mailto:wimse@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/wimse/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/wimse/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/arndt-s"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<section anchor="status">
      <name>Status</name>
      <t>This work has been postponed for the time being due to a lack of interest on the part of the working group. The authors and contributors believe this work to be more relevant in the future. If you are interested in this work, please contact the contributors of this draft.</t>
    </section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Workloads operating across various platforms typically receive identity credentials in platform-specific formats such as JWT tokens, X509 certificates, Kubernetes Service Accounts Tokens, SPIFFE SVIDs, or cloud provider metadata documents. These credentials, including their format, issuer, subject, and other attributes are determined by the platform infrastructure rather than the workload itself.</t>
      <t>When accessing external resources or other workloads, workloads must satisfy different authentication requirements specific to each resource they interact with. Resource access might require OAuth 2.0 Access Tokens, SPIFFE credentials, mutual TLS client certificates, or other authentication mechanisms that the workload cannot control or modify.</t>
      <t>This credential mismatch creates a fundamental challenge: workloads must bridge the gap between their platform-issued identity and the various authentication requirements of the resources they need to access. Solutions typically involve credential exchange mechanisms or leveraging platform-specific functionality.</t>
      <t>This specification:</t>
      <ul spacing="normal">
        <li>
          <t>Defines abstract mechanisms for credential delivery and exchange in <xref target="mechanisms"/></t>
        </li>
        <li>
          <t>Examines the rationale behind credential exchange requirements in <xref target="rationale"/></t>
        </li>
        <li>
          <t>Documents concrete implementation patterns based on these mechanisms in <xref target="patterns"/></t>
        </li>
      </ul>
      <section anchor="static-secrets">
        <name>Static secrets</name>
        <t>Credential exchange is a broad term and can be interpreted in many ways. This document focuses on the exchange of credentials that are issued to workloads on demand, such as JWTs, X.509 certificates, or other workload identity formats. It does not cover the exchange of static secrets, such as API keys or client secrets, which are typically provisioned out-of-band and do not involve a dynamic exchange process. This document rather sees static secrets as a special kind of resources that require strong authentication and authorization to access, but not as a credential exchange.</t>
        <t>Credentials returned as by this specification are:</t>
        <ul spacing="normal">
          <li>
            <t>short-lived</t>
          </li>
          <li>
            <t>issued on demand, but potentially cached</t>
          </li>
          <li>
            <t>are individual based on the credential used to authenticate</t>
          </li>
        </ul>
        <t>In contrast, static secrets are:</t>
        <ul spacing="normal">
          <li>
            <t>medium to long-lived</t>
          </li>
          <li>
            <t>provisioned out-of-band, often manually</t>
          </li>
          <li>
            <t>do not differ based on authentication, different callers get access to the same credential</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="mechanisms">
      <name>Mechanisms</name>
      <t>Workloads have multiple options to acquire credentials in the way they are required. The following terms divide them into four primary mechanisms and outlines their approaches:</t>
      <dl newline="true">
        <dt>Initial manual provisioning</dt>
        <dd>
          <t>Credentials are provisioned manually, often by an administrator. This is typically done out-of-band, such as through a configuration file, environment variable, or secret management system. This mechanism is not recommended for workload identity credentials. Within the document, this mechanism is not further discussed.</t>
        </dd>
        <dt>Initial platform provisioning</dt>
        <dd>
          <t>Credentials are issued during workload creation by the platform. The workload is "born" with them and they are available at startup. The format, scope, lifetime and other attributes are configured out of band and cannot be influenced at runtime. It is common that platforms allow only a single credential to be provisioned and only allow changes to scope.</t>
        </dd>
        <dt>On-demand platform issuance</dt>
        <dd>
          <t>Workloads are able to obtain credentials on-demand from the platform. Parameters allow the workload to specify exactly the required format, scope, identity, lifetime, and other attributes the workload requires. No authentication is necessary to request on-demand credentials. The platform is able to strongly identify the workload so this request is typically unauthenticated from the workload's point of view. Implementations may use the workload's initial provisioned credential in the background to authenticate the request, but this is not visible to the workload.</t>
        </dd>
        <dt>On-demand credential exchange</dt>
        <dd>
          <t>Workloads use an existing credential (provisioned manually or by the platform) to authenticate and authorize a request for a different credential. Based on parameters, the workload can specify the exact attributes of the credential it requires. The significant difference towards the on-demand platform issuance is that this is not necessarily within the platform and often an <strong>authenticated</strong> action.</t>
        </dd>
      </dl>
      <t>The outlined mechanisms are from the point of view of the workload. Specific mechanisms are often implemented by a combination of other mechanisms. For example, a platform on-demand provisioning mechanism may use an initial provisioned credential in combination with a credential exchange to issue a new credential. However, from the workload's perspective it is a platform on-demand provisioning mechanism, as it is not aware of the underlying implementation details.</t>
    </section>
    <section anchor="rationale">
      <name>Rationale</name>
      <t>Workloads often require credentials that differ from the ones they were initially provisioned with. This can be due to various reasons, such as changes in format, scope, identity, trust domain, or lifetime. The need for credential exchange arises when the workload needs to adapt to these changing requirements. The following sections outline the most common reasons for credential exchange, gives examples and provides recommendations for the mechanisms to use.</t>
      <section anchor="change-in-format">
        <name>Change in format</name>
        <t>Workloads may require a different format representing the same identity in the same trust domain. Some concrete examples are:</t>
        <ul spacing="normal">
          <li>
            <t>The initial credential was an X.509 certificate but resources require application-level authentication such as JWT or Workload Identity Tokens as defined in (TODO).</t>
          </li>
          <li>
            <t>The initial credential was a JWT bound to a key to be presented along with proof of possession, but the resource does not support it and requires a bearer credential.</t>
          </li>
        </ul>
        <t>"Credential format" is difficult to define abstractly. Some formats are opaque to the workload and should remain that way. For instance, how an OAuth 2.0 Bearer token is constructed, and whether it carries claims or not, is not a concern of the workload. That a bearer token is required, however, is known to the workload. So a change in format between a bearer token and an X.509 certificate is certainly a change in format the workload can require. A different encoding of a bearer token, on the other hand, is not and this specification does not address those cases.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Recommendation</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Initial platform provisioning</td>
              <td align="left">Caution</td>
              <td align="left">Risks preemptively issuing credentials that aren't used. See <xref target="use-on-demand-provisioning">security considerations</xref> for details.</td>
            </tr>
            <tr>
              <td align="left">On-demand platform issuance</td>
              <td align="left">Prefer</td>
              <td align="left">Credentials are issued on a need basis, allowing the workload to specify the format it requires &amp; keep lifetime short.</td>
            </tr>
            <tr>
              <td align="left">On-demand credential exchange</td>
              <td align="left">Caution</td>
              <td align="left">Requires an additional credential to authenticate the exchange. See <xref target="exchange-requires-authentication">security considerations</xref> for details.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="change-in-scope">
        <name>Change in scope</name>
        <t>A credential in the same format may represent the same identity, but is scoped differently. Examples are:</t>
        <ul spacing="normal">
          <li>
            <t>A JWT credential with an <tt>audience</tt> set to interact with the workload platform, but access to other workloads are required. The workload is in need of JWTs with different, dedicated audiences.</t>
          </li>
          <li>
            <t>An X.509 credential is constrained to a certain key usage, but the workload requires difference usage bits set. For instance, the existing certificate allows for <tt>digitalSignature</tt> but <tt>keyEncipherment</tt> or <tt>dataEncipherment</tt> is required.</t>
          </li>
        </ul>
        <t>Generally, scope should already be present and configured appropriately with the workload platform only issuing narrowly scoped credentials to the workload. However, the platform may only support the provisioning of a single credential and doesn't allow custom scoping.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Recommendation</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Initial platform provisioning</td>
              <td align="left">Caution</td>
              <td align="left">Risk of over-provisioning and over-scoping. Particularly when different scopes are required but initial provisioning only allows a single credential. See <xref target="use-on-demand-provisioning">security considerations</xref> for details.</td>
            </tr>
            <tr>
              <td align="left">On-demand platform issuance</td>
              <td align="left">Prefer</td>
              <td align="left">Credentials are issued on a need basis and can be scoped to the exact requirements of the workload.</td>
            </tr>
            <tr>
              <td align="left">On-demand credential exchange</td>
              <td align="left">Caution</td>
              <td align="left">Requires an additional credential to authenticate the exchange. See <xref target="exchange-requires-authentication">security considerations</xref> for details.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="change-in-identity">
        <name>Change in identity</name>
        <t>A workload may be known under multiple identities. For example:</t>
        <ul spacing="normal">
          <li>
            <t>A workload identity representing an exact physical instance of the workload may be eligible for a workload identity representing a logical unit that groups many physical instances together. Another example is a workload running in a specific region being eligible for a broader, geographically scoped identity.</t>
          </li>
          <li>
            <t>A workload that can act on behalf of other workloads. These workloads often are part of infrastructure such as API gateways, proxies, or service meshes in container environments.</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Recommendation</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Initial platform provisioning</td>
              <td align="left">Neutral. Avoid for on-behalf-of situations.</td>
              <td align="left">The authors believe that on-behalf-of should be an explicit operation and not by default to avoid ambiguity and keep trust boundaries clear.</td>
            </tr>
            <tr>
              <td align="left">On-demand platform issuance</td>
              <td align="left">Prefer</td>
              <td align="left">Credentials are issued on a need basis and can be scoped to the exact requirements of the workload.</td>
            </tr>
            <tr>
              <td align="left">On-demand credential exchange</td>
              <td align="left">Prefer for on-behalf-of situations.</td>
              <td align="left">Requires an additional credential to authenticate the exchange. See <xref target="exchange-requires-authentication">security considerations</xref> for details.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="change-in-trust-domain">
        <name>Change in trust domain</name>
        <t>A provisioned workload identity is often part of a trust domain that is coupled to infrastructure or deployment. Workloads often interact with other workloads or access outside resources located in different trust domains. This may require the client workload to retrieve an identity of the other trust domain. Examples here include:</t>
        <ul spacing="normal">
          <li>
            <t>Federation (a workload identity federates to a identity in a different trust domain). In existing workload identity environment OAuth2 with Token Exchange (TODO) and Assertion framework (TODO) are popular.</t>
          </li>
          <li>
            <t>A workload requires a credential of "higher trust" to interact with other workloads. This "higher trust" is facilitated by another trust domain. For instance, a workload may require a WebPKI certificate to offer a service to clients with "default" trust stores.</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Recommendation</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Initial platform provisioning</td>
              <td align="left">Avoid</td>
              <td align="left">Initial provisioning is limited to the issuer of the workload platform. Making initial provisioned credentials multi-issuer creates ambiguity.</td>
            </tr>
            <tr>
              <td align="left">On-demand platform issuance</td>
              <td align="left">Neutral</td>
              <td align="left">See <xref target="on-behalf-of-exchange">On-behalf-of exchange pattern</xref> for a combination of on-demand provisioning and exchange.</td>
            </tr>
            <tr>
              <td align="left">On-demand credential exchange</td>
              <td align="left">Prefer</td>
              <td align="left">A change in trust domain indicates a different issuer.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="change-in-lifetime">
        <name>Change in lifetime</name>
        <t>Credentials often come with time restrictions, or usage may be restricted based on token lifetime. For instance:</t>
        <ul spacing="normal">
          <li>
            <t>A resource denies the long-lived workload credential based on a maximum lifetime policy.</t>
          </li>
          <li>
            <t>An initial provisioned credentials has expired and renewal is unsupported.</t>
          </li>
          <li>
            <t>A credential with shorter lifetime would reduce replay risk.</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Recommendation</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Initial platform provisioning</td>
              <td align="left">Caution</td>
              <td align="left">Creates unnecessary long-lived credentials that are difficult to protect.</td>
            </tr>
            <tr>
              <td align="left">On-demand platform issuance</td>
              <td align="left">Prefer</td>
              <td align="left">Individual lifetimes that fit the exact need are possible.</td>
            </tr>
            <tr>
              <td align="left">On-demand credential exchange</td>
              <td align="left">Neutral</td>
              <td align="left">May be used to reduce lifetime, but should be avoided to increase or expand lifetime as a credential that expires later is effectively a higher trust. See <xref target="credential-exchange-cannot-increase-trust">security considerations</xref> for details.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="missing-provisioning-support">
        <name>Missing provisioning support</name>
        <t>A workload platform may not support the provisioning of credentials required by the workload. would likely fall under the reasons above, but it's a very common reason and often falls into multiple categories. As an example:</t>
        <ul spacing="normal">
          <li>
            <t>Workload platform provisions identity and credential in the form of a simple signed document that carries the attributes attested by the platform, but gives not access in any way.</t>
          </li>
        </ul>
        <table>
          <thead>
            <tr>
              <th align="left">Mechanism</th>
              <th align="left">Recommendation</th>
              <th align="left">Reason</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Initial platform provisioning</td>
              <td align="left">-</td>
              <td align="left">This section applies when initial provisioning is not supported.</td>
            </tr>
            <tr>
              <td align="left">On-demand platform issuance</td>
              <td align="left">-</td>
              <td align="left">This section applies when on-demand provisioning is not supported.</td>
            </tr>
            <tr>
              <td align="left">On-demand credential exchange</td>
              <td align="left">Neutral</td>
              <td align="left">Credential exchange may be used when no other mechanism is supported or supports the desired outcome. However, credential exchange still requires authentication. See <xref target="exchange-requires-authentication">security considerations</xref> for details.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="combinations">
        <name>Combinations</name>
        <t>Reasons for requesting or exchanging credentials are often not binary. A change in trust domain is effectively a change in identity as well. A change in format can require a change in trust domain, because formats come with different trust structures and security promises. For example, a trust domain issuing JSON Web Tokens may not be able to issue WebPKI certificates.</t>
      </section>
    </section>
    <section anchor="patterns">
      <name>Exchange patterns</name>
      <section anchor="format-specific-exchange">
        <name>Format-specific exchange</name>
        <t>The existing trust and identity framework often consist of a protocol or framework to exchange credentials. Leveraging this makes use of existing adoption and specific guidelines.</t>
        <t>The following bullets give an overview of the existing patterns and when to use them based on the needs given above:</t>
        <ul spacing="normal">
          <li>
            <t>OAuth Token Exchange <xref target="RFC8693"/> is:
            </t>
            <ul spacing="normal">
              <li>
                <t>meant for a change in scope.</t>
              </li>
              <li>
                <t>meant for a change in identity.</t>
              </li>
              <li>
                <t>to a certain extend meant for a change in format (limited).</t>
              </li>
              <li>
                <t>NOT meant for a change in trust domain.</t>
              </li>
            </ul>
          </li>
          <li>
            <t>OAuth Assertion Framework <xref target="RFC7521"/> is:
            </t>
            <ul spacing="normal">
              <li>
                <t>meant for a change in trust domain. As a result of the change in trust domain, a change in identity, scope and, potentially, format is unavoidable but not the primary use case.</t>
              </li>
              <li>
                <t>NOT meant for exchanges within a trust domain.</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="on-behalf-of-exchange">
        <name>On-behalf-of exchange</name>
        <t>Workload environments can be highly dynamic and connected with a high variety of resources protected by different identity frameworks and formats. A format-agnostic component that exchanges credentials on behalf of the workload may be desired to remain control of credential issuance. For instance, it might enforce policy, collect audit trails, or aid management.</t>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="240" width="808" viewBox="0 0 808 240" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
              <path d="M 8,160 L 8,224" fill="none" stroke="black"/>
              <path d="M 72,96 L 72,112" fill="none" stroke="black"/>
              <path d="M 72,144 L 72,160" fill="none" stroke="black"/>
              <path d="M 152,32 L 152,96" fill="none" stroke="black"/>
              <path d="M 216,160 L 216,224" fill="none" stroke="black"/>
              <path d="M 280,32 L 280,96" fill="none" stroke="black"/>
              <path d="M 368,96 L 368,128" fill="none" stroke="black"/>
              <path d="M 368,160 L 368,192" fill="none" stroke="black"/>
              <path d="M 480,32 L 480,96" fill="none" stroke="black"/>
              <path d="M 624,32 L 624,96" fill="none" stroke="black"/>
              <path d="M 800,32 L 800,96" fill="none" stroke="black"/>
              <path d="M 8,32 L 152,32" fill="none" stroke="black"/>
              <path d="M 280,32 L 480,32" fill="none" stroke="black"/>
              <path d="M 624,32 L 800,32" fill="none" stroke="black"/>
              <path d="M 152,64 L 272,64" fill="none" stroke="black"/>
              <path d="M 480,64 L 616,64" fill="none" stroke="black"/>
              <path d="M 8,96 L 64,96" fill="none" stroke="black"/>
              <path d="M 80,96 L 152,96" fill="none" stroke="black"/>
              <path d="M 280,96 L 480,96" fill="none" stroke="black"/>
              <path d="M 624,96 L 800,96" fill="none" stroke="black"/>
              <path d="M 8,160 L 64,160" fill="none" stroke="black"/>
              <path d="M 80,160 L 216,160" fill="none" stroke="black"/>
              <path d="M 224,192 L 368,192" fill="none" stroke="black"/>
              <path d="M 8,224 L 216,224" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="624,64 612,58.4 612,69.6" fill="black" transform="rotate(0,616,64)"/>
              <polygon class="arrowhead" points="280,64 268,58.4 268,69.6" fill="black" transform="rotate(0,272,64)"/>
              <polygon class="arrowhead" points="232,192 220,186.4 220,197.6" fill="black" transform="rotate(180,224,192)"/>
              <polygon class="arrowhead" points="80,160 68,154.4 68,165.6" fill="black" transform="rotate(90,72,160)"/>
              <polygon class="arrowhead" points="80,96 68,90.4 68,101.6" fill="black" transform="rotate(270,72,96)"/>
              <g class="text">
                <text x="200" y="36">2)request</text>
                <text x="536" y="36">4)request</text>
                <text x="220" y="52">credential</text>
                <text x="556" y="52">credential</text>
                <text x="60" y="68">Workload</text>
                <text x="340" y="68">Credential</text>
                <text x="424" y="68">Exchanger</text>
                <text x="684" y="68">Credential</text>
                <text x="756" y="68">issuer</text>
                <text x="28" y="132">1)</text>
                <text x="92" y="132">Provisioning</text>
                <text x="324" y="148">3)</text>
                <text x="372" y="148">validate</text>
                <text x="60" y="196">Workload</text>
                <text x="132" y="196">Platform</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+-----------------+ 2)request     +------------------------+  4)request      +---------------------+
|                 |   credential  |                        |    credential   |                     |
|  Workload       +-------------->|  Credential Exchanger  +---------------->|  Credential issuer  |
|                 |               |                        |                 |                     |
+-------^---------+               +----------+-------------+                 +---------------------+
        |                                    |
  1) Provisioning                            |
        |                              3) validate
+-------v-----------------+                  |
|                         |                  |
|  Workload Platform      |<-----------------+
|                         |
+-------------------------+
]]></artwork>
        </artset>
        <ol spacing="normal" type="1"><li>
            <t>The Workload Platform issues credential to the workload. This can be either "initial", during workload startup or "on-demand", once the workload requires it. See <xref target="mechanisms"/> for more details.</t>
          </li>
          <li>
            <t>The Workload requests a new credential from the Credential Exchanger by specifying at least the issuer, format, and identity. Potentially, it also specifies lifetime and scope. It authenticates itself with the credential it has received from the Workload Platform.</t>
          </li>
          <li>
            <t>The Credential Exchanger validates the credential it receives. For simplicity, the diagram shows this as a interaction with the Workload Platform, but other means of validations are also possible.</t>
          </li>
          <li>
            <t>The Credential Exchanger requests a credential from the Credential Issuer. Also, for simplicity this step shows the interaction with a third party. However, this may also be the Workload Platform itself. Authentication and other step details depend on the scenario, format, and trust framework.</t>
          </li>
        </ol>
        <t>The author believes that a specific protocol that fits all credential formats and trust frameworks is infeasible while maintaining the existing security promises. He rather believes that a profile for each scenario is the best way forward and welcomes everyone to profile this document for their concrete use cases. As a general guidance it is recommended to:</t>
        <ul spacing="normal">
          <li>
            <t>narrowly scope the scenarios, instead of building a one-fits-all exchange for a specific format.</t>
          </li>
          <li>
            <t>decouple authentication and access control from the actual exchange as best as possible. For example, a credential of one profile should be allowed as a means of authentication to exchange to a credential of a different profile, whether or not the profiles are aware of each other.</t>
          </li>
          <li>
            <t>allow the workload to specify at least issuer, identity and format when requesting a credential. Lifetime and scope could be optionally specified, based on the need and support for it.</t>
          </li>
          <li>
            <t>keep multi-stepped issuance in mind. Some formats and trust frameworks may require the workload to perform challenges, like responding to a nonce or providing a signature.</t>
          </li>
        </ul>
        <t>The "Credential Exchanger" shown in the figure <bcp14>MAY</bcp14> be the Workload Platform itself that offers this capability. It <bcp14>MAY</bcp14> be offered during a "re-provisioning" without authentication.</t>
      </section>
    </section>
    <section anchor="consideration">
      <name>Consideration</name>
      <section anchor="credential-exchange-cannot-increase-trust">
        <name>Credential exchange cannot increase trust</name>
        <t>A credential exchange is an authenticated method to retrieve credential(s). Thus, the issued credential cannot be given a higher trust level than the credential that was used to authenticate the request. This is particularly relevant when a required credential, due to its format and framework, is of a higher trust than the one that was used to authenticate the request. This includes exchanging credentials without proof of key possession for credentials that do carry proof of possession.</t>
        <t>These situations are not recommended. Workloads <bcp14>SHOULD</bcp14> be provisioned with the credential of the highest trust and only retrieve less-trusted credentials via credential exchange.</t>
        <t>Alternatively, the authentication request should be enriched with additional identification that increases the level of authentication. For example, along with authentication, the workload would provide additional proof of platform attestation.</t>
      </section>
      <section anchor="exchange-requires-authentication">
        <name>Credential exchange cannot replace initial or platform provisioning</name>
        <t>Because credential exchange is authenticated it cannot be the first credential that is issued. Without an initial credential or a platform on-demand requested credential a workload cannot facilitate credential exchange, as there is no proof the workload is eligible for the requested credential.</t>
      </section>
      <section anchor="use-on-demand-provisioning">
        <name>Initial provisioning comes with over-provisioning risk</name>
        <t>Provisioning credentials preemptively risks being exposed to overprovisioning credentials that are not required. For example, with initial provisioning, every workload is provisioned with a default credential, even though some don't require it. This unnecessarily increases the risk of those credentials being exposed.</t>
        <t>On-demand-based provisioning, on the other hand, only issues credential when requested and mitigates this. They are exactly in the scope, format, identity and lifetime that are required. This can significantly decrease the number of unnecessarily issued and provisioned credentials.</t>
      </section>
      <section anchor="exchange-to-renew">
        <name>Expanding credential lifetime</name>
        <t>A change in lifetime of a credential can be critical if it can be used to effectively keep a credential alive. One example is an issued short-lived bearer credential that can be used to exchange for a new, longer-lived credentials. Thus, it is highly recommended to only use on-demand provisioning to re-request a new credential.</t>
        <t>On the other hand, it is valid to leverage token exchange to request a shorter-lived credential whose lifetime is within the bound of the credential used for authenticating the request.</t>
        <t>If an exchange to a longer-lived credential is required, it is recommended to prevent this from re-occurring and deploy policy to not allow a continuous exchange to longer-lived credentials.</t>
      </section>
      <section anchor="involvement-of-human-transactional-or-other-contextual-credentials">
        <name>Involvement of human, transactional or other contextual credentials</name>
        <t>Although this document focuses heavily on workload identity, workloads often deal with other credentials carrying caller, transactional, or contextual information. This could include an access token of the caller used to authorize the request. or an OAuth Transaction Token that was part of the request coming from another workload carrying transactional data.</t>
        <t>These credentials and their formats, lifetime, scope, etc. are not covered by this document. However, they may be used as parameters or authentication to request additional credentials that combine multiple identities into a single credential.</t>
        <t>Some concrete examples are:</t>
        <ul spacing="normal">
          <li>
            <t>An access token and a workload identity credentials are used to request an OAuth Transaction Token.</t>
          </li>
          <li>
            <t>An on-behalf-of scenario where a workload identity is used as actor, and a different, contextual credential unrepresentative of the workload is used as a subject in an OAuth Token Exchange.</t>
          </li>
        </ul>
        <t>On-demand platform provisioning or credential exchange <bcp14>MAY</bcp14> be used to issue any of those contextual credentials to the workload. Existing contextual credentials <bcp14>MAY</bcp14> be supplied as parameters. Initial-based provisioning is not suitable with existing contextual credentials as it does not support parameters. In situations where the workload's identity does not play a role and only the contextual credentials are used as authentication, credential exchange is the preferred mechanism.</t>
      </section>
      <section anchor="offline-attenuation">
        <name>Credential formats supporting offline attenuation</name>
        <t>Some credential formats allow the scope of the credential to be reduced offline, without interaction to an issuing party ("offline attenuation"). In these situations no exchange or on-demand provisioning is required and workloads can "act on their own." Examples of these formats are <xref target="Macaroons"/> or <xref target="Biscuit"/> tokens. The provisioning of a credential that supports offline attenuation is still required in the first place.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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 anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7521">
          <front>
            <title>Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="Y. Goland" initials="Y." surname="Goland"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>This specification provides a framework for the use of assertions with OAuth 2.0 in the form of a new client authentication mechanism and a new authorization grant type. Mechanisms are specified for transporting assertions during interactions with a token endpoint; general processing rules are also specified.</t>
              <t>The intent of this specification is to provide a common framework for OAuth 2.0 to interwork with other identity systems using assertions and to provide alternative client authentication mechanisms.</t>
              <t>Note that this specification only defines abstract message flows and processing rules. In order to be implementable, companion specifications are necessary to provide the corresponding concrete instantiations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7521"/>
          <seriesInfo name="DOI" value="10.17487/RFC7521"/>
        </reference>
        <reference anchor="RFC8693">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </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="Macaroons" target="https://theory.stanford.edu/~ataly/Papers/macaroons.pdf">
          <front>
            <title>Cookies with Contextual Caveats for Decentralized Authorization in the Cloud</title>
            <author initials="A." surname="Birgisson">
              <organization/>
            </author>
            <author initials="J. G." surname="Politz">
              <organization/>
            </author>
            <author initials="U." surname="Erlingsson">
              <organization/>
            </author>
            <author initials="M." surname="Vrable">
              <organization/>
            </author>
            <author initials="M." surname="Lentczner">
              <organization/>
            </author>
            <date year="2014"/>
          </front>
        </reference>
        <reference anchor="Biscuit" target="https://doc.biscuitsec.org/reference/specifications">
          <front>
            <title>Biscuit, a bearer token with offline attenuation and decentralized verification</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
    <?line 340?>

<section anchor="document-history">
      <name>Document History</name>
      <t><cref>RFC Editor: please remove before publication.</cref></t>
      <section anchor="draft-schwenkschuster-wimse-credential-exchange-03">
        <name>draft-schwenkschuster-wimse-credential-exchange-03</name>
        <ul spacing="normal">
          <li>
            <t>Add wording that this work is postponed</t>
          </li>
          <li>
            <t>Update affiliation</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-wimse-credential-exchange-02">
        <name>draft-schwenkschuster-wimse-credential-exchange-02</name>
        <ul spacing="normal">
          <li>
            <t>Rephrased introduction</t>
          </li>
          <li>
            <t>Added scope consideration for static secrets</t>
          </li>
          <li>
            <t>Moved to a 4-level mechanism classification, added manual, rephrased existing ones to make it more clear what is platform-based.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-wimse-credential-exchange-01">
        <name>draft-schwenkschuster-wimse-credential-exchange-01</name>
        <ul spacing="normal">
          <li>
            <t>Fix typo that wrongly said OAuth2 assertion flow is not meant for inter-trust domain exchanges (meant was "intra").</t>
          </li>
          <li>
            <t>Rephrased X509 change of scope example to be more clear.</t>
          </li>
          <li>
            <t>Sharpened ways of provisioning, renamed "provisioning" to "initial provisioning" and "re-provisioning" to "on-demand provisioning".</t>
          </li>
          <li>
            <t>Add "Change in lifetime" need.</t>
          </li>
          <li>
            <t>Add considerations for the involvement of contextual, transactional and human credentials</t>
          </li>
          <li>
            <t>Add consideration for credential formats supporting offline-attenuation.</t>
          </li>
          <li>
            <t>Describe "Credential Exchanger" pattern.</t>
          </li>
          <li>
            <t>Clean up for IETF 122.</t>
          </li>
        </ul>
      </section>
      <section anchor="draft-schwenkschuster-wimse-credential-exchange-00">
        <name>draft-schwenkschuster-wimse-credential-exchange-00</name>
        <ul spacing="normal">
          <li>
            <t>Initial individual draft &amp; write up.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Big shoutout to the WIMSE token exchange design team (Dean Saxe, Yaroslav Rosomakho, Andrii Deinega, Dmitry Izumskiy, Ken McCracken and George Fletcher) that have done amazing groundlaying work in this area.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact fullname="Ken McCracken">
        <organization>Google</organization>
        <address>
      </address>
      </contact>
      <contact fullname="Marcel Levy">
        <organization>Defakto Security</organization>
        <address>
      </address>
      </contact>
      <contact fullname="Andrew McCormick">
        <organization>Aembit</organization>
        <address>
      </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA909bXPbxpnf8Sv2mJnGdkk6dtxrq8mlVWQ5UWpZPkup2+n0
JktgSe4JBBgsQJlRnN9yv+V+2T0v+wqAkpOZm+TOXyyRwO6zz/vrajabZa1u
S3UkJm/Pzi9PxUmjClW1Wpbi9F2+ltVKTTK5WDRqd/czuWzVqm72R0JXyzrL
ijqv5AYWLhq5bGcmX9+o6hr+60yrmtmN3hg1y/1KM2VXmn3yaWa6xUYbo+uq
3W9hibPTqxdZ1W0WqjnKCtjoKMvryqjKdOZItE2nMoDu00w2Sh6J4zenx9lN
3VyvmrrbItTwc1nLQpzRZu0eQBTnXdlqcbkHaDbitNrppq428LWZZNdqD68X
R5mYiRv7Lv6s7ev4c4Acf3PAZztVdQCdED93byH4yPSirlbiS1wIP99IXcLn
hLg/a9Uu53Wzwi9kk6/hi3Xbbs3R48f4HH6kd2ruHnuMHzxeNPWNUY9phcf4
5kq3624B78qmKoBG+FkJ6DVttB6uMbtZMcXm/Mpc14+ZrvwtEdM8NbNtU7d1
Xpd3fztft5tykmWya9d1Q3gWy64smWGOERhxmTIMQCYEnERW+nvZAmcciedq
Ka/bWlyqvGuILPBPMZroQIbO/+cVfjTP6w090NTI7arQbd1kyEZtoxddi2D0
4PiLAkrlJ43Mr1U1sv+Xdb0qVf+tc0C1KsVLtdt/CMz9s1dFo25w27rZ6Px6
ZIljtVnoNssqeAI+2hG7vXlx8vvfPX0C3xqjGnxQLMv6hr/5w7/+8dMjcVXD
MQKnopRGC5zLXDY1CNURbWmVwkldX2tlxA1QHX6pWvWu7UDsT+ROydYIWAKO
lAPrNrLU36tCHBNJLbDI6+1aiZOy7gpeVzYrBdzlmAu+BZ0xN61EcIq5KrrH
P8pWlvvHr+VWNQbY2QI23xZLWoMUgHj6yZNn9KtnIvoHUgpnEMdz8YVuVqBE
6ir95uu5+HIuXtelbr9Pv/lmLk6bEmRu+NL5XPy1kQugdv/jl3D2/PuKGPQL
bfJOtwkG7WdTIcVCgX5qREt0IIzWyyXsp4RsW9AbjDJZFaJIULpTjV7qnL4e
RSKo2vmC9zEqJ3lv1FI1qsrVY7NVuX/dZNlsNhNyYWD1HJiIFXqhlgCGEUNl
hdDAqqJR20aBwm0ZyHYNWmm1jrSgmYur/Ra2Kcs9HjZ8I7QRIPg7jfocjgPc
jzzhFCs8XAKnoqrTLX7pt8KNVbmEheHxaD3mW1y2Mx3uJ/J1DS+IxZ5W3oIK
w2fmwLGbDUoCvWBAKSjx9eXFK/FWLVgcDMiW+Nv8d5/8UeQoNoQnBWf5qr5R
gPepBxOeXLYoP1VedyAHjTC6ZZKBeKwB2XDoQi8J7a03Fbh+iopGfddp+GSe
ZVdr+B2I16HuByKYHFQRkGEnG113ZmwHB45bBg5V1XDoeJe5OGsBqaYWddeW
RNgA2I3cG8ASbJxLwBismYOpgLMWRGvQkluJy8Kamzlzy0YXBeq5j8QlkL8z
FnAERaylgUUAL9vatFuiL+oEJEOrNwq+Q8IWnULKSjAu+TUgEqQHMAhmRtSs
IGDPFj93jIEvkQVl4rOIGwuh19i4dYmw84EIINgGDrWpAVuNKtVOIjF4k2XX
do0C7CzFvu6IGxwcADY9ZFeZAg8paRRtBnJCrycbE6xIPTRzc8TNGXxbF11O
Upq9DWwDWgyICAeSeVObQF3HpgYtPgsOgJwrUMiBfSIBQwjdOzMn1Z63TZev
BRDj67dXrGHMVPytz9dT8ZcOfKhKwc9ggpqdzpU4zomjjZWIqbh8ffbixam4
/OvZc/gNGRjVN8twAZy2Ua0EHSw96xqikomFFF7UVV52BR4csKcbCyl8bkyH
kgVO3n+qHDUjUJV5GPQgYVixrBYAJ1hBZKqeaKOP2UhQYoDvDkkt6f0WTFui
XJwKAYKsgUmB1xW4lQAS2DHAA0gkUL/uwGKTJmAovMjH0r8BL0QYIKRZ7iNx
Qs7EE7N6dVJJSBGeRsCTSgJ53F4I4p55D5kLTcFcvHFfMpAgdat16xYUF2hX
xdP5J0gu/LpHrATzm46M9NXLSyCdRjBTJvAn7UG/UegbaIMsuZZtiklQF6Bp
WArqEtfY1ICHvdNjkZYD3x0onZN5kERMkL2qkIgW+Bo2KUsFPshRH7+LRhcr
Qo9YyS0IcnuDuoX5x/M+MVARZAT5B19xgnUXTayOCVQnUlSK7RKjfi4u67Jj
vRtEU1e7utwlhsj5UjHiAC8lWg65QjYbkdeuIhUBtr31uEtsNPihj9BPJMXt
LHW8xTK1KQXoQNiQ8eBBAmVxexteev8eFj19Jze0KqFAMhioo9caFevIwRLc
0ZL+NVrxudMAyBewQAsbb0B3brynsEXfpgFMLkCfFlbfmwRltK57DpbNPmJL
A9gCdwYWBYtzMgKcRsaCmAaYE/UEWwc2aiRbW4SHFPtGVnuyfKioYpu7hB8M
yj6rDb80sEmseUkayF4w6wGrRH5BBSSAHYpprIRR/Q78iulQyQQ2tpqcrHdR
A1AsbjvVDGAzCXbCvsevzwQEr4aVNkm+f+ZmrfEhOETg6dgtA19hVi9nC8Qi
+aA1AeDYHrT9HkIU2NUDAm+zuKQ4tbrYKDhCCiiCKJnZgY7XyHRwmFgWZdB4
wPc1Gs1UmAm6JMTwYjsVYDkIZtpmhJ3nMR+hJwa2A4+OPsye7XkiiYgtkMaZ
MLBfO0MxK+A3ywQR3XHjbd3ywuiPgranR9nHKDQYTtTIsQzEAHbG6p9wWPC3
zirWtmDnpgNMWsg2EMh2G3y3BGx5EA8QdmqdWICaHGd40pKZLVoAMEX7NLJ4
yDkQlwmIQJypsh69AQUf50XAKToPUn77UaSNYgdpDbEkqP+y1aA4wF2yihfJ
ypzQ84HIKsk9a27ZqOBRk6+4rF04gUoBXV/0WsifRbVQwwMdGJNGbyTozEgN
kRviHGY2OXILiERaQlSc3R7tzFbm6j0QRrOdIzQGZMOm2ZGIWQzBi2nhEO8I
sUCtLWQBalmjogff0oqTjm1PAS+ndHQS7wIxiayy1KuO9bNY6lJNIVjxqSWy
jhjBkg5iNkJw5IqUtTCUjLKbe6wgGMge4JdCKKWqwvr3Q+2VRIJvwaOxlHJq
YcryNVh52TWkLgqMX42huMjh13t792DYCmTRNUj24LGg94HIGMSFV4mLaMRk
UTfVhGNyYhTrUjB/yR1m1AB14J+iHDati0ucS2ty8PKnotRLRVHPQY/WEYnF
ErWf17fWvyLjtSw7jN0L3LAB3xzWJLOAbhaHtKQqQwRBITTILfAKKFjAQpno
Fw6KYkYkCOlxepP1I0kdnQWIcFHNWL1FTjfgWQJcQIIgvoQhRA68Wy9aCXSP
Bbb2yyybetOjw2vZgM5oUZ0wHInHicCQOt6DBgcfqNxb343FvY99x4qBDgdC
i2QTF0fPxau6b2yQRRVqONQUlJn4ruOg1Z0pzX8kAYrxWGFLhi4kPbvcpxCY
mkXDrZ5IflfFNiFConv9Ywgka9BryEs7rW6ATxIHDEQOdCUYmP5b2glZxBVx
poLFdwEBOwbi1cA+eVooNE9oAVurt5CNcUl7/HjfhK9GLHTCWQi0xIwlqEYU
7Oj5B2NKFRVbT9QfDqCOHQj0ahzWUavFCZw4nfKFs4pbz6/TQXDkeZWdNfTZ
I56zcUeM4DbiPWQdo1cVuR5V6+HAWLG+kU3BXFsflkliGw7aAhUc92pAzk3Q
yf5lEg8yRAD/o0cJqz16BAYYOYiCFOVMY5GYTJD9INYxG8bJHCK8uHQRUO99
3t9HDRzroznbLHTFcghrsRCHV+fiBRAM0IzvYb7RnynCUWQ1IsPj5EFWHyAD
MRhkHkYdS+QyMkLwdQWHj5nHZxJHRRdYCfDSUs6n5Yjmg08yRQeA3yKv94bR
SXuAwKqm3FNWNQ3ICgU6GtQVumdvfAx4+1EI7JLsFVHH+eSDmMi6jf5odeVC
6htFrq+2HnGMYc53XEU5SJsfdAE82G1TV1Fc48yTrg4r/bbBDEJRb8ACkY/j
rABLF4X4vcjZkw/2xSjwZq166SN8i33RQm5bq80w0YXvIXLjALnvfxqVswa2
okNLb2rTOiNuz3kIrKlYAV8Yx+XsodosnAkumVXzLu0aJ3FqZPQ5BdQnPi3A
GIyJjBLhSBzrQJto9wl5m8tjR997flap0IcxETCNslEhMRCOQbHLI8KWk8Do
+DcYvlXD6JlsTAgWPcDbbWkN9gwzL2XfiseZUcDRsMZhKwHwCNdBKGXw4Ori
+cXD+T1g0qILbx4x+PbOFqEMXS2MzFh5APFQly0xW24UFbid6Qw5qRD8m267
hcATZRxJH1L+rpQU6Zksm0Q5EqbcBFUDklPnEF4hYHxAn1Uq95ZIcYWk3srv
uoHlJgggDu5KBATpyxoAIjHWxbrCIl4OXLsGRw4IGFKWX8SFL/JhK07dqoJd
NBA80u8aw8umwYpjXkrN6TTAxNTrOGIn1VRD+3JFOZq0yBaVWwgsVsTw6XVV
31QD5wRwgTv0JMWnIXuLs+M+wqd4QvgVUETu+GC9gedgYZyL40j4sNBE2XM4
abrz1GUQ2CiuKSB0CKLAZZDI8Cwli6KhkB0rZrA5cCGwzg8hUBc/iDeJZqEP
UE+JH7IfZuFf/HP6ATwn7gzhYMkT2bnFtbnGAqFSmy3aQfSTwZSmDl9IwVUf
t5QuAWIpJf5hbB2deAqrE6wN//ngI3ho5i3oLN7+IelKZwfxWOKOYAdAfE3V
VIR6PPDEfAkbmIU02kQVzUPxTOuDx9gPFL8BBaK2IY6kvFMfwjEDliA0VAaR
3JrNei8cHHjyPkd2H159n46Depbq2wF2U+tDdjvLjkdiDbIgFitsklwheGB0
WGsim+NyRRAb1GinfUNzTGo61t3kyVXiW9kVGr3sb8FYk4JMijIp+Rxn8N4h
9dUrGo2kpOJUA5yVOAWkGrPEvI8HfwqIK2yo52AzaISOvaJJismsSaW2dXXp
FA8Zos5IdCKcfRmWjqMog54VCyz1Ayb6Gp0ZxIVhkaojRmff49tCr3Qry0sI
YyQW5b6lnb8FSE6rXG8BSeglfSvoWdnK9NO0Mv6lqoAMlCgjCjvLI0vwmYp9
ZGBdTdilVShlt200QGeDnnEqcvbDaZoKrE59Ax9Yfko0T99KeI8+iaWQY2lN
Z7Xp21jrkSIfJmc42a4MajabjQEnChxqhAWe/hXoZ4rA4MiJGuXoET91gGI+
p0VfQzaIe/Smgz0jzKbSwULcj8EIVT41ZcZw9itW/nEVyjKTZSDOCYxVIwNr
/X/S9L5bEpS9Fz+UEsAM+18UpIbUv31BqzS6typ8mHJO4hJKFCGCt+u9weSZ
V199LDsYVAkKC3NUnPq5b31R1itat6uwTwndEepQMVxdHGyLimNFbi34dbZH
x56I4/ygj7uKmF5XrjqGaZJGrSh3TQ00PVip6IkaaKXqVSO3a5sttAznTjBP
EUcwI2simmjptSyXIbviTZhr5+j3PlE1w3bq9Bow4grkCjgNi61TlOl32pY9
jW032Siz5lCemmvAdDVxneKXcUdfqQ7b7YBSu1pzngDUByNohgVX34kFfJ60
JIUOJNn23mGTtbBJTIxSgXFsO5AtZVLGf49hmbQRmiQA5GYB9sw1N5BTyKE1
xZrSRkgQE/yf1GAWoHuw/OvWbnGmAzVckuAaqBLtRMiJj0wWYO4hf64D/VCw
J5oIGMGyLes94n0u+hm61G/tu6SoNNhfrbsW0RDlUcqa3U0dG+sYOFfgj7NE
lMvmBoM4vGlU25A0yCrqgFxGwWqaIPKe+pqzhdgwxvr+hXK0Eg/GdPOSv+eS
lUySUfLAOR7OQQ0EN3a4ZlwtpeTFU8YmN067SQebGSIpiZqtsTBADYjua9SV
9RZ9oZ4ajtI4ES8DliZrvfI4mgyjkREtjbXL9C34ZClzXYIr7nLp1RjqUwdf
ptYxJAPfqsXrv5wlPj+GPJT1lV6nw0fMDTaemViFNrGbgjvb/EKJBlbo0XPx
14CsUm90G1QcNycOXIZQsjyX12yr76ocGHZqZnY13wbntPqHaG1rkuAnUmQX
saIMLTjcNQXqLFakfpbmofUX+sWU8cJC3D/2kxQ5YDnKciWKDZtfctsDGHVH
E16GStUlPtI+HdZwOeYpOZ7D1Ah27TaaE+zkX3AEa3079y3bNNtzQ2IcqgKx
BFgfM6RgVaVtpTj01SSdBQ4boWMG9n6nN90mpG+2Ndj8vQ3f7+MY7KQGL4Hi
Is72VuBFUZTfVTamxNgY4eynMihPpELJAyDlPG3R5YgM4C8QagjkfuFY8sQK
Aji8vq4e4Xe05S7JX+MAkcoHKbE7vZ6z0H/l8GOXX+o28mvIA2K1bah4/WEy
EOT0nHnPNXNZ7IdmBIx2I6cQFZMz9aghDBl5YAHcK7SS9OwEAc58YmhWq0EO
USBZuc2eShFbhHv9oLERPO5FmTm4ZrTSqEN0rrmfOiG55dYk8EvyJHFxYyxN
EjNCSBbse64mM3mpr/HUSwiAbEDJxRQurclFvbOo1+3HiEtqlU0KcFEZHFcx
3Cbmw1I72Ehh6bGxgaYPTN8ODugPY9IW5WHCk/NQnBWiuBBbADCb6VopbcTG
FRF8I24nalseXOi1PPBhuXJIGX92/NAx4ibYX0QHzChswoQtF0W5bOdqrqM5
IJ0UwdQgthgT+ru3OWD37tvoPrkf603eRLqA9q7qfg8Dpa/dnhQh8y9M6UIZ
bdvE0PJFWccxcMClLcvIs0wimf+lUCj4FCbL3kSlbNtSQ7LcOBj79ZzQ+kEx
MKzU7Od3+BF9HZcP8kyoKm9UWaar2HpCVGZLXk67BhYql9ga4sqhwefohxQ+
MONw2eMWGGuDvQSD/pTeaTjt3B9Gc7pxEVrquK1k6IZzA8dpzxHENlvfSU9k
ekFHCfMHvtOKmnp8NMTg0bSfD7F8SOMcMGAbY6NXN8mLFA4P4qCLgyhpjXsZ
RiK4DVReK27wIm/WAiEL7v5llDqIwWPGEYeKjpx2WCy6ssRuaNR2qJgxGx13
H/mVPXpstbmyvRHc7Zm0ZXPLB65YsfUgNc/F7F4keHtrh2vfvwc64djnIxBv
WblussBmtqny8AMhZYfPJKUcHFWqigPvWfZ+YMOYh/z+q4urA88nQWA4WAhk
X3hi0ulwqPje06WRJdpI9KTRZXNtbwfkbQwDruJDVe2oqX4az31W5D2RjLim
f/YjuKu7s7XtMWw4BjWuI072kQJSMxpthZaZJGHpcmXodWGvth2TsHUpcHRb
2/NkPTNqc1KcGAlpGOvZsj0fmSP1QsY87IdFju2PM7mqaoMjAjjCCdGFcx/C
edO23Cj9O5Ydd/aHHFlSWn7ya5kWIdn49jMK4FrzBJvCwe7cBUNgvkB6FTZH
dgW63w3aFArgpC6ihnSgw48//iil2a2y3/Zdj9lvxdOHrnMT/w2f8A+KZ8mT
Bx79LVj8/j/8JDqpGD4RPZg8eeBRdCuCwzgKzufwxMj1Gs0I3L1Hba6BNxkD
8I7f7/ji0EkcOP8Rozr5FwGcwt5/8DBN7oU3hUmIJw8h7otcu3se/6DVP30I
EltqvHXAn3o3xmjDHQ6vPPJNyh2vnXfL3332QRwbljooEPAeyFWWPeHWhOF+
xEeml2bvt1qF1k2lyaudWBd+Mh2MYdiJCRTxiffAJ9jElKdN6cF/1TZsTScY
SX3TZLfvYX3aO4WVdDPoww0tqqPSBTrXtuaQH9IKHP9uo4ygsz7TxEfCeyQi
A6Xt2L11XTBAjydC2Amg4fyoamHsjHLoVUibxDEvZMfCo/b/Ad3m2aeMi9Hz
OQY2o13otLh1WSkSxUrVnvsbCi1XYHowcXFjLw6glIRLTfvG6FGoOBh1gY+s
qGBkgaEImaZHEGc+6ZI9u+McEX3voe2ZTTEew+JEvOhktkOuVVt/LDU8kMTH
moJKNvuk68MWQwjuhRo/ub+84ng4wMj4oP0tJ2NtR1XeBzW5qrAXOuU6dlO8
I2C9YS5EujqkS5wF99l76i7lRbM2w/s0zNgehluWliANVH6+WesSg1tNlVvX
4ebd7JEw6Cs/nN+HEJ7BKTV2ynA83p2aRxlwLtlQfyk+gTMQ7LyrEqMyCAcx
kYNzcZwWpKXa3nBvY+f4fA9y55se2U1dcZ8RxRg8RdFyJ1IYd2trCgDSDqGE
SnTXAVBTUlfXotNlwR0DAN0MET5DhPvAiL3n3gUOmNctFJf/RmdeOYvjfDDP
8cCwXdLJbhht0kRpzF4omladEIUOf1F2EkMsHo2VQXJ7gMXhHocsycpxxt/u
MPWtvtzY67J/+J1VBm6KgViCJAVxc/d4mFfYTlkniTcbN1DYF+UmYnAhQh1o
aizGMjI4KuUOC6vacei3HzXyqzatiVTWRFaq3nM9CEWeGjT80E4FXnJV9Luw
xwSxX36N8bBVDekcf7OCmVJeFOMLiAX4Eg4kUEVGt27sGAGjwbiOPatRJmOq
d0Kq0t/oxO124vz47/dpQNsZgYzgL57ZyoWm+w/QGNo16IkwxSnFpFFJ5xbP
Z+LYZC+9hYmQkzinxfmpkTSZnbH0+XZCcq8ZNbleIBmEptkngCAtdYdXH5iH
aLo6OxxmuyuipcOIp00vJJl6wdML/g6TftIfBw7GBsXjQbwwPLyNW/H8TTgk
AzLk1MMeUzeEo/laL5QYntq0HDjlJoY+0B5cUsU/FU6u+JtDSUJHcD83gW2t
YXaiNzjjZpJqSpnvx6YtmMONiq9WQn3Tm3GO+ysuv7r45uXz/vzsmLNmI2lC
j2mjlBp1M3qGAU1nuKLSK3nt9KFbC45Luq2Gk5/MXSOXnOCmQYOrqtF4C4F1
ZkIDjZ1C9UqcWk+sRNiSJzHiQN/3DUmYa+nfFpDoJy7T2LmlGJBAHz+PSDUN
L9V3CjFVNfMwmlM3B4oPt/fmt99n2Rc283tIESRagMZUnCizNmxMOxBYEkTU
ATwQT5or1DpixmnGx/4sUVMlErVqWCBCv8f4FBldE0ANNljosGhPSITZ9bjD
MJLUZHMmymgrBTtl3Kcy6BTG0jPQ4XBXLlAgidtjsUhGQxqaFrFNke9AsFnP
4JbbQwv4UjKzjevMT5iZAB8rQ03Z0UxwNVAE0nfwxQpV7WickO5nMGjfixp7
vJ0R104Lhmq4pnuGYlFsbPe1ndeJTpXgIJ6rnrFjkh5iZGLIN8Cn0X7sJlmf
ZgNoWdnoUXN3KN+M4Mby3QAHz2T6i75iJ8xHwp4a8YyEzSdEI9CYSVXOTKOD
Rbe/Iip66GIrmxT1Ur3KTHtKdfXeGLkHKtIRbT2j1ov35BcMWlPYBKZGHdVA
DnEP9/8urX6IewHi2hX5g8kSEtsf5uKi8kOS1vmwh4uunxlO/oW23ni/NNiA
40yp0QIEc9Bq4XwWDn1sFjuNgJhXqFwzXkIlh2jmjNBgCBq5czixRvtRMoDu
r+ESkbJ9OnFgEda1jS6DQwDXonx4ImkTz7vzgOZwBJ+wRRiKzIGNaZ2jkmVn
S675x4HOAVymA4djsSRqsx3n5rFTD8M4QFydQ9zcuB4s7vO0CXN8h8r4FADR
/CPA2OGYdAzSQeJajU2XOFFUDGhYd0BBnJiGsE7a28jCzVR5uOY1WoicENZl
/Sibr9BaK7lDgcT0Sb+1cniNZqFc71L/9krD3htJKl011AOUbyQMMPp7bNFB
YU1CDof1LcmHd7NayFiODWjtxFHlKyESLxV5w02yXgUobCHQu7vx9ZWOWYHq
eAYisWvBjCy3PWJKAxyL8i5qUi3n+2j8LYomvuTEql3V5nNv5ujeMNccEpEr
nV7aJ30KfBB3IUs9uB4wlsSxfmxrabnZUI3NdXBnzdhAT5bdMyx+3CMjJUXu
voeIkBG6sSzkB8lp+/TSjnSXkhrcvxq3djvswWp1M7WgRTN9oxIFdiy+VHc3
nFOJV3a3ZXIfz2g5evzOnrS1avz6AxuBO1TZmyyqfeR4jOqEYWXg1A8Jjr9g
d8IkSan7LDd3nuWIBxOadMDRpUwk6g51z3Z8P8Zgnj7dcnjNbnymj6MuLr8Q
9VNKuko8BHikVQ7A0QQR68dKByIOToxhC2MT37kyCIvC/a90Nm6gG94qffuR
/XQWffreSd1ILtjn2zgXNjSefM0BNzkWbs+pD9njdDrKfGh6oXy6eDAZAXPC
PfptP0SvIo+Gh0YO9HH5xAalir3NQe9oYqeeWI3WN9V8EuYP+HgmvQjh9tZf
iv7+Pe57e2tv84Zf+Y5de+nTYMqz75751q4x2lAtIurfKkKSDcNKCnNdkgt9
B85awAHpklBtO7AQEEyP4F8uMGJy/s3l1WTK/2MHBP785vTfvzl7c/ocf778
6vjlS/9DZp/gZEf4Kbx5cnF+fvrqOb+MHRXJR9kEJHvCqm9y8frq7OLV8cuJ
v1PZOwt0/WTdv6FTmsxdfk1n/+Lk9X//15NngO9/efPi5OmTJ38EhPMvf3jy
+2fwCwYp0yB6/CsatExut+Ahk5rEKofc4kyyoSCYE5go4dj58g/EzD+PxGeL
fPvk2ef2Azxw8qHDWfIh4Wz4yeBlRuLIRyPbeGwmn/cwncJ7/Pfkd4f36MPP
/kTcNnvyhz99ntEN3q5CkyRMkX0unl9Ef5UAfMbjV8fDpxJqYmkSRJOeZFE3
9spwvDYMF3H3w4qvNM6A7LPPQDKWnwMhxSn9BYYjd9N2ozbgsgBnLLHAu+0W
7lKX+WeP6R1SfD/jb4mgVS9IGdi7qN0dWdTkpE24uRye/GZb0Fj7cqlLHXLJ
P3nbp7jtG7VdN2TJdHw3OMGjQpEhwjDXKdOrbx+J83rnxvuf2StuQhNpXkpj
fDZvip6ZvxJtikkyC4I3lXxFU00teNSlg/imWUIQI85a+VuLyQ7Pfx4KntAY
l36Hl9nV1lW29+AZbPWxE1Yy+XsVzsyHdi3SE7OkezJ0ND3g59AFnyCO5YRu
7AmI5xvQw725hHIXY0dXxfMsJbx6uZbNVlFiBy/Kx+RkkkcBhw5cB1ByaWUC
lpqMZY8mrBEHlQx8ftyKTeaWYSfDsZgJlZncA2kbr8/b6TTWCx5JP+DDnSkS
TMK8kbX791Mddjli52JOt1izVj9UUrJtmfjoCVCgEt2WNsO/9yOePH36M1nv
E2Q9l6WMrt+lhcRvgA811oK3ZFSPcxxGL1Wxom6+7PaIU02q+LfJEjCiJpge
1itKrbfo2livl/90Ri9bgW1zK7B6Sm7Eg+d4pEv5Dtyiv4MfYUq5E29qA1x8
va6n9LdetAYkAeZWciqeb3Tb7MXZ993GXGsImpM/QEP0+lLVDezyooRgDwzZ
Q5YrukGX7oiVG/m9+9sJVQFequvE8aYY/0TSPPsfmsBjRfhpAAA=

-->

</rfc>
