<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-tschofenig-rats-psa-token-09" indexInclude="true" ipr="trust200902" prepTime="2022-03-07T16:05:14" scripts="Common,Latin" sortRefs="true" submissionType="independent" symRefs="true" tocDepth="3" tocInclude="true">
  <!-- xml2rfc v2v3 conversion 3.12.0 -->
  <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-09" stream="independent"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization showOnFrontPage="true">Arm Limited</organization>
      <address>
        <email>Hannes.Tschofenig@arm.com</email>
      </address>
    </author>
    <author initials="S." surname="Frost" fullname="Simon Frost">
      <organization showOnFrontPage="true">Arm Limited</organization>
      <address>
        <email>Simon.Frost@arm.com</email>
      </address>
    </author>
    <author initials="M." surname="Brossard" fullname="Mathias Brossard">
      <organization showOnFrontPage="true">Arm Limited</organization>
      <address>
        <email>Mathias.Brossard@arm.com</email>
      </address>
    </author>
    <author initials="A." surname="Shaw" fullname="Adrian Shaw">
      <organization showOnFrontPage="true">HP Labs</organization>
      <address>
        <email>Adrian.Shaw@hp.com</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization showOnFrontPage="true">Arm Limited</organization>
      <address>
        <email>Thomas.Fossati@arm.com</email>
      </address>
    </author>
    <date month="03" year="2022" day="07"/>
    <area>Security</area>
    <workgroup>RATS</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">The Platform Security Architecture (PSA) is a family of hardware and firmware
security specifications, as well as open-source reference implementations, to
help device makers and chip manufacturers build best-practice security into
products. Devices that are PSA compliant are able to produce attestation tokens
as described in this memo, which are the basis for a number of different
protocols, including secure provisioning and network access control.  This
document specifies the PSA attestation token structure and semantics.</t>
      <t indent="0" pn="section-abstract-2">The PSA attestation token is a profiled Entity Attestation Token (EAT).</t>
      <t indent="0" pn="section-abstract-3">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>
    </abstract>
    <note removeInRFC="false" pn="section-note.1">
      <name slugifiedName="name-note-to-readers">Note to Readers</name>
      <t indent="0" pn="section-note.1-1">Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/thomas-fossati/draft-psa-token" brackets="none">https://github.com/thomas-fossati/draft-psa-token</eref>.</t>
    </note>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
        This Internet-Draft is submitted in full conformance with the
        provisions of BCP 78 and BCP 79.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
        Internet-Drafts are working documents of the Internet Engineering Task
        Force (IETF). Note that other groups may also distribute working
        documents as Internet-Drafts. The list of current Internet-Drafts is
        at <eref target="https://datatracker.ietf.org/drafts/current/" brackets="none"/>.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
        Internet-Drafts are draft documents valid for a maximum of six months
        and may be updated, replaced, or obsoleted by other documents at any
        time. It is inappropriate to use Internet-Drafts as reference
        material or to cite them other than as "work in progress."
        </t>
        <t indent="0" pn="section-boilerplate.1-4">
        This Internet-Draft will expire on 8 September 2022.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-conventions-and-definitions">Conventions and Definitions</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-glossary">Glossary</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-psa-claims">PSA Claims</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-caller-claims">Caller Claims</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.1.2">
                  <li pn="section-toc.1-1.3.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.1.1"><xref derivedContent="3.1.1" format="counter" sectionFormat="of" target="section-3.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-nonce">Nonce</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.1.2.2.1"><xref derivedContent="3.1.2" format="counter" sectionFormat="of" target="section-3.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-client-id">Client ID</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-target-identification-claim">Target Identification Claims</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.2.2">
                  <li pn="section-toc.1-1.3.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.1.1"><xref derivedContent="3.2.1" format="counter" sectionFormat="of" target="section-3.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-instance-id"> Instance ID</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.2.1"><xref derivedContent="3.2.2" format="counter" sectionFormat="of" target="section-3.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-implementation-id">Implementation ID</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.2.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.2.2.3.1"><xref derivedContent="3.2.3" format="counter" sectionFormat="of" target="section-3.2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-certification-reference">Certification Reference</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-target-state-claims">Target State Claims</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.3.2">
                  <li pn="section-toc.1-1.3.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.1.1"><xref derivedContent="3.3.1" format="counter" sectionFormat="of" target="section-3.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-lifecycle">Security Lifecycle</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.3.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.3.2.2.1"><xref derivedContent="3.3.2" format="counter" sectionFormat="of" target="section-3.3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-boot-seed">Boot Seed</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-software-inventory-claims">Software Inventory Claims</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.4.2">
                  <li pn="section-toc.1-1.3.2.4.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.4.2.1.1"><xref derivedContent="3.4.1" format="counter" sectionFormat="of" target="section-3.4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-software-components">Software Components</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.5">
                <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent="3.5" format="counter" sectionFormat="of" target="section-3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-verification-claims">Verification Claims</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.5.2">
                  <li pn="section-toc.1-1.3.2.5.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.5.2.1.1"><xref derivedContent="3.5.1" format="counter" sectionFormat="of" target="section-3.5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-verification-service-indica">Verification Service Indicator</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.5.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.5.2.2.1"><xref derivedContent="3.5.2" format="counter" sectionFormat="of" target="section-3.5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-profile-definition">Profile Definition</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-backwards-compatibility-con">Backwards Compatibility Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-token-encoding-and-signing"> Token Encoding and Signing</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-freshness-model">Freshness Model</xref></t>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-collated-cddl">Collated CDDL</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-implementation-status">Implementation Status</xref></t>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-and-privacy-consid">Security and Privacy Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-verification">Verification</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-cbor-web-token-claims-regis">CBOR Web Token Claims Registration</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2.1.2">
                  <li pn="section-toc.1-1.11.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.1.1"><xref derivedContent="11.1.1" format="counter" sectionFormat="of" target="section-11.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-client-id-claim"> Client ID Claim</xref></t>
                  </li>
                  <li pn="section-toc.1-1.11.2.1.2.2">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.2.1"><xref derivedContent="11.1.2" format="counter" sectionFormat="of" target="section-11.1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-lifecycle-claim"> Security Lifecycle Claim</xref></t>
                  </li>
                  <li pn="section-toc.1-1.11.2.1.2.3">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.3.1"><xref derivedContent="11.1.3" format="counter" sectionFormat="of" target="section-11.1.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-implementation-id-claim"> Implementation ID Claim</xref></t>
                  </li>
                  <li pn="section-toc.1-1.11.2.1.2.4">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.4.1"><xref derivedContent="11.1.4" format="counter" sectionFormat="of" target="section-11.1.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-boot-seed-claim"> Boot Seed Claim</xref></t>
                  </li>
                  <li pn="section-toc.1-1.11.2.1.2.5">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.5.1"><xref derivedContent="11.1.5" format="counter" sectionFormat="of" target="section-11.1.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-certification-reference-cla"> Certification Reference Claim</xref></t>
                  </li>
                  <li pn="section-toc.1-1.11.2.1.2.6">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.6.1"><xref derivedContent="11.1.6" format="counter" sectionFormat="of" target="section-11.1.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-software-components-claim"> Software Components Claim</xref></t>
                  </li>
                  <li pn="section-toc.1-1.11.2.1.2.7">
                    <t indent="0" pn="section-toc.1-1.11.2.1.2.7.1"><xref derivedContent="11.1.7" format="counter" sectionFormat="of" target="section-11.1.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-verification-service-indicat"> Verification Service Indicator Claim</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-media-type-registration">Media Type Registration</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.3">
                <t indent="0" pn="section-toc.1-1.11.2.3.1"><xref derivedContent="11.3" format="counter" sectionFormat="of" target="section-11.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-coap-content-formats-regist">CoAP Content-Formats Registration</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2.3.2">
                  <li pn="section-toc.1-1.11.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.11.2.3.2.1.1"><xref derivedContent="11.3.1" format="counter" sectionFormat="of" target="section-11.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-registry-contents">Registry Contents</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.12.2.2">
                <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example">Example</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.16">
            <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Trusted execution environments are now present in many devices, which provide a
safe environment to place 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" format="default" sectionFormat="of" derivedContent="PSA"/> framework.  This document focuses on the output provided by PSA's
Initial Attestation 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 indent="0" pn="section-1-2">Further details on concepts expressed below can be found in the PSA Security
Model documentation <xref target="PSA-SM" format="default" sectionFormat="of" derivedContent="PSA-SM"/>.</t>
    </section>
    <section anchor="conventions-and-definitions" numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-conventions-and-definitions">Conventions and Definitions</name>
      <t indent="0" pn="section-2-1">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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <section anchor="glossary" numbered="true" removeInRFC="false" toc="include" pn="section-2.1">
        <name slugifiedName="name-glossary">Glossary</name>
        <dl indent="3" newline="false" spacing="normal" pn="section-2.1-1">
          <dt pn="section-2.1-1.1">
RoT  </dt>
          <dd pn="section-2.1-1.2">
            <t indent="0" pn="section-2.1-1.2.1">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 pn="section-2.1-1.3">
SPE  </dt>
          <dd pn="section-2.1-1.4">
            <t indent="0" pn="section-2.1-1.4.1">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 pn="section-2.1-1.5">
NSPE  </dt>
          <dd pn="section-2.1-1.6">
            <t indent="0" pn="section-2.1-1.6.1">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>
    <section anchor="sec-psa-claims" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-psa-claims">PSA Claims</name>
      <t indent="0" pn="section-3-1">This section describes the claims to be used in a PSA attestation token.</t>
      <t indent="0" pn="section-3-2">CDDL <xref target="RFC8610" format="default" sectionFormat="of" derivedContent="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 align="left" pn="section-3-3">
psa-hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64
</artwork>
      <section anchor="caller-claims" numbered="true" removeInRFC="false" toc="include" pn="section-3.1">
        <name slugifiedName="name-caller-claims">Caller Claims</name>
        <section anchor="sec-nonce-claim" numbered="true" removeInRFC="false" toc="include" pn="section-3.1.1">
          <name slugifiedName="name-nonce">Nonce</name>
          <t indent="0" pn="section-3.1.1-1">The Nonce claim is used to carry the challenge provided by the caller to demonstrate freshness of the generated token.</t>
          <t indent="0" pn="section-3.1.1-2">The EAT <xref target="I-D.ietf-rats-eat" format="default" sectionFormat="of" derivedContent="I-D.ietf-rats-eat"/> <tt>nonce</tt> (claim key 10) is used.  The following
constraints apply to the <tt>nonce-type</tt>:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.1.1-3">
            <li pn="section-3.1.1-3.1">The length MUST be either 32, 48, or 64 bytes.</li>
            <li pn="section-3.1.1-3.2">Only a single nonce value is conveyed. Per <xref target="I-D.ietf-rats-eat" format="default" sectionFormat="of" derivedContent="I-D.ietf-rats-eat"/> the array notation is not used for encoding the nonce value.</li>
          </ul>
          <t indent="0" pn="section-3.1.1-4">This claim MUST be present in a PSA attestation token.</t>
          <artwork align="left" pn="section-3.1.1-5">
psa-nonce = (
    nonce-label =&gt; psa-hash-type
)
</artwork>
        </section>
        <section anchor="sec-client-id" numbered="true" removeInRFC="false" toc="include" pn="section-3.1.2">
          <name slugifiedName="name-client-id">Client ID</name>
          <t indent="0" pn="section-3.1.2-1">The Client ID claim represents the security domain of the caller.</t>
          <t indent="0" pn="section-3.1.2-2">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 indent="0" pn="section-3.1.2-3">For an example definition of client IDs, see the PSA Firmware Framework <xref target="PSA-FF" format="default" sectionFormat="of" derivedContent="PSA-FF"/>.</t>
          <t indent="0" pn="section-3.1.2-4">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 indent="0" pn="section-3.1.2-5">This claim MUST be present in a PSA attestation token.</t>
          <artwork align="left" pn="section-3.1.2-6">
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 =&gt; psa-client-id-type
)
</artwork>
        </section>
      </section>
      <section anchor="target-identification-claims" numbered="true" removeInRFC="false" toc="include" pn="section-3.2">
        <name slugifiedName="name-target-identification-claim">Target Identification Claims</name>
        <section anchor="sec-instance-id-claim" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.1">
          <name slugifiedName="name-instance-id"> Instance ID</name>
          <t indent="0" pn="section-3.2.1-1">The Instance ID claim represents the unique identifier of the Initial
Attestation Key (IAK).  The full definition is in <xref target="PSA-SM" format="default" sectionFormat="of" derivedContent="PSA-SM"/>.</t>
          <t indent="0" pn="section-3.2.1-2">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" bare="false" empty="false" indent="3" pn="section-3.2.1-3">
            <li pn="section-3.2.1-3.1">The length MUST be 33 bytes.</li>
            <li pn="section-3.2.1-3.2">The first byte MUST be 0x01 (RAND) followed by the 32-bytes key hash.</li>
          </ul>
          <t indent="0" pn="section-3.2.1-4">This claim MUST be present in a PSA attestation token.</t>
          <artwork align="left" pn="section-3.2.1-5">
psa-instance-id-type = bytes .size 33

psa-instance-id = (
    ueid-label =&gt; psa-instance-id-type
)
</artwork>
        </section>
        <section anchor="sec-implementation-id" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.2">
          <name slugifiedName="name-implementation-id">Implementation ID</name>
          <t indent="0" pn="section-3.2.2-1">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 indent="0" pn="section-3.2.2-2">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 indent="0" pn="section-3.2.2-3">This claim MUST be present in a PSA attestation token.</t>
          <t indent="0" pn="section-3.2.2-4">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" format="default" sectionFormat="of" derivedContent="Section 3.2.1"/>.</t>
          <artwork align="left" pn="section-3.2.2-5">
psa-implementation-id-type = bytes .size 32

psa-implementation-id = (
    psa-implementation-id-key =&gt; psa-implementation-id-type
)
</artwork>
        </section>
        <section anchor="sec-certification-reference" numbered="true" removeInRFC="false" toc="include" pn="section-3.2.3">
          <name slugifiedName="name-certification-reference">Certification Reference</name>
          <t indent="0" pn="section-3.2.3-1">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 thirteen-digit <xref target="EAN-13" format="default" sectionFormat="of" derivedContent="EAN-13"/>.</t>
          <t indent="0" pn="section-3.2.3-2">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 align="left" pn="section-3.2.3-3">
psa-certification-reference-type = text .regexp "[0-9]{13}"

psa-certification-reference = (
    ? psa-certification-reference-key =&gt; 
        psa-certification-reference-type
)
</artwork>
        </section>
      </section>
      <section anchor="target-state-claims" numbered="true" removeInRFC="false" toc="include" pn="section-3.3">
        <name slugifiedName="name-target-state-claims">Target State Claims</name>
        <section anchor="sec-security-lifecycle" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.1">
          <name slugifiedName="name-security-lifecycle">Security Lifecycle</name>
          <t indent="0" pn="section-3.3.1-1">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" format="default" sectionFormat="of" derivedContent="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" bare="false" empty="false" indent="3" pn="section-3.3.1-2">
            <li pn="section-3.3.1-2.1">version[15:8] - PSA security lifecycle state, and</li>
            <li pn="section-3.3.1-2.2">version[7:0] - IMPLEMENTATION DEFINED state.</li>
          </ul>
          <t indent="0" pn="section-3.3.1-3">The PSA lifecycle states are illustrated in <xref target="fig-lifecycle-states" format="default" sectionFormat="of" derivedContent="Figure 1"/>. 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 indent="0" pn="section-3.3.1-4">This claim MUST be present in a PSA attestation token.</t>
          <figure anchor="fig-lifecycle-states" align="left" suppress-title="false" pn="figure-1">
            <name slugifiedName="name-psa-lifecycle-states">PSA Lifecycle States</name>
            <artset pn="section-3.3.1-5.1">
              <artwork type="ascii-art" align="left" pn="section-3.3.1-5.1.1" originalSrc="art/psa-lifecycle.ascii-art">                        .----------------------.
         .--- Enrol ---+ Provisioning Lockdown |
        |              '-----------+----------'
        |                          |   .------------------.
        |                          |  |                    |
        *                          v  v                    |
 .--------------.             .---------.                  |
|    Verifier    |  .---------+ Secured +-----------.      |
 '--------------'   |         '-+-------'            |     |
        *           |           |     ^              |     |
        |           |           v     |              v     |
    Blocklist       |    .------------+------.  .----------+----.
        |           |    | Non-PSA RoT Debug |  | Recoverable   |
        |           |    '---------+---------'  | PSA RoT Debug |
      .-+-----------+-.            |            '------+--------'
     |    Terminate   +------------+-------------------'
     '------+--------'
            |              .----------------.
             '------------&gt;| Decommissioned |
                           '----------------'
</artwork>
              <artwork type="svg" align="left" pn="section-3.3.1-5.1.2" originalSrc="art/psa-lifecycle.svg"><svg xmlns="http://www.w3.org/2000/svg" class="diagram" version="1.1" height="329" width="528" viewBox="0 0 528.0 329.0">
                  <g transform="translate(8,16)">
                    <path d="M 200,0 L 376,0" fill="none" stroke="black"/>
                    <path d="M 80,16 L 96,16" fill="none" stroke="black"/>
                    <path d="M 160,16 L 184,16" fill="none" stroke="black"/>
                    <path d="M 184,32 L 280,32" fill="none" stroke="black"/>
                    <path d="M 280,32 L 360,32" fill="none" stroke="black"/>
                    <path d="M 320,48 L 456,48" fill="none" stroke="black"/>
                    <path d="M 16,96 L 120,96" fill="none" stroke="black"/>
                    <path d="M 240,96 L 320,96" fill="none" stroke="black"/>
                    <path d="M 160,112 L 240,112" fill="none" stroke="black"/>
                    <path d="M 320,112 L 408,112" fill="none" stroke="black"/>
                    <path d="M 16,128 L 120,128" fill="none" stroke="black"/>
                    <path d="M 240,128 L 256,128" fill="none" stroke="black"/>
                    <path d="M 256,128 L 320,128" fill="none" stroke="black"/>
                    <path d="M 200,176 L 304,176" fill="none" stroke="black"/>
                    <path d="M 304,176 L 360,176" fill="none" stroke="black"/>
                    <path d="M 384,176 L 472,176" fill="none" stroke="black"/>
                    <path d="M 472,176 L 512,176" fill="none" stroke="black"/>
                    <path d="M 200,208 L 280,208" fill="none" stroke="black"/>
                    <path d="M 280,208 L 360,208" fill="none" stroke="black"/>
                    <path d="M 56,224 L 64,224" fill="none" stroke="black"/>
                    <path d="M 64,224 L 160,224" fill="none" stroke="black"/>
                    <path d="M 160,224 L 176,224" fill="none" stroke="black"/>
                    <path d="M 384,224 L 440,224" fill="none" stroke="black"/>
                    <path d="M 440,224 L 512,224" fill="none" stroke="black"/>
                    <path d="M 176,240 L 280,240" fill="none" stroke="black"/>
                    <path d="M 280,240 L 440,240" fill="none" stroke="black"/>
                    <path d="M 40,256 L 96,256" fill="none" stroke="black"/>
                    <path d="M 96,256 L 160,256" fill="none" stroke="black"/>
                    <path d="M 216,272 L 352,272" fill="none" stroke="black"/>
                    <path d="M 112,288 L 208,288" fill="none" stroke="black"/>
                    <path d="M 216,304 L 352,304" fill="none" stroke="black"/>
                    <path d="M 40,240 L 40,256" fill="none" stroke="black"/>
                    <path d="M 64,32 L 64,80" fill="none" stroke="black"/>
                    <path d="M 64,144 L 64,160" fill="none" stroke="black"/>
                    <path d="M 64,192 L 64,224" fill="none" stroke="black"/>
                    <path d="M 96,256 L 96,272" fill="none" stroke="black"/>
                    <path d="M 160,112 L 160,224" fill="none" stroke="black"/>
                    <path d="M 176,224 L 176,240" fill="none" stroke="black"/>
                    <path d="M 184,16 L 184,32" fill="none" stroke="black"/>
                    <path d="M 200,176 L 200,208" fill="none" stroke="black"/>
                    <path d="M 216,272 L 216,304" fill="none" stroke="black"/>
                    <path d="M 240,96 L 240,112" fill="none" stroke="black"/>
                    <path d="M 240,112 L 240,128" fill="none" stroke="black"/>
                    <path d="M 256,128 L 256,160" fill="none" stroke="black"/>
                    <path d="M 280,32 L 280,80" fill="none" stroke="black"/>
                    <path d="M 280,208 L 280,240" fill="none" stroke="black"/>
                    <path d="M 304,64 L 304,80" fill="none" stroke="black"/>
                    <path d="M 304,144 L 304,176" fill="none" stroke="black"/>
                    <path d="M 320,96 L 320,112" fill="none" stroke="black"/>
                    <path d="M 320,112 L 320,128" fill="none" stroke="black"/>
                    <path d="M 352,272 L 352,304" fill="none" stroke="black"/>
                    <path d="M 360,176 L 360,208" fill="none" stroke="black"/>
                    <path d="M 376,0 L 376,16" fill="none" stroke="black"/>
                    <path d="M 384,176 L 384,224" fill="none" stroke="black"/>
                    <path d="M 424,128 L 424,160" fill="none" stroke="black"/>
                    <path d="M 440,224 L 440,240" fill="none" stroke="black"/>
                    <path d="M 472,64 L 472,176" fill="none" stroke="black"/>
                    <path d="M 512,176 L 512,224" fill="none" stroke="black"/>
                    <polygon points="216.000000,288.000000 204.000000,282.399994 204.000000,293.600006" transform="rotate(0.000000, 208.000000, 288.000000)" fill="black"/>
                    <path d="M 256,160 L 256,168" fill="none" stroke="black"/>
                    <polygon points="272.000000,160.000000 260.000000,154.399994 260.000000,165.600006" transform="rotate(90.000000, 256.000000, 160.000000)" fill="black"/>
                    <path d="M 280,80 L 280,88" fill="none" stroke="black"/>
                    <polygon points="296.000000,80.000000 284.000000,74.400002 284.000000,85.599998" transform="rotate(90.000000, 280.000000, 80.000000)" fill="black"/>
                    <path d="M 304,80 L 304,88" fill="none" stroke="black"/>
                    <polygon points="320.000000,80.000000 308.000000,74.400002 308.000000,85.599998" transform="rotate(90.000000, 304.000000, 80.000000)" fill="black"/>
                    <path d="M 304,136 L 304,144" fill="none" stroke="black"/>
                    <polygon points="320.000000,144.000000 308.000000,138.399994 308.000000,149.600006" transform="rotate(270.000000, 304.000000, 144.000000)" fill="black"/>
                    <path d="M 424,160 L 424,168" fill="none" stroke="black"/>
                    <polygon points="440.000000,160.000000 428.000000,154.399994 428.000000,165.600006" transform="rotate(90.000000, 424.000000, 160.000000)" fill="black"/>
                    <path d="M 200,0 A 16,16 0 0,0 184,16" fill="none" stroke="black"/>
                    <path d="M 80,16 A 16,16 0 0,0 64,32" fill="none" stroke="black"/>
                    <path d="M 376,16 A 16,16 0 0,1 360,32" fill="none" stroke="black"/>
                    <path d="M 320,48 A 16,16 0 0,0 304,64" fill="none" stroke="black"/>
                    <path d="M 456,48 A 16,16 0 0,1 472,64" fill="none" stroke="black"/>
                    <path d="M 16,96 A 16,16 0 0,0 0,112" fill="none" stroke="black"/>
                    <path d="M 120,96 A 16,16 0 0,1 136,112" fill="none" stroke="black"/>
                    <path d="M 408,112 A 16,16 0 0,1 424,128" fill="none" stroke="black"/>
                    <path d="M 0,112 A 16,16 0 0,0 16,128" fill="none" stroke="black"/>
                    <path d="M 136,112 A 16,16 0 0,1 120,128" fill="none" stroke="black"/>
                    <path d="M 56,224 A 16,16 0 0,0 40,240" fill="none" stroke="black"/>
                    <path d="M 176,240 A 16,16 0 0,1 160,256" fill="none" stroke="black"/>
                    <path d="M 96,272 A 16,16 0 0,0 112,288" fill="none" stroke="black"/>
                    <circle cx="64" cy="80" r="6" fill="black" stroke="black"/>
                    <circle cx="64" cy="144" r="6" fill="black" stroke="black"/>
                    <text text-anchor="middle" font-family="monospace" x="56" y="116" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="320" y="292" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="344" y="20" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="232" y="292" fill="black" font-size="1em">D</text>
                    <text text-anchor="middle" font-family="monospace" x="264" y="292" fill="black" font-size="1em">m</text>
                    <text text-anchor="middle" font-family="monospace" x="96" y="244" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="328" y="20" fill="black" font-size="1em">k</text>
                    <text text-anchor="middle" font-family="monospace" x="288" y="196" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="272" y="20" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="304" y="116" fill="black" font-size="1em">d</text>
                    <text text-anchor="middle" font-family="monospace" x="288" y="292" fill="black" font-size="1em">s</text>
                    <text text-anchor="middle" font-family="monospace" x="64" y="116" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="280" y="196" fill="black" font-size="1em">R</text>
                    <text text-anchor="middle" font-family="monospace" x="328" y="196" fill="black" font-size="1em">b</text>
                    <text text-anchor="middle" font-family="monospace" x="120" y="244" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="112" y="20" fill="black" font-size="1em">E</text>
                    <text text-anchor="middle" font-family="monospace" x="480" y="196" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="288" y="20" fill="black" font-size="1em">g</text>
                    <text text-anchor="middle" font-family="monospace" x="352" y="20" fill="black" font-size="1em">w</text>
                    <text text-anchor="middle" font-family="monospace" x="264" y="116" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="464" y="212" fill="black" font-size="1em">D</text>
                    <text text-anchor="middle" font-family="monospace" x="336" y="292" fill="black" font-size="1em">d</text>
                    <text text-anchor="middle" font-family="monospace" x="88" y="180" fill="black" font-size="1em">s</text>
                    <text text-anchor="middle" font-family="monospace" x="336" y="196" fill="black" font-size="1em">u</text>
                    <text text-anchor="middle" font-family="monospace" x="416" y="196" fill="black" font-size="1em">c</text>
                    <text text-anchor="middle" font-family="monospace" x="464" y="196" fill="black" font-size="1em">b</text>
                    <text text-anchor="middle" font-family="monospace" x="448" y="196" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="496" y="212" fill="black" font-size="1em">g</text>
                    <text text-anchor="middle" font-family="monospace" x="104" y="244" fill="black" font-size="1em">m</text>
                    <text text-anchor="middle" font-family="monospace" x="264" y="20" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="304" y="20" fill="black" font-size="1em">L</text>
                    <text text-anchor="middle" font-family="monospace" x="40" y="116" fill="black" font-size="1em">V</text>
                    <text text-anchor="middle" font-family="monospace" x="56" y="180" fill="black" font-size="1em">c</text>
                    <text text-anchor="middle" font-family="monospace" x="232" y="196" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="256" y="292" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="240" y="196" fill="black" font-size="1em">-</text>
                    <text text-anchor="middle" font-family="monospace" x="408" y="212" fill="black" font-size="1em">S</text>
                    <text text-anchor="middle" font-family="monospace" x="120" y="20" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="64" y="180" fill="black" font-size="1em">k</text>
                    <text text-anchor="middle" font-family="monospace" x="224" y="196" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="144" y="244" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="88" y="116" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="264" y="196" fill="black" font-size="1em">A</text>
                    <text text-anchor="middle" font-family="monospace" x="248" y="20" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="312" y="20" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="440" y="196" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="128" y="20" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="336" y="20" fill="black" font-size="1em">d</text>
                    <text text-anchor="middle" font-family="monospace" x="416" y="212" fill="black" font-size="1em">A</text>
                    <text text-anchor="middle" font-family="monospace" x="72" y="180" fill="black" font-size="1em">l</text>
                    <text text-anchor="middle" font-family="monospace" x="296" y="292" fill="black" font-size="1em">s</text>
                    <text text-anchor="middle" font-family="monospace" x="48" y="116" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="248" y="196" fill="black" font-size="1em">P</text>
                    <text text-anchor="middle" font-family="monospace" x="344" y="196" fill="black" font-size="1em">g</text>
                    <text text-anchor="middle" font-family="monospace" x="424" y="196" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="48" y="180" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="80" y="180" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="240" y="20" fill="black" font-size="1em">s</text>
                    <text text-anchor="middle" font-family="monospace" x="72" y="116" fill="black" font-size="1em">f</text>
                    <text text-anchor="middle" font-family="monospace" x="40" y="180" fill="black" font-size="1em">l</text>
                    <text text-anchor="middle" font-family="monospace" x="432" y="212" fill="black" font-size="1em">R</text>
                    <text text-anchor="middle" font-family="monospace" x="136" y="244" fill="black" font-size="1em">t</text>
                    <text text-anchor="middle" font-family="monospace" x="88" y="244" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="280" y="292" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="256" y="196" fill="black" font-size="1em">S</text>
                    <text text-anchor="middle" font-family="monospace" x="440" y="212" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="480" y="212" fill="black" font-size="1em">b</text>
                    <text text-anchor="middle" font-family="monospace" x="80" y="244" fill="black" font-size="1em">T</text>
                    <text text-anchor="middle" font-family="monospace" x="208" y="20" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="256" y="20" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="328" y="292" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="136" y="20" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="96" y="116" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="272" y="116" fill="black" font-size="1em">c</text>
                    <text text-anchor="middle" font-family="monospace" x="304" y="292" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="200" y="20" fill="black" font-size="1em">P</text>
                    <text text-anchor="middle" font-family="monospace" x="232" y="20" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="288" y="116" fill="black" font-size="1em">r</text>
                    <text text-anchor="middle" font-family="monospace" x="216" y="20" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="280" y="116" fill="black" font-size="1em">u</text>
                    <text text-anchor="middle" font-family="monospace" x="448" y="212" fill="black" font-size="1em">T</text>
                    <text text-anchor="middle" font-family="monospace" x="112" y="244" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="360" y="20" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="296" y="116" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="240" y="292" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="320" y="196" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="400" y="212" fill="black" font-size="1em">P</text>
                    <text text-anchor="middle" font-family="monospace" x="272" y="292" fill="black" font-size="1em">m</text>
                    <text text-anchor="middle" font-family="monospace" x="32" y="180" fill="black" font-size="1em">B</text>
                    <text text-anchor="middle" font-family="monospace" x="96" y="180" fill="black" font-size="1em">t</text>
                    <text text-anchor="middle" font-family="monospace" x="128" y="244" fill="black" font-size="1em">a</text>
                    <text text-anchor="middle" font-family="monospace" x="224" y="20" fill="black" font-size="1em">v</text>
                    <text text-anchor="middle" font-family="monospace" x="456" y="196" fill="black" font-size="1em">a</text>
                    <text text-anchor="middle" font-family="monospace" x="472" y="196" fill="black" font-size="1em">l</text>
                    <text text-anchor="middle" font-family="monospace" x="472" y="212" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="312" y="292" fill="black" font-size="1em">o</text>
                    <text text-anchor="middle" font-family="monospace" x="280" y="20" fill="black" font-size="1em">n</text>
                    <text text-anchor="middle" font-family="monospace" x="320" y="20" fill="black" font-size="1em">c</text>
                    <text text-anchor="middle" font-family="monospace" x="248" y="292" fill="black" font-size="1em">c</text>
                    <text text-anchor="middle" font-family="monospace" x="216" y="196" fill="black" font-size="1em">N</text>
                    <text text-anchor="middle" font-family="monospace" x="312" y="196" fill="black" font-size="1em">D</text>
                    <text text-anchor="middle" font-family="monospace" x="408" y="196" fill="black" font-size="1em">e</text>
                    <text text-anchor="middle" font-family="monospace" x="432" y="196" fill="black" font-size="1em">v</text>
                    <text text-anchor="middle" font-family="monospace" x="296" y="196" fill="black" font-size="1em">T</text>
                    <text text-anchor="middle" font-family="monospace" x="400" y="196" fill="black" font-size="1em">R</text>
                    <text text-anchor="middle" font-family="monospace" x="144" y="20" fill="black" font-size="1em">l</text>
                    <text text-anchor="middle" font-family="monospace" x="80" y="116" fill="black" font-size="1em">i</text>
                    <text text-anchor="middle" font-family="monospace" x="256" y="116" fill="black" font-size="1em">S</text>
                    <text text-anchor="middle" font-family="monospace" x="488" y="212" fill="black" font-size="1em">u</text>
                  </g>
                </svg>
              </artwork>
            </artset>
          </figure>
          <artwork align="left" pn="section-3.3.1-6">
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 =&gt; psa-lifecycle-type
)
</artwork>
        </section>
        <section anchor="sec-boot-seed" numbered="true" removeInRFC="false" toc="include" pn="section-3.3.2">
          <name slugifiedName="name-boot-seed">Boot Seed</name>
          <t indent="0" pn="section-3.3.2-1">The Boot Seed claim represents a random value created at system boot time that
will allow differentiation of reports from different boot sessions.</t>
          <t indent="0" pn="section-3.3.2-2">This claim MUST be present in a PSA attestation token.</t>
          <artwork align="left" pn="section-3.3.2-3">
psa-boot-seed-type = bytes .size 32

psa-boot-seed = (
    psa-boot-seed-key =&gt; psa-boot-seed-type
)
</artwork>
        </section>
      </section>
      <section anchor="software-inventory-claims" numbered="true" removeInRFC="false" toc="include" pn="section-3.4">
        <name slugifiedName="name-software-inventory-claims">Software Inventory Claims</name>
        <section anchor="sec-sw-components" numbered="true" removeInRFC="false" toc="include" pn="section-3.4.1">
          <name slugifiedName="name-software-components">Software Components</name>
          <t indent="0" pn="section-3.4.1-1">The Software Components claim is a list of software components that includes
all the software loaded by the PSA RoT. This claim SHALL be included in
attestation tokens produced by an implementation conformant with <xref target="PSA-SM" format="default" sectionFormat="of" derivedContent="PSA-SM"/>.</t>
          <t indent="0" pn="section-3.4.1-2">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 indent="0" pn="section-3.4.1-3">Note that, as described in <xref target="I-D.ietf-rats-architecture" format="default" sectionFormat="of" derivedContent="I-D.ietf-rats-architecture"/>, a relying party
will typically see the result of the verification process from the Verifier in
form of an attestation result, rather than the "naked" 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 align="left" pn="section-3.4.1-4">
psa-software-component = {
  ? 1 =&gt; text,          ; measurement type
    2 =&gt; psa-hash-type, ; measurement value
  ? 4 =&gt; text,          ; version
    5 =&gt; psa-hash-type, ; signer id
  ? 6 =&gt; text,          ; measurement description
}

psa-software-components = (
    psa-software-components-key =&gt; [ + psa-software-component ]
)
</artwork>
          <section anchor="measurement-type" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.4.1.1">
            <name slugifiedName="name-measurement-type">Measurement Type</name>
            <t indent="0" pn="section-3.4.1.1-1">The Measurement Type attribute (key=1) is short string representing the role of
this software component.</t>
            <t indent="0" pn="section-3.4.1.1-2">The following measurement types MAY be used:</t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.4.1.1-3">
              <li pn="section-3.4.1.1-3.1">"BL": a Boot Loader</li>
              <li pn="section-3.4.1.1-3.2">"PRoT": a component of the PSA Root of Trust</li>
              <li pn="section-3.4.1.1-3.3">"ARoT": a component of the Application Root of Trust</li>
              <li pn="section-3.4.1.1-3.4">"App": a component of the NSPE application</li>
              <li pn="section-3.4.1.1-3.5">"TS": a component of a Trusted Subsystem</li>
            </ul>
          </section>
          <section anchor="measurement-value" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.4.1.2">
            <name slugifiedName="name-measurement-value"> Measurement Value</name>
            <t indent="0" pn="section-3.4.1.2-1">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 indent="0" pn="section-3.4.1.2-2">This attribute MUST be present in a PSA software component.</t>
          </section>
          <section anchor="version" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.4.1.3">
            <name slugifiedName="name-version">Version</name>
            <t indent="0" pn="section-3.4.1.3-1">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" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.4.1.4">
            <name slugifiedName="name-signer-id">Signer ID</name>
            <t indent="0" pn="section-3.4.1.4-1">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 indent="0" pn="section-3.4.1.4-2">This attribute MUST be present in a PSA software component to be compliant with
<xref target="PSA-SM" format="default" sectionFormat="of" derivedContent="PSA-SM"/>.</t>
          </section>
          <section anchor="measurement-description" numbered="true" removeInRFC="false" toc="exclude" pn="section-3.4.1.5">
            <name slugifiedName="name-measurement-description">Measurement Description</name>
            <t indent="0" pn="section-3.4.1.5-1">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" format="default" sectionFormat="of" derivedContent="IANA-HashFunctionTextualNames"/>.</t>
          </section>
        </section>
      </section>
      <section anchor="verification-claims" numbered="true" removeInRFC="false" toc="include" pn="section-3.5">
        <name slugifiedName="name-verification-claims">Verification Claims</name>
        <section anchor="sec-verification-service-indicator" numbered="true" removeInRFC="false" toc="include" pn="section-3.5.1">
          <name slugifiedName="name-verification-service-indica">Verification Service Indicator</name>
          <t indent="0" pn="section-3.5.1-1">The Verification Service Indicator claim is a hint used by a relying party to
locate a validation service for the token. The value is a text string that can
be used to locate the service or a URL specifying the address of the service. A
Verifier may choose to ignore this claim in favor of other information.</t>
          <artwork align="left" pn="section-3.5.1-2">
psa-verification-service-indicator-type = text

psa-verification-service-indicator = (
    ? psa-verification-service-indicator-key =&gt;
        psa-verification-service-indicator-type
)
</artwork>
        </section>
        <section anchor="sec-profile-definition-claim" numbered="true" removeInRFC="false" toc="include" pn="section-3.5.2">
          <name slugifiedName="name-profile-definition">Profile Definition</name>
          <t indent="0" pn="section-3.5.2-1">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 indent="0" pn="section-3.5.2-2">The EAT <tt>profile</tt> (claim key 265) is used.  The following constraints
apply to its type:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.5.2-3">
            <li pn="section-3.5.2-3.1">The URI encoding MUST be used.</li>
            <li pn="section-3.5.2-3.2">The value MUST be <tt>http://arm.com/psa/2.0.0</tt>.</li>
          </ul>
          <t indent="0" pn="section-3.5.2-4">This claim MUST be present in a PSA attestation token.</t>
          <t indent="0" pn="section-3.5.2-5">See <xref target="sec-backwards-compat" format="default" sectionFormat="of" derivedContent="Section 4"/>, for considerations about backwards compatibility
with previous versions of the PSA attestation token format.</t>
          <artwork align="left" pn="section-3.5.2-6">
psa-profile-type = "http://arm.com/psa/2.0.0"

psa-profile = (
    profile-label =&gt; psa-profile-type
)
</artwork>
        </section>
      </section>
    </section>
    <section anchor="sec-backwards-compat" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-backwards-compatibility-con">Backwards Compatibility Considerations</name>
      <t indent="0" pn="section-4-1">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 indent="0" pn="section-4-2"><xref target="tab-claim-map" format="default" sectionFormat="of" derivedContent="Table 1"/> provides the mappings between the deprecated and new claim
keys.</t>
      <table anchor="tab-claim-map" align="center" pn="table-1">
        <name slugifiedName="name-claim-key-mappings">Claim key mappings</name>
        <thead>
          <tr>
            <th align="left" colspan="1" rowspan="1"> </th>
            <th align="left" colspan="1" rowspan="1">PSA_IOT_PROFILE_1</th>
            <th align="left" colspan="1" rowspan="1">http://arm.com/psa/2.0.0</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left" colspan="1" rowspan="1">Nonce</td>
            <td align="left" colspan="1" rowspan="1">-75008</td>
            <td align="left" colspan="1" rowspan="1">10 (EAT nonce)</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Instance ID</td>
            <td align="left" colspan="1" rowspan="1">-75009</td>
            <td align="left" colspan="1" rowspan="1">256 (EAT euid)</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Profile Definition</td>
            <td align="left" colspan="1" rowspan="1">-75000</td>
            <td align="left" colspan="1" rowspan="1">265 (EAT eat_profile)</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Client ID</td>
            <td align="left" colspan="1" rowspan="1">-75001</td>
            <td align="left" colspan="1" rowspan="1">2394</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Security Lifecycle</td>
            <td align="left" colspan="1" rowspan="1">-75002</td>
            <td align="left" colspan="1" rowspan="1">2395</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Implementation ID</td>
            <td align="left" colspan="1" rowspan="1">-75003</td>
            <td align="left" colspan="1" rowspan="1">2396</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Boot Seed</td>
            <td align="left" colspan="1" rowspan="1">-75004</td>
            <td align="left" colspan="1" rowspan="1">2397</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Certification Reference</td>
            <td align="left" colspan="1" rowspan="1">-75005</td>
            <td align="left" colspan="1" rowspan="1">2398</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Software Components</td>
            <td align="left" colspan="1" rowspan="1">-75006</td>
            <td align="left" colspan="1" rowspan="1">2399</td>
          </tr>
          <tr>
            <td align="left" colspan="1" rowspan="1">Verification Service Indicator</td>
            <td align="left" colspan="1" rowspan="1">-75010</td>
            <td align="left" colspan="1" rowspan="1">2400</td>
          </tr>
        </tbody>
      </table>
      <t indent="0" pn="section-4-4">Unless compatibility with existing infrastructure is a concern, emitters (e.g.,
devices that implement the PSA Attestation API) SHOULD produce tokens with
the claim keys specified in this document.</t>
      <t indent="0" pn="section-4-5">To simplify the transition to the token format described in this
document it is RECOMMENDED that receivers (e.g., PSA Attestation Verifiers)
accept tokens encoded according to the old profile (<tt>PSA_IOT_PROFILE_1</tt>) as well as
to the new profile (<tt>http://arm.com/psa/2.0.0</tt>), at least for the time needed to
their clients to upgrade.</t>
    </section>
    <section anchor="sec-token-encoding-and-signing" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-token-encoding-and-signing"> Token Encoding and Signing</name>
      <t indent="0" pn="section-5-1">The PSA attestation token is encoded in CBOR <xref target="RFC8949" format="default" sectionFormat="of" derivedContent="RFC8949"/> format.  Only
definite-length string, arrays, and maps are allowed.</t>
      <t indent="0" pn="section-5-2">Cryptographic protection is obtained by wrapping the <tt>psa-token</tt> map in a COSE
Web Token (CWT) <xref target="RFC8392" format="default" sectionFormat="of" derivedContent="RFC8392"/>.  For asymmetric key algorithms, the signature
structure MUST be COSE_Sign1.  For symmetric key algorithms, the signature
structure MUST be COSE_Mac0.</t>
      <t indent="0" pn="section-5-3">Acknowledging the variety of markets, regulations and use cases in which the
PSA attestation token can be used, this specification does not impose any
strong requirement on the cryptographic algorithms that need to be supported by
Attesters and Verifiers.  It is assumed that some form of out-of-band discovery
and negotiation is in place to allow interoperability between the involved
parties, and that the flexibility provided by the COSE format is sufficient to
deal with the level of cryptographic agility needed to adapt to specific use
cases.</t>
      <t indent="0" pn="section-5-4">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" format="default" sectionFormat="of" derivedContent="Section 11.2"/> or the CoAP Content-Format defined in
<xref target="sec-iana-coap-content-format" format="default" sectionFormat="of" derivedContent="Section 11.3"/>.</t>
    </section>
    <section anchor="freshness-model" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-freshness-model">Freshness Model</name>
      <t indent="0" pn="section-6-1">The PSA Token supports the freshness models for attestation Evidence based on
nonces and epoch handles (Section 10.2 and 10.3 of
<xref target="I-D.ietf-rats-architecture" format="default" sectionFormat="of" derivedContent="I-D.ietf-rats-architecture"/>) 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>
    </section>
    <section anchor="collated-cddl" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-collated-cddl">Collated CDDL</name>
      <artwork align="left" pn="section-7-1">
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

; from EAT
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 32

psa-boot-seed = (
    psa-boot-seed-key =&gt; 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 =&gt; psa-client-id-type
)

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

psa-certification-reference = (
    ? psa-certification-reference-key =&gt; 
        psa-certification-reference-type
)

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

psa-implementation-id = (
    psa-implementation-id-key =&gt; psa-implementation-id-type
)

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

psa-instance-id = (
    ueid-label =&gt; psa-instance-id-type
)

psa-nonce = (
    nonce-label =&gt; psa-hash-type
)

psa-profile-type = "http://arm.com/psa/2.0.0"

psa-profile = (
    profile-label =&gt; 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 =&gt; psa-lifecycle-type
)

psa-software-component = {
  ? 1 =&gt; text,          ; measurement type
    2 =&gt; psa-hash-type, ; measurement value
  ? 4 =&gt; text,          ; version
    5 =&gt; psa-hash-type, ; signer id
  ? 6 =&gt; text,          ; measurement description
}

psa-software-components = (
    psa-software-components-key =&gt; [ + psa-software-component ]
)

psa-verification-service-indicator-type = text

psa-verification-service-indicator = (
    ? psa-verification-service-indicator-key =&gt;
        psa-verification-service-indicator-type
)
</artwork>
    </section>
    <section anchor="implementation-status" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-implementation-status">Implementation Status</name>
      <t indent="0" pn="section-8-1">Independent implementations of this specification are provided by the Trusted
Firmware project <xref target="TF-M" format="default" sectionFormat="of" derivedContent="TF-M"/>, the Veraison project <xref target="Veraison" format="default" sectionFormat="of" derivedContent="Veraison"/>, and Xclaim
<xref target="Xclaim" format="default" sectionFormat="of" derivedContent="Xclaim"/>.  All three implementations are released as open-source software.</t>
    </section>
    <section anchor="security-and-privacy-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-9">
      <name slugifiedName="name-security-and-privacy-consid">Security and Privacy Considerations</name>
      <t indent="0" pn="section-9-1">This specification re-uses the CWT and the EAT specification. Hence, the
security and privacy considerations of those specifications apply here as well.</t>
      <t indent="0" pn="section-9-2">Since CWTs offer different ways to protect the token, this specification
profiles those options and allows signatures based on use of public key
cryptography as well as MAC authentication. The token MUST be signed following
the structure of the COSE specification <xref target="RFC8152" format="default" sectionFormat="of" derivedContent="RFC8152"/>.  The COSE type MUST be
COSE_Sign1 for public key signatures or COSE_Mac0 for MAC authentication.  Note
however that use of MAC authentication is NOT RECOMMENDED due to the associated
infrastructure costs for key management and protocol complexities. It may also
restrict the ability to interoperate with third parties.</t>
      <t indent="0" pn="section-9-3">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.  Implementations 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" numbered="true" removeInRFC="false" toc="include" pn="section-10">
      <name slugifiedName="name-verification">Verification</name>
      <t indent="0" pn="section-10-1">To verify the token, the primary need is to check correct encoding and signing
as detailed in <xref target="sec-token-encoding-and-signing" format="default" sectionFormat="of" derivedContent="Section 5"/>.  In particular, the Instance
ID claim is used (together with the kid in the COSE header, if present)
to assist in locating the public key used to verify the signature covering the CWT token.
The key used for verification is supplied to the Verifier by an authorized
Endorser along with the corresponding Attester's Instance ID.</t>
      <t indent="0" pn="section-10-2">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" bare="false" empty="false" indent="3" pn="section-10-3">
        <li pn="section-10-3.1">Implementation ID - the value of the Implementation ID can be used to
identify the verification requirements of the deployment.</li>
        <li pn="section-10-3.2">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.</li>
        <li pn="section-10-3.3">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.</li>
        <li pn="section-10-3.4">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" format="default" sectionFormat="of" derivedContent="PSACertified"/> certificate.</li>
      </ul>
      <t indent="0" pn="section-10-4">The protocol used to convey Endorsements and Reference Values to the Verifier
is not in scope for this document.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" removeInRFC="false" toc="include" pn="section-11">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <section anchor="cbor-web-token-claims-registration" numbered="true" removeInRFC="false" toc="include" pn="section-11.1">
        <name slugifiedName="name-cbor-web-token-claims-regis">CBOR Web Token Claims Registration</name>
        <t indent="0" pn="section-11.1-1">This specification requests IANA to register the following claims in the "CBOR
Web Token (CWT) Claims" registry <xref target="IANA-CWT" format="default" sectionFormat="of" derivedContent="IANA-CWT"/>.</t>
        <section anchor="client-id-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.1">
          <name slugifiedName="name-client-id-claim"> Client ID Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.1-1">
            <li pn="section-11.1.1-1.1">Claim Name: psa-client-id</li>
            <li pn="section-11.1.1-1.2">Claim Description: PSA Client ID</li>
            <li pn="section-11.1.1-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.1-1.4">Claim Key: TBD (requested value: 2394)</li>
            <li pn="section-11.1.1-1.5">Claim Value Type(s): signed integer</li>
            <li pn="section-11.1.1-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.1-1.7">Specification Document(s): <xref target="sec-client-id" format="default" sectionFormat="of" derivedContent="Section 3.1.2"/> of [[this RFC]]</li>
          </ul>
        </section>
        <section anchor="security-lifecycle-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.2">
          <name slugifiedName="name-security-lifecycle-claim"> Security Lifecycle Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.2-1">
            <li pn="section-11.1.2-1.1">Claim Name: psa-security-lifecycle</li>
            <li pn="section-11.1.2-1.2">Claim Description: PSA Security Lifecycle</li>
            <li pn="section-11.1.2-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.2-1.4">Claim Key: TBD (requested value: 2395)</li>
            <li pn="section-11.1.2-1.5">Claim Value Type(s): unsigned integer</li>
            <li pn="section-11.1.2-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.2-1.7">Specification Document(s): <xref target="sec-security-lifecycle" format="default" sectionFormat="of" derivedContent="Section 3.3.1"/> of [[this RFC]]</li>
          </ul>
        </section>
        <section anchor="implementation-id-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.3">
          <name slugifiedName="name-implementation-id-claim"> Implementation ID Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.3-1">
            <li pn="section-11.1.3-1.1">Claim Name: psa-implementation-id</li>
            <li pn="section-11.1.3-1.2">Claim Description: PSA Implementation ID</li>
            <li pn="section-11.1.3-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.3-1.4">Claim Key: TBD (requested value: 2396)</li>
            <li pn="section-11.1.3-1.5">Claim Value Type(s): byte string</li>
            <li pn="section-11.1.3-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.3-1.7">Specification Document(s): <xref target="sec-implementation-id" format="default" sectionFormat="of" derivedContent="Section 3.2.2"/> of [[this RFC]]</li>
          </ul>
        </section>
        <section anchor="boot-seed-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.4">
          <name slugifiedName="name-boot-seed-claim"> Boot Seed Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.4-1">
            <li pn="section-11.1.4-1.1">Claim Name: psa-boot-seed</li>
            <li pn="section-11.1.4-1.2">Claim Description: PSA Boot Seed</li>
            <li pn="section-11.1.4-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.4-1.4">Claim Key: TBD (requested value: 2397)</li>
            <li pn="section-11.1.4-1.5">Claim Value Type(s): byte string</li>
            <li pn="section-11.1.4-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.4-1.7">Specification Document(s): <xref target="sec-boot-seed" format="default" sectionFormat="of" derivedContent="Section 3.3.2"/> of [[this RFC]]</li>
          </ul>
        </section>
        <section anchor="certification-reference-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.5">
          <name slugifiedName="name-certification-reference-cla"> Certification Reference Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.5-1">
            <li pn="section-11.1.5-1.1">Claim Name: psa-certification-reference</li>
            <li pn="section-11.1.5-1.2">Claim Description: PSA Certification Reference</li>
            <li pn="section-11.1.5-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.5-1.4">Claim Key: TBD (requested value: 2398)</li>
            <li pn="section-11.1.5-1.5">Claim Value Type(s): text string</li>
            <li pn="section-11.1.5-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.5-1.7">Specification Document(s): <xref target="sec-certification-reference" format="default" sectionFormat="of" derivedContent="Section 3.2.3"/> of [[this RFC]]</li>
          </ul>
        </section>
        <section anchor="software-components-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.6">
          <name slugifiedName="name-software-components-claim"> Software Components Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.6-1">
            <li pn="section-11.1.6-1.1">Claim Name: psa-software-components</li>
            <li pn="section-11.1.6-1.2">Claim Description: PSA Software Components</li>
            <li pn="section-11.1.6-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.6-1.4">Claim Key: TBD (requested value: 2399)</li>
            <li pn="section-11.1.6-1.5">Claim Value Type(s): array</li>
            <li pn="section-11.1.6-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.6-1.7">Specification Document(s): <xref target="sec-sw-components" format="default" sectionFormat="of" derivedContent="Section 3.4.1"/> of [[this RFC]]</li>
          </ul>
        </section>
        <section anchor="verification-service-indicator-claim" numbered="true" removeInRFC="false" toc="include" pn="section-11.1.7">
          <name slugifiedName="name-verification-service-indicat"> Verification Service Indicator Claim</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1.7-1">
            <li pn="section-11.1.7-1.1">Claim Name: psa-verification-service-indicator</li>
            <li pn="section-11.1.7-1.2">Claim Description: PSA Verification Service Indicator</li>
            <li pn="section-11.1.7-1.3">JWT Claim Name: N/A</li>
            <li pn="section-11.1.7-1.4">Claim Key: TBD (requested value: 2400)</li>
            <li pn="section-11.1.7-1.5">Claim Value Type(s): text string</li>
            <li pn="section-11.1.7-1.6">Change Controller: [[Authors of this RFC]]</li>
            <li pn="section-11.1.7-1.7">Specification Document(s): <xref target="sec-verification-service-indicator" format="default" sectionFormat="of" derivedContent="Section 3.5.1"/> of [[this RFC]]</li>
          </ul>
        </section>
      </section>
      <section anchor="sec-iana-media-types" numbered="true" removeInRFC="false" toc="include" pn="section-11.2">
        <name slugifiedName="name-media-type-registration">Media Type Registration</name>
        <t indent="0" pn="section-11.2-1">IANA is requested to register the "application/psa-attestation-token" media
type <xref target="RFC2046" format="default" sectionFormat="of" derivedContent="RFC2046"/> in the "Media Types" registry <xref target="IANA-MediaTypes" format="default" sectionFormat="of" derivedContent="IANA-MediaTypes"/> in the
manner described in RFC 6838 <xref target="RFC6838" format="default" sectionFormat="of" derivedContent="RFC6838"/>, which can be used to indicate that
the content is a PSA Attestation Token.</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.2-2">
          <li pn="section-11.2-2.1">Type name: application</li>
          <li pn="section-11.2-2.2">Subtype name: psa-attestation-token</li>
          <li pn="section-11.2-2.3">Required parameters: n/a</li>
          <li pn="section-11.2-2.4">Optional parameters: n/a</li>
          <li pn="section-11.2-2.5">Encoding considerations: binary</li>
          <li pn="section-11.2-2.6">Security considerations: See the Security Considerations section
of [[this RFC]]</li>
          <li pn="section-11.2-2.7">Interoperability considerations: n/a</li>
          <li pn="section-11.2-2.8">Published specification: [[this RFC]]</li>
          <li pn="section-11.2-2.9">Applications that use this media type: Attesters and Relying Parties sending
PSA attestation tokens over HTTP(S), CoAP(S), and other transports.</li>
          <li pn="section-11.2-2.10">Fragment identifier considerations: n/a</li>
          <li pn="section-11.2-2.11">
            <t indent="0" pn="section-11.2-2.11.1">Additional information:  </t>
            <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.2-2.11.2">
              <li pn="section-11.2-2.11.2.1">Magic number(s): n/a</li>
              <li pn="section-11.2-2.11.2.2">File extension(s): n/a</li>
              <li pn="section-11.2-2.11.2.3">Macintosh file type code(s): n/a</li>
            </ul>
          </li>
          <li pn="section-11.2-2.12">Person &amp; email address to contact for further information:
Hannes Tschofenig, Hannes.Tschofenig@arm.com</li>
          <li pn="section-11.2-2.13">Intended usage: COMMON</li>
          <li pn="section-11.2-2.14">Restrictions on usage: none</li>
          <li pn="section-11.2-2.15">Author: Hannes Tschofenig, Hannes.Tschofenig@arm.com</li>
          <li pn="section-11.2-2.16">Change controller: IESG</li>
          <li pn="section-11.2-2.17">Provisional registration?  No</li>
        </ul>
      </section>
      <section anchor="sec-iana-coap-content-format" numbered="true" removeInRFC="false" toc="include" pn="section-11.3">
        <name slugifiedName="name-coap-content-formats-regist">CoAP Content-Formats Registration</name>
        <t indent="0" pn="section-11.3-1">IANA is requested to register the CoAP Content-Format ID for the
"application/psa-attestation-token" media type in the "CoAP Content-Formats"
registry <xref target="IANA-CoAP-Content-Formats" format="default" sectionFormat="of" derivedContent="IANA-CoAP-Content-Formats"/>.</t>
        <section anchor="registry-contents" numbered="true" removeInRFC="false" toc="include" pn="section-11.3.1">
          <name slugifiedName="name-registry-contents">Registry Contents</name>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.3.1-1">
            <li pn="section-11.3.1-1.1">Media Type: application/psa-attestation-token</li>
            <li pn="section-11.3.1-1.2">Encoding: -</li>
            <li pn="section-11.3.1-1.3">Id: [[To-be-assigned by IANA]]</li>
            <li pn="section-11.3.1-1.4">Reference: [[this RFC]]</li>
          </ul>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references pn="section-12">
      <name slugifiedName="name-references">References</name>
      <references pn="section-12.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="EAN-13" target="https://www.gs1.org/standards/barcodes/ean-upc" quoteTitle="true" derivedAnchor="EAN-13">
          <front>
            <title>International Article Number - EAN/UPC barcodes</title>
            <author>
              <organization showOnFrontPage="true">GS1</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-eat" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-rats-eat-12" derivedAnchor="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade">
              <organization showOnFrontPage="true">Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam">
              <organization showOnFrontPage="true">Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Jeremy O'Donoghue">
              <organization showOnFrontPage="true">Qualcomm Technologies Inc.</organization>
            </author>
            <date day="24" month="February" year="2022"/>
            <abstract>
              <t indent="0">   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a phone, IoT device, network equipment or such.  This claims set is
   used by a relying party, server or service to determine how much it
   wishes to trust the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.  To a large degree, all this document
   does is extend CWT and JWT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-12"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="PSA-FF" target="https://developer.arm.com/-/media/Files/pdf/PlatformSecurityArchitecture/Architect/DEN0063-PSA_Firmware_Framework-1.0.0-2.pdf" quoteTitle="true" derivedAnchor="PSA-FF">
          <front>
            <title>Platform Security Architecture Firmware Framework 1.0 (PSA-FF)</title>
            <author>
              <organization showOnFrontPage="true">Arm</organization>
            </author>
            <date year="2019" month="February"/>
          </front>
        </reference>
        <reference anchor="PSA-SM" target="https://developer.arm.com/-/media/Files/pdf/PlatformSecurityArchitecture/Architect/DEN0079_PSA_SM_ALPHA-03_RC01.pdf" quoteTitle="true" derivedAnchor="PSA-SM">
          <front>
            <title>Platform Security Architecture Security Model 1.0 (PSA-SM)</title>
            <author>
              <organization showOnFrontPage="true">Arm</organization>
            </author>
            <date year="2019" month="February"/>
          </front>
        </reference>
        <reference anchor="RFC2046" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc2046" derivedAnchor="RFC2046">
          <front>
            <title>Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types</title>
            <author fullname="N. Freed" initials="N." surname="Freed">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="N. Borenstein" initials="N." surname="Borenstein">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="November" year="1996"/>
            <abstract>
              <t indent="0">This second document defines the general structure of the MIME media typing system and defines an initial set of media types.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2046"/>
          <seriesInfo name="DOI" value="10.17487/RFC2046"/>
        </reference>
        <reference anchor="RFC2119" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc2119" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t indent="0">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="RFC6838" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc6838" derivedAnchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="J. Klensin" initials="J." surname="Klensin">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="T. Hansen" initials="T." surname="Hansen">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="January" year="2013"/>
            <abstract>
              <t indent="0">This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols.  This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </reference>
        <reference anchor="RFC8152" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc8152" derivedAnchor="RFC8152">
          <front>
            <title>CBOR Object Signing and Encryption (COSE)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="July" year="2017"/>
            <abstract>
              <t indent="0">Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size.  There is a need for the ability to have basic security services defined 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>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8152"/>
          <seriesInfo name="DOI" value="10.17487/RFC8152"/>
        </reference>
        <reference anchor="RFC8174" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc8174" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t indent="0">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="RFC8392" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc8392" derivedAnchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="May" year="2018"/>
            <abstract>
              <t indent="0">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>
        <reference anchor="RFC8610" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc8610" derivedAnchor="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">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="C. Vigano" initials="C." surname="Vigano">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="June" year="2019"/>
            <abstract>
              <t indent="0">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="RFC8949" quoteTitle="true" target="https://www.rfc-editor.org/rfc/rfc8949" derivedAnchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="December" year="2020"/>
            <abstract>
              <t indent="0">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 indent="0">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>
      </references>
      <references pn="section-12.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-rats-architecture" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-rats-architecture-15" derivedAnchor="I-D.ietf-rats-architecture">
          <front>
            <title>Remote Attestation Procedures Architecture</title>
            <author fullname="Henk Birkholz">
              <organization showOnFrontPage="true">Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler">
              <organization showOnFrontPage="true">Microsoft</organization>
            </author>
            <author fullname="Michael Richardson">
              <organization showOnFrontPage="true">Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith">
              <organization showOnFrontPage="true">Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <date day="8" month="February" year="2022"/>
            <abstract>
              <t indent="0">   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.
   An attempt is made to provide for a model that is neutral toward
   processor architectures, the content of claims, and protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-15"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="IANA-CoAP-Content-Formats" target="https://www.iana.org/assignments/core-parameters" quoteTitle="true" derivedAnchor="IANA-CoAP-Content-Formats">
          <front>
            <title>CoAP Content-Formats</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IANA-CWT" target="https://www.iana.org/assignments/cwt/cwt.xhtml#claims-registry" quoteTitle="true" derivedAnchor="IANA-CWT">
          <front>
            <title>CBOR Web Token (CWT) Claims</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IANA-HashFunctionTextualNames" target="https://www.iana.org/assignments/hash-function-text-names" quoteTitle="true" derivedAnchor="IANA-HashFunctionTextualNames">
          <front>
            <title>Hash Function Textual Names</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="IANA-MediaTypes" target="http://www.iana.org/assignments/media-types" quoteTitle="true" derivedAnchor="IANA-MediaTypes">
          <front>
            <title>Media Types</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="PSA" target="https://developer.arm.com/architectures/security-architectures/platform-security-architecture/documentation" quoteTitle="true" derivedAnchor="PSA">
          <front>
            <title>Platform Security Architecture Resources</title>
            <author>
              <organization showOnFrontPage="true">Arm</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="PSACertified" target="https://psacertified.org" quoteTitle="true" derivedAnchor="PSACertified">
          <front>
            <title>PSA Certified IoT Security Framework</title>
            <author>
              <organization showOnFrontPage="true">PSA Certified</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="TF-M" target="https://www.trustedfirmware.org/projects/tf-m/" quoteTitle="true" derivedAnchor="TF-M">
          <front>
            <title>Trusted Firmware-M</title>
            <author>
              <organization showOnFrontPage="true">Linaro</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="Veraison" target="https://github.com/veraison/psatoken" quoteTitle="true" derivedAnchor="Veraison">
          <front>
            <title>Veraison psatoken package</title>
            <author>
              <organization showOnFrontPage="true">The Veraison Project</organization>
            </author>
            <date year="2022"/>
          </front>
        </reference>
        <reference anchor="Xclaim" target="https://github.com/laurencelundblade/xclaim" quoteTitle="true" derivedAnchor="Xclaim">
          <front>
            <title>Xclaim</title>
            <author initials="L." surname="Lundblade" fullname="Laurence Lundblade">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2022"/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="example" numbered="true" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-example">Example</name>
      <t indent="0" pn="section-appendix.a-1">The following example shows a PSA attestation token for an hypothetical system
comprising two measured software components (a boot loader and a trusted RTOS).
The attesting device is in a lifecycle state <xref target="sec-security-lifecycle" format="default" sectionFormat="of" derivedContent="Section 3.3.1"/> of
SECURED.  The attestation has been requested from a client residing in the
SPE:</t>
      <artwork align="left" pn="section-appendix.a-2">
{
  / eat_profile /         265: "http://arm.com/psa/2.0.0",
  / psa-client-id /               2394: 1,
  / psa-lifecycle /               2395: 12288,
  / psa-implementation-id /       2396: h'50515253545556575051
52535455565750515253545556575051525354555657',
  / psa-boot-seed /               2397: h'DEADBEEFDEADBEEFDEAD
BEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF',
  / psa-certification-reference / 2398: "1234567890123",
  / psa-software-components /     2399: [
    {
      / measurement type /  1: "BL",
      / measurement value / 2: h'0001020400010204000102040001020
400010204000102040001020400010204',
      / signer ID /         5: h'519200FF519200FF519200FF519200F
F519200FF519200FF519200FF519200FF'
    },
    {
      / measurement type /  1: "PRoT",
      / measurement value / 2: h'0506070805060708050607080506070
805060708050607080506070805060708',
      / signer ID /         5: h'519200FF519200FF519200FF519200F
F519200FF519200FF519200FF519200FF'
    }
  ],
  / nonce /               10: h'00010203000102030001020300010203
00010203000102030001020300010203',
  / ueid /               256: h'01A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2
A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3',
  / psa-verification-service-indicator / 2400: "https://psa-ve
rifier.org"
}
</artwork>
      <t indent="0" pn="section-appendix.a-3">The JWK representation of the IAK used for creating the COSE Sign1 signature
over the PSA token is:</t>
      <artwork align="left" pn="section-appendix.a-4">
{
  "kty": "EC",
  "crv": "P-256",
  "x": "MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
  "y": "4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
  "d": "870MB6gfuTJ4HtUnUvYMyJpr5eUZNP4Bk43bVdj3eAE",
  "use": "enc",
  "kid": "1"
}

</artwork>
      <t indent="0" pn="section-appendix.a-5">The resulting COSE object is:</t>
      <artwork align="left" pn="section-appendix.a-6">
18(
  [
    / protected /   h'A10126',
    / unprotected / {},
    / payload /     h'AA1901097818687474703A2F2F61726D2E636F6D2F
7073612F322E302E3019095A0119095B19300019095C58205051525354555657
50515253545556575051525354555657505152535455565719095D5820DEADBE
EFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF19095E
6D3132333435363738393031323319095F82A30162424C025820000102040001
0204000102040001020400010204000102040001020400010204055820519200
FF519200FF519200FF519200FF519200FF519200FF519200FF519200FFA30164
50526F5402582005060708050607080506070805060708050607080506070805
06070805060708055820519200FF519200FF519200FF519200FF519200FF5192
00FF519200FF519200FF0A582000010203000102030001020300010203000102
03000102030001020300010203190100582101A0A1A2A3A0A1A2A3A0A1A2A3A0
A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3A0A1A2A3190960781868747470733A2F2F
7073612D76657269666965722E6F7267',
    / signature /   h'E3B80C143403ECB744B1D6EF732872A1A3E682783E
939F72A3CEF6BF74EF4BC5E7065725FF5C948770B673C5896D3F796F55D144FC
B456BEA832EB13E8258DB8'
  ]
)
</artwork>
    </section>
    <section numbered="false" anchor="contributors" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <t indent="0" pn="section-appendix.b-1">We would like to thank the following colleagues for their contributions:</t>
      <artwork align="left" pn="section-appendix.b-2">
* Laurence Lundblade
  Security Theory LLC
  lgl@securitytheory.com
</artwork>
      <artwork align="left" pn="section-appendix.b-3">
* Tamas Ban
  Arm Limited
  Tamas.Ban@arm.com
</artwork>
      <artwork align="left" pn="section-appendix.b-4">
* Sergei Trofimov
  Arm Limited
  Sergei.Trofimov@arm.com
</artwork>
    </section>
    <section numbered="false" anchor="acknowledgments" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.c-1">Thanks to Carsten Bormann for help with the CDDL and Nicholas Wood for ideas
and comments.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.d">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
        <organization showOnFrontPage="true">Arm Limited</organization>
        <address>
          <email>Hannes.Tschofenig@arm.com</email>
        </address>
      </author>
      <author initials="S." surname="Frost" fullname="Simon Frost">
        <organization showOnFrontPage="true">Arm Limited</organization>
        <address>
          <email>Simon.Frost@arm.com</email>
        </address>
      </author>
      <author initials="M." surname="Brossard" fullname="Mathias Brossard">
        <organization showOnFrontPage="true">Arm Limited</organization>
        <address>
          <email>Mathias.Brossard@arm.com</email>
        </address>
      </author>
      <author initials="A." surname="Shaw" fullname="Adrian Shaw">
        <organization showOnFrontPage="true">HP Labs</organization>
        <address>
          <email>Adrian.Shaw@hp.com</email>
        </address>
      </author>
      <author initials="T." surname="Fossati" fullname="Thomas Fossati">
        <organization showOnFrontPage="true">Arm Limited</organization>
        <address>
          <email>Thomas.Fossati@arm.com</email>
        </address>
      </author>
    </section>
  </back>
  <!-- ##markdown-source:
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
AA==

-->

</rfc>
