<?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.5 (Ruby 3.2.2) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc text-list-symbols="-o*+"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tschofenig-rats-psa-token-23" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.3 -->
  <front>
    <title abbrev="PSA Attestation Token">Arm's Platform Security Architecture (PSA) Attestation Token</title>
    <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-23"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="S." surname="Frost" fullname="Simon Frost">
      <organization>Arm Limited</organization>
      <address>
        <email>Simon.Frost@arm.com</email>
      </address>
    </author>
    <author initials="M." surname="Brossard" fullname="Mathias Brossard">
      <organization>Arm Limited</organization>
      <address>
        <email>Mathias.Brossard@arm.com</email>
      </address>
    </author>
    <author initials="A." surname="Shaw" fullname="Adrian Shaw">
      <organization>HP Labs</organization>
      <address>
        <email>adrianlshaw@acm.org</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2024" month="June" day="24"/>
    <area/>
    <workgroup/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 162?>

<t>The Arm Platform Security Architecture (PSA) is a family of hardware and firmware
security specifications, as well as open-source reference implementations, to
help device makers and chip manufacturers build best-practice security into
products. Devices that are PSA compliant can produce attestation tokens
as described in this memo, which are the basis for many different
protocols, including secure provisioning and network access control.  This
document specifies the PSA attestation token structure and semantics.</t>
      <t>The PSA attestation token is a profile of the Entity Attestation Token (EAT).
This specification describes what claims are used in an attestation token
generated by PSA compliant systems, how these claims get serialized to the
wire, and how they are cryptographically protected.</t>
      <t>This informational document is published as an independent submission to improve
interoperability with Arm's architecture. It is not a standard nor
a product of the IETF.</t>
    </abstract>
  </front>
  <middle>
    <?line 181?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Platform Security Architecture (PSA) <xref target="PSA"/> is a set of hardware and firmware
specifications, backed by reference implementations and a security
certification program <xref target="PSACertified"/>.  The security specifications have been published by Arm,
while the certification program and reference implementations are the result of
a collaborative effort by companies from multiple sectors, including evaluation
laboratories, IP semiconductor vendors and security consultancies.  The main objective of
the PSA initiative is to assist device manufacturers and chip makers in
incorporating best-practice security measures into their products.</t>
      <t>Many devices now have trusted execution environments that provide a safe
space for security-sensitive code, such as cryptography, secure boot, secure
storage, and other essential security functions.  These security
functions are typically exposed through a narrow and well-defined interface,
and can be used by operating system libraries and applications.</t>
      <t>As outlined in the RATS Architecture <xref target="RFC9334"/>, an Attester produces a signed collection
of Claims that constitutes Evidence about its target environment. This document focuses
on the output provided by PSA's Initial Attestation API <xref target="PSA-API"/>. This output
corresponds to Evidence in <xref target="RFC9334"/> and, as a design decision, the PSA attestation token
is a profile of the Entity Attestation Token (EAT) <xref target="EAT"/>. Note that there are other profiles
of EAT available, such as <xref target="I-D.kdyxy-rats-tdx-eat-profile"/> and <xref target="I-D.mandyam-rats-qwestoken"/>,
for use with different use cases and by different attestation technologies.</t>
      <t>Since the PSA tokens are also consumed by services outside the device, there is an actual
need to ensure interoperability. Interoperability needs are addressed here by
describing the exact syntax and semantics of the attestation claims, and
defining the way these claims are encoded and cryptographically protected.</t>
      <t>Further details on concepts expressed below can be found in the PSA Security
Model documentation <xref target="PSA-SM"/>.</t>
      <t>As mentioned in the abstract, this memo documents a vendor extension
to the RATS architecture, and is not a standard.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
      <t>The terms Attester, Relying Party, Verifier, Attestation Result, Target Environment, Attesting Environment and Evidence
are defined in <xref target="RFC9334"/>. We use the term "receiver" to refer to Relying Parties
and Verifiers.</t>
      <t>We use the terms Evidence, "PSA attestation token", and "PSA token" interchangeably.
The terms "sender" and Attester are used interchangeably. Likewise, we use the terms
Verifier and "verification service" interchangeably.</t>
      <dl newline="true">
        <dt>RoT:</dt>
        <dd>
          <t>Root of Trust, the minimal set of software, hardware and data that has to be
implicitly trusted in the platform - there is no software or hardware at a
deeper level that can verify that the Root of Trust is authentic and
unmodified.  An example of RoT is an initial bootloader in ROM, which contains
cryptographic functions and credentials, running on a specific hardware
platform.</t>
        </dd>
        <dt>SPE:</dt>
        <dd>
          <t>Secure Processing Environment, a platform's processing environment for
software that provides confidentiality and integrity for its runtime state,
from software and hardware, outside of the SPE. Contains trusted code and
trusted hardware.  (Equivalent to Trusted Execution Environment (TEE),
"secure world", or "secure enclave".)</t>
        </dd>
        <dt>NSPE:</dt>
        <dd>
          <t>Non Secure Processing Environment, the security domain outside of the SPE,
the Application domain, typically containing the application firmware,
real-time operating systems, applications and general hardware.  (Equivalent to Rich Execution
Environment (REE), or "normal world".)</t>
        </dd>
      </dl>
      <t>In this document, the structure of data is specified in Concise Data Definition Language (CDDL) <xref target="RFC8610"/>.</t>
    </section>
    <section anchor="psa-attester-model">
      <name>PSA Attester Model</name>
      <t><xref target="fig-psa-attester"/> outlines the structure of the PSA Attester according to
the conceptual model described in <xref section="3.1" sectionFormat="of" target="RFC9334"/>.</t>
      <figure anchor="fig-psa-attester">
        <name>PSA Attester</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="496" width="560" viewBox="0 0 560 496" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,144 L 8,432" fill="none" stroke="black"/>
              <path d="M 24,160 L 24,272" fill="none" stroke="black"/>
              <path d="M 24,304 L 24,416" fill="none" stroke="black"/>
              <path d="M 40,336 L 40,384" fill="none" stroke="black"/>
              <path d="M 96,304 L 96,336" fill="none" stroke="black"/>
              <path d="M 144,336 L 144,384" fill="none" stroke="black"/>
              <path d="M 160,192 L 160,256" fill="none" stroke="black"/>
              <path d="M 160,336 L 160,384" fill="none" stroke="black"/>
              <path d="M 208,256 L 208,336" fill="none" stroke="black"/>
              <path d="M 264,192 L 264,256" fill="none" stroke="black"/>
              <path d="M 272,336 L 272,384" fill="none" stroke="black"/>
              <path d="M 288,336 L 288,384" fill="none" stroke="black"/>
              <path d="M 304,208 L 304,240" fill="none" stroke="black"/>
              <path d="M 328,288 L 328,336" fill="none" stroke="black"/>
              <path d="M 368,208 L 368,240" fill="none" stroke="black"/>
              <path d="M 400,336 L 400,384" fill="none" stroke="black"/>
              <path d="M 408,192 L 408,256" fill="none" stroke="black"/>
              <path d="M 416,336 L 416,384" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 464,72 L 464,192" fill="none" stroke="black"/>
              <path d="M 464,304 L 464,336" fill="none" stroke="black"/>
              <path d="M 512,32 L 512,64" fill="none" stroke="black"/>
              <path d="M 520,192 L 520,256" fill="none" stroke="black"/>
              <path d="M 520,336 L 520,384" fill="none" stroke="black"/>
              <path d="M 536,160 L 536,272" fill="none" stroke="black"/>
              <path d="M 536,304 L 536,416" fill="none" stroke="black"/>
              <path d="M 552,144 L 552,432" fill="none" stroke="black"/>
              <path d="M 424,32 L 512,32" fill="none" stroke="black"/>
              <path d="M 424,64 L 512,64" fill="none" stroke="black"/>
              <path d="M 8,144 L 456,144" fill="none" stroke="black"/>
              <path d="M 472,144 L 552,144" fill="none" stroke="black"/>
              <path d="M 24,160 L 456,160" fill="none" stroke="black"/>
              <path d="M 472,160 L 536,160" fill="none" stroke="black"/>
              <path d="M 160,192 L 264,192" fill="none" stroke="black"/>
              <path d="M 320,192 L 352,192" fill="none" stroke="black"/>
              <path d="M 408,192 L 520,192" fill="none" stroke="black"/>
              <path d="M 264,224 L 296,224" fill="none" stroke="black"/>
              <path d="M 376,224 L 408,224" fill="none" stroke="black"/>
              <path d="M 160,256 L 264,256" fill="none" stroke="black"/>
              <path d="M 320,256 L 352,256" fill="none" stroke="black"/>
              <path d="M 408,256 L 520,256" fill="none" stroke="black"/>
              <path d="M 24,272 L 200,272" fill="none" stroke="black"/>
              <path d="M 216,272 L 536,272" fill="none" stroke="black"/>
              <path d="M 112,288 L 448,288" fill="none" stroke="black"/>
              <path d="M 24,304 L 88,304" fill="none" stroke="black"/>
              <path d="M 104,304 L 200,304" fill="none" stroke="black"/>
              <path d="M 216,304 L 320,304" fill="none" stroke="black"/>
              <path d="M 336,304 L 456,304" fill="none" stroke="black"/>
              <path d="M 472,304 L 536,304" fill="none" stroke="black"/>
              <path d="M 40,336 L 88,336" fill="none" stroke="black"/>
              <path d="M 104,336 L 144,336" fill="none" stroke="black"/>
              <path d="M 160,336 L 200,336" fill="none" stroke="black"/>
              <path d="M 216,336 L 272,336" fill="none" stroke="black"/>
              <path d="M 288,336 L 320,336" fill="none" stroke="black"/>
              <path d="M 336,336 L 400,336" fill="none" stroke="black"/>
              <path d="M 416,336 L 456,336" fill="none" stroke="black"/>
              <path d="M 472,336 L 520,336" fill="none" stroke="black"/>
              <path d="M 40,384 L 144,384" fill="none" stroke="black"/>
              <path d="M 160,384 L 272,384" fill="none" stroke="black"/>
              <path d="M 288,384 L 400,384" fill="none" stroke="black"/>
              <path d="M 416,384 L 520,384" fill="none" stroke="black"/>
              <path d="M 24,416 L 536,416" fill="none" stroke="black"/>
              <path d="M 8,432 L 552,432" fill="none" stroke="black"/>
              <path d="M 112,464 L 136,464" fill="none" stroke="black"/>
              <path d="M 216,464 L 240,464" fill="none" stroke="black"/>
              <path d="M 328,464 L 344,464" fill="none" stroke="black"/>
              <path d="M 320,192 C 311.16936,192 304,199.16936 304,208" fill="none" stroke="black"/>
              <path d="M 352,192 C 360.83064,192 368,199.16936 368,208" fill="none" stroke="black"/>
              <path d="M 320,256 C 311.16936,256 304,248.83064 304,240" fill="none" stroke="black"/>
              <path d="M 352,256 C 360.83064,256 368,248.83064 368,240" fill="none" stroke="black"/>
              <path d="M 112,288 C 103.16936,288 96,295.16936 96,304" fill="none" stroke="black"/>
              <path d="M 448,288 C 456.83064,288 464,295.16936 464,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="472,72 460,66.4 460,77.6" fill="black" transform="rotate(270,464,72)"/>
              <polygon class="arrowhead" points="384,224 372,218.4 372,229.6" fill="black" transform="rotate(180,376,224)"/>
              <polygon class="arrowhead" points="304,224 292,218.4 292,229.6" fill="black" transform="rotate(0,296,224)"/>
              <polygon class="arrowhead" points="248,464 236,458.4 236,469.6" fill="black" transform="rotate(0,240,464)"/>
              <polygon class="arrowhead" points="144,464 132,458.4 132,469.6" fill="black" transform="rotate(0,136,464)"/>
              <circle cx="96" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="208" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="328" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="352" cy="464" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="464" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <g class="text">
                <text x="468" y="52">Verifier</text>
                <text x="392" y="116">PSA</text>
                <text x="432" y="116">Token</text>
                <text x="72" y="180">Attesting</text>
                <text x="160" y="180">Environment</text>
                <text x="188" y="212">Main</text>
                <text x="332" y="212">Main</text>
                <text x="448" y="212">Initial</text>
                <text x="212" y="228">Bootloader</text>
                <text x="332" y="228">Boot</text>
                <text x="464" y="228">Attestation</text>
                <text x="280" y="244">W</text>
                <text x="336" y="244">State</text>
                <text x="392" y="244">R</text>
                <text x="448" y="244">Service</text>
                <text x="92" y="356">Updateable</text>
                <text x="216" y="356">Application</text>
                <text x="344" y="356">Application</text>
                <text x="440" y="356">PSA</text>
                <text x="472" y="356">RoT</text>
                <text x="64" y="372">PSA</text>
                <text x="96" y="372">RoT</text>
                <text x="184" y="372">RoT</text>
                <text x="324" y="372">Loader</text>
                <text x="468" y="372">Parameters</text>
                <text x="60" y="404">Target</text>
                <text x="136" y="404">Environment</text>
                <text x="32" y="452">Legend:</text>
                <text x="164" y="468">read</text>
                <text x="272" y="468">write</text>
                <text x="392" y="468">measure</text>
                <text x="120" y="484">R</text>
                <text x="224" y="484">W</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                                                    .----------.
                                                    | Verifier |
                                                    '----------'
                                                         ^
                                                         |
                                               PSA Token |
                                                         |
.--------------------------------------------------------|----------.
| .------------------------------------------------------|--------. |
| | Attesting Environment                                |        | |
| |                .------------.     .-----.     .------+------. | |
| |                | Main       |    | Main  |    | Initial     | | |
| |                | Bootloader +--->| Boot  |<---+ Attestation | | |
| |                |            | W  | State |  R | Service     | | |
| |                '-----+------'     '-----'     '-------------' | |
| '----------------------|----------------------------------------' |
|           .------------+--------------+---------------.           |
| .--------|-------------|--------------|----------------|--------. |
| |        |             |              |                |        | |
| | .------o-----. .-----o-------. .----o--------. .-----o------. | |
| | | Updateable | | Application | | Application | | PSA RoT    | | |
| | | PSA RoT    | | RoT         | | Loader      | | Parameters | | |
| | '------------' '-------------' '-------------' '------------' | |
| | Target Environment                                            | |
| '---------------------------------------------------------------' |
'-------------------------------------------------------------------'
Legend:
             ---> read    ---> write    ---o measure
              R            W
]]></artwork>
        </artset>
      </figure>
      <t>The PSA Attester is a relatively straightforward embodiment of the RATS
Attester with exactly one Attesting Environment and one or more Target Environments.</t>
      <t>The Attesting Environment is responsible for collecting the information to be
represented in PSA claims and to assemble them into Evidence. It is made of two
cooperating components:</t>
      <ul spacing="normal">
        <li>
          <t>The Main Bootloader, executing at boot-time, measures the Target Environments - i.e., loaded software
components, and all the relevant PSA RoT parameters -, and stores the recorded
information in secure memory (Main Boot State). See <xref target="fig-psa-attester-boot"/>.</t>
        </li>
      </ul>
      <figure anchor="fig-psa-attester-boot">
        <name>PSA Attester Boot Phase</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="352" viewBox="0 0 352 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,80 L 8,192" fill="none" stroke="black"/>
              <path d="M 80,64 L 80,208" fill="none" stroke="black"/>
              <path d="M 192,64 L 192,208" fill="none" stroke="black"/>
              <path d="M 304,64 L 304,208" fill="none" stroke="black"/>
              <path d="M 344,80 L 344,192" fill="none" stroke="black"/>
              <path d="M 8,80 L 72,80" fill="none" stroke="black"/>
              <path d="M 88,80 L 184,80" fill="none" stroke="black"/>
              <path d="M 200,80 L 296,80" fill="none" stroke="black"/>
              <path d="M 312,80 L 344,80" fill="none" stroke="black"/>
              <path d="M 96,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 192,176 L 296,176" fill="none" stroke="black"/>
              <path d="M 8,192 L 72,192" fill="none" stroke="black"/>
              <path d="M 88,192 L 184,192" fill="none" stroke="black"/>
              <path d="M 200,192 L 296,192" fill="none" stroke="black"/>
              <path d="M 312,192 L 344,192" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="304,176 292,170.4 292,181.6" fill="black" transform="rotate(0,296,176)"/>
              <circle cx="88" cy="128" r="6" class="opendot" fill="white" stroke="black"/>
              <g class="text">
                <text x="52" y="36">i-th</text>
                <text x="100" y="36">Target</text>
                <text x="172" y="36">Main</text>
                <text x="212" y="36">Boot</text>
                <text x="284" y="36">Main</text>
                <text x="324" y="36">Boot</text>
                <text x="80" y="52">Environment</text>
                <text x="196" y="52">Loader</text>
                <text x="304" y="52">State</text>
                <text x="36" y="100">loop</text>
                <text x="64" y="100">i</text>
                <text x="120" y="116">measure</text>
                <text x="224" y="148">write</text>
                <text x="248" y="164">measurement</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
    i-th Target    Main Boot     Main Boot
    Environment      Loader        State
         |             |             |
.--------|-------------|-------------|----.
| loop i |             |             |    |
|        | measure     |             |    |
|        |o------------+             |    |
|        |             | write       |    |
|        |             | measurement |    |
|        |             +------------>|    |
'--------|-------------|-------------|----'
         |             |             |
]]></artwork>
        </artset>
      </figure>
      <ul spacing="normal">
        <li>
          <t anchor="para-ias-intro">The Initial Attestation Service (executing at run-time in SPE) answers
requests coming from NSPE via the PSA attestation API <xref target="PSA-API"/>, collects
and formats the claims from Main Boot State, and uses the Initial Attestation
Key (IAK) to sign them and produce Evidence. See <xref target="fig-psa-attester-runtime"/>.</t>
        </li>
      </ul>
      <t>The word "Initial" in "Initial Attestation Service" refers to a limited set of
Target Environments, namely those representing the first, foundational stages
establishing the chain of trust of a PSA device.
Collecting measurements from Target Environments after this initial phase is outside the scope of this specification. Extensions of this specification could collect up-to-date measurements from additional Target Environments and define additional claims for use within those environments, but these are, by definition, custom.</t>
      <figure anchor="fig-psa-attester-runtime">
        <name>PSA Attester Run-time Phase</name>
        <artset>
          <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="360" viewBox="0 0 360 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,96 L 8,192" fill="none" stroke="black"/>
              <path d="M 80,80 L 80,288" fill="none" stroke="black"/>
              <path d="M 184,208 L 184,240" fill="none" stroke="black"/>
              <path d="M 216,80 L 216,288" fill="none" stroke="black"/>
              <path d="M 312,80 L 312,288" fill="none" stroke="black"/>
              <path d="M 352,96 L 352,192" fill="none" stroke="black"/>
              <path d="M 8,96 L 72,96" fill="none" stroke="black"/>
              <path d="M 88,96 L 208,96" fill="none" stroke="black"/>
              <path d="M 224,96 L 304,96" fill="none" stroke="black"/>
              <path d="M 320,96 L 352,96" fill="none" stroke="black"/>
              <path d="M 88,176 L 216,176" fill="none" stroke="black"/>
              <path d="M 8,192 L 72,192" fill="none" stroke="black"/>
              <path d="M 88,192 L 208,192" fill="none" stroke="black"/>
              <path d="M 224,192 L 304,192" fill="none" stroke="black"/>
              <path d="M 320,192 L 352,192" fill="none" stroke="black"/>
              <path d="M 184,208 L 216,208" fill="none" stroke="black"/>
              <path d="M 184,240 L 208,240" fill="none" stroke="black"/>
              <path d="M 216,272 L 304,272" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="312,272 300,266.4 300,277.6" fill="black" transform="rotate(0,304,272)"/>
              <polygon class="arrowhead" points="216,240 204,234.4 204,245.6" fill="black" transform="rotate(0,208,240)"/>
              <polygon class="arrowhead" points="96,176 84,170.4 84,181.6" fill="black" transform="rotate(180,88,176)"/>
              <g class="text">
                <text x="216" y="36">Initial</text>
                <text x="60" y="52">Main</text>
                <text x="100" y="52">Boot</text>
                <text x="216" y="52">Attestation</text>
                <text x="80" y="68">State</text>
                <text x="216" y="68">Service</text>
                <text x="316" y="68">Verifier</text>
                <text x="36" y="116">loop</text>
                <text x="64" y="116">i</text>
                <text x="108" y="116">read</text>
                <text x="136" y="132">measurement</text>
                <text x="196" y="132">of</text>
                <text x="108" y="148">i-th</text>
                <text x="156" y="148">Target</text>
                <text x="136" y="164">Environment</text>
                <text x="156" y="228">sign</text>
                <text x="240" y="260">PSA</text>
                <text x="280" y="260">Token</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                       Initial
     Main Boot       Attestation
       State           Service     Verifier
         |                |           |
.--------|----------------|-----------|----.
| loop i | read           |           |    |
|        | measurement of |           |    |
|        | i-th Target    |           |    |
|        | Environment    |           |    |
|        |<---------------+           |    |
'--------|----------------|-----------|----'
         |            .---+           |
         |       sign |   |           |
         |            '-->|           |
         |                | PSA Token |
         |                +---------->|
         |                |           |
]]></artwork>
        </artset>
      </figure>
      <t>The Target Environments can be of four types, some of
which may or may not be present depending on the device architecture:</t>
      <ul spacing="normal">
        <li>
          <t>(A subset of) the PSA RoT parameters, including Instance and Implementation
IDs.</t>
        </li>
        <li>
          <t>The updateable PSA RoT, including the Secure Partition Manager and all PSA
RoT services.</t>
        </li>
        <li>
          <t>The (optional) Application RoT, that is any application-defined security
service, possibly making use of the PSA RoT services.</t>
        </li>
        <li>
          <t>The loader of the application software running in NSPE.</t>
        </li>
      </ul>
      <t>A reference implementation of the PSA Attester is provided by <xref target="TF-M"/>.</t>
    </section>
    <section anchor="sec-psa-claims">
      <name>PSA Claims</name>
      <t>This section describes the claims to be used in a PSA attestation token.
A more comprehensive treatment of the EAT profile(s) defined by PSA is found in <xref target="sec-profiles"/>.</t>
      <t>CDDL <xref target="RFC8610"/> along with text descriptions is used to define each claim
independent of encoding.  The following CDDL type(s) are reused by different
claims:</t>
      <artwork><![CDATA[
psa-hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64
]]></artwork>
      <t>Two conventions are used to encode the Right-Hand-Side (RHS) of a claim: the postfix <tt>-label</tt> is used for EAT-defined claims, and the postfix <tt>-key</tt> for PSA-originated claims.</t>
      <section anchor="caller-claims">
        <name>Caller Claims</name>
        <section anchor="sec-nonce-claim">
          <name>Nonce</name>
          <t>The Nonce claim is used to carry the challenge provided by the caller to demonstrate freshness of the generated token.</t>
          <t>The EAT <xref target="EAT"/> <tt>nonce</tt> (claim key 10) is used.  Since the EAT nonce claim offers flexiblity for different
attestation technologies, this specifications applies the following constraints
 to the <tt>nonce-type</tt>:</t>
          <ul spacing="normal">
            <li>
              <t>The length MUST be either 32, 48, or 64 bytes.</t>
            </li>
            <li>
              <t>Only a single nonce value is conveyed. The array notation MUST NOT be used for encoding the nonce value.</t>
            </li>
          </ul>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-nonce = (
    nonce-label => psa-hash-type
)
]]></artwork>
        </section>
        <section anchor="sec-client-id">
          <name>Client ID</name>
          <t>The Client ID claim represents the security domain of the caller.</t>
          <t>In PSA, a security domain is represented by a signed
integer whereby negative values represent callers from the NSPE and where
positive IDs represent callers from the SPE. The value 0 is not permitted.</t>
          <t>For an example definition of client IDs, see the PSA Firmware Framework <xref target="PSA-FF"/>.</t>
          <t>It is essential that this claim is checked in the verification process to
ensure that a security domain, i.e., an attestation endpoint, cannot spoof a
report from another security domain.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-client-id-nspe-type = -2147483648...0
psa-client-id-spe-type = 1..2147483647

psa-client-id-type = psa-client-id-nspe-type / psa-client-id-spe-type

psa-client-id = (
    psa-client-id-key => psa-client-id-type
)
]]></artwork>
        </section>
      </section>
      <section anchor="target-identification-claims">
        <name>Target Identification Claims</name>
        <section anchor="sec-instance-id-claim">
          <name> Instance ID</name>
          <t>The Instance ID claim represents the unique identifier of the Initial
Attestation Key (IAK).  The full definition is in <xref target="PSA-SM"/>.</t>
          <t>The EAT <tt>ueid</tt> (claim key 256) of type RAND is used.  The following constraints
apply to the <tt>ueid-type</tt>:</t>
          <ul spacing="normal">
            <li>
              <t>The length MUST be 33 bytes.</t>
            </li>
            <li>
              <t>The first byte MUST be 0x01 (RAND) followed by the 32-byte unique identifier of the IAK. <xref target="PSA-API"/> provides implementation options for deriving the IAK unique identifier from the IAK itself.</t>
            </li>
          </ul>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-instance-id-type = bytes .size 33

psa-instance-id = (
    ueid-label => psa-instance-id-type
)
]]></artwork>
        </section>
        <section anchor="sec-implementation-id">
          <name>Implementation ID</name>
          <t>The Implementation ID claim uniquely identifies the hardware assembly of the
immutable PSA RoT. A verification service uses this claim to locate the
details of the PSA RoT implementation from an Endorser or manufacturer.
Such details are used by a verification service to determine the security properties
or certification status of the PSA RoT implementation.</t>
          <t>The value and format of the ID is decided by
the manufacturer or a particular certification scheme. For example, the ID
could take the form of a product serial number,
database ID, or other appropriate identifier.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <t>Note that this identifies the PSA RoT implementation, not a particular instance.
To uniquely identify an instance, see the Instance ID claim <xref target="sec-instance-id-claim"/>.</t>
          <artwork><![CDATA[
psa-implementation-id-type = bytes .size 32

psa-implementation-id = (
    psa-implementation-id-key => psa-implementation-id-type
)
]]></artwork>
        </section>
        <section anchor="sec-certification-reference">
          <name>Certification Reference</name>
          <t>The Certification Reference claim is used to link the class of chip and PSA RoT
of the attesting device to an associated entry in the PSA Certification
database. It MUST be represented as a string made of nineteen numeric
characters: a thirteen-digit <xref target="EAN-13"/>, followed by a dash "-", followed by
the five-digit versioning information described in <xref target="PSA-Cert-Guide"/>.</t>
          <t>Linking to the PSA Certification entry can still be achieved if this claim is
not present in the token by making an association at a Verifier between the
reference value and other token claim values - for example, the Implementation
ID.</t>
          <t>This claim MAY be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-certification-reference-type = text .regexp "[0-9]{13}-[0-9]{5}"

psa-certification-reference = (
    ? psa-certification-reference-key => 
        psa-certification-reference-type
)
]]></artwork>
        </section>
      </section>
      <section anchor="target-state-claims">
        <name>Target State Claims</name>
        <section anchor="sec-security-lifecycle">
          <name>Security Lifecycle</name>
          <t>The Security Lifecycle claim represents the current lifecycle state of the PSA
RoT. The state is represented by an integer that is divided to convey a major
state and a minor state. A major state is mandatory and defined by <xref target="PSA-SM"/>.
A minor state is optional and 'IMPLEMENTATION DEFINED'. The PSA security
lifecycle state and implementation state are encoded as follows:</t>
          <ul spacing="normal">
            <li>
              <t>major[15:8] - PSA security lifecycle state, and</t>
            </li>
            <li>
              <t>minor[7:0] - IMPLEMENTATION DEFINED state.</t>
            </li>
          </ul>
          <t>The PSA lifecycle states are illustrated in <xref target="fig-lifecycle-states"/>. For PSA,
a Verifier can only trust reports from the PSA RoT when it is in SECURED or
NON_PSA_ROT_DEBUG major states.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <figure anchor="fig-lifecycle-states">
            <name>PSA Lifecycle States</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="528" width="472" viewBox="0 0 472 528" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 24,272 L 24,416" fill="none" stroke="black"/>
                  <path d="M 24,448 L 24,480" fill="none" stroke="black"/>
                  <path d="M 104,48 L 104,64" fill="none" stroke="black"/>
                  <path d="M 112,144 L 112,160" fill="none" stroke="black"/>
                  <path d="M 128,352 L 128,400" fill="none" stroke="black"/>
                  <path d="M 144,240 L 144,272" fill="none" stroke="black"/>
                  <path d="M 144,480 L 144,512" fill="none" stroke="black"/>
                  <path d="M 160,272 L 160,288" fill="none" stroke="black"/>
                  <path d="M 160,320 L 160,344" fill="none" stroke="black"/>
                  <path d="M 208,64 L 208,120" fill="none" stroke="black"/>
                  <path d="M 208,160 L 208,232" fill="none" stroke="black"/>
                  <path d="M 208,400 L 208,416" fill="none" stroke="black"/>
                  <path d="M 208,448 L 208,472" fill="none" stroke="black"/>
                  <path d="M 232,208 L 232,232" fill="none" stroke="black"/>
                  <path d="M 264,280 L 264,304" fill="none" stroke="black"/>
                  <path d="M 264,336 L 264,352" fill="none" stroke="black"/>
                  <path d="M 280,240 L 280,272" fill="none" stroke="black"/>
                  <path d="M 280,480 L 280,512" fill="none" stroke="black"/>
                  <path d="M 288,352 L 288,400" fill="none" stroke="black"/>
                  <path d="M 304,128 L 304,144" fill="none" stroke="black"/>
                  <path d="M 312,352 L 312,400" fill="none" stroke="black"/>
                  <path d="M 320,32 L 320,48" fill="none" stroke="black"/>
                  <path d="M 352,304 L 352,344" fill="none" stroke="black"/>
                  <path d="M 368,400 L 368,416" fill="none" stroke="black"/>
                  <path d="M 368,448 L 368,496" fill="none" stroke="black"/>
                  <path d="M 400,208 L 400,304" fill="none" stroke="black"/>
                  <path d="M 400,336 L 400,352" fill="none" stroke="black"/>
                  <path d="M 440,352 L 440,400" fill="none" stroke="black"/>
                  <path d="M 120,32 L 320,32" fill="none" stroke="black"/>
                  <path d="M 104,64 L 304,64" fill="none" stroke="black"/>
                  <path d="M 128,128 L 304,128" fill="none" stroke="black"/>
                  <path d="M 112,160 L 288,160" fill="none" stroke="black"/>
                  <path d="M 248,192 L 384,192" fill="none" stroke="black"/>
                  <path d="M 144,240 L 280,240" fill="none" stroke="black"/>
                  <path d="M 40,256 L 144,256" fill="none" stroke="black"/>
                  <path d="M 280,256 L 336,256" fill="none" stroke="black"/>
                  <path d="M 144,272 L 280,272" fill="none" stroke="black"/>
                  <path d="M 128,352 L 288,352" fill="none" stroke="black"/>
                  <path d="M 312,352 L 440,352" fill="none" stroke="black"/>
                  <path d="M 128,400 L 288,400" fill="none" stroke="black"/>
                  <path d="M 312,400 L 440,400" fill="none" stroke="black"/>
                  <path d="M 144,480 L 280,480" fill="none" stroke="black"/>
                  <path d="M 40,496 L 136,496" fill="none" stroke="black"/>
                  <path d="M 288,496 L 368,496" fill="none" stroke="black"/>
                  <path d="M 144,512 L 280,512" fill="none" stroke="black"/>
                  <path d="M 120,32 C 111.16936,32 104,39.16936 104,48" fill="none" stroke="black"/>
                  <path d="M 304,64 C 312.83064,64 320,56.83064 320,48" fill="none" stroke="black"/>
                  <path d="M 128,128 C 119.16936,128 112,135.16936 112,144" fill="none" stroke="black"/>
                  <path d="M 288,160 C 296.83064,160 304,152.83064 304,144" fill="none" stroke="black"/>
                  <path d="M 248,192 C 239.16936,192 232,199.16936 232,208" fill="none" stroke="black"/>
                  <path d="M 384,192 C 392.83064,192 400,199.16936 400,208" fill="none" stroke="black"/>
                  <path d="M 40,256 C 31.16936,256 24,263.16936 24,272" fill="none" stroke="black"/>
                  <path d="M 336,256 C 344.83064,256 352,263.16936 352,272" fill="none" stroke="black"/>
                  <path d="M 40,496 C 31.16936,496 24,488.83064 24,480" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="360,344 348,338.4 348,349.6" fill="black" transform="rotate(90,352,344)"/>
                  <polygon class="arrowhead" points="296,496 284,490.4 284,501.6" fill="black" transform="rotate(180,288,496)"/>
                  <polygon class="arrowhead" points="272,280 260,274.4 260,285.6" fill="black" transform="rotate(270,264,280)"/>
                  <polygon class="arrowhead" points="240,232 228,226.4 228,237.6" fill="black" transform="rotate(90,232,232)"/>
                  <polygon class="arrowhead" points="216,472 204,466.4 204,477.6" fill="black" transform="rotate(90,208,472)"/>
                  <polygon class="arrowhead" points="216,232 204,226.4 204,237.6" fill="black" transform="rotate(90,208,232)"/>
                  <polygon class="arrowhead" points="216,120 204,114.4 204,125.6" fill="black" transform="rotate(90,208,120)"/>
                  <polygon class="arrowhead" points="168,344 156,338.4 156,349.6" fill="black" transform="rotate(90,160,344)"/>
                  <polygon class="arrowhead" points="144,496 132,490.4 132,501.6" fill="black" transform="rotate(0,136,496)"/>
                  <g class="text">
                    <text x="140" y="52">Device</text>
                    <text x="204" y="52">Assembly</text>
                    <text x="256" y="52">and</text>
                    <text x="292" y="52">Test</text>
                    <text x="244" y="84">Device</text>
                    <text x="252" y="100">Lockdown</text>
                    <text x="136" y="148">PSA</text>
                    <text x="168" y="148">RoT</text>
                    <text x="236" y="148">Provisioning</text>
                    <text x="148" y="196">Provisioning</text>
                    <text x="148" y="212">Lockdown</text>
                    <text x="208" y="260">Secured</text>
                    <text x="352" y="292">Debug</text>
                    <text x="160" y="308">Debug</text>
                    <text x="272" y="324">Recoverable</text>
                    <text x="416" y="324">Recoverable</text>
                    <text x="208" y="372">(Non-Recoverable)</text>
                    <text x="368" y="372">Recoverable</text>
                    <text x="168" y="388">Non-PSA</text>
                    <text x="216" y="388">RoT</text>
                    <text x="256" y="388">Debug</text>
                    <text x="336" y="388">PSA</text>
                    <text x="368" y="388">RoT</text>
                    <text x="408" y="388">Debug</text>
                    <text x="40" y="436">Terminate</text>
                    <text x="208" y="436">Non-Recoverable</text>
                    <text x="328" y="436">PSA</text>
                    <text x="360" y="436">RoT</text>
                    <text x="424" y="436">Compromised</text>
                    <text x="212" y="500">Decommissioned</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
             .-------------------------.
            | Device Assembly and Test |
            '------------+------------'
                         | Device
                         | Lockdown
                         v
              .----------------------.
             | PSA RoT Provisioning  |
             '-----------+----------'
                         |
            Provisioning |   .------------------.
              Lockdown   |  |                    |
                         v  v                    |
                 .----------------.              |
   .-------------+    Secured     +-------.      |
  |              '-+--------------'        |     |
  |                |            ^        Debug   |
  |              Debug          |          |     |
  |                |        Recoverable    |  Recoverable
  |                v            |          v     |
  |            .----------------+--.  .----------+----.
  |            | (Non-Recoverable) |  | Recoverable   |
  |            | Non-PSA RoT Debug |  | PSA RoT Debug |
  |            '---------+---------'  '------+--------'
  |                      |                   |
Terminate         Non-Recoverable      PSA RoT Compromised
  |                      |                   |
  |                      v                   |
  |              .----------------.          |
   '------------>| Decommissioned |<---------'
                 '----------------'
]]></artwork>
            </artset>
          </figure>
          <t>The CDDL representation is shown below.
<xref target="tab-states-map"/> provides the mappings between <xref target="fig-lifecycle-states"/> and the data model.</t>
          <artwork><![CDATA[
psa-lifecycle-unknown-type = 0x0000..0x00ff
psa-lifecycle-assembly-and-test-type = 0x1000..0x10ff
psa-lifecycle-psa-rot-provisioning-type = 0x2000..0x20ff
psa-lifecycle-secured-type = 0x3000..0x30ff
psa-lifecycle-non-psa-rot-debug-type = 0x4000..0x40ff
psa-lifecycle-recoverable-psa-rot-debug-type = 0x5000..0x50ff
psa-lifecycle-decommissioned-type = 0x6000..0x60ff

psa-lifecycle-type = 
    psa-lifecycle-unknown-type /
    psa-lifecycle-assembly-and-test-type /
    psa-lifecycle-psa-rot-provisioning-type /
    psa-lifecycle-secured-type /
    psa-lifecycle-non-psa-rot-debug-type /
    psa-lifecycle-recoverable-psa-rot-debug-type /
    psa-lifecycle-decommissioned-type

psa-lifecycle = (
    psa-lifecycle-key => psa-lifecycle-type
)
]]></artwork>
          <t><tt>psa-lifecycle-unknown-type</tt> is not shown in <xref target="fig-lifecycle-states"/>; it represents an invalid state that must not occur in a system.</t>
          <table anchor="tab-states-map">
            <name>Lifecycle States Mappings</name>
            <thead>
              <tr>
                <th align="left">CDDL</th>
                <th align="left">Lifecycle States</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-unknown-type</tt></td>
                <td align="left"> </td>
              </tr>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-assembly-and-test-type</tt></td>
                <td align="left">Assembly and Test</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-psa-rot-provisioning-type</tt></td>
                <td align="left">PSA RoT Provisioning</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-secured-type</tt></td>
                <td align="left">Secured</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-non-psa-rot-debug-type</tt></td>
                <td align="left">Non-Recoverable PSA RoT Debug</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-recoverable-psa-rot-debug-type</tt></td>
                <td align="left">Recoverable PSA RoT Debug</td>
              </tr>
              <tr>
                <td align="left">
                  <tt>psa-lifecycle-decommissioned-type</tt></td>
                <td align="left">Decommissioned</td>
              </tr>
            </tbody>
          </table>
        </section>
        <section anchor="sec-boot-seed">
          <name>Boot Seed</name>
          <t>The Boot Seed claim contains a value created at system boot time
that allows differentiation of attestation reports from different
boot sessions of a particular entity (i.e., a certain Instance ID).</t>
          <t>The EAT <tt>bootseed</tt> (claim key 268) is used.
The following constraints apply to the <tt>binary-data</tt> type:</t>
          <ul spacing="normal">
            <li>
              <t>The length MUST be between 8 and 32 bytes.</t>
            </li>
          </ul>
          <t>This claim MAY be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-boot-seed-type = bytes .size (8..32)

psa-boot-seed = (
    boot-seed-label => psa-boot-seed-type
)
]]></artwork>
        </section>
      </section>
      <section anchor="software-inventory-claims">
        <name>Software Inventory Claims</name>
        <section anchor="sec-sw-components">
          <name>Software Components</name>
          <t>The Software Components claim is a list of software components that includes
all the software (both code and configuration) loaded by the PSA RoT.  This
claim MUST be included in attestation tokens produced by an implementation
conformant with <xref target="PSA-SM"/>.</t>
          <t>Each entry in the Software Components list describes one software component
using the attributes described in the following subsections.  Unless explicitly
stated, the presence of an attribute is OPTIONAL.</t>
          <t>Note that, as described in <xref target="RFC9334"/>, a relying party will typically see the
result of the appraisal process from the Verifier in form of an Attestation
Result, rather than the PSA token from the attesting endpoint.
Therefore, a relying party is not expected to understand the Software
Components claim.  Instead, it is for the Verifier to check this claim against
the available Reference Values and provide an answer in form of an "high level"
Attestation Result, which may or may not include the original Software
Components claim.</t>
          <artwork><![CDATA[
psa-software-component = {
  ? &(measurement-type: 1) => text
    &(measurement-value: 2) => psa-hash-type
  ? &(version: 4) => text
    &(signer-id: 5) => psa-hash-type
  ? &(measurement-desc: 6) => text
}

psa-software-components = (
    psa-software-components-key => [ + psa-software-component ]
)
]]></artwork>
          <section anchor="measurement-type">
            <name>Measurement Type</name>
            <t>The Measurement Type attribute (key=1) is a short string representing the role of
this software component.</t>
            <t>The following measurement types MAY be used for code measurements:</t>
            <ul spacing="normal">
              <li>
                <t>"BL": a Boot Loader</t>
              </li>
              <li>
                <t>"PRoT": a component of the PSA Root of Trust</t>
              </li>
              <li>
                <t>"ARoT": a component of the Application Root of Trust</t>
              </li>
              <li>
                <t>"App": a component of the NSPE application</t>
              </li>
              <li>
                <t>"TS": a component of a Trusted Subsystem</t>
              </li>
            </ul>
            <t>The same labels with a "_CONFIG" postfix (e.g., "PRoT_CONFIG") MAY be used for
configuration measurements.</t>
            <t>This attribute SHOULD be present in a PSA software component unless
there is a very good reason to leave it out - for example in networks
with severely constrained bandwidth, where sparing a few bytes really
makes a difference.</t>
          </section>
          <section anchor="measurement-value">
            <name> Measurement Value</name>
            <t>The Measurement Value attribute (key=2) represents a hash of the invariant
software component in memory at startup time. The value MUST be a cryptographic
hash of 256 bits or stronger.</t>
            <t>This attribute MUST be present in a PSA software component.</t>
          </section>
          <section anchor="version">
            <name>Version</name>
            <t>The Version attribute (key=4) is the issued software version in the form of a
text string. The value of this attribute will correspond to the entry in the
original signed manifest of the component.</t>
          </section>
          <section anchor="signer-id">
            <name>Signer ID</name>
            <t>The Signer ID attribute (key=5) uniquely identifies the signer of the software component. The identification is typically accomplished by hashing the signer's public key.
The value of this attribute will correspond to the
entry in the original manifest for the component. This can be used by a
Verifier to ensure the components were signed by an expected trusted source.</t>
            <t>This attribute MUST be present in a PSA software component to be compliant with
<xref target="PSA-SM"/>.</t>
          </section>
          <section anchor="measurement-description">
            <name>Measurement Description</name>
            <t>The Measurement Description attribute (key=6) contains a string identifying the
hash algorithm used to compute the corresponding Measurement Value.  The string
SHOULD be encoded according to "Hash Name String" in the "Named Information Hash Algorithm Registry" <xref target="IANA.named-information"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="verification-claims">
        <name>Verification Claims</name>
        <t>The following claims are part of the PSA token (and therefore still Evidence)
but aim to help receivers, including relying parties, with the
processing of the received attestation Evidence.</t>
        <section anchor="sec-verification-service-indicator">
          <name>Verification Service Indicator</name>
          <t>The Verification Service Indicator claim is a hint used by a relying party to
locate a verification service for the token. The value is a text string that
can be used to locate the service (typically, a URL specifying the address of
the verification service API). A Relying Party may choose to ignore this claim
in favor of other information.</t>
          <artwork><![CDATA[
psa-verification-service-indicator-type = text

psa-verification-service-indicator = (
    ? psa-verification-service-indicator-key =>
        psa-verification-service-indicator-type
)
]]></artwork>
          <t>It is assumed that the relying party is pre-configured with a list of trusted
verification services and that the contents of this hint can be used to look
up the correct one. Under no circumstances must the relying party be tricked
into contacting an unknown and untrusted verification service since the
returned Attestation Result cannot be relied on.</t>
          <t>Note: This hint requires the relying party to parse the content of the
PSA token. Since the relying party may not be in possession of a trust
anchor to verify the digital signature, it uses the hint in the same way
as it would treat any other information provided by an external party,
which includes attacker-provided data.</t>
        </section>
        <section anchor="sec-profile-definition-claim">
          <name>Profile Definition</name>
          <t>The Profile Definition claim encodes the unique identifier that corresponds to
the EAT profile described by this document.  This allows a receiver to assign
the intended semantics to the rest of the claims found in the token.</t>
          <t>The EAT <tt>eat_profile</tt> (claim key 265) is used.</t>
          <t>The URI encoding MUST be used.</t>
          <t>The value MUST be <tt>tag:psacertified.org,2023:psa#tfm</tt> for the profile defined in <xref target="sec-tfm-profile"/>.</t>
          <t>Future profiles derived from the baseline PSA profile SHALL create their unique value, as described in <xref target="sec-profile-uri-structure"/>.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <t>See <xref target="sec-backwards-compat"/>, for considerations about backwards compatibility
with previous versions of the PSA attestation token format.</t>
          <artwork><![CDATA[
psa-profile-type = "tag:psacertified.org,2023:psa#tfm"

psa-profile = (
    profile-label => psa-profile-type
)
]]></artwork>
          <section anchor="sec-profile-uri-structure">
            <name>URI Structure for the Derived Profile Identifiers</name>
            <t>A new profile is associated with a unique string.</t>
            <t>The string MUST use the URI fragment syntax defined in <xref section="3.5" sectionFormat="of" target="RFC3986"/>.</t>
            <t>The string SHOULD be short to avoid unnecessary overhead.</t>
            <t>To avoid collisions, profile authors SHOULD communicate upfront their intent to use a certain string using the enquiry form on the <xref target="PSACertified"/> website.</t>
            <t>To derive the value to be used for the <tt>eat_profile</tt> claim, the string is added as a fragment to the <tt>tag:psacertified.org,2023:psa</tt> tag URI <xref target="RFC4151"/>.</t>
            <t>For example, an hypothetical profile using only COSE_Mac0 with the AES Message Authentication Code (AES-MAC) may decide to use the string "aes-mac".  The <tt>eat_profile</tt> value would then be: <tt>tag:psacertified.org,2023:psa#aes-mac</tt>.</t>
          </section>
        </section>
      </section>
      <section anchor="sec-backwards-compat">
        <name>Backwards Compatibility Considerations</name>
        <t>A previous version of this specification <xref target="PSA-OLD"/>, identified by the <tt>PSA_IOT_PROFILE_1</tt>
profile, used claim key values from the "private use range" of the CWT Claims
registry.  These claim keys have now been deprecated.</t>
        <t><xref target="tab-claim-map"/> provides the mappings between the deprecated and new claim
keys.</t>
        <table anchor="tab-claim-map">
          <name>Claim Key Mappings</name>
          <thead>
            <tr>
              <th align="left"> </th>
              <th align="left">PSA_IOT_PROFILE_1</th>
              <th align="left">tag:psacertified.org,2023:psa#tfm</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Nonce</td>
              <td align="left">-75008</td>
              <td align="left">10 (EAT nonce)</td>
            </tr>
            <tr>
              <td align="left">Instance ID</td>
              <td align="left">-75009</td>
              <td align="left">256 (EAT euid)</td>
            </tr>
            <tr>
              <td align="left">Profile Definition</td>
              <td align="left">-75000</td>
              <td align="left">265 (EAT eat_profile)</td>
            </tr>
            <tr>
              <td align="left">Client ID</td>
              <td align="left">-75001</td>
              <td align="left">2394</td>
            </tr>
            <tr>
              <td align="left">Security Lifecycle</td>
              <td align="left">-75002</td>
              <td align="left">2395</td>
            </tr>
            <tr>
              <td align="left">Implementation ID</td>
              <td align="left">-75003</td>
              <td align="left">2396</td>
            </tr>
            <tr>
              <td align="left">Boot Seed</td>
              <td align="left">-75004</td>
              <td align="left">268 (EAT bootseed)</td>
            </tr>
            <tr>
              <td align="left">Certification Reference</td>
              <td align="left">-75005</td>
              <td align="left">2398</td>
            </tr>
            <tr>
              <td align="left">Software Components</td>
              <td align="left">-75006</td>
              <td align="left">2399</td>
            </tr>
            <tr>
              <td align="left">Verification Service Indicator</td>
              <td align="left">-75010</td>
              <td align="left">2400</td>
            </tr>
          </tbody>
        </table>
        <t>The new profile introduces three further changes:</t>
        <ul spacing="normal">
          <li>
            <t>the "Boot Seed" claim is now optional and of variable length (see
<xref target="sec-boot-seed"/>),</t>
          </li>
          <li>
            <t>the "No Software Measurements" claim has been retired,</t>
          </li>
          <li>
            <t>the "Certification Reference" claim syntax changed from EAN-13 to EAN-13+5 (see
<xref target="sec-certification-reference"/>).</t>
          </li>
        </ul>
        <t>To simplify the transition to the token format described in this
document it is RECOMMENDED that Verifiers
accept tokens encoded according to the old profile (<tt>PSA_IOT_PROFILE_1</tt>) as well as
to the profile defined in this document (<tt>tag:psacertified.org,2023:psa#tfm</tt>), at least for the time needed to
their devices to upgrade.</t>
      </section>
    </section>
    <section anchor="sec-profiles">
      <name>Profiles</name>
      <t>This document defines a baseline with common requirements that all PSA profiles must satisfy.
(Note that this does not apply to <xref target="PSA-OLD"/>.)</t>
      <t>This document also defines a "TFM" profile (<xref target="sec-tfm-profile"/>) that builds on the baseline while constraining the use of COSE algorithms to improve interoperability between Attesters and Verifiers.</t>
      <t>Baseline and TFM are what EAT calls a "partial" and "full" profile, respectively. See <xref section="6.2" sectionFormat="of" target="EAT"/> for further details regarding profiles.</t>
      <section anchor="baseline-profile">
        <name>Baseline Profile</name>
        <section anchor="sec-token-encoding-and-signing">
          <name> Token Encoding and Signing</name>
          <t>The PSA attestation token is encoded in CBOR <xref target="STD94"/> format.
The CBOR representation of a PSA token MUST be "valid" according to the definition in <xref section="1.2" sectionFormat="of" target="STD94"/>.
Besides, only definite-length string, arrays, and maps are allowed.
Given that a PSA Attester is typically found in a constrained device, it MAY
NOT emit CBOR preferred serializations (<xref section="4.1" sectionFormat="of" target="STD94"/>).
Therefore, the Verifier MUST be a variation-tolerant CBOR decoder.</t>
          <t>Cryptographic protection is obtained by wrapping the <tt>psa-token</tt> claims-set in a COSE
Web Token (CWT) <xref target="RFC8392"/>.  For asymmetric key algorithms, the signature
structure MUST be a tagged (18) COSE_Sign1.  For symmetric key algorithms, the signature
structure MUST be a tagged (17) COSE_Mac0.</t>
          <t>Acknowledging the variety of markets, regulations and use cases in which the
PSA attestation token can be used, the baseline profile does not impose any
strong requirement on the cryptographic algorithms that need to be supported by
Attesters and Verifiers.  The flexibility provided by the COSE format should be
sufficient to deal with the level of cryptographic agility needed to adapt to
specific use cases.  It is RECOMMENDED that commonly adopted algorithms are
used, such as those discussed in <xref target="COSE-ALGS"/>.  It is expected that receivers
will accept a wider range of algorithms, while Attesters would produce PSA tokens
using only one such algorithm.</t>
          <t>The CWT CBOR tag (61) is not used.  An application that needs to exchange PSA
attestation tokens can wrap the serialised COSE_Sign1 or COSE_Mac0 in the media
type defined in <xref target="sec-iana-media-types"/> or the CoAP Content-Format defined in
<xref target="sec-iana-coap-content-format"/>.</t>
          <t>A PSA token is always directly signed by the PSA RoT.  Therefore, a PSA
claims-set (<xref target="sec-psa-claims"/>) is never carried in a Detached EAT bundle
(<xref section="5" sectionFormat="of" target="EAT"/>).</t>
        </section>
        <section anchor="freshness-model">
          <name>Freshness Model</name>
          <t>The PSA token supports the freshness models for attestation Evidence based on
nonces and epoch handles (Section <xref target="RFC9334" section="10.2" sectionFormat="bare"/> and Section <xref target="RFC9334" section="10.3" sectionFormat="bare"/> of <xref target="RFC9334"/>) using
the <tt>nonce</tt> claim to convey the nonce or epoch handle supplied by the Verifier.
No further assumption on the specific remote attestation protocol is made.</t>
          <t>Note that use of epoch handles is constrained by the type restrictions imposed by the <tt>eat_nonce</tt> syntax.
For use in PSA tokens, it must be possible to encode the epoch handle as an opaque binary string between 8 and 64 octets.</t>
        </section>
        <section anchor="synopsis">
          <name>Synopsis</name>
          <t><xref target="tbl-baseline-profile"/> presents a concise view of the requirements described in the preceding sections.</t>
          <table anchor="tbl-baseline-profile">
            <name>Baseline Profile</name>
            <thead>
              <tr>
                <th align="left">Issue</th>
                <th align="left">Profile Definition</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">CBOR/JSON</td>
                <td align="left">CBOR MUST be used</td>
              </tr>
              <tr>
                <td align="left">CBOR Encoding</td>
                <td align="left">Definite length maps and arrays MUST be used</td>
              </tr>
              <tr>
                <td align="left">CBOR Encoding</td>
                <td align="left">Definite length strings MUST be used</td>
              </tr>
              <tr>
                <td align="left">CBOR Serialization</td>
                <td align="left">Variant serialization MAY be used</td>
              </tr>
              <tr>
                <td align="left">COSE Protection</td>
                <td align="left">COSE_Sign1 and/or COSE_Mac0 MUST be used</td>
              </tr>
              <tr>
                <td align="left">Algorithms</td>
                <td align="left">
                  <xref target="COSE-ALGS"/> SHOULD be used</td>
              </tr>
              <tr>
                <td align="left">Detached EAT Bundle Usage</td>
                <td align="left">Detached EAT bundles MUST NOT be sent</td>
              </tr>
              <tr>
                <td align="left">Verification Key Identification</td>
                <td align="left">Any identification method listed in <xref section="F.1" sectionFormat="of" target="EAT"/></td>
              </tr>
              <tr>
                <td align="left">Endorsements</td>
                <td align="left">See <xref target="sec-psa-endorsements"/></td>
              </tr>
              <tr>
                <td align="left">Freshness</td>
                <td align="left">nonce or epoch ID based</td>
              </tr>
              <tr>
                <td align="left">Claims</td>
                <td align="left">Those defined in <xref target="sec-psa-claims"/>. As per general EAT rules, the receiver MUST NOT error out on claims it does not understand.</td>
              </tr>
            </tbody>
          </table>
        </section>
      </section>
      <section anchor="sec-tfm-profile">
        <name>Profile TFM</name>
        <t>This profile is appropriate for the code base implemented in <xref target="TF-M"/> and should apply for most derivative implementations. If an implementation changes the requirements described below then, to ensure interoperability, a different profile value should be used (<xref target="sec-profile-uri-structure"/>). This includes a restriction of the profile to a subset of the COSE Protection scheme requirements.</t>
        <t><xref target="tbl-tfm-profile"/> presents a concise view of the requirements.</t>
        <t>The value of the <tt>eat_profile</tt> MUST be <tt>tag:psacertified.org,2023:psa#tfm</tt>.</t>
        <table anchor="tbl-tfm-profile">
          <name>TF-M Profile</name>
          <thead>
            <tr>
              <th align="left">Issue</th>
              <th align="left">Profile Definition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">CBOR/JSON</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
            <tr>
              <td align="left">CBOR Encoding</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
            <tr>
              <td align="left">CBOR Encoding</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
            <tr>
              <td align="left">CBOR Serialization</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
            <tr>
              <td align="left">COSE Protection</td>
              <td align="left">COSE_Sign1 or COSE_Mac0 MUST be used</td>
            </tr>
            <tr>
              <td align="left">Algorithms</td>
              <td align="left">The receiver MUST accept ES256, ES384 and ES512 with COSE_Sign1 and HMAC256/256, HMAC384/384 and HMAC512/512 with COSE_Mac0; the sender MUST send one of these</td>
            </tr>
            <tr>
              <td align="left">Detached EAT Bundle Usage</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
            <tr>
              <td align="left">Verification Key Identification</td>
              <td align="left">Claim-Based Key Identification (<xref section="F.1.4" sectionFormat="of" target="EAT"/>) using Instance ID</td>
            </tr>
            <tr>
              <td align="left">Endorsements</td>
              <td align="left">See <xref target="sec-psa-endorsements"/></td>
            </tr>
            <tr>
              <td align="left">Freshness</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
            <tr>
              <td align="left">Claims</td>
              <td align="left">See <xref target="baseline-profile"/></td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="collated-cddl">
      <name>Collated CDDL</name>
      <artwork><![CDATA[
psa-token = {
    psa-nonce
    psa-instance-id
    psa-verification-service-indicator
    psa-profile
    psa-implementation-id
    psa-client-id
    psa-lifecycle
    psa-certification-reference
    ? psa-boot-seed
    psa-software-components
}

psa-client-id-key = 2394
psa-lifecycle-key = 2395
psa-implementation-id-key = 2396
psa-certification-reference-key = 2398
psa-software-components-key = 2399
psa-verification-service-indicator-key = 2400

nonce-label = 10
ueid-label = 256
boot-seed-label = 268
profile-label = 265

psa-hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64

psa-boot-seed-type = bytes .size (8..32)

psa-boot-seed = (
    boot-seed-label => psa-boot-seed-type
)

psa-client-id-nspe-type = -2147483648...0
psa-client-id-spe-type = 1..2147483647

psa-client-id-type = psa-client-id-nspe-type / psa-client-id-spe-type

psa-client-id = (
    psa-client-id-key => psa-client-id-type
)

psa-certification-reference-type = text .regexp "[0-9]{13}-[0-9]{5}"

psa-certification-reference = (
    ? psa-certification-reference-key => 
        psa-certification-reference-type
)

psa-implementation-id-type = bytes .size 32

psa-implementation-id = (
    psa-implementation-id-key => psa-implementation-id-type
)

psa-instance-id-type = bytes .size 33

psa-instance-id = (
    ueid-label => psa-instance-id-type
)

psa-nonce = (
    nonce-label => psa-hash-type
)

psa-profile-type = "tag:psacertified.org,2023:psa#tfm"

psa-profile = (
    profile-label => psa-profile-type
)

psa-lifecycle-unknown-type = 0x0000..0x00ff
psa-lifecycle-assembly-and-test-type = 0x1000..0x10ff
psa-lifecycle-psa-rot-provisioning-type = 0x2000..0x20ff
psa-lifecycle-secured-type = 0x3000..0x30ff
psa-lifecycle-non-psa-rot-debug-type = 0x4000..0x40ff
psa-lifecycle-recoverable-psa-rot-debug-type = 0x5000..0x50ff
psa-lifecycle-decommissioned-type = 0x6000..0x60ff

psa-lifecycle-type = 
    psa-lifecycle-unknown-type /
    psa-lifecycle-assembly-and-test-type /
    psa-lifecycle-psa-rot-provisioning-type /
    psa-lifecycle-secured-type /
    psa-lifecycle-non-psa-rot-debug-type /
    psa-lifecycle-recoverable-psa-rot-debug-type /
    psa-lifecycle-decommissioned-type

psa-lifecycle = (
    psa-lifecycle-key => psa-lifecycle-type
)

psa-software-component = {
  ? &(measurement-type: 1) => text
    &(measurement-value: 2) => psa-hash-type
  ? &(version: 4) => text
    &(signer-id: 5) => psa-hash-type
  ? &(measurement-desc: 6) => text
}

psa-software-components = (
    psa-software-components-key => [ + psa-software-component ]
)

psa-verification-service-indicator-type = text

psa-verification-service-indicator = (
    ? psa-verification-service-indicator-key =>
        psa-verification-service-indicator-type
)

]]></artwork>
    </section>
    <section anchor="sec-scalability">
      <name>Scalability Considerations</name>
      <t>IAKs (<xref target="para-ias-intro"/>) can be either raw public keys or certified public keys.</t>
      <t>Certified public keys require the manufacturer to run the certification
authority (CA) that issues X.509 certs for the IAKs.  (Note that operating a CA
is a complex and expensive task that may be unaffordable to certain
manufacturers.)</t>
      <t>Using certified public keys offers better scalability properties when compared to using raw public keys, namely:</t>
      <ul spacing="normal">
        <li>
          <t>storage requirements for the Verifier are minimised - the same
manufacturer's trust anchor is used for any number of devices,</t>
        </li>
        <li>
          <t>the provisioning model is simpler and more robust since there is no need to
notify the Verifier about each newly manufactured device,</t>
        </li>
      </ul>
      <t>Furthermore, existing and well-understood revocation mechanisms can be readily used.</t>
      <t>The IAK's X.509 cert can be inlined in the PSA token using the <tt>x5chain</tt> COSE
header parameter <xref target="COSE-X509"/> at the cost of an increase in the PSA token
size.  <xref section="4.4" sectionFormat="of" target="TLS12-IoT"/> and <xref section="15" sectionFormat="of" target="TLS13-IoT"/> provide
guidance for profiling X.509 certs used in IoT deployments.
Note that the exact split between pre-provisioned and inlined certs may vary
depending on the specific deployment.  In that respect, <tt>x5chain</tt> is quite
flexible: it can contain the end-entity (EE) cert only, the EE and a partial
chain, or the EE and the full chain up to the trust anchor (see <xref section="2" sectionFormat="of" target="COSE-X509"/> for the details).
Constraints around network bandwidth and computing resources available to endpoints, such as network buffers, may dictate a reasonable split point.</t>
    </section>
    <section anchor="psa-token-verification">
      <name>PSA Token Verification</name>
      <t>To verify the token, the primary need is to check correct encoding and signing
as detailed in <xref target="sec-token-encoding-and-signing"/>.
The key used for verification is either supplied to the Verifier by an
authorized Endorser along with the corresponding Attester's Instance ID or
inlined in the token using the <tt>x5chain</tt> header parameter as described in
<xref target="sec-scalability"/>.
If the IAK is a raw public key, the Instance ID claim is
used to assist in
locating the key used to verify the signature covering the CWT token.
If the IAK is a certified public key, X.509 path construction and validation
(<xref section="6" sectionFormat="of" target="X509"/>) up to a trusted CA MUST be successful before the key is
used to verify the token signature.  This also includes revocation checking.</t>
      <t>In addition, the Verifier will typically operate a policy where values of some
of the claims in this profile can be compared to reference values, registered
with the Verifier for a given deployment, in order to confirm that the device
is endorsed by the manufacturer supply chain.  The policy may require that the
relevant claims must have a match to a registered reference value.  All claims
may be worthy of additional appraisal.  It is likely that most deployments
would include a policy with appraisal for the following claims:</t>
      <ul spacing="normal">
        <li>
          <t>Implementation ID - the value of the Implementation ID can be used to
identify the verification requirements of the deployment.</t>
        </li>
        <li>
          <t>Software Component, Measurement Value - this value can uniquely identify a
firmware release from the supply chain. In some cases, a Verifier may
maintain a record for a series of firmware releases, being patches to an
original baseline release. A verification policy may then allow this value to
match any point on that release sequence or expect some minimum level of
maturity related to the sequence.</t>
        </li>
        <li>
          <t>Software Component, Signer ID - where present in a deployment, this could
allow a Verifier to operate a more general policy than that for Measurement
Value as above, by allowing a token to contain any firmware entries signed by
a known Signer ID, without checking for a uniquely registered version.</t>
        </li>
        <li>
          <t>Certification Reference - if present, this value could be used as a hint to
locate security certification information associated with the attesting
device. An example could be a reference to a <xref target="PSACertified"/> certificate.</t>
        </li>
      </ul>
      <section anchor="ar4si-trustworthiness-claims-mappings">
        <name> AR4SI Trustworthiness Claims Mappings</name>
        <t><xref target="RATS-AR4SI"/> defines an information model that Verifiers can employ to
produce Attestation Results.
AR4SI provides a set of standardized appraisal categories and tiers that
greatly simplifies the task of writing Relying Party policies in multi-attester
environments.</t>
        <t>The contents of <xref target="tab-ar4si-map"/> are intended as guidance for implementing a
PSA Verifier that computes its results using AR4SI.
The table describes which PSA Evidence claims (if any) are related to which
AR4SI trustworthiness claim, and therefore what the Verifier must consider when
deciding if and how to appraise a certain feature associated with the PSA
Attester.</t>
        <table anchor="tab-ar4si-map">
          <name>AR4SI Claims mappings</name>
          <thead>
            <tr>
              <th align="left">Trustworthiness Vector claims</th>
              <th align="left">Related PSA claims</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>configuration</tt></td>
              <td align="left">Software Components (<xref target="sec-sw-components"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>executables</tt></td>
              <td align="left">ditto</td>
            </tr>
            <tr>
              <td align="left">
                <tt>file-system</tt></td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">
                <tt>hardware</tt></td>
              <td align="left">Implementation ID (<xref target="sec-implementation-id"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>instance-identity</tt></td>
              <td align="left">Instance ID (<xref target="sec-instance-id-claim"/>).  The Security Lifecycle (<xref target="sec-security-lifecycle"/>) can also impact the derived identity.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>runtime-opaque</tt></td>
              <td align="left">Indirectly derived from <tt>executables</tt>, <tt>hardware</tt>, and <tt>instance-identity</tt>.  The Security Lifecycle (<xref target="sec-security-lifecycle"/>) can also be relevant: for example, any debug state will expose otherwise protected memory.</td>
            </tr>
            <tr>
              <td align="left">
                <tt>sourced-data</tt></td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">
                <tt>storage-opaque</tt></td>
              <td align="left">Indirectly derived from <tt>executables</tt>, <tt>hardware</tt>, and <tt>instance-identity</tt>.</td>
            </tr>
          </tbody>
        </table>
        <t>This document does not prescribe what value must be chosen based on each
possible situation: when assigning specific Trustworthiness Claim values, an
implementation is expected to follow the algorithm described in <xref section="2.3.3" sectionFormat="of" target="RATS-AR4SI"/>.</t>
      </section>
      <section anchor="sec-psa-endorsements">
        <name>Endorsements, Reference Values and Verification Key Material</name>
        <t><xref target="PSA-Endorsements"/> defines a protocol based on the <xref target="RATS-CoRIM"/> data model
that can be used to convey PSA Endorsements, Reference Values and verification
key material to the Verifier.</t>
      </section>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t><cref anchor="rfc-ed-note">RFC Editor:</cref> please remove this section before pubblication.</t>
      <t>Implementations of this specification are provided by the Trusted
Firmware-M project <xref target="TF-M"/>, <xref target="IAT-VERIFIER"/>, the Veraison project <xref target="Veraison"/>, and the Xclaim
<xref target="Xclaim"/> library.  All four implementations are released as open-source software.</t>
    </section>
    <section anchor="security-and-privacy-considerations">
      <name>Security and Privacy Considerations</name>
      <t>This specification re-uses the EAT specification and therefore the CWT specification.
Hence, the security and privacy considerations of those specifications apply here as well.</t>
      <t>Since CWTs offer different ways to protect the token, this specification
profiles those options and allows signatures using public key cryptography as
well as message authentication codes (MACs). COSE_Sign1 is used for digital
signatures and COSE_Mac0 for MACs, as defined in the COSE specification <xref target="STD96"/>.
Note, however, that the use of MAC authentication is NOT RECOMMENDED due to the associated
infrastructure costs for key management and protocol complexities.</t>
      <t>A PSA Attester MUST NOT provide Evidence to an untrusted
challenger, as it may allow attackers to interpose and trick the Verifier into
believing the attacker is a legitimate Attester.
This is especially relevant to protocols that use PSA attestation tokens to authenticate the attester to a relying party.</t>
      <t>Attestation tokens contain information that may be unique to a device and
therefore they may allow to single out an individual device for tracking
purposes.  Deployments that have privacy requirements must take appropriate
measures to ensure that the token is only used to provision anonymous/pseudonym
keys.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="cbor-web-token-claims-registration">
        <name>CBOR Web Token Claims Registration</name>
        <t>IANA is requested to make permanent the following claims that have been
assigned via early allocation in the "CBOR Web Token (CWT) Claims" registry
<xref target="IANA-CWT"/>.</t>
        <section anchor="client-id-claim">
          <name> Client ID Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-client-id</t>
            </li>
            <li>
              <t>Claim Description: PSA Client ID</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2394</t>
            </li>
            <li>
              <t>Claim Value Type(s): signed integer</t>
            </li>
            <li>
              <t>Change Controller: Hannes Tschofenig</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-client-id"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="security-lifecycle-claim">
          <name> Security Lifecycle Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-security-lifecycle</t>
            </li>
            <li>
              <t>Claim Description: PSA Security Lifecycle</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2395</t>
            </li>
            <li>
              <t>Claim Value Type(s): unsigned integer</t>
            </li>
            <li>
              <t>Change Controller: Hannes Tschofenig</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-security-lifecycle"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="implementation-id-claim">
          <name> Implementation ID Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-implementation-id</t>
            </li>
            <li>
              <t>Claim Description: PSA Implementation ID</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2396</t>
            </li>
            <li>
              <t>Claim Value Type(s): byte string</t>
            </li>
            <li>
              <t>Change Controller: Hannes Tschofenig</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-implementation-id"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="certification-reference-claim">
          <name> Certification Reference Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-certification-reference</t>
            </li>
            <li>
              <t>Claim Description: PSA Certification Reference</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2398</t>
            </li>
            <li>
              <t>Claim Value Type(s): text string</t>
            </li>
            <li>
              <t>Change Controller: Hannes Tschofenig</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-certification-reference"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="software-components-claim">
          <name> Software Components Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-software-components</t>
            </li>
            <li>
              <t>Claim Description: PSA Software Components</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2399</t>
            </li>
            <li>
              <t>Claim Value Type(s): array</t>
            </li>
            <li>
              <t>Change Controller: Hannes Tschofenig</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-sw-components"/> of RFCthis</t>
            </li>
          </ul>
        </section>
        <section anchor="verification-service-indicator-claim">
          <name> Verification Service Indicator Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-verification-service-indicator</t>
            </li>
            <li>
              <t>Claim Description: PSA Verification Service Indicator</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2400</t>
            </li>
            <li>
              <t>Claim Value Type(s): text string</t>
            </li>
            <li>
              <t>Change Controller: Hannes Tschofenig</t>
            </li>
            <li>
              <t>Specification Document(s): <xref target="sec-verification-service-indicator"/> of RFCthis</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="sec-iana-media-types">
        <name>Media Types</name>
        <t>No new media type registration is requested.
To indicate that the transmitted content is a PSA attestation token,
applications can use the <tt>application/eat+cwt</tt> media type defined in
<xref target="EAT-MEDIATYPES"/> with the <tt>eat_profile</tt> parameter set to
<tt>tag:psacertified.org,2023:psa#tfm</tt> (or <tt>tag:psacertified.org,2019:psa#legacy</tt> if the token is encoded
according to the old profile, see <xref target="sec-backwards-compat"/>).</t>
      </section>
      <section anchor="sec-iana-coap-content-format">
        <name>CoAP Content-Formats Registration</name>
        <t>IANA is requested to register two CoAP Content-Format IDs in the "CoAP
Content-Formats" registry <xref target="IANA-CoAP-Content-Formats"/>:</t>
        <ul spacing="normal">
          <li>
            <t>One for the <tt>application/eat+cwt</tt> media type with the <tt>eat_profile</tt> parameter
equal to <tt>tag:psacertified.org,2023:psa#tfm</tt></t>
          </li>
          <li>
            <t>Another for the <tt>application/eat+cwt</tt> media type with the <tt>eat_profile</tt>
parameter equal to <tt>tag:psacertified.org,2019:psa#legacy</tt></t>
          </li>
        </ul>
        <t>The Content-Formats should be allocated from the Expert review range (0-255).</t>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <ul spacing="normal">
            <li>
              <t>Media Type: <tt>application/eat+cwt; eat_profile="tag:psacertified.org,2023:psa#tfm"</tt></t>
            </li>
            <li>
              <t>Encoding: -</t>
            </li>
            <li>
              <t>Id: [[To-be-assigned by IANA]]</t>
            </li>
            <li>
              <t>Reference: RFCthis</t>
            </li>
            <li>
              <t>Media Type: <tt>application/eat+cwt; eat_profile="tag:psacertified.org,2019:psa#legacy"</tt></t>
            </li>
            <li>
              <t>Encoding: -</t>
            </li>
            <li>
              <t>Id: [[To-be-assigned by IANA]]</t>
            </li>
            <li>
              <t>Reference: RFCthis</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="PSA-SM" target="https://www.psacertified.org/app/uploads/2021/12/JSADEN014_PSA_Certified_SM_V1.1_BET0.pdf">
          <front>
            <title>Platform Security Model 1.1</title>
            <author>
              <organization>Arm</organization>
            </author>
            <date year="2021" month="December"/>
          </front>
        </reference>
        <reference anchor="EAN-13" target="https://www.gs1.org/standards/barcodes/ean-upc">
          <front>
            <title>International Article Number - EAN/UPC barcodes</title>
            <author>
              <organization>GS1</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="PSA-FF" target="https://developer.arm.com/documentation/den0063/a">
          <front>
            <title>Platform Security Architecture Firmware Framework 1.0 (PSA-FF)</title>
            <author>
              <organization>Arm</organization>
            </author>
            <date year="2019" month="February"/>
          </front>
        </reference>
        <reference anchor="PSA-Cert-Guide" target="https://www.psacertified.org/app/uploads/2020/07/JSADEN011-PSA_Certified_Level_2_Step-by-Step-1.1-20200403.pdf">
          <front>
            <title>PSA Certified Level 2 Step by Step Guide Version 1.1</title>
            <author>
              <organization>PSA Certified</organization>
            </author>
            <date year="2020"/>
          </front>
        </reference>
        <reference anchor="STD94">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="COSE-ALGS">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="IANA-CWT" target="https://www.iana.org/assignments/cwt/cwt.xhtml#claims-registry">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="X509">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="EAT">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="26" month="May" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-27"/>
        </reference>
        <reference anchor="EAT-MEDIATYPES">
          <front>
            <title>EAT Media Types</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="2" month="April" year="2024"/>
            <abstract>
              <t>   Payloads used in Remote Attestation Procedures may require an
   associated media type for their conveyance, for example when used in
   RESTful APIs.

   This memo defines media types to be used for Entity Attestation
   Tokens (EAT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-media-type-07"/>
        </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="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="IANA.named-information" target="http://www.iana.org/assignments/named-information">
          <front>
            <title>Named Information</title>
            <author>
              <organization>IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC4151">
          <front>
            <title>The 'tag' URI Scheme</title>
            <author fullname="T. Kindberg" initials="T." surname="Kindberg"/>
            <author fullname="S. Hawke" initials="S." surname="Hawke"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document describes the "tag" Uniform Resource Identifier (URI) scheme. Tag URIs (also known as "tags") are designed to be unique across space and time while being tractable to humans. They are distinct from most other URIs in that they have no authoritative resolution mechanism. A tag may be used purely as an entity identifier. Furthermore, using tags has some advantages over the common practice of using "http" URIs as identifiers for non-HTTP-accessible resources. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4151"/>
          <seriesInfo name="DOI" value="10.17487/RFC4151"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.kdyxy-rats-tdx-eat-profile">
          <front>
            <title>EAT profile for Intel® Trust Domain Extensions (TDX) attestation result</title>
            <author fullname="Greg Kostal" initials="G." surname="Kostal">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Sindhuri Dittakavi" initials="S." surname="Dittakavi">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Raghuram Yeluri" initials="R." surname="Yeluri">
              <organization>Intel</organization>
            </author>
            <author fullname="Haidong Xia" initials="H." surname="Xia">
              <organization>Intel</organization>
            </author>
            <author fullname="Jerry Yu" initials="J." surname="Yu">
              <organization>Intel</organization>
            </author>
            <date day="23" month="April" year="2024"/>
            <abstract>
              <t>   Intel® Trust Domain Extensions (TDX) introduce architectural elements
   designed for the deployment of hardware-isolated virtual machines
   (VMs) known as trust domains (TDs).  TDX is designed to provide a
   secure and isolated environment for running sensitive workloads or
   applications.  This Entity Attestation Token (EAT) profile outlines
   claims for an Intel TDX attestation result which facilitate the
   establishment of trust between a relying party and the environment.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-kdyxy-rats-tdx-eat-profile-01"/>
        </reference>
        <reference anchor="I-D.mandyam-rats-qwestoken">
          <front>
            <title>The Qualcomm Wireless Edge Services (QWES) Attestation Token</title>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Vivek Sekhar" initials="V." surname="Sekhar">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Shahid Mohammed" initials="S." surname="Mohammed">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <date day="1" month="November" year="2019"/>
            <abstract>
              <t>   An attestation format based on the Entity Attestation Token (EAT) is
   described.  The Qualcomm Wireless Edge Services (QWES) token is used
   in the context of device onboarding and authentication.  It is
   verified in the same manner as any CBOR Web Token (CWT).

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mandyam-rats-qwestoken-00"/>
        </reference>
        <reference anchor="TLS12-IoT">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="TLS13-IoT">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="3" month="March" year="2024"/>
            <abstract>
              <t>   This document is a companion to RFC 7925 and defines TLS/DTLS 1.3
   profiles for Internet of Things devices.  It also updates RFC 7925
   with regards to the X.509 certificate profile.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/thomas-fossati/draft-tls13-iot.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-09"/>
        </reference>
        <reference anchor="COSE-X509">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Header Parameters for Carrying and Referencing X.509 Certificates</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="February" year="2023"/>
            <abstract>
              <t>The CBOR Object Signing and Encryption (COSE) message structure uses references to keys in general. For some algorithms, additional properties are defined that carry parameters relating to keys as needed. The COSE Key structure is used for transporting keys outside of COSE messages. This document extends the way that keys can be identified and transported by providing attributes that refer to or contain X.509 certificates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9360"/>
          <seriesInfo name="DOI" value="10.17487/RFC9360"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="IANA-CoAP-Content-Formats" target="https://www.iana.org/assignments/core-parameters">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="TF-M" target="https://www.trustedfirmware.org/projects/tf-m/">
          <front>
            <title>Trusted Firmware-M</title>
            <author>
              <organization>Linaro</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IAT-VERIFIER" target="https://git.trustedfirmware.org/TF-M/tf-m-tools.git/tree/iat-verifier">
          <front>
            <title>iat-verifier</title>
            <author>
              <organization>Linaro</organization>
            </author>
            <date year="2023"/>
          </front>
        </reference>
        <reference anchor="Veraison" target="https://github.com/veraison/psatoken">
          <front>
            <title>Veraison psatoken package</title>
            <author>
              <organization>The Veraison Project</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="Xclaim" target="https://github.com/laurencelundblade/xclaim">
          <front>
            <title>Xclaim</title>
            <author initials="L." surname="Lundblade" fullname="Laurence Lundblade">
              <organization/>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="PSA" target="https://developer.arm.com/architectures/security-architectures/platform-security-architecture/documentation">
          <front>
            <title>Platform Security Architecture Resources</title>
            <author>
              <organization>Arm</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="PSACertified" target="https://psacertified.org">
          <front>
            <title>PSA Certified IoT Security Framework</title>
            <author>
              <organization>PSA Certified</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="PSA-API" target="https://arm-software.github.io/psa-api/attestation/1.0/IHI0085-PSA_Certified_Attestation_API-1.0.3.pdf">
          <front>
            <title>PSA Attestation API 1.0.3</title>
            <author>
              <organization>Arm</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="PSA-Endorsements">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Verifier Endorsements</title>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Ltd</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   PSA Endorsements include reference values, cryptographic key material
   and certification status information that a Verifier needs in order
   to appraise attestation Evidence produced by a PSA device.  This memo
   defines such PSA Endorsements as a profile of the CoRIM data model.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fdb-rats-psa-endorsements-04"/>
        </reference>
        <reference anchor="RATS-CoRIM">
          <front>
            <title>Concise Reference Integrity Manifest</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>arm</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>arm</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether to engage in secure interactions with it.  Evidence about
   trustworthiness can be rather complex and it is deemed unrealistic
   that every Relying Party is capable of the appraisal of Evidence.
   Therefore that burden is typically offloaded to a Verifier.  In order
   to conduct Evidence appraisal, a Verifier requires not only fresh
   Evidence from an Attester, but also trusted Endorsements and
   Reference Values from Endorsers and Reference Value Providers, such
   as manufacturers, distributors, or device owners.  This document
   specifies the information elements for representing Endorsements and
   Reference Values in CBOR format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-corim-04"/>
        </reference>
        <reference anchor="RATS-AR4SI">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-06"/>
        </reference>
        <reference anchor="PSA-OLD">
          <front>
            <title>Arm's Platform Security Architecture (PSA) Attestation Token</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Simon Frost" initials="S." surname="Frost">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Mathias Brossard" initials="M." surname="Brossard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Adrian L. Shaw" initials="A. L." surname="Shaw">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Arm Limited</organization>
            </author>
            <date day="1" month="February" year="2021"/>
            <abstract>
              <t>   The Platform Security Architecture (PSA) is a family of hardware and
   firmware security specifications, as well as open-source reference
   implementations, to help device makers and chip manufacturers build
   best-practice security into products.  Devices that are PSA compliant
   are able to produce attestation tokens as described in this memo,
   which are the basis for a number of different protocols, including
   secure provisioning and network access control.  This document
   specifies the PSA attestation token structure and semantics.

   At its core, the CWT (COSE Web Token) format is used and populated
   with a set of claims in a way similar to EAT (Entity Attestation
   Token).  This specification describes what claims are used by PSA
   compliant systems.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-tschofenig-rats-psa-token-07"/>
        </reference>
      </references>
    </references>
    <?line 1297?>

<section anchor="examples">
      <name>Examples</name>
      <t>The following examples show PSA attestation tokens for an hypothetical system
comprising a single measured software component.
The attesting device is in a lifecycle state (<xref target="sec-security-lifecycle"/>) of
SECURED.  The attestation has been requested from a client residing in the
SPE.</t>
      <t>The example in <xref target="ex-sign1"/> illustrates the case where the IAK is an asymmetric key.  A COSE Sign1 envelope is used to wrap the PSA claims-set.</t>
      <t><xref target="ex-mac0"/> illustrates the case where the IAK is a symmetric key and a COSE Mac0 envelope is used instead.</t>
      <t>The claims sets are identical, except for the Instance ID which is synthesized from the key material.</t>
      <t>The examples have been created using the <tt>iat-verifier</tt> tool <xref target="IAT-VERIFIER"/>.</t>
      <section anchor="ex-sign1">
        <name>COSE Sign1 Token</name>
        <artwork><![CDATA[
{
  / ueid /                     256: h'01020202020202020202020202
0202020202020202020202020202020202020202',
  / psa-implementation-id /   2396: h'00000000000000000000000000
00000000000000000000000000000000000000',
  / eat_nonce /                 10: h'01010101010101010101010101
01010101010101010101010101010101010101',
  / psa-client-id /           2394: 2147483647,
  / psa-security-lifecycle /  2395: 12288,
  / eat_profile /              265: "tag:psacertified.org,2023:psa#tfm",
  / bootseed /                 268: h'0000000000000000',
  / psa-software-components / 2399: [
    {
      / signer ID /         5: h'0404040404040404040404040404040
404040404040404040404040404040404',
      / measurement value / 2: h'0303030303030303030303030303030
303030303030303030303030303030303',
      / measurement type /  1: "PRoT"
    }
  ]
}
]]></artwork>
        <t>The JWK representation of the IAK used for creating the COSE Sign1 signature
over the PSA token is:</t>
        <artwork><![CDATA[
{
  "kty": "EC",
  "crv": "P-256",
  "alg": "ES256",
  "x": "Tl4iCZ47zrRbRG0TVf0dw7VFlHtv18HInYhnmMNybo8",
  "y": "gNcLhAslaqw0pi7eEEM2TwRAlfADR0uR4Bggkq-xPy4",
  "d": "Q__-y5X4CFp8QOHT6nkL7063jN131YUDpkwWAPkbM-c"
}
]]></artwork>
        <t>The resulting COSE object is:</t>
        <artwork><![CDATA[
18([
  h'A10126',
  {},
  h'A81901005821010202020202020202020202020202020202020202020202
02020202020202020219095C5820000000000000000000000000000000000000
00000000000000000000000000000A5820010101010101010101010101010101
010101010101010101010101010101010119095A1A7FFFFFFF19095B19300019
010978217461673A7073616365727469666965642E6F72672C323032333A7073
612374666D19010C48000000000000000019095F81A305582004040404040404
0404040404040404040404040404040404040404040404040402582003030303
0303030303030303030303030303030303030303030303030303030301645052
6F54',
  h'786E937A4C42667AF3847399319CA95C7E7DBABDC9B50FDB8DE3F6BFF4AB
82FF80C42140E2A488000219E3E10663193DA69C75F52B798EA10B2F7041A90E
8E5A'
])
]]></artwork>
        <t>which has the following base16 encoding:</t>
        <artwork><![CDATA[
d28443a10126a0590100a819010058210102020202020202020202020202
0202020202020202020202020202020202020219095c5820000000000000
00000000000000000000000000000000000000000000000000000a582001
010101010101010101010101010101010101010101010101010101010101
0119095a1a7fffffff19095b19300019010978217461673a707361636572
7469666965642e6f72672c323032333a7073612374666d19010c48000000
000000000019095f81a30558200404040404040404040404040404040404
040404040404040404040404040404025820030303030303030303030303
0303030303030303030303030303030303030303016450526f545840786e
937a4c42667af3847399319ca95c7e7dbabdc9b50fdb8de3f6bff4ab82ff
80c42140e2a488000219e3e10663193da69c75f52b798ea10b2f7041a90e
8e5a
]]></artwork>
      </section>
      <section anchor="ex-mac0">
        <name>COSE Mac0 Token</name>
        <artwork><![CDATA[
{
  / ueid /                     256: h'01C557BD4FADC83F756FCA2CD5
EA2DCC8B82159BB4E7453D6A744D4EECD6D0AC60',
  / psa-implementation-id /   2396: h'00000000000000000000000000
00000000000000000000000000000000000000',
  / eat_nonce /                 10: h'01010101010101010101010101
01010101010101010101010101010101010101',
  / psa-client-id /           2394: 2147483647,
  / psa-security-lifecycle /  2395: 12288,
  / eat_profile /              265: "tag:psacertified.org,2023:psa#tfm",
  / psa-boot-seed /            268: h'0000000000000000',
  / psa-software-components / 2399: [
    {
      / signer ID /         5: h'0404040404040404040404040404040
404040404040404040404040404040404',
      / measurement value / 2: h'0303030303030303030303030303030
303030303030303030303030303030303',
      / measurement type /  1: "PRoT"
    }
  ]
}
]]></artwork>
        <t>The JWK representation of the IAK used for creating the COSE Mac0 signature
over the PSA token is:</t>
        <artwork><![CDATA[
========== NOTE: '\\' line wrapping per RFC 8792 ==========

{
  "kty": "oct",
  "alg": "HS256",
  "k": "3gOLNKyhJXaMXjNXq40Gs2e5qw1-i-Ek7cpH_gM6W7epPTB_8imqNv8k\
       \bBKVlk-s9xq3qm7E_WECt7OYMlWtkg"
}
]]></artwork>
        <t>The resulting COSE object is:</t>
        <artwork><![CDATA[
17([
  h'A10105',
  {},
  h'A8190100582101C557BD4FADC83F756FCA2CD5EA2DCC8B82159BB4E7453D
6A744D4EECD6D0AC6019095C5820000000000000000000000000000000000000
00000000000000000000000000000A5820010101010101010101010101010101
010101010101010101010101010101010119095A1A7FFFFFFF19095B19300019
010978217461673A7073616365727469666965642E6F72672C323032333A7073
612374666D19010C48000000000000000019095F81A305582004040404040404
0404040404040404040404040404040404040404040404040402582003030303
0303030303030303030303030303030303030303030303030303030301645052
6F54',
  h'CF88D330E7A5366A95CF744A4DBF0D50304D405EDD8B2530E243EDDBD317
7820'
])
]]></artwork>
        <t>which has the following base16 encoding:</t>
        <artwork><![CDATA[
d18443a10105a0590100a8190100582101c557bd4fadc83f756fca2cd5ea
2dcc8b82159bb4e7453d6a744d4eecd6d0ac6019095c5820000000000000
00000000000000000000000000000000000000000000000000000a582001
010101010101010101010101010101010101010101010101010101010101
0119095a1a7fffffff19095b19300019010978217461673a707361636572
7469666965642e6f72672c323032333a7073612374666d19010c48000000
000000000019095f81a30558200404040404040404040404040404040404
040404040404040404040404040404025820030303030303030303030303
0303030303030303030303030303030303030303016450526f545820cf88
d330e7a5366a95cf744a4dbf0d50304d405edd8b2530e243eddbd3177820
]]></artwork>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thank you Carsten Bormann for help with the CDDL.
Thanks to
Nicholas Wood,
Eliot Lear,
Yaron Sheffer,
Kathleen Moriarty and
Ned Smith
for ideas, comments and suggestions.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="L." surname="Lundblade" fullname="Laurence Lundblade">
        <organization>Security Theory LLC</organization>
        <address>
          <email>lgl@securitytheory.com</email>
        </address>
      </contact>
      <contact initials="T." surname="Ban" fullname="Tamas Ban">
        <organization>Arm Limited</organization>
        <address>
          <email>Tamas.Ban@arm.com</email>
        </address>
      </contact>
      <contact initials="S." surname="Trofimov" fullname="Sergei Trofimov">
        <organization>Arm Limited</organization>
        <address>
          <email>Sergei.Trofimov@arm.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19a1vjRpbwd/0KveR5FpjYxncuu8mOAZNmAjQL5PYm2Ua2
ZdC0LTmSDO3p7v0t81vml73nVjdJBjrJzr6zz8BMGstVpapTp879nKrX697D
gd/xvDzKZ+GBvzFI55uZfzkL8mmSzv3rcLxMo3zlD9LxfZSH43yZhv7W5fVg
2x/keZjlQR4lsX+TvA3jDS8YjdIQBtyABlXfT5JxHMzhPZM0mOb1PBvfJ9Mw
ju7qaZBn9UUW1HNsWYf3Q19vDP/cJenqwI/iaeJly9E8yjIY8Ga1CPHhJFyE
8J8497xokR74ebrM8nazud9se0EaBjCVDe8xSd/epclyQZ/ehit4MDnwT+M8
TOMwrx/jZDwP5hpP3gSzJIahV2HmeYvowPP9dDoOJ1m+mslj38+TsfVnRBNQ
D7IkzdNwmunPq7nzMU+jsW48TuZz6Ku/zcN3eX0WZXkduo2SGXxRT/7wuecF
y/w+SWE2dd9nCL4K4jjM/BsNQuju+0l6F8TRXwjoB/QknAfRTDVvmOZ/vJu/
a8DqrSGvozls1UmaAORLgwEGzP2zaA5IMLEHpk4N6vTHIJ03YEnWkOdBfh8F
mX8I32dBOnn5uNKzoXpWDD6YpFEQ+9f3wWPFuK8u/bNglNljBtRhlkGHPwbj
eQM6WMPd3CdzmOoJvi+PKkY8i+IgTewBc+rSmHKXP86oAQ3rjZMYtnq0zN1t
OwvgAMXj0D9bxpPRLJiEFS/Sp+7mPgTs98/Ojuy3zu5mf8ykSU4tCoC5CXAh
h0H8cnBTlwZ0qYDzdZjehZF/kyZT2OyHT8AN6thQHfXQXgy0Bbo+hIijQCvq
1+eMrRrPfXkJjU0fhUKVSdN5MglnfqvR4mYBvBMO2H2eL7KDnZ3Hx8cG0JVx
mObRNAonuDs7wWKxs1zMkmCS7bSb7dZOq73zp+vB8fCi2eq+gQm9OVLt31yf
v/kWBn9zOLxpNhaTKb1lAoTpwG+2Gv5xOG74OAY8Hw4u6q3O2pV8dd2yV8L0
hyAYzGCZeTSehf7Fcj4KUwA+DLbzzeWRPwrSMawwW7u6u6xFiyL6BScl21Fd
dsIgri8XY2vK7WZrX2B+cvLrYe6wg5MonT8G+EcK+ILUFnajSVwCXrJdOfFJ
+BDOkkWYNgQpdoA3LJEYEkDg+7jZ7Hd2AmfuDf8kHDXsReA+1b9aRpNw7WKQ
F+ntdJZlf+Gf4Yz8tn+dhwt/tOJ/aWT/2zBFpvObcKy509zVONaquzhG737T
foPvrI9WdfoX3lbHjs1us1NAPHwMH69vjve7vNb6gT8eJSn9/cWBf3VytLff
3Zc2fdMmyUKrzX6z14aPR6+vh/XB2VfX6mEHHp4OLgC8392shSs2sMF5dPj6
yv8uHDGz97eg77Z/NAui+XrcBXIcMLSArd/FxAx3xo85/r/x7j6fzz4b0wj1
NLwDvpiuXCjg7L/vNfdp4r32XpNO4Q1Mrn7ciMJ8yoJFGOT8Rf18eHw6uPnh
cnhd0aY+DycRiCAgXHggUMRTm0xh67eT1bsVN88n76jLAonbTLeYwxlcBXNu
88sjCDEIDPz25uy61a6fJjc01939dk8edvgh9maxiOa0zGEiswy+jRL9FrVX
esn7nT4umf7qECrwtiWDS/gPEJg4r5/QKrKX7yN09gudP3EDkzSsLwKkBkDi
svKW3ZzU1xN8i83KjG5QqoMjqghN/XztfHJuOpWWNDUA3p+BVGU7ANb5Tnk2
gBD1b4dXpyenw6tPmFUEu/8QpniC08r53EV55Xxw9TQXEHZBxmtAux2QGcOd
0oh6mngggQoFUabkuoopgrSgG/mXvGh7wvo7oFWElv4iGL8N7sJ1s79fjog0
P0jHHdWx4hDSMa2aWhSDFHvWKAg8z8hDMmMe9bnpzWSMmRpi553p58wSqO7v
xPOuwixZpuM1bLnM3QKrc7ajpLe6+3gh76xXfu9yyMrFaY7yW5khUCSzcM3W
K9daZHyVE6sPLk9fDPmC7ghdUZ5odCpfHyC4kmlOp0uQIkpwVvVgEe0EZqAd
GGTn9NVps7nXK/Bf63Vv4HV1el2Z56rFDONJkmahqG5IuKeTkVFhQ+trJM6D
m2sgxlen50WWA3SSsJRaDK6616fFFkHazSJ56+uzY/56vdrc3PU8eCtsGgL4
enh2AiovMAdQpbINz6vX6z6oRHkaAGHwkFyg4P4iZT/K/MCfBvNotvKTqX8P
ciaJfMDufEXcPIW2frYIxwDZMUE0q/mgjTyGsxn+C6cirvPZ8UExDvn0R/PF
LNS4DT3yxLsPZwsfTlIE38+Dt8BI6G0wtQV8jpfTgCYIj0fLaDbxR7CFwCjh
KfbQc4liGAtYwGQJLADldRwwA9UtyH1cAaIbnNDFDFhZ7o9BoeTGsDYLCQm+
mQcLALl6DIodHJIIHgNg/Xk4T2r+4300vqcRQScDqT2DbwCsONWVP4mmtNQc
Z5InYyD7Neg/ni0nUXzHkw3xxQ8RSpr4DNcK+jmJ08EYppz5pFMmswYwUHiv
p+iBAjetihdUmjoaHpa8oTgwYCesNhpnDcaD6j606SJ64K7j6ENCr7Jxx98C
8Wq74eHM3P3XEAMkQKCzQEeQWmYMRgB66e3eXRgD30G+D9K4u0vZCpjqHEB4
nzzirLJQjQq0ARYHav4s+gv0zBP82nuM0rBGC5cOK3r9OF0t8uQuDRawd8EM
UBt3B/AeKJnHK9FCIClpGuLwzWI5mkXZPbwkQMS0jVG+MVThDAC5YWNDEChB
GkKuEIyiGQLxEciVzxY3m9A3/FN6Q5wAhvpKrYOPqRcIcuZqO06HNycNPtnz
aDIBEdH7DDVLboV8gvf3JWf8/Xv45+NH3vYszJ846IXzPQI5gvdp7ZGmAQJ9
LD3hGYIisCrYhjlPQdPljx8J1a3D7L4YZvcARy1ESUbvxgjXNq95cB5nfBar
X4XzeWK2co6BLS9nCAkAPZzaWQBKFqkEfjgFgOb4OsTLIMbjN02TuT+HDhGM
hrPOgRHYBz18CGZL5t8yFLCAEJqcXuKZjOCE474B2XhgLiKnVZYPX+N0gngM
nQQ28wAOUDJCYQ+nBTNVRCCKozziycKWAiKijJ7lhqbaNNQirURqoxjwFRjU
gtYLU19DXudhkKHwQnQWQRalvqa2nndO1E9obgyHj7ZMpGI/fAfD0K6E8UOU
Jqw/MG0mYgjKN+BMMEWUAzGDCKoWjjKgyBEtD60dNTh1SIAz+1ivaoq2jpIk
Vx880MpSkHuZJCQw6dQH+oqcEw65Xtp0GdMREkhnZtWe/ooRZbUQ+hG+WyRI
0/L7NFnewWxAzE1TWDa+CFlgfRJOo5ioHhADAH9Y8wj0QEFGQhABpYhKENiZ
1PmzaJQGiCp8jhZACOUQAJAHwFaX+UzGJbxFkcI94+/fi5b48SOuWyh4qHYr
pEMPKhyMgYgeMvUAEsAqPG8KIiDQ/yV09Ye4PXh2AJGXQLBw40g4szezQazK
EM4p/JGB1JzwNKHjYqn3WlF6oIenhLuzkiBIBAKlSaQNNDQP4QGqAhYu4PwQ
quvJATyslSP0SBwJkCvBauGfMbHc2nre6X06H4R3wj84xwtgKAw7RLOQ8IUx
TgbMEMbQ2A8eggiIwszC5Pfvn7Y68IKkWbXpAXbbw1MDUGd+o0URejQOMsGp
kSWluDAIx/dxMkvukOZ43nWEYFXAYrmIVhXMsoQp1Jx3Evgwn3vYogyPMnZi
WlATaETEOpEIBTMvDpljw4CIsEV22WCLqc1AsYe8fDJJ8QgDh8dxRytPpA48
Q/je8B28BU4TUPh3rgikdtReM0sTRB88OrFqmMdg5Qoc+HJAtASxlw7ykzLF
yTKlvZ+EOWw2vDpGiI3DBRweoB2yhBEoj4+KJEwTUGvVsUaQKxbuseHb0Qrl
fFyfA+oRXcBv4LkhDEr+rxnZVQ+BaM58ByaTI3UFCsBUnQmKLaUw8SyJKQ0U
QI6S+IFfzLh1TCCkzyyPvAUJDL1wmb9x/s31zUaN//UvXtPfV8P/+Ob0aniM
f1+/Gpyd6T88aXH96vU3Z8fmL9Pz6PX5+fDimDvDU9955G2cD37Y4LlvvL68
OX19MTjb0KK8plNE1hOEP6Eh7ExOkp7niP+HR5d/+2urC1D/P0Bi2q3WPpxI
/rDX2kV683gfxsJmYsAF/ogCqAc0PAxSkn5BMxqDspoHM9aVMpBSY0Lkhvdv
/4503a/3//1Lj2EH0wG8U+S75l+FsxWi52WQ5sDvvhUDUs2hTVckx9T8G6bQ
Q0OhVTscwnpMc1ZUFH2pvuFcNkVt+N8R2yIkwan5G2k4DoErpxsIQRKx8A97
mkBJiOupuSJdKQxj+EuN3cklsqx2UZOhDd6r8X0Q34VASFcNC14bGcrmMCfs
o3mfpYS4Pf2z6G34GGXw9sfCxDw1a349G+xEuBSSVzET7/2B/0BCzBcbzY2P
3lVyc+Ad+FcgliABIhMn86A5HJU5ySH0jTJu1FxZfBLkAfOV+yBjVPVQiI3G
UQ6IpiQsOfXKsuTXDeGNEz22DyfejA57D2gOykzqz8gpwqwfyBGtdaXZmTt7
IuZLeIxUlSjnMp4nEzYM+f4gRhqMYjb2gOUL8Y+E06OAht6SkM7E1etzpVKj
1gsybuY5pNW3RDAiu+GE5Tc4QukyJoINGxJolUEv0FPAQGZ2OcRduGYZ8TJN
UM8unIQaMn/pApLJwjSy5ByUTD0NTluAJbV9GsnskGsR3QT8uGMpE2CPshNM
Oo/mIRLSHIRCUiX0gKS6yvxrmp8K44JFNMhgj1DSO48siXZBPVD9YS+2hr8s
I1BFcOKAOsq+PtTiuE0Itm6Gw20gnCJIA9meTeDswbTVIzilMxDrNxrbnnch
IL2AUZ4Ba25rdpOEFZnS0mqkzwyMxCtNa5bYLSiimLQlHmudtealYTCrE4iL
0jVSXUuiJmiz9WH2BNSuEDk1yDwHZFcIMgIRubpnAjUE0GmB1QgctHkGVk5n
25hR+BjDBoOkGvrH+KVhqP4Z0JglKDP+1tHx8dm2Yj/9VpNkgM8seyocLZIZ
gBi9n0Z3ZDgM5BvgVaJDZOUJKdHD0M0xyNuk0eYJ7Y9IMSDG+XMWS2w++f79
NesTfqfRouOv2Yfn/dd//ZcfBNnDndiEP+2nUdc/jV81wAfNhfwPv2qATTOD
zV81AP3856/v+snTxq1kZeXXrVjeaoH+034+2Hv2wf+V4+hRGjCXD7CP1XLM
c8swf/AohR9ncg3rkf13/XM9k+pRPvjnSN2sV6on8kHpuzKTdaMcGiaJr/yS
n8A3/4aTcCS+J0ZxPnyH/7lGpoPfXOEHFmKensumve5N65H9t/rZlFHcp+Wd
fO5nk0ZZszmfu20LH2W/ZNU21rlvL8ylNLUS1lVBtQiu9XugoCuzSWTohvVJ
f07q7mf1wGDdB/+bBXqr0IpAH222WfUZKQGKYs5Olx7LnxohzhgD9edL7eq3
RnH2erOEEE9+3tSjlPWVIiif+nkS6178g1j3W8egcbyzEMSKyYFLdOGbL0FN
Cib6wyNIRKF8SpSFtUCpr+wP3yETRQ3jsyJbZ6fqFxs2997wPxqvj2bpZORK
wxkZjEGmQjNBdHePYu8juh/C+QiEedoBkQjQJODp/mRcIisLughBZV2vVuK3
6BlLQLoob7DySVX3h2mynS+LEMlRelbmSpH+LJeN6EVpiJYV6M3SCPmSxHoT
T8QwDstjd8GcLdlK+1TOmHkgUulj4o0TI0Gi8R/Wg55gz/sDWeSJsBtKXVNm
bnTq5aTnkBhaM7ZznHYFIEBbixpho+bTQBOtDnDksLyWtWC0IbC/AlQ2dJGp
I2zCcPw6N0Xjt7wTNHUQ4ygQwIZaFCurOZqH0pW/pZfEnGK7AUwCTcpFdKvj
6iqkuqgOyCErhB8znPOJmpaOuk1tfH6/OQtPkV1LQnmKxtMnlENmsK1+9PSQ
PK5FvmUPX9I2sd/6+TPjut9qivCCtjIjAuDTbR0W+aW03XTg8hTMNl+6DeuI
E2ELDlJBpBg9Lu+DLNzAJqA638VfbIzxFDMF48NW5ShQAsyWc/BAwWb1D7AN
9MptOAzZI4enpeEvS+iNqvocW5PyjZqs/xAFlY6Bgi+ipogQjkauUo6bY/8j
0xoatHCQ+ESiR4S9ueXFwHhfh3ACTwdfbyOpIqcFkSnsqUIVDLVacy7FuoBH
0/dxL5Au1KMgq0foLBaGgCZZf0NmQVbRjSfgu8HGPXYt+jOO/xazlVdBzmoU
84XGqfskQ+IjVFkRblDV0QZGBm/lcYdX3oWZh68mB69qO74na8GUzR34R0B7
xO6FhndkeIJ1HmQTqkhtMCVuyT5/XvICkc+PXP9FNgbazxywGOjQ8IfKap5V
twAsWc60f81fLup5UkeBrWKSwWQSCRAq54s2QLLI2i0VqlkOH7IAIrxDZytG
y1wcGWRSQu+PtikANgNQk/lLlHPBD/7apet+AY/phzUN82MrG9/asY8VlKTw
YC19LzwoE3glbVUNyiOXKbySfJ5uXGB0TzcusLonG/9bYYGflxuvodxV0FhH
uhvFkcvtiAB9KE53zXibiq88044fVNolSu0srvXl0+PZ713Lg4QyrmNDV4pr
PMWKbtbIb+LCA6wBopaiwRJjPbJkTnEabN6eBysShuEf9KSNMAyMyKLP8URi
yDa+U8cLR0Ln1gAjjpjwbmt25Up/dhTKaYzeujGblU+dyBcMhz5GCZy569Ko
kzKkPQ5ZaMXGi14dInHnQQwkO9VSKfTDEEeYjPIH69G3kgXTrW1HMaW3kAmd
PAQr2zir4yd0KIavxq35iyRDrWCFMSw4PySBlvWycg5iTVE+YGsa2viu3AlA
21AmQMfq2sihSmtplDkRDu/fYwS4ZZ2VJAlET1gWoacQ8o8ShpaJ+dSE0lmC
BfspdSxddRBDAyZNChdqDml4j3yKInHCILeVOoxEkOiCrWxbO/0kBI9iGsUf
/f49TVaiGGg5aIF2DNA+plPesW6IyY2ygAXb2WE0mjUsQFhZGKDDh4K37Xg6
mBv52GEXJOppCiw0ecRdoXfiycLp0naFKorGRF0ypA6In3kIXzjM95To4X8B
LTGcpZFFfwn9TtvfcR509woP+l0axLt5pGgH4+dWrkSKYCDvCynJqEPXX8Fp
qF+jDLF19ep6m+UVDpln/1yS5dPonX9bnwWjcHarQYOcHPNW1D5YgQmFjm/D
1S01R6E0SaO7KKbgSe6BuPaZfwQHEvBR8A2efIZ+mnGoUS/GT4x8Qtboex7E
3q9xkKYrJYnBoPFd6OA4fcNvo92dY+AQRnOCcBNm9zGGswrGmThPQVR6L+Kh
BNH4tzStW3+Lp4HBA63mtpoOYISJScFusTXlZEoS6nQWvgPKoPxtBjHWBbrU
KqS3jMmDHD6DgWNeW0Th3hIuwVMmDLvVhgEEExwEinSAExtGFAvSadcAy8hb
1O8yqjWgw2uMF8CQrPgOqC+vCaMHSSIlxFvh2nFc2AvmHrwOFUmhqQIuWZ0f
mp01WsMTEsPwUnNTPOgpgqIPEw/3hb9F3JhXTnjsf/Gl75w2b5sPD2LeEYAS
3nB6rLFvTE/q0URwT7eQyWmNIav2HU4ttGuQpw1mXrOiTlVLMiIZm9BopWPf
KEgX2dcjuslHGGJ0xyGUBC2rn7xHpHV8MSmMFOiHfT04mhydCAz1qW7kvsXl
8u42VUzNIkxBo5K4oQQZqnagG1EdFz1WYELZIjSxWeW8zL/9lXXWkxMi12zZ
MpGP4tfXyIB/3IcU2itxBE6wg3jC0QUoIVscVF8Ed02sWIUob6DtiyRCByiI
SbjgbJEgXURzHUbWshYUc7BcYcjGb0dajWz1GE654gX1dqu7293r9Lt7jUaj
WWhpNWw1GrrprldoJ23WvWbHrx62MIw+UW5rJH9yrtw3msOlhNFTijrQG2bR
/b/9VQuB1gGM5BmOaDMBq231UVzG0S9ImeR9RqBS6qFtPtD2DMXLl7OZjdKk
gruRbIoj3C7DaOIwgnavT+yUAHs1uDi22MLNWjKNhHylaTUO+jSp7nQMYb5R
pgp6pJs03zVbwN1hBtvyUsMJO+06tV0PpsHXDdueZIJHiuKliE7ExeAwPiiS
DiNUDK+JDH4d5Vk4m/4OR8dGkyoZquMVm2lUJlA7vKE4mM0iXN3EwVTnG8My
Sj1knQwa2HMNHEZcE/XELoCV7IgXzefL3FZ8Gv7Ar4r1UtY7DVLAqlmClUto
HB3p6eohhW0VWudLZlnKGqGJz2941xgSrAbTsiZxrspZkdSF8WooVjvcckEh
tBSDh84TJzkCd3z5zGTlODK3MrZOjcp0AjGsmkVBCg+x14JrC1AzzaPxchaU
pgAsZx42/BOKQiV+V5OBPTaf5cHbUESwdM6itMqK4dQfP6YiCjUPA2lGaMQ7
PSb5inkJHH4AATTM7bPyG86FHeONxMtFsWoo1iRu1oKDOgkN7yYpIeyKY+W4
heHzZcrMalmZkn+0D3Dx9FSrQl51Y4cvlYey+FP1exwh0Nn7K6VVG5HQ/r6u
tW4lIFb3Lqsrsyh+q1Rm1jwo1wWxV7bHc6LAkaqKtQWN2zGSh2QckZYCy0lX
dkC2MwuNc+Q4VGhkS5uUfYB1gNA2LV7FGE5pjnlMgLmAwmMPtCqM0gZB8cBH
D0SU4tf1Cah1OelFWGkE/Q42qwn8CQja/kZ9w3nusXH9IZTuD1zOgk0axutX
iNhyq2sQ+pwBFDnmq3rtAhq0egEIganDykGhj8IHHHTqipYeybjmeFF8LRn/
RtqAYwEehyfhUkdrjcL8EUGGVNaYYwxZ4sPOQ/JLRYSvs0Lk0BbXCHZ6XKAG
gx8+Xb6sxlx10sga0khB13i38Dd+bNb3f34PO1rnv3ofN7ynRtFH8N/9p94l
R1EbSZ+bV1mCZHO9bTDQGYRn0TQcr8Yzc1h1ZtZMfaWMo+VO1XIktKL8EzMA
hcNaDMkjVnxzr76pUOViXylxyog4idgwkYvJBo/KPPgzhuzSIJybCKwS08vw
CTJ7amDeguk1mK63slwvYs4zgurAHoRcR2LhpE6bp+eXZ8Pz4cXNABMP/OPh
yenF8HiT14MIpa2aRQBQzLArM8gXdv5JJseeYxFoAT/92Ood7P30M2C9/YIi
hDnV5Q88/Z9+3D1oUpfqCQuMTBBJYTAWUIAALNnmIxQFTe+6ZZ1bYgLBCRut
ap51uJGGUMYE+/dYJbSUZsVUMaECBFvRGa6HR99cwfxgYy9eX1Ahp6vXN2+O
h4fffGXvZ/bbhOAqj9j6IEY3LPWDZKD7AyVw4tbewGsKwZhOxJHjqX8iylSN
/lSLs2T8dpI8xuvbPBS+WrO2QrytCRu7tPPYizGm9rqsZT21KOcrZ/AP1bMr
RgKrJdMsy56i8ktccND/XtSlNJdGRRe3Ebnb2IvCPsnP3a7YpTDjzWJw46Ye
f12XwoP/VH8ch6PlXXUX9VW5/0vechWOE6wbgxoUP7eeVPV8qBxGPS+9rATp
zwliDecBY0Ih4HXrAvieNZltxgl3wqX3fUBLeF1hOMPmg4308qjYb9Odj9qu
zcKzzSqQlGBhnnk3pNrZvvTCsvihmt0Ren2SeZRRsNcnvWlt86pDUdH8qTNB
58GhdF8iCcO6mFw/Ac6E5fquIBKlwMxNx9Vb5De2j9fIIiTlZNqVSy4lLVUE
yijFaXmUnNnw3r8HMV8Grc+DhW2zYY13sQAKlWkxdR3/064cyvqg5AlLijTt
l/HbGN6v5Mfmuyb8NBr473RaaKuMGXV0OyELM71a0qtV7oWfUi42pims6diW
ju1yRw4WnJi2HWnbKbeNAUvViyZ4ZEyvrvTqlnulBq/X9e5J716598RBKNOl
L1362KXQRxppPXfNRuxUNFgD/aqm60Fe1dqBc1WDNcCtavoMRKu6VICxADXH
MmA6WhYBF8BK37hdD+Fb5Q7h0/eEIPmvKAda+gTpAaDyRRMRlUkbmKM4ieMl
YwAmi3qcBQan7gMf/Q8l0oChOExeKnIVMEznyRVUUdqKTtV4c2t1qhQaS+Os
RapbPU6lpFYxlI1x1evQoktF72p0dBZUZFpFbloa82m8vS0IGs+PV4HUt4UV
FvkRMReX+iu2UsKbc2EDGx9Ze+bQzxC4sFKaKR48w9IHwn10E9FOVP4rWnrJ
uDHGmA1U91QhJIop9ymKiT1wpAMaL3ekQ1NshcbRqYxHnMbKwkyHMTo2Sq4u
5m+JR49st+hRteyQ27a/BkfDxbk+m/6e8d57a700vuulGWEFxhWGSwa35O5Z
56xRHHePTkmnrVw3v9Wio3eqylq6tddodNrbnttSE0TT13F+uENa5pdrFXx0
ShEmaHZwjDDq6yOdB2CsMI91kx2gDTDlDsZKisG7mZNsbuUXiBGFgr4wbV8S
DXTLrVGS3+tsY052vlumBMJtlbkgfjDtSuECZq72La/gIKZS6TUV6qxNPK7F
Dl+LlkzYSwo2cryHQ4wqcsy2VeCYcW0kFWCFSSplcHjLTGcZ51zgOyzVhLPx
mQLzdBmhb+IZeszDdypRnw1QE7ZCMjaOydzFznJ+Ae6RqlVhuxuoWETBbGsX
+cFsEKq5gAcYy43h3umkaXEheLrElYqAw2KfGP4s7n1tc9HGGXiRdr3ETpCv
KjMB23/P9jdjJmdLrB7NGNpVIACRgjSEocPy5EUKAMhRLRWkCkss6EB1R5w9
9Yoo3vCJPIUBgJlNRWj/dVaEhkGMdLBN1MEdUt2crOe6No/lZPiWrckShs+1
qmJJKiiAaOM+urvnYgobjitcwasyFFQOBM1UArpmT6zSECqFtoYOAB1676G1
+F+2rHBmIjoHfmsbyREapIlUuU2I5Rz47e1yLA+PJ96EA79bHIYiatJ6NDnw
e2u72+9CVD7w+2acj96a9WSOpFnxvZI5f/Q/X9PE/9nyQ33mn1tR3jck2VIq
V+GpdSa34A1ftKQyJginaa6cOqXEhjSZSWE21CJLNEX4paEZdsQ5xQwrdqWj
uYjc2jkDxAs3Ds820F1EEgSnTeHTSyC59Nys3XHwWjU8sPlgbXM3SLfYbbGo
7sVhUaYrNr65LrcNdB2Ka6CZJNgwYLJgDjwe2WbGxD3wN94cvb44Of1qQwdA
boWNu0aNF6u+3C7CzXO4kwNAJR6YDZbCQlVSQnkPgRghZUdiIWWt0M228u+S
BMsMBhknI85CLH8HRAgrpjl+KBxcyn1mHq0yA3KBNNCIRMj8gNw8RpP8vsZR
Zn4G5JFcZf40fBSJBCtdAGvBSn5U6UxkO/QsE7L/7a82XhMdK6P7t+xIc/Ed
yICtYWHtmXu1z6hs4f0auVcBnihWuYQoteZA0pcLkljt0DclCQRuFS1PvaXd
6/sjrJVCdvw0ie+M295MdK01v/Lk0eGXAv8MBFXtv7D0Lh11WmiWLa1sTOVP
Nbxf6L5HPj4mCvYyVWqQeQFxZlPBTom8tsjiaQ4gRfpA1gFlI9PHrLSoayK/
GDbBEqD6WFwY0OZ10TFMwdUbKuBHq4rcKDOEkhYysFAIViVSpTlxKxVZ5NE3
pZTqGFWDhvfpYPIcyU6DScNHMXtn1lFWLLkYeLY0oAMaHVH4kU4cw5/FUCOP
CO3i0sa/CSsloN+Uu0Vy4DkSbYllHZu4+vJRtr4sbj4wW0u/FAamQk5ko/j8
BbM7gG1+Pzcx4DDBZa6ApHYFO5XoiKrjSuN7hrJqz6VVT8bfeIXvu0Cqf00d
NtTmbuDDCUhzJmqB2g703K7kmogNTEPAmw0amHM4qVuBDgJAEf4KoZEFZdTU
+EMp1GabLM1uifDJUqtEPahkzG0Pk+wkJIyqWavKaE42ji3nUuQ5Z0sA3K1S
U/JmGWDiKEg6+ZN1Q2ddKr3uFDZmjO5rrSbaUWN1iRoDMEmzj5oWPjGWrUHC
qc6tmDRXeM8TT0Li1kSrqTPKKrdFK2lsi46S3uPZR9cJt9MDbmkShKrEN1dn
Esq/0tobF4xU9XIrZzW4PN3GSACnwh6J5+P7BFMqsbjzXZwQoVB6g4eif/CQ
ENnkGBQL+Swp/ekNsONEvBe0L0SEPDM4S8dOXMgLpqMEZo4bDzKu9KmrwZUU
tgXJ2yxxQUOR3ZStQSimVwV6qcygRh7zbSQmq5awrYQFyVsPpQpFjrBKdgyk
5xvUE7Hc3ThKx8s5G6oytgSX5z3CpKgIg949KgRB5JEzieF9YtjltO1YEf1K
7MlUUgpo2PkyRZ5RVv1U7DvFiM2w1FeiIgoPmE3RUjFBPTJVG9yzhX9koQ0o
FcSqCVXDSpFxu1t5h4C4mEHHpj+WyGmBHsDrPiG2qAsAhj7Fkok4EnBB0Cg3
qew0bSHbJMA/Bissnw9tHjmKE62YlN5XOiROJhExWbopa8ZTrknipDJJIS3E
+uNpXXdDG6FQw0sp22sqppk8O/6qbkLPnaD3ck+hd8y01gW+S51kuxoxURgr
sc6y2ZBhzKoGJ6YxZcINNMtQ9bvvYo+F7Rxz4+wytiI0prZMqNLBrRKyxSSr
W9iGNzKxgpW2Z1lpqf03V6cmkUhJNNb3rhh/mwd3B8XrQWp4mw0+/Syfzm81
4TeQsYqM4iZBK1PtmCro5nJVAqUdchA8anfKroSxl1QyFZFfDUu1Y8Vwjq2i
VO0cTbnKkGZjyDKN6rogniQk/LroIS7PQHZ/wFksrJORSSLIOZgzJW0P0ClV
KWdUXFs35mLzecQFkFlRhBc/RMkyU4qIE79dvtWBj5nFiNQqheNsPLttEpuo
gKtNMTKOY+G2B3cMLohL17rIoMKDY9lOdfhO9cHKSufW3RXMyo1BBVazYg6l
gnaF98imi04m5gUWLGgbVaFXnNw0De74eg0uGu2gpqln2ENoY8ZrZ3+vr5NV
ZFAj6bKFCA/xQxIh74hDlO0C0FzQWXUfBnSI1PdYIoIccyAPqhXx1TmZGhSd
UrAeEn2WC8D/OBfUjpgJoIk0Cy0njUzKmLDDGNnKSlRWpg/FKxhA6RllEYf7
JXLcOBeMDruVfKz20KUodEh0kUtSLzKUvlQktAaz8vM8iX63PnxN28Npxt1W
r8V0wQ7pBZ5xv1ogX8lRCNQQ5JVTXCHeo/bmPBg3tbjtD4bXoLnAntzB36qQ
ragHaG/bggb188HRNjFNznBQQLaWtxGQT3C8IUqPCw6GmrBADF4cAaN/hlLK
gLestxxqWnBk0wIsEGoRDuNfLNIZPChFkrGmXAnrnK/PjpE4aR6n3Tm3GGB5
+vrmzeXV65PTs+Gb1q0nC60xShhuIrHXmkxvLACRCHWxFAzWSd5QZOvouxul
j6lb//QNDHpAufwDr5SgC0AmaJbCs4DHiINzqO2LYnNIntEDyNU7jyLP48so
NoBivdz1wrNnqSXFDlSVOHyi7CE6qjnz+oNf3+01m3vwR6tJlwtwgu02ObPt
9A9puQ9/oKGMmobLaMItK6QZ6dDEDv2edDC4yv1MDq40xzW3O/td+rYirlua
tblZj6dZysqSVh1u1adWxvEt33ZpZns8M+VJlmmtyfyQnj0ed48nWeHsk3Z9
brdP7Z5RdrlLi8DVRajpOACNaCoMgLCX8hxt/z8SA4dDyTU9hJVpiImQfDsA
1w1nmz6dFQ2ZDaNyI+Y70eVwesgAi14q8YhvAcCw3tN7J9Dg48ftmhr5IjHg
saw2mXoRFhen8wU6DCggE91xzQaofsIzeSUinXHSCt3OQX993nMnuC7X5+M2
856M6puL+pEDzcgiVeRPC7YqGa10S5e5LYtdgNatACyy61r0Ht62tciV37nS
REWWxtlEb+VWBSnctq49U7coVIi57r0DWy8QmrdraESfwW4Z4yaVqMHrMEgX
9lgOUPfuII9a3KXBJOSSI+rikYJAlalqI3o2PE3k0lqqJm6JogdFkJBWal3a
IwVfjHhOSjZejp1NVw1vq5ApN0lCuT9CRXpYHAeLZbvToRtGzJw2bk7ON8wW
VOgL2/wuuh8uUwKOWQrdEKW9K0ookqoxKCAYo2dmXeRVuplE8xFV8YXNF/bt
BofqpRS4dXJONkW6Dg1pGxqqaEVkA8TSa3S1ACZG6wXWqO4l3/KEFxSwJqHk
0H6j7fM9MsDsECmmhZtGgJMGjL5qb5Q0odQluWKWs8O5DNNQ6Xo4HXQgoPVW
YQ1fOajUQQpay7iJVV608lI5daSwqjleGgzLwJuMeeakm2B3+qoQhavrvPFY
SvXaoDC/jfIZtbPKbbG9xeCS1za8wxBFJ5C1STaUXqDJMBllwa7GdTak+ApQ
e3XtDeXZNbyvYGNiOQal+j/GI6KV8cBx7Kl7cYA6nQ9+wGtO/HAOHwgKCyKG
Kan7fLedaIdbZkldrqwuS9p2gimcWAfjZSN2QcQ2T2aAzbG8DmPiJuRaO3Ku
XJCbbMTJk4zyQOVAPabM51gs1BdSivSf1bE2FS0ZT5VXvCRaKgZ19tt04xsV
u8hW83mIhjiSHs05rGnXERmdPFOn3qwLSCgyna3W3jbL+Yi6LRn5dxl4d9so
EFgPaoxWwVk4uVMwQNCGOWWTz4P0bYgl9+AILmfWFQPm/iUADdu0lNGufGws
Y2fNJWOapyhiCmQKjdNBjNFF6CW1CbWigu5lGjadQwRWVzGh4rpcYJwgZ5Ku
I3BSa4Gq7DBJLBYDInIqzBl04SVd2Ollyykw/EjUv0mINyUodYzvHsFUXXeq
d+buJ55kMAmIXetrCQ1kMfSnmt0zC0MP5QSkKOTvBgQYXsOAVhdxcQXFSZSN
l1mmbAD62nTCWimmov2B+BLt7/HIdSmCRQBrRIs0aT1E0iwkZKZk4Myaoqrz
aa7c8ixdlkLVaKZqILFCkCaFJxqV5q0+R6sgikiBjEHsVDzTW0/cLnzH0htl
XVYE5CFG4rlXfhekSwgbc+LQT2/0bLE/0h3rHtmaSsY+vE3cuoQdsyNEvqm4
lNzq7lndx0mwqIsdvM4Ix5dhWXyDDKyPQMthS9FPgNFw2qtrAmM4UNEKSUNI
WBRNRA5Trw0lDoQwRm5QiaxI1WQ7BjY8Rh84qTLAAYDTWsS7p5n3ttitT3SZ
LLmyQ3FUuc6VT6WUotJtKX2E49uqPIRENNDF4JEOyac4XCSAOrDVExTYrEm1
msAlifObBx3n9o5ttqiQRVoV6dJFMCTTFr/jAlFoobHeRWuYWeYERU4aHmgl
Sn4hLxO7roVy6VMOBA3FSXuh6nZdVbHbKc4ggp27Xi6mZeJrRLtA9ERLOvAJ
qVU355sdlekDFWVZMes6DTJB4TukxDgfE+LoJAWPQlWgMCzUiHOgwrfJJosA
DZUc86wsS25gc7/rJ0Bq8kww5noVJ4sMNB00f4xmdcUgrMsCrcidsVwn8xCB
Rqq9y5Y8X4ppRfNIqK4r5oBWtIqcYjSMX21gQEUdyM/On65fX/j8t+M28HUT
I2p+UCNoLZZFLUzRJvnLHeElAzD41nW8tkUq6P0tRzG5opYTSUZdkZ9dGoHo
g033YLI7Du0rvXlguM0Hl5VYNmPd2qEeh0Q9/G/ITvmhirJkTgk4ckqU7Bto
nCiUh4JZxatiNA/ISvfJhJy2ilIPFlSX9J1/wiInKx34BvtidP+Db5wdxWvR
pb0hch+KNOL0WIgVG6HIj/UBqDHx4SLfsClwwx9kWDtN3+CEcEmXs1AkPO1Q
0zACyRq99UuSjcRlBodWy1MmzrihjD4Vx0vZfooKFWd+6OMBup/RoCxdVXRd
23thlakxMUwTJuIm/l3BgWuKcoV/lq9YqaY7yBMKbSeLK10H7N523PBPp+WY
emWGeoo08E2VOd9quPbmzpoVhJjrJbIlXMuCjO1bTzretiV0y7h+bSKtyJje
ECxLrgvjGinUOrVcbMhZXUPRT8eS8Cmk03GGyveuE+ATPKSfSmP5zFXQ/ipC
+Ts3LlLSp3s8RUA/gXjelM60iNnD63avX4N/Ontdvs3yutdqs37h0mr/1fng
CBrvUAf8AF12VDf8DB133M44s38V0ZfiS+jV+Ddfb0LbDkjyHPl+EkbPU2yi
jPVDopQVDbZcat3oGjlTnGGOB+E3kvCn91vR8CdaKdpqHT1FVpG8OSTVxxL/
5K7BnE3jzWb5mPMdOLKJOIspWGUqY3kvi33SzWRK62tflas1lrNhTZtqc7cV
xKUt9k9lOqgkiUKBSPLRFHKa9Re9NVXAdIP+kyWMdLO9dekZpsn+S2LdpHW3
2fQ8p3wsqByeXTIQPVteKZcOnUTK8Wg963m/vdTz3y3x739vTdJ/5GpY/39U
y/u7FN389ErOf/fgoX9WxPhnRYz//RUx/pnC+UkpnP+4sfQSDOlfj4NZ8HQQ
V2aaAEBPB1+TobZwhxfI9OIlkpsF0uDRyq2itDlNl+0v0NFX9VxptRI0ZZXw
BdU6XYojyal+yjGKVCLiaCDud8qXy/zvG73mPjU3Cdi4ErxZ2xhpzc2KgX80
8KJM0kRn4Tu2Vr9bqKtLguwt98FwPNQP42AKA08CsbBK2KNnzzzDqIJvSPOp
BIW6MGIU5ui5teBu1U3mqoMUTpdKKjqNWIC3uu+M4njw1kXU+BxDSikPHR3K
c1DtqVCXX9fR84Bd9io25Zp3XyLz7dtCMKKe6x/TVeIcAqLCdmyqKhd1Y9Af
SR58ZQ/dEZMmI4rbUDkDnNIaJ8ov6KFskKtQHDN7ilWmO1zi8JHu4dFz1h5u
DOEm0/6cnCrhuyjLVYgBRsvUxdzGibMPibZDojkqyuY6cQ8v8YrgJVb8OaDT
po1oqmkUz0y4je1GMaGwt+96dKfcLbuoMR4XVqTvT1I22u9haLSyqbwUuXsO
wwswupyt/847PBTPGr5ve+pJDb85u26166fJjVjtLMdLT33fke/Fm+rdLaMJ
aeu40ywd4QLso6XuAYKOGNM4S1ZilLJjb0K+qdXPFoDa2q+A+ToaQyQOUoGO
B8eT9hCkK690N5X2yph3Ut0F5Qil0JWaBWZAKDgJeejJ3SzAoSLeMElIlAjl
SV3VnBkOt3lX0enJxtzhUGq3SuCMR4PXlNdQviYfGV4ywLcGYo6QhIzZhwhj
0axNwAARz95zdVglomYbLxm0atWkFNchKdwmT1uKomCmJCf7cYJoZpWUIMMp
l8DIjMtZj7QkilTjoONozFVfJaec+vMmSgkNuVKKwyts+xGF0Fn5O4Scqu5I
NEc3E53uKDPVMFQaVWjHAUmQj0cpEwgKJ11jfVDQRw7rQXapiZWTOIXuc2Zc
2jMo+2RqPmM+kGIyf0GLmiqYb180VcpHVe50IA62vStJvQJlWE8VSgShkDEi
LmibUcOCT/X1DnK/ssMhpPZ0qYR7lHkqqQ1TfjKMneEESjUvDUQ3J0tHr/gk
yqrWGAYgCSjFCVUxwZrQk0VAoX4xG+ApeRi2n0KtGKMsX3EfKRYflG05YIHO
iT4aaBsuYDemPcBphE/TRGQLXI616CKWmnWZ9KgsMV4Ai00Q3nJuB9AedTNm
IQKqUAiHRQ48VIsEQLCSygoSsU5VkYADuylVKnBTqbHCaGyZoFCTnAOA0I0G
33saUfWkiHf7dxREZmgoJgr7eEdzKi71aZTODRVnnupRTB0dBO2gdsQ1Ok8r
Jn8SqyNLRaJipDwe1dOXSMtiyX1N4fZYNjvHOKWESJBaTnGtGFoyU7eReiKe
ATXL7ykiyrqwVJcb0hE0s+gt3xGLgh37rTQT8zgaRhXGMRtG2T26cpGi1MVE
bhLEyrHodSudRV1iUb5GxEk2xQuz1b0M1NmmY46IJwNaXBHmUI5Ir1XU3qgz
iknRN0o+Ld0JAROZqmuecNtQAtE5Fu62n8Z88yQFRtXsSvqwQSRgRsx3A7kX
XFAS/eB8DopvwmtkQ04lBaTgQOMA60rrIgw6SE16lC5RsdCQsmEomtJeN8Ga
kQ4lW+JyfqLFCl5xhvc3K/cxRWDxUkmUXs51KBkPxRkLdNW9YTFqiHXbY8pn
1IU+OPl+9onlXHDEVLwMmhYUOKWmDMEhaVs5qgUWUjQr4OBuCy1gNCnKQmmB
D3xtb6BwPBBiqXKWcV4AMb1pWCYDN1JHOuHsfE5n1qvj6gMoxitKKligcc86
9WI3QJCty8eo470PAqmag8+O2zfQJQRovyWhXxerd2+IsTOFiyl+uJW6shiM
JPdBY6SbKrSj3xxYZIsIWin1zbyXiyv87a+Dq+71KRcqInoWketLfFsq2QM9
yFeDm+s6tYZxdMy6O3lWwNzsAzro4RyxCWGhAv/KmeMg0fNkdGpTIHdv+xSr
gNHeKCEZsojLQMepyq6n11E9hTtMjKUgOMqwUOVfSMOG8fD2ecQEtw4CoWvE
0atzmFCk79T17KumRTWzU/g5PStIu1kk6VlBaqU0AzI4eo62ixOWU3ysOU0S
y7mgOnxYG4jL2WUixBGIWPDk25xMgT+OuMXRdHic8LutCFW6lbpOVNMJ6iFQ
zwsoIGmObj2QR8WnDalFVqpSfMmO4FEiIeVFTqn7PRLARO2bnb85DVm4q0J6
DE1UYi6CvDC9b4EmqoIdGVU751Xh8oVNS0aad+sUycKKqlUJVBKo4RSbBNnP
uw3fwaklWGfYFzg9oPEtmfG5qBc+vdgZeLfq7i18UGa48oLyRV/4Est/wdoh
jWEJ0ltrr0FSt85VpK6pNZWuMVGmNRY7QcQbK/GLs5XVLBrerVwnXecAPp6W
DjJ1ktUdSIFmrMHBWFSxxt86cy4yQaLdgXsHDjIKsnVLqWSSkIGTYrQVlWd4
REyU+H8sPkW1vGC5rM1OpCqrbKzYuv57YKCz7jT9UCECfDCFFs+dxDsnqUnF
dSFbIlrA55T5kgrVHGOkWawDZsmq5en4zSzKl4SQB2wL5MoMFBup7CCVPEKr
AiAmFaKtnODxRGRX5me6ulGhRIE2VTQ6jQ4qKDbT4fQeO5yjVl28shRkcg4Y
gIE8zoXUTuiHJ9Wohm48iEnN0nG4Gn45pZbTBI+Sq1MMVTMF77lscaGei8QP
E4F+fhW2VIkpuyjo8WVwBRsCmUgK5Oaarr3zvB//M52O64DOgB7hz/6CpUuM
M36QEj/qIm5RXkFpHqnweVQ53bi6NVnVQVq+K1lKH3rqztb6OTb5M0qyKrSv
Bn+dDm7q3w6vTk9Oh1f4RBYGfIKDn6WDekRVYMUA9j1nM79//70QQtC0RmlA
udWorNEN9YXAQN8S9okvg+Qa1/nM68JlBFBNk+hKNQw0HJecGXKVuQMLWKku
GYPRUQVIOdxUmTKcNg3vVUg34rEQb81iIbMoFNSgPUG6VnG388onyV7yNrFc
B1nA4aXiGLDCGCl9AIvvMFF0bWrFdaroFJVJoq7xJOMll3rRNg4luhiDjJ0B
s8JsUskqBTLM1QoCt1oBl6fZOh8cZcDtrFg3208g9Xs86704GxN2R9oHDCHF
Uaa2nYyC94q1AjD1jCpgoKW5hnIM5kHUjLVCAvBh0OKMYWIYiWtn6Uy4uAQR
QC3veCA+p4FJzUIDPLtR+MjHAA1OFeWqvEyExH8Uoe9GZ4Lo7DwdB6yq+Gpx
kK/+02WePH3VeUowidjzJBqeFCHiRFEMgJUkrAmXk3LFQKws5Y2w4JO+wFUN
IAW5QcsCOQJ5sZHqOPYVb2xGyJPtSptqBBNxvZlJd6jMJWM93WxAaGlNUmjI
LRKFMKvI/xEl09ZoXHcc1Vqh4eQuRbxjzDnPKwuCeaIuO0f1k1QlurdtGcxU
fzLspAHppd5iSSBG/+GxMRHxFMhYpQiAY4/hql94g6gVX+2JCztzSj8G1qGm
hMd4Zqyu2k+CV1THq3myzHYWWbic4AdVMwIYzeBiUKKDeO8lxsuaPEgRWqR6
odjrqW/EXtgwE7kAi7rS1eABl4qsMHNZIMDUfY+FE9TXowDkmHTGENfaNA2y
UZgRZ2byvDZ8VYfDQxZ0MajDl6oO5d/+akpEUHM0srGwg9UaDwrxkOo7qybl
Ad8kqa+D/4P/J1UBRIZAqVJ1BAnlgIMb1RM2imB55q1s+0DZN+QOQGzFaWyY
PZYmePn6gf8qiFFQuclAzJuGcXSHVh+HnB2LuEhDSn0CfT39R9Zi/+V6eHby
8aOAoUIsXwuPsqC+HjAVFy6+DEK9dRBaxv9tMKrSQKqAVdb31sKqHGW7FlTl
+6JfBqn+OkjRrd1StfT3A1KFTlsFo3U2tfWnbE1E8fozt+b23ZdBbW8d1Kx6
nb/n8VtXHqTyMFaYLNafxoqo6vXHseLqjZfBa38dvCiv7fc8hK5Rpgo+z9S6
WQuqZyLl10LtmaK0LwEgRof/XRHumQq5Zbj655i6TNMyoVulnGZMSaU6QPRQ
pZoaxu+wfLoLXN5pyyRY/WYe5SgUqJqfJDdWCnw1z8ryZguzqll2a32zEwb5
5+PH/NaemZNkDRpa/Xx4DFroD5dDzFXU5kc3v8l4ydEijfa/F5SC3AK8W9eu
tU/tQCoGge6W75K2JDMpKOI9VaOH70xfV3uR066r0swLUpmzrVW55mvkNuU2
8fPHpDKb/fQ4M7IYfO8VpmGEMF8JYdCqXmj18SM5OV/HJmfw2S1+bhM934eV
sCXlBRsJrx/EXNP1N04BXmww6dkpuDgiBRAKW2myDUUCtiuHDt9hfB9GE2Bi
H1dn2GrW272eSspX1cXVuBnC2jr1B5Ur/Ve7qtoXL4iQRxDqzLsDv44fTycH
/o8/3iT1EYVT62oFiAk//4wtNPs+sKnS7zY/B7y/6xTr9ToVOEV9acgW6VIl
drFU8yWc69RaDn90Sz/KRSJ4ztMoYz+pqJmi9E0qL4a4sR2JSv/kW6aD0vXk
T5rfk6kn91KL/d6euVVfTRELwsfAZ20D3VniHeJrIK4vh+JRsy4Oef8+fEdx
Vi2gyebebblTHW2Y7LK2Q3/iQo0dNAOyXYdtRWH8EM6SRaiNRugAU+U+jNsI
C2FQyizMYB6Mmy+fQLESD8Xx0QTI/FR6f8R3OCl/Iqu68Ha5bXzC1owZhpRS
/qeOMbbcQlI5OqOaDfdhRh5STQBss7EL5Myo0/r6PStKLApykRbC9BYAlcxK
tlrhLwa+rGa//0zvHMeDY4z/DmXswD9VP+1e/8C/32y2mu3qX2/dF8XfzRq9
qzprCV+OmhG9a+2Pt/4r+0fepGtmVCyt1ZRVrfn11n9l/1prMjlr9tvQcgDC
pE6TM+3Lpxc7oh594Lfa7b09swgV9VVYRrsPTV9A33kgVdCyAhjt/l4V3K3F
VeVT7JCSATSYchHeS0bCjrrFBdDfvKlH43ef/PWe/hp+aUL8EvvOKvakwXTo
JZ0nf72nv4bfNS+RrEW/dSA3XFGrj/Dfn72PnFqBB/hP331dUURO0SFzoRYe
ah0vaU6pqQeWUBF2J3o8wogydWg33uarDZjL8Ij2d2OcPuDHS5Af+vwkmN1R
g2v95B1+vpl1o6P/2939S3o1uvqqefPttDl53P32ZPYqf2jtvTqNf7iP5+cX
q1Gyx73oNXcX47P7QTYLfnlsLqLdcDg8b988Xg1m08HxVXN51T28u3v7S/3d
5arLvSbY6z/evKmvet93j04We//x+tVNP357ttvsd/580eq0fvjmePH28bvB
5dvReX28YUORgyoQPgSbZESOJr3+1t4WIt395gCOYLtPO/b+Y40f7bX24WQ2
e3vt1nqi9WJSBoPt945gsBcRnqfp04CGeZKevIDs0IwGrcHuCf/Q58PWPqb8
tfZxgP1dWPtut9/q73YGu83dDvzV6fd22/Bsv9+H//f63fawf7Lb7u+2jzpt
wPp2p8NtvX6r3YGG/f4xAfKou1dcB73xZK816DR7tCTnkHrPneKK3zYNIwfQ
e+6Erv1t9bu9Zq/t9U96TCvuN3f3+sP9zu6ge9Rt9/u7g5POXncXyFantX80
gJ3dHe4eHw4Oj4/2D3vNk+PDveNh56R/eHLSHRx6e+2Tkz2AAJDv5rA96O4h
KAAlhp1hq9nvwxid40F//2i3d9JrH+7u7w0BIQ/bJ7vNbmuw3xx6e8PeYNP7
WerQszRwH2QFMzo6rVt9HfUuSD5p73W7nYAwPGj2CKmDFyL3C3kybeS4iNwv
ZLKFn4CR+4V8cy3205SCVrA75R/6PFLYXUDuwEZuz8HusD8l7B5r7JbGgtwT
GmyskNtaM71xutcKKrG76vc5jHewu/j7cmwX7O5Pe93eXrcJmB16gNpBd0yo
HUwNao8D2NfdcHcyCkaT8f6o15xORnuTsDPtj6bTbjDaa0+n3h6sH1E7bAca
tcNOqFB7EvT3x7u9aa89AtQOARNH7SmidrDfDL29sBfo64ONGG2JmSSef6qU
edTr7R4ed08Gx0d7nZPdXv/kaNA+Ou55w0H7+Oho7xB2v7d/eNgd7nZ7neP+
YLfbPe4Oh0fH/ePm4Kjf/KeU+T8qZbpVKXbcgf4pZf5PS5l0Rl8mZH6hfzBa
YXjgb/7006bPlaxV+V2se3Z1cuTv7e63fdPBcyTUZJw7AukrI5C+xc+du9dn
F1+v7v/0fXD+/Z8vvv+l2/wqa4e9Xx5b9ag+fLs7Xrx6c3fe/243XFzeHL7Z
i+a/XDzsvf1J5UD/NDr8+tvZ23q2/+6Xzi/z3eGb74ZH+e7rH85n3+Vv7z5J
sty1JMtm7wnJch2hqqZTXplQ/VOy/MeWLI9O9vaOO53mcHfQ6/T7KEyewB4P
useHJ83jHnSC/W72hsfHe4ftHrRrdzvw4fC409r1AI7NXy0YtpRg2OxVC4Zj
wM3RpDsNJuO9zhRwczoO2uNJLwy89mQ83hsRco5G3RCRc9IPYN6TbhiOJ/1J
MxgLbv5TMGz+AwqG7eZ4urfnTQAzw90AMRNlwSnscNCdjEDXJ8ycAGaGk8ne
CDEzBMyED6MJYCYipioUYcqMczbc+wNO9A8nX2xMg1kWcrBzEL/1V8nSPwrS
LAcOcojOj5iuxuBrSLW3BSunNbgH3VN3AWifzADtv0uSSc0bziK8SDwM0pr3
Q5Ci5/Y+xPjHmvd1kN/P0Bp6nqQRpYNgbNcF8LnrOd5WS3kbE2CkNaq0zZUT
MXl4eXeHNnWuHuvG2x4Q6xpOojxJD7z/B0D3G2+c4AAA

-->

</rfc>
