<?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.3 (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-19" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <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-19"/>
    <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="2023" month="December" day="07"/>
    <area/>
    <workgroup/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 162?>

<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 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 profiled 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 document is produced through the Independent RFC Stream and was not subject to the IETF's approval process.</t>
    </abstract>
  </front>
  <middle>
    <?line 179?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The Platform Security Architecture (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.  Various APIs
have been developed by Arm as part of the Platform Security Architecture
<xref target="PSA"/> framework.  This document focuses on the output provided by PSA's
Initial Attestation API <xref target="PSA-API"/>. Since the 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>
    </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, 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), or
"secure world".)</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,
operating systems, and general hardware.  (Equivalent to Rich Execution
Environment (REE), or "normal world".)</t>
        </dd>
      </dl>
    </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="448" width="560" viewBox="0 0 560 448" 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 296,208 L 296,240" fill="none" stroke="black"/>
              <path d="M 328,288 L 328,336" fill="none" stroke="black"/>
              <path d="M 360,208 L 360,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 312,192 L 344,192" fill="none" stroke="black"/>
              <path d="M 408,192 L 520,192" fill="none" stroke="black"/>
              <path d="M 264,224 L 288,224" fill="none" stroke="black"/>
              <path d="M 368,224 L 408,224" fill="none" stroke="black"/>
              <path d="M 160,256 L 264,256" fill="none" stroke="black"/>
              <path d="M 312,256 L 344,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 312,192 C 303.16936,192 296,199.16936 296,208" fill="none" stroke="black"/>
              <path d="M 344,192 C 352.83064,192 360,199.16936 360,208" fill="none" stroke="black"/>
              <path d="M 312,256 C 303.16936,256 296,248.83064 296,240" fill="none" stroke="black"/>
              <path d="M 344,256 C 352.83064,256 360,248.83064 360,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="296,224 284,218.4 284,229.6" fill="black" transform="rotate(0,288,224)"/>
              <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="360" cy="224" 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="420" y="116">Evidence</text>
                <text x="72" y="180">Attesting</text>
                <text x="160" y="180">Environment</text>
                <text x="188" y="212">Main</text>
                <text x="324" y="212">Main</text>
                <text x="448" y="212">Initial</text>
                <text x="212" y="228">Bootloader</text>
                <text x="324" y="228">Boot</text>
                <text x="464" y="228">Attestation</text>
                <text x="328" y="244">State</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>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                                                    .----------.
                                                    | Verifier |
                                                    '----------'
                                                         ^
                                                         |
                                                Evidence |
                                                         |
.--------------------------------------------------------|----------.
| .------------------------------------------------------|--------. |
| | Attesting Environment                                |        | |
| |                .------------.    .-----.      .------+------. | |
| |                | Main       |   | Main  |     | Initial     | | |
| |                | Bootloader +-->| Boot  o-----+ Attestation | | |
| |                |            |   | State |     | Service     | | |
| |                '-----+------'    '-----'      '-------------' | |
| '----------------------|----------------------------------------' |
|           .------------+--------------+---------------.           |
| .--------|-------------|--------------|----------------|--------. |
| |        |             |              |                |        | |
| | .------o-----. .-----o-------. .----o--------. .-----o------. | |
| | | Updateable | | Application | | Application | | PSA RoT    | | |
| | | PSA RoT    | | RoT         | | Loader      | | Parameters | | |
| | '------------' '-------------' '-------------' '------------' | |
| | Target Environment                                            | |
| '---------------------------------------------------------------' |
'-------------------------------------------------------------------'
]]></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 loaded software
components, collects the relevant PSA RoT parameters, and stores the recorded
information in secure memory (Main Boot State) from where the Initial
Attestation Service will, when asked for claims about the platform,
retrieve them.</t>
        </li>
        <li>
          <t>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. 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.</t>
        </li>
      </ul>
      <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.</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>
      <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.  The following constraints
apply 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-bytes key hash.</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 implementation 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>
          <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>version[15:8] - PSA security lifecycle state, and</t>
            </li>
            <li>
              <t>version[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="352" width="528" viewBox="0 0 528 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 48,272 L 48,288" fill="none" stroke="black"/>
                  <path d="M 72,64 L 72,120" fill="none" stroke="black"/>
                  <path d="M 72,168 L 72,192" fill="none" stroke="black"/>
                  <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                  <path d="M 104,288 L 104,304" fill="none" stroke="black"/>
                  <path d="M 168,144 L 168,256" fill="none" stroke="black"/>
                  <path d="M 184,256 L 184,272" fill="none" stroke="black"/>
                  <path d="M 192,48 L 192,64" fill="none" stroke="black"/>
                  <path d="M 208,208 L 208,240" fill="none" stroke="black"/>
                  <path d="M 224,304 L 224,336" fill="none" stroke="black"/>
                  <path d="M 248,128 L 248,160" fill="none" stroke="black"/>
                  <path d="M 264,160 L 264,200" fill="none" stroke="black"/>
                  <path d="M 288,64 L 288,120" fill="none" stroke="black"/>
                  <path d="M 288,240 L 288,272" fill="none" stroke="black"/>
                  <path d="M 312,96 L 312,120" fill="none" stroke="black"/>
                  <path d="M 312,168 L 312,208" fill="none" stroke="black"/>
                  <path d="M 328,128 L 328,160" fill="none" stroke="black"/>
                  <path d="M 360,304 L 360,336" fill="none" stroke="black"/>
                  <path d="M 368,208 L 368,240" fill="none" stroke="black"/>
                  <path d="M 384,32 L 384,48" fill="none" stroke="black"/>
                  <path d="M 392,208 L 392,256" fill="none" stroke="black"/>
                  <path d="M 432,160 L 432,200" fill="none" stroke="black"/>
                  <path d="M 448,256 L 448,272" fill="none" stroke="black"/>
                  <path d="M 480,96 L 480,208" fill="none" stroke="black"/>
                  <path d="M 520,208 L 520,256" fill="none" stroke="black"/>
                  <path d="M 208,32 L 384,32" fill="none" stroke="black"/>
                  <path d="M 88,48 L 104,48" fill="none" stroke="black"/>
                  <path d="M 168,48 L 192,48" fill="none" stroke="black"/>
                  <path d="M 192,64 L 368,64" fill="none" stroke="black"/>
                  <path d="M 328,80 L 464,80" fill="none" stroke="black"/>
                  <path d="M 24,128 L 128,128" fill="none" stroke="black"/>
                  <path d="M 248,128 L 328,128" fill="none" stroke="black"/>
                  <path d="M 168,144 L 248,144" fill="none" stroke="black"/>
                  <path d="M 328,144 L 416,144" fill="none" stroke="black"/>
                  <path d="M 24,160 L 128,160" fill="none" stroke="black"/>
                  <path d="M 248,160 L 328,160" fill="none" stroke="black"/>
                  <path d="M 208,208 L 368,208" fill="none" stroke="black"/>
                  <path d="M 392,208 L 520,208" fill="none" stroke="black"/>
                  <path d="M 208,240 L 368,240" fill="none" stroke="black"/>
                  <path d="M 64,256 L 184,256" fill="none" stroke="black"/>
                  <path d="M 392,256 L 520,256" fill="none" stroke="black"/>
                  <path d="M 184,272 L 448,272" fill="none" stroke="black"/>
                  <path d="M 48,288 L 168,288" fill="none" stroke="black"/>
                  <path d="M 224,304 L 360,304" fill="none" stroke="black"/>
                  <path d="M 120,320 L 216,320" fill="none" stroke="black"/>
                  <path d="M 224,336 L 360,336" fill="none" stroke="black"/>
                  <path d="M 208,32 C 199.16936,32 192,39.16936 192,48" fill="none" stroke="black"/>
                  <path d="M 88,48 C 79.16936,48 72,55.16936 72,64" fill="none" stroke="black"/>
                  <path d="M 368,64 C 376.83064,64 384,56.83064 384,48" fill="none" stroke="black"/>
                  <path d="M 328,80 C 319.16936,80 312,87.16936 312,96" fill="none" stroke="black"/>
                  <path d="M 464,80 C 472.83064,80 480,87.16936 480,96" fill="none" stroke="black"/>
                  <path d="M 24,128 C 15.16936,128 8,135.16936 8,144" fill="none" stroke="black"/>
                  <path d="M 128,128 C 136.83064,128 144,135.16936 144,144" fill="none" stroke="black"/>
                  <path d="M 416,144 C 424.83064,144 432,151.16936 432,160" fill="none" stroke="black"/>
                  <path d="M 24,160 C 15.16936,160 8,152.83064 8,144" fill="none" stroke="black"/>
                  <path d="M 128,160 C 136.83064,160 144,152.83064 144,144" fill="none" stroke="black"/>
                  <path d="M 64,256 C 55.16936,256 48,263.16936 48,272" fill="none" stroke="black"/>
                  <path d="M 168,288 C 176.83064,288 184,280.83064 184,272" fill="none" stroke="black"/>
                  <path d="M 120,320 C 111.16936,320 104,312.83064 104,304" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="440,200 428,194.4 428,205.6" fill="black" transform="rotate(90,432,200)"/>
                  <polygon class="arrowhead" points="320,168 308,162.4 308,173.6" fill="black" transform="rotate(270,312,168)"/>
                  <polygon class="arrowhead" points="320,120 308,114.4 308,125.6" fill="black" transform="rotate(90,312,120)"/>
                  <polygon class="arrowhead" points="296,120 284,114.4 284,125.6" fill="black" transform="rotate(90,288,120)"/>
                  <polygon class="arrowhead" points="272,200 260,194.4 260,205.6" fill="black" transform="rotate(90,264,200)"/>
                  <polygon class="arrowhead" points="224,320 212,314.4 212,325.6" fill="black" transform="rotate(0,216,320)"/>
                  <circle cx="72" cy="112" r="6" class="closeddot" fill="black"/>
                  <circle cx="72" cy="176" r="6" class="closeddot" fill="black"/>
                  <g class="text">
                    <text x="136" y="52">Enrol</text>
                    <text x="252" y="52">Provisioning</text>
                    <text x="340" y="52">Lockdown</text>
                    <text x="76" y="148">Verifier</text>
                    <text x="288" y="148">Secured</text>
                    <text x="72" y="212">Blocklist</text>
                    <text x="248" y="228">Non-PSA</text>
                    <text x="296" y="228">RoT</text>
                    <text x="336" y="228">Debug</text>
                    <text x="448" y="228">Recoverable</text>
                    <text x="416" y="244">PSA</text>
                    <text x="448" y="244">RoT</text>
                    <text x="488" y="244">Debug</text>
                    <text x="120" y="276">Terminate</text>
                    <text x="292" y="324">Decommissioned</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                        .----------------------.
         .--- Enrol ---+ Provisioning Lockdown |
        |              '-----------+----------'
        |                          |   .------------------.
        |                          |  |                    |
        *                          v  v                    |
 .--------------.             .---------.                  |
|    Verifier    |  .---------+ Secured +-----------.      |
 '--------------'   |         '-+-------'            |     |
        *           |           |     ^              |     |
        |           |           v     |              v     |
    Blocklist       |    .------------+------.  .----------+----.
        |           |    | Non-PSA RoT Debug |  | Recoverable   |
        |           |    '---------+---------'  | PSA RoT Debug |
      .-+-----------+-.            |            '------+--------'
     |    Terminate   +------------+-------------------'
     '------+--------'
            |              .----------------.
             '------------>| Decommissioned |
                           '----------------'
]]></artwork>
            </artset>
          </figure>
          <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>
        </section>
        <section anchor="sec-boot-seed">
          <name>Boot Seed</name>
          <t>The Boot Seed claim represents a value created at system boot time that
will allow differentiation of reports from different boot sessions.</t>
          <t>This claim MAY be present in a PSA attestation token.</t>
          <t>If present, it MUST be between 8 and 32 bytes.</t>
          <artwork><![CDATA[
psa-boot-seed-type = bytes .size (8..32)

psa-boot-seed = (
    psa-boot-seed-key => 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 verification 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 endorsements 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 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) is the hash of a signing authority public key
for the software component. 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>
        <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>
        </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 (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 retired and their use is 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">2397</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 new profile (<tt>tag:psacertified.org,2023:psa#tfm</tt>), at least for the time needed to
their devices to upgrade.</t>
      </section>
    </section>
    <section anchor="profiles">
      <name>Profiles</name>
      <t>This document defines a baseline with common requirements that all PSA profiles must satisfy.</t>
      <t>This document also defines a profile (<xref target="sec-tfm-profile"/>) that builds on the baseline while constraining the use of COSE algorithms to improve interoperability between PSA Attesters and Verifiers.</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="RFC8949"/> format.  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="RFC8949"/>).
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 new 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 Implementation ID and 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-boot-seed-key = 2397
psa-certification-reference-key = 2398
psa-software-components-key = 2399
psa-verification-service-indicator-key = 2400

nonce-label = 10
ueid-label = 256
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 = (
    psa-boot-seed-key => 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 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>If applicable, such approach provides sensibly better scalability properties
compared to using raw public keys, namely:</t>
      <ul spacing="normal">
        <li>
          <t>storage requirements on the verifier side 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>
        <li>
          <t>already existing and well understood revocation mechanisms can be
used.</t>
        </li>
      </ul>
      <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).  Deciding on a sensible split point may depend on
constraints around network bandwidth and computing resources available to the
endpoints (especially network buffers).</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <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 attestation evidence to an untrusted
challenger, as it may allow attackers to interpose and trick the verifier into
believing the attacker is a legitimate attester.</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="verification">
      <name>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 and Implementation ID claims are
used (together with the kid in the COSE header, if present) 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.</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="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="boot-seed-claim">
          <name> Boot Seed Claim</name>
          <ul spacing="normal">
            <li>
              <t>Claim Name: psa-boot-seed</t>
            </li>
            <li>
              <t>Claim Description: PSA Boot Seed</t>
            </li>
            <li>
              <t>JWT Claim Name: N/A</t>
            </li>
            <li>
              <t>Claim Key: 2397</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-boot-seed"/> 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="STD96">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
              <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
        </reference>
        <reference anchor="COSE-ALGS">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Initial Algorithms</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines a set of algorithms that can be used with the CBOR Object Signing and Encryption (COSE) protocol (RFC 9052).</t>
              <t>This document, along with RFC 9052, obsoletes RFC 8152.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9053"/>
          <seriesInfo name="DOI" value="10.17487/RFC9053"/>
        </reference>
        <reference anchor="IANA-CWT" target="https://www.iana.org/assignments/cwt/cwt.xhtml#claims-registry">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="X509">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile</title>
            <author fullname="D. Cooper" initials="D." surname="Cooper"/>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="S. Boeyen" initials="S." surname="Boeyen"/>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <author fullname="W. Polk" initials="W." surname="Polk"/>
            <date month="May" year="2008"/>
            <abstract>
              <t>This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5280"/>
          <seriesInfo name="DOI" value="10.17487/RFC5280"/>
        </reference>
        <reference anchor="EAT">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="14" month="October" year="2023"/>
            <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-22"/>
        </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="RFC8949">
          <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="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="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>
      </references>
    </references>
    <?line 1190?>

<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:p
sa#tfm",
  / psa-boot-seed /           2397: h'0000000000000000',
  / psa-software-components / 2399: [
    {
      / signer ID /         5: h'0404040404040404040404040404040
404040404040404040404040404040404',
      / measurement value / 2: h'0303030303030303030303030303030
303030303030303030303030303030303'
    }
  ]
}
]]></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
612374666D19095D48000000000000000019095F81A205582004040404040404
0404040404040404040404040404040404040404040404040402582003030303
03030303030303030303030303030303030303030303030303030303',
  h'2F4C8152ED1691833EEBB6A182D2120E3D19220DF85B9AC51109113A423F
A024205CEDA0815968548DE4FBB6DC94B88C916F0D266E64CEA24183A84F977D
E475'
])
]]></artwork>
        <t>which has the following base16 encoding:</t>
        <artwork><![CDATA[
d28443a10126a058faa81901005821010202020202020202020202020202
02020202020202020202020202020202020219095c582000000000000000
000000000000000000000000000000000000000000000000000a58200101
010101010101010101010101010101010101010101010101010101010101
19095a1a7fffffff19095b19300019010978217461673a70736163657274
69666965642e6f72672c323032333a7073612374666d19095d4800000000
0000000019095f81a2055820040404040404040404040404040404040404
040404040404040404040404040402582003030303030303030303030303
0303030303030303030303030303030303030358402f4c8152ed1691833e
ebb6a182d2120e3d19220df85b9ac51109113a423fa024205ceda0815968
548de4fbb6dc94b88c916f0d266e64cea24183a84f977de475
]]></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:p
sa#tfm",
  / psa-boot-seed /           2397: h'0000000000000000',
  / psa-software-components / 2399: [
    {
      / signer ID /         5: h'0404040404040404040404040404040
404040404040404040404040404040404',
      / measurement value / 2: h'0303030303030303030303030303030
303030303030303030303030303030303'
    }
  ]
}
]]></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
612374666D19095D48000000000000000019095F81A205582004040404040404
0404040404040404040404040404040404040404040404040402582003030303
03030303030303030303030303030303030303030303030303030303',
  h'9B9FAA23F25D630B620C40508C978FBDC46130A5898BA1E8014085B13E43
256E'
])
]]></artwork>
        <t>which has the following base16 encoding:</t>
        <artwork><![CDATA[
d18443a10105a058faa8190100582101c557bd4fadc83f756fca2cd5ea2d
cc8b82159bb4e7453d6a744d4eecd6d0ac6019095c582000000000000000
000000000000000000000000000000000000000000000000000a58200101
010101010101010101010101010101010101010101010101010101010101
19095a1a7fffffff19095b19300019010978217461673a70736163657274
69666965642e6f72672c323032333a7073612374666d19095d4800000000
0000000019095f81a2055820040404040404040404040404040404040404
040404040404040404040404040402582003030303030303030303030303
0303030303030303030303030303030303030358209b9faa23f25d630b62
0c40508c978fbdc46130a5898ba1e8014085b13e43256e
]]></artwork>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Carsten Bormann for help with the CDDL and Nicholas Wood for ideas
and comments.</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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

-->

</rfc>
