<?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-22" 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-22"/>
    <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="February" day="21"/>
    <area/>
    <workgroup/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 168?>

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

<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 "-cfg" postfix (e.g., "PRoT-cfg") 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 <xref target="IANA-HashFunctionTextualNames"/>.</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>PSA_IOT_PROFILE_1</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>PSA_IOT_PROFILE_1</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="PSA_IOT_PROFILE_1"</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">
         </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="15" month="January" 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-25"/>
        </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="7" month="November" year="2023"/>
            <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-05"/>
        </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="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="19" month="October" year="2023"/>
            <abstract>
              <t>   Intel® Trust Domain Extensions (TDX) introduces 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-00"/>
        </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="22" month="October" year="2023"/>
            <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.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-uta-tls13-iot-profile-08"/>
        </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-HashFunctionTextualNames" target="https://www.iana.org/assignments/hash-function-text-names">
          <front>
            <title>Hash Function Textual Names</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </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="10" month="September" year="2023"/>
            <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-03"/>
        </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="23" month="October" year="2023"/>
            <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-03"/>
        </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>Arm Limited</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="30" month="August" year="2023"/>
            <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-05"/>
        </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 1303?>

<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:
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
1LkIrBs2e0SsazSNizQ78v4fOzldidbgAAA=

-->

</rfc>
