<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc text-list-symbols="-o*+"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-tschofenig-rats-psa-token-14" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.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-14"/>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization/>
      <address>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="S." surname="Frost" fullname="Simon Frost">
      <organization>Arm Limited</organization>
      <address>
        <email>Simon.Frost@arm.com</email>
      </address>
    </author>
    <author initials="M." surname="Brossard" fullname="Mathias Brossard">
      <organization>Arm Limited</organization>
      <address>
        <email>Mathias.Brossard@arm.com</email>
      </address>
    </author>
    <author initials="A." surname="Shaw" fullname="Adrian Shaw">
      <organization>HP Labs</organization>
      <address>
        <email>adrianlshaw@acm.org</email>
      </address>
    </author>
    <author initials="T." surname="Fossati" fullname="Thomas Fossati">
      <organization>Linaro</organization>
      <address>
        <email>thomas.fossati@linaro.org</email>
      </address>
    </author>
    <date year="2023" month="October" day="23"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 156?>

<t>The Platform Security Architecture (PSA) is a family of hardware and firmware
security specifications, as well as open-source reference implementations, to
help device makers and chip manufacturers build best-practice security into
products. Devices that are PSA compliant are able to produce attestation tokens
as described in this memo, which are the basis for a number of different
protocols, including secure provisioning and network access control.  This
document specifies the PSA attestation token structure and semantics.</t>
      <t>The PSA attestation token is a profiled Entity Attestation Token (EAT).</t>
      <t>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>
  </front>
  <middle>
    <?line 172?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>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"/> 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>Further details on concepts expressed below can be found in the PSA Security
Model documentation <xref target="PSA-SM"/>.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
<?line -6?>
      </t>
      <t>The terms Attester, Relying Party, Verifier, Attestation Result, and Evidence
are defined in <xref target="RFC9334"/>. We use the term receiver to refer to Relying Parties
and Verifiers.</t>
      <t>We use the terms Evidence, PSA attestation token, and PSA token interchangeably.
The terms sender and Attester are used interchangeably. Likewise, we use the terms
Verifier, and verification service interchangeably.</t>
      <dl newline="true">
        <dt>RoT:</dt>
        <dd>
          <t>Root of Trust, the minimal set of software, hardware and data that has to be
implicitly trusted in the platform - there is no software or hardware at a
deeper level that can verify that the Root of Trust is authentic and
unmodified.  An example of RoT is an initial bootloader in ROM, which contains
cryptographic functions and credentials, running on a specific hardware
platform.</t>
        </dd>
        <dt>SPE:</dt>
        <dd>
          <t>Secure Processing Environment, a platform's processing environment for
software that provides confidentiality and integrity for its runtime state,
from software and hardware, outside of the SPE. Contains trusted code and
trusted hardware.  (Equivalent to Trusted Execution Environment (TEE), or
"secure world".)</t>
        </dd>
        <dt>NSPE:</dt>
        <dd>
          <t>Non Secure Processing Environment, the security domain outside of the SPE,
the Application domain, typically containing the application firmware,
operating systems, and general hardware.  (Equivalent to Rich Execution
Environment (REE), or "normal world".)</t>
        </dd>
      </dl>
    </section>
    <section anchor="psa-attester-model">
      <name>PSA Attester Model</name>
      <t><xref target="fig-psa-attester"/> outlines the structure of the PSA Attester according to
the conceptual model described in <xref section="3.1" sectionFormat="of" target="RFC9334"/>.</t>
      <figure anchor="fig-psa-attester">
        <name>PSA Attester</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="448" width="560" viewBox="0 0 560 448" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,144 L 8,432" fill="none" stroke="black"/>
              <path d="M 24,160 L 24,272" fill="none" stroke="black"/>
              <path d="M 24,304 L 24,416" fill="none" stroke="black"/>
              <path d="M 40,336 L 40,384" fill="none" stroke="black"/>
              <path d="M 96,304 L 96,336" fill="none" stroke="black"/>
              <path d="M 144,336 L 144,384" fill="none" stroke="black"/>
              <path d="M 160,192 L 160,256" fill="none" stroke="black"/>
              <path d="M 160,336 L 160,384" fill="none" stroke="black"/>
              <path d="M 208,256 L 208,336" fill="none" stroke="black"/>
              <path d="M 264,192 L 264,256" fill="none" stroke="black"/>
              <path d="M 272,336 L 272,384" fill="none" stroke="black"/>
              <path d="M 288,336 L 288,384" fill="none" stroke="black"/>
              <path d="M 296,208 L 296,240" fill="none" stroke="black"/>
              <path d="M 328,288 L 328,336" fill="none" stroke="black"/>
              <path d="M 360,208 L 360,240" fill="none" stroke="black"/>
              <path d="M 400,336 L 400,384" fill="none" stroke="black"/>
              <path d="M 408,192 L 408,256" fill="none" stroke="black"/>
              <path d="M 416,336 L 416,384" fill="none" stroke="black"/>
              <path d="M 424,32 L 424,64" fill="none" stroke="black"/>
              <path d="M 464,72 L 464,192" fill="none" stroke="black"/>
              <path d="M 464,304 L 464,336" fill="none" stroke="black"/>
              <path d="M 512,32 L 512,64" fill="none" stroke="black"/>
              <path d="M 520,192 L 520,256" fill="none" stroke="black"/>
              <path d="M 520,336 L 520,384" fill="none" stroke="black"/>
              <path d="M 536,160 L 536,272" fill="none" stroke="black"/>
              <path d="M 536,304 L 536,416" fill="none" stroke="black"/>
              <path d="M 552,144 L 552,432" fill="none" stroke="black"/>
              <path d="M 424,32 L 512,32" fill="none" stroke="black"/>
              <path d="M 424,64 L 512,64" fill="none" stroke="black"/>
              <path d="M 8,144 L 456,144" fill="none" stroke="black"/>
              <path d="M 472,144 L 552,144" fill="none" stroke="black"/>
              <path d="M 24,160 L 456,160" fill="none" stroke="black"/>
              <path d="M 472,160 L 536,160" fill="none" stroke="black"/>
              <path d="M 160,192 L 264,192" fill="none" stroke="black"/>
              <path d="M 312,192 L 344,192" fill="none" stroke="black"/>
              <path d="M 408,192 L 520,192" fill="none" stroke="black"/>
              <path d="M 264,224 L 288,224" fill="none" stroke="black"/>
              <path d="M 368,224 L 408,224" fill="none" stroke="black"/>
              <path d="M 160,256 L 264,256" fill="none" stroke="black"/>
              <path d="M 312,256 L 344,256" fill="none" stroke="black"/>
              <path d="M 408,256 L 520,256" fill="none" stroke="black"/>
              <path d="M 24,272 L 200,272" fill="none" stroke="black"/>
              <path d="M 216,272 L 536,272" fill="none" stroke="black"/>
              <path d="M 112,288 L 448,288" fill="none" stroke="black"/>
              <path d="M 24,304 L 88,304" fill="none" stroke="black"/>
              <path d="M 104,304 L 200,304" fill="none" stroke="black"/>
              <path d="M 216,304 L 320,304" fill="none" stroke="black"/>
              <path d="M 336,304 L 456,304" fill="none" stroke="black"/>
              <path d="M 472,304 L 536,304" fill="none" stroke="black"/>
              <path d="M 40,336 L 88,336" fill="none" stroke="black"/>
              <path d="M 104,336 L 144,336" fill="none" stroke="black"/>
              <path d="M 160,336 L 200,336" fill="none" stroke="black"/>
              <path d="M 216,336 L 272,336" fill="none" stroke="black"/>
              <path d="M 288,336 L 320,336" fill="none" stroke="black"/>
              <path d="M 336,336 L 400,336" fill="none" stroke="black"/>
              <path d="M 416,336 L 456,336" fill="none" stroke="black"/>
              <path d="M 472,336 L 520,336" fill="none" stroke="black"/>
              <path d="M 40,384 L 144,384" fill="none" stroke="black"/>
              <path d="M 160,384 L 272,384" fill="none" stroke="black"/>
              <path d="M 288,384 L 400,384" fill="none" stroke="black"/>
              <path d="M 416,384 L 520,384" fill="none" stroke="black"/>
              <path d="M 24,416 L 536,416" fill="none" stroke="black"/>
              <path d="M 8,432 L 552,432" fill="none" stroke="black"/>
              <path d="M 312,192 C 303.16936,192 296,199.16936 296,208" fill="none" stroke="black"/>
              <path d="M 344,192 C 352.83064,192 360,199.16936 360,208" fill="none" stroke="black"/>
              <path d="M 312,256 C 303.16936,256 296,248.83064 296,240" fill="none" stroke="black"/>
              <path d="M 344,256 C 352.83064,256 360,248.83064 360,240" fill="none" stroke="black"/>
              <path d="M 112,288 C 103.16936,288 96,295.16936 96,304" fill="none" stroke="black"/>
              <path d="M 448,288 C 456.83064,288 464,295.16936 464,304" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="472,72 460,66.4 460,77.6" fill="black" transform="rotate(270,464,72)"/>
              <polygon class="arrowhead" points="296,224 284,218.4 284,229.6" fill="black" transform="rotate(0,288,224)"/>
              <circle cx="96" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="208" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="328" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="360" cy="224" r="6" class="opendot" fill="white" stroke="black"/>
              <circle cx="464" cy="336" r="6" class="opendot" fill="white" stroke="black"/>
              <g class="text">
                <text x="468" y="52">Verifier</text>
                <text x="420" y="116">Evidence</text>
                <text x="72" y="180">Attesting</text>
                <text x="160" y="180">Environment</text>
                <text x="188" y="212">Main</text>
                <text x="324" y="212">Main</text>
                <text x="448" y="212">Initial</text>
                <text x="212" y="228">Bootloader</text>
                <text x="324" y="228">Boot</text>
                <text x="464" y="228">Attestation</text>
                <text x="328" y="244">State</text>
                <text x="448" y="244">Service</text>
                <text x="92" y="356">Updateable</text>
                <text x="216" y="356">Application</text>
                <text x="344" y="356">Application</text>
                <text x="440" y="356">PSA</text>
                <text x="472" y="356">RoT</text>
                <text x="64" y="372">PSA</text>
                <text x="96" y="372">RoT</text>
                <text x="184" y="372">RoT</text>
                <text x="324" y="372">Loader</text>
                <text x="468" y="372">Parameters</text>
                <text x="60" y="404">Target</text>
                <text x="136" y="404">Environment</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
                                                    .----------.
                                                    | Verifier |
                                                    '----------'
                                                         ^
                                                         |
                                                Evidence |
                                                         |
.--------------------------------------------------------|----------.
| .------------------------------------------------------|--------. |
| | Attesting Environment                                |        | |
| |                .------------.    .-----.      .------+------. | |
| |                | Main       |   | Main  |     | Initial     | | |
| |                | Bootloader +-->| Boot  o-----+ Attestation | | |
| |                |            |   | State |     | Service     | | |
| |                '-----+------'    '-----'      '-------------' | |
| '----------------------|----------------------------------------' |
|           .------------+--------------+---------------.           |
| .--------|-------------|--------------|----------------|--------. |
| |        |             |              |                |        | |
| | .------o-----. .-----o-------. .----o--------. .-----o------. | |
| | | Updateable | | Application | | Application | | PSA RoT    | | |
| | | PSA RoT    | | RoT         | | Loader      | | Parameters | | |
| | '------------' '-------------' '-------------' '------------' | |
| | Target Environment                                            | |
| '---------------------------------------------------------------' |
'-------------------------------------------------------------------'
]]></artwork>
        </artset>
      </figure>
      <t>The PSA Attester is a relatively straightforward embodiment of the RATS
Attester with exactly one Attesting Environment and one or more Target Environments.</t>
      <t>The Attesting Environment is responsible for collecting the information to be
represented in PSA claims and to assemble them into Evidence. It is made of two
cooperating components:</t>
      <ul spacing="normal">
        <li>The Main Bootloader (executing at boot-time) measures the loaded software
components, collects the relevant PSA RoT parameters, and stores the recorded
information in secure memory (Main Boot State) from where the Initial
Attestation Service will, when asked for claims about the platform,
retrieve them.</li>
        <li>The Initial Attestation Service (executing at run-time in SPE) answers
requests coming from NSPE via the PSA attestation API <xref target="PSA-API"/>, collects
and formats the claims from Main Boot State, and uses the Initial Attestation
Key (IAK) to sign them and produce Evidence. The word "Initial" in "Initial
Attestation Service" refers to a limited set of target environments, namely
those representing the first, foundational stages establishing the chain of
trust of a PSA device.</li>
      </ul>
      <t>The Target Environments can be of four types, some of
which may or may not be present depending on the device architecture:</t>
      <ul spacing="normal">
        <li>(A subset of) the PSA RoT parameters, including Instance and Implementation
IDs.</li>
        <li>The updateable PSA RoT, including the Secure Partition Manager and all PSA
RoT services.</li>
        <li>The (optional) Application RoT, that is any application-defined security
service, possibly making use of the PSA RoT services.</li>
        <li>The loader of the application software running in NSPE.</li>
      </ul>
      <t>A reference implementation of the PSA Attester is provided by <xref target="TF-M"/>.</t>
    </section>
    <section anchor="sec-psa-claims">
      <name>PSA Claims</name>
      <t>This section describes the claims to be used in a PSA attestation token.</t>
      <t>CDDL <xref target="RFC8610"/> along with text descriptions is used to define each claim
independent of encoding.  The following CDDL type(s) are reused by different
claims:</t>
      <artwork><![CDATA[
psa-hash-type = bytes .size 32 / bytes .size 48 / bytes .size 64
]]></artwork>
      <section anchor="caller-claims">
        <name>Caller Claims</name>
        <section anchor="sec-nonce-claim">
          <name>Nonce</name>
          <t>The Nonce claim is used to carry the challenge provided by the caller to demonstrate freshness of the generated token.</t>
          <t>The EAT <xref target="EAT"/> <tt>nonce</tt> (claim key 10) is used.  The following constraints
apply to the <tt>nonce-type</tt>:</t>
          <ul spacing="normal">
            <li>The length MUST be either 32, 48, or 64 bytes.</li>
            <li>Only a single nonce value is conveyed. The array notation MUST NOT be used for encoding the nonce value.</li>
          </ul>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-nonce = (
    nonce-label => psa-hash-type
)
]]></artwork>
        </section>
        <section anchor="sec-client-id">
          <name>Client ID</name>
          <t>The Client ID claim represents the security domain of the caller.</t>
          <t>In PSA, a security domain is represented by a signed
integer whereby negative values represent callers from the NSPE and where
positive IDs represent callers from the SPE. The value 0 is not permitted.</t>
          <t>For an example definition of client IDs, see the PSA Firmware Framework <xref target="PSA-FF"/>.</t>
          <t>It is essential that this claim is checked in the verification process to
ensure that a security domain, i.e., an attestation endpoint, cannot spoof a
report from another security domain.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <artwork><![CDATA[
psa-client-id-nspe-type = -2147483648...0
psa-client-id-spe-type = 1..2147483647

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

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

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

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

psa-certification-reference = (
    ? psa-certification-reference-key => 
        psa-certification-reference-type
)
]]></artwork>
        </section>
      </section>
      <section anchor="target-state-claims">
        <name>Target State Claims</name>
        <section anchor="sec-security-lifecycle">
          <name>Security Lifecycle</name>
          <t>The Security Lifecycle claim represents the current lifecycle state of the PSA
RoT. The state is represented by an integer that is divided to convey a major
state and a minor state. A major state is mandatory and defined by <xref target="PSA-SM"/>.
A minor state is optional and 'IMPLEMENTATION DEFINED'. The PSA security
lifecycle state and implementation state are encoded as follows:</t>
          <ul spacing="normal">
            <li>version[15:8] - PSA security lifecycle state, and</li>
            <li>version[7:0] - IMPLEMENTATION DEFINED state.</li>
          </ul>
          <t>The PSA lifecycle states are illustrated in <xref target="fig-lifecycle-states"/>. For PSA,
a Verifier can only trust reports from the PSA RoT when it is in SECURED or
NON_PSA_ROT_DEBUG major states.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <figure anchor="fig-lifecycle-states">
            <name>PSA Lifecycle States</name>
            <artset>
              <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="352" width="528" viewBox="0 0 528 352" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 48,272 L 48,288" fill="none" stroke="black"/>
                  <path d="M 72,64 L 72,120" fill="none" stroke="black"/>
                  <path d="M 72,168 L 72,192" fill="none" stroke="black"/>
                  <path d="M 72,224 L 72,256" fill="none" stroke="black"/>
                  <path d="M 104,288 L 104,304" fill="none" stroke="black"/>
                  <path d="M 168,144 L 168,256" fill="none" stroke="black"/>
                  <path d="M 184,256 L 184,272" fill="none" stroke="black"/>
                  <path d="M 192,48 L 192,64" fill="none" stroke="black"/>
                  <path d="M 208,208 L 208,240" fill="none" stroke="black"/>
                  <path d="M 224,304 L 224,336" fill="none" stroke="black"/>
                  <path d="M 248,128 L 248,160" fill="none" stroke="black"/>
                  <path d="M 264,160 L 264,200" fill="none" stroke="black"/>
                  <path d="M 288,64 L 288,120" fill="none" stroke="black"/>
                  <path d="M 288,240 L 288,272" fill="none" stroke="black"/>
                  <path d="M 312,96 L 312,120" fill="none" stroke="black"/>
                  <path d="M 312,168 L 312,208" fill="none" stroke="black"/>
                  <path d="M 328,128 L 328,160" fill="none" stroke="black"/>
                  <path d="M 360,304 L 360,336" fill="none" stroke="black"/>
                  <path d="M 368,208 L 368,240" fill="none" stroke="black"/>
                  <path d="M 384,32 L 384,48" fill="none" stroke="black"/>
                  <path d="M 392,208 L 392,256" fill="none" stroke="black"/>
                  <path d="M 432,160 L 432,200" fill="none" stroke="black"/>
                  <path d="M 448,256 L 448,272" fill="none" stroke="black"/>
                  <path d="M 480,96 L 480,208" fill="none" stroke="black"/>
                  <path d="M 520,208 L 520,256" fill="none" stroke="black"/>
                  <path d="M 208,32 L 384,32" fill="none" stroke="black"/>
                  <path d="M 88,48 L 104,48" fill="none" stroke="black"/>
                  <path d="M 168,48 L 192,48" fill="none" stroke="black"/>
                  <path d="M 192,64 L 368,64" fill="none" stroke="black"/>
                  <path d="M 328,80 L 464,80" fill="none" stroke="black"/>
                  <path d="M 24,128 L 128,128" fill="none" stroke="black"/>
                  <path d="M 248,128 L 328,128" fill="none" stroke="black"/>
                  <path d="M 168,144 L 248,144" fill="none" stroke="black"/>
                  <path d="M 328,144 L 416,144" fill="none" stroke="black"/>
                  <path d="M 24,160 L 128,160" fill="none" stroke="black"/>
                  <path d="M 248,160 L 328,160" fill="none" stroke="black"/>
                  <path d="M 208,208 L 368,208" fill="none" stroke="black"/>
                  <path d="M 392,208 L 520,208" fill="none" stroke="black"/>
                  <path d="M 208,240 L 368,240" fill="none" stroke="black"/>
                  <path d="M 64,256 L 184,256" fill="none" stroke="black"/>
                  <path d="M 392,256 L 520,256" fill="none" stroke="black"/>
                  <path d="M 184,272 L 448,272" fill="none" stroke="black"/>
                  <path d="M 48,288 L 168,288" fill="none" stroke="black"/>
                  <path d="M 224,304 L 360,304" fill="none" stroke="black"/>
                  <path d="M 120,320 L 216,320" fill="none" stroke="black"/>
                  <path d="M 224,336 L 360,336" fill="none" stroke="black"/>
                  <path d="M 208,32 C 199.16936,32 192,39.16936 192,48" fill="none" stroke="black"/>
                  <path d="M 88,48 C 79.16936,48 72,55.16936 72,64" fill="none" stroke="black"/>
                  <path d="M 368,64 C 376.83064,64 384,56.83064 384,48" fill="none" stroke="black"/>
                  <path d="M 328,80 C 319.16936,80 312,87.16936 312,96" fill="none" stroke="black"/>
                  <path d="M 464,80 C 472.83064,80 480,87.16936 480,96" fill="none" stroke="black"/>
                  <path d="M 24,128 C 15.16936,128 8,135.16936 8,144" fill="none" stroke="black"/>
                  <path d="M 128,128 C 136.83064,128 144,135.16936 144,144" fill="none" stroke="black"/>
                  <path d="M 416,144 C 424.83064,144 432,151.16936 432,160" fill="none" stroke="black"/>
                  <path d="M 24,160 C 15.16936,160 8,152.83064 8,144" fill="none" stroke="black"/>
                  <path d="M 128,160 C 136.83064,160 144,152.83064 144,144" fill="none" stroke="black"/>
                  <path d="M 64,256 C 55.16936,256 48,263.16936 48,272" fill="none" stroke="black"/>
                  <path d="M 168,288 C 176.83064,288 184,280.83064 184,272" fill="none" stroke="black"/>
                  <path d="M 120,320 C 111.16936,320 104,312.83064 104,304" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="440,200 428,194.4 428,205.6" fill="black" transform="rotate(90,432,200)"/>
                  <polygon class="arrowhead" points="320,168 308,162.4 308,173.6" fill="black" transform="rotate(270,312,168)"/>
                  <polygon class="arrowhead" points="320,120 308,114.4 308,125.6" fill="black" transform="rotate(90,312,120)"/>
                  <polygon class="arrowhead" points="296,120 284,114.4 284,125.6" fill="black" transform="rotate(90,288,120)"/>
                  <polygon class="arrowhead" points="272,200 260,194.4 260,205.6" fill="black" transform="rotate(90,264,200)"/>
                  <polygon class="arrowhead" points="224,320 212,314.4 212,325.6" fill="black" transform="rotate(0,216,320)"/>
                  <circle cx="72" cy="112" r="6" class="closeddot" fill="black"/>
                  <circle cx="72" cy="176" r="6" class="closeddot" fill="black"/>
                  <g class="text">
                    <text x="136" y="52">Enrol</text>
                    <text x="252" y="52">Provisioning</text>
                    <text x="340" y="52">Lockdown</text>
                    <text x="76" y="148">Verifier</text>
                    <text x="288" y="148">Secured</text>
                    <text x="72" y="212">Blocklist</text>
                    <text x="248" y="228">Non-PSA</text>
                    <text x="296" y="228">RoT</text>
                    <text x="336" y="228">Debug</text>
                    <text x="448" y="228">Recoverable</text>
                    <text x="416" y="244">PSA</text>
                    <text x="448" y="244">RoT</text>
                    <text x="488" y="244">Debug</text>
                    <text x="120" y="276">Terminate</text>
                    <text x="292" y="324">Decommissioned</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art"><![CDATA[
                        .----------------------.
         .--- Enrol ---+ Provisioning Lockdown |
        |              '-----------+----------'
        |                          |   .------------------.
        |                          |  |                    |
        *                          v  v                    |
 .--------------.             .---------.                  |
|    Verifier    |  .---------+ Secured +-----------.      |
 '--------------'   |         '-+-------'            |     |
        *           |           |     ^              |     |
        |           |           v     |              v     |
    Blocklist       |    .------------+------.  .----------+----.
        |           |    | Non-PSA RoT Debug |  | Recoverable   |
        |           |    '---------+---------'  | PSA RoT Debug |
      .-+-----------+-.            |            '------+--------'
     |    Terminate   +------------+-------------------'
     '------+--------'
            |              .----------------.
             '------------>| Decommissioned |
                           '----------------'
]]></artwork>
            </artset>
          </figure>
          <artwork><![CDATA[
psa-lifecycle-unknown-type = 0x0000..0x00ff
psa-lifecycle-assembly-and-test-type = 0x1000..0x10ff
psa-lifecycle-psa-rot-provisioning-type = 0x2000..0x20ff
psa-lifecycle-secured-type = 0x3000..0x30ff
psa-lifecycle-non-psa-rot-debug-type = 0x4000..0x40ff
psa-lifecycle-recoverable-psa-rot-debug-type = 0x5000..0x50ff
psa-lifecycle-decommissioned-type = 0x6000..0x60ff

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

psa-lifecycle = (
    psa-lifecycle-key => psa-lifecycle-type
)
]]></artwork>
        </section>
        <section anchor="sec-boot-seed">
          <name>Boot Seed</name>
          <t>The Boot Seed claim represents a value created at system boot time that
will allow differentiation of reports from different boot sessions.</t>
          <t>This claim MAY be present in a PSA attestation token.</t>
          <t>If present, it MUST be between 8 and 32 bytes.</t>
          <artwork><![CDATA[
psa-boot-seed-type = bytes .size (8..32)

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

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

psa-verification-service-indicator = (
    ? psa-verification-service-indicator-key =>
        psa-verification-service-indicator-type
)
]]></artwork>
        </section>
        <section anchor="sec-profile-definition-claim">
          <name>Profile Definition</name>
          <t>The Profile Definition claim encodes the unique identifier that corresponds to
the EAT profile described by this document.  This allows a receiver to assign
the intended semantics to the rest of the claims found in the token.</t>
          <t>The EAT <tt>eat_profile</tt> (claim key 265) is used.</t>
          <t>The URI encoding MUST be used.</t>
          <t>The value MUST be <tt>tag:psacertified.org,2023:psa#tfm</tt> for the profile defined in <xref target="sec-tfm-profile"/>.</t>
          <t>Future profiles derived from the baseline PSA profile SHALL create their unique value, as described in <xref target="sec-profile-uri-structure"/>.</t>
          <t>This claim MUST be present in a PSA attestation token.</t>
          <t>See <xref target="sec-backwards-compat"/>, for considerations about backwards compatibility
with previous versions of the PSA attestation token format.</t>
          <artwork><![CDATA[
psa-profile-type = "tag:psacertified.org,2023:psa#tfm"

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

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

nonce-label = 10
ueid-label = 256
profile-label = 265

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

psa-verification-service-indicator-type = text

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

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

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-media-type-04"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC3986">
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
            <author fullname="R. Fielding" initials="R." surname="Fielding"/>
            <author fullname="L. Masinter" initials="L." surname="Masinter"/>
            <date month="January" year="2005"/>
            <abstract>
              <t>A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="66"/>
          <seriesInfo name="RFC" value="3986"/>
          <seriesInfo name="DOI" value="10.17487/RFC3986"/>
        </reference>
        <reference anchor="RFC4151">
          <front>
            <title>The 'tag' URI Scheme</title>
            <author fullname="T. Kindberg" initials="T." surname="Kindberg"/>
            <author fullname="S. Hawke" initials="S." surname="Hawke"/>
            <date month="October" year="2005"/>
            <abstract>
              <t>This document describes the "tag" Uniform Resource Identifier (URI) scheme. Tag URIs (also known as "tags") are designed to be unique across space and time while being tractable to humans. They are distinct from most other URIs in that they have no authoritative resolution mechanism. A tag may be used purely as an entity identifier. Furthermore, using tags has some advantages over the common practice of using "http" URIs as identifiers for non-HTTP-accessible resources. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4151"/>
          <seriesInfo name="DOI" value="10.17487/RFC4151"/>
        </reference>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="RFC8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="E. Wahlstroem" initials="E." surname="Wahlstroem"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="May" year="2018"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties. The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection. A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value. CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8392"/>
          <seriesInfo name="DOI" value="10.17487/RFC8392"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="TLS12-IoT">
          <front>
            <title>Transport Layer Security (TLS) / Datagram Transport Layer Security (DTLS) Profiles for the Internet of Things</title>
            <author fullname="H. Tschofenig" initials="H." role="editor" surname="Tschofenig"/>
            <author fullname="T. Fossati" initials="T." surname="Fossati"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>A common design pattern in Internet of Things (IoT) deployments is the use of a constrained device that collects data via sensors or controls actuators for use in home automation, industrial control systems, smart cities, and other IoT deployments.</t>
              <t>This document defines a Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) 1.2 profile that offers communications security for this data exchange thereby preventing eavesdropping, tampering, and message forgery. The lack of communication security is a common vulnerability in IoT products that can easily be solved by using these well-researched and widely deployed Internet security protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7925"/>
          <seriesInfo name="DOI" value="10.17487/RFC7925"/>
        </reference>
        <reference anchor="TLS13-IoT">
          <front>
            <title>TLS/DTLS 1.3 Profiles for the Internet of Things</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <date day="22" month="October" year="2023"/>
            <abstract>
              <t>   This document is a companion to RFC 7925 and defines TLS/DTLS 1.3
   profiles for Internet of Things devices.  It also updates RFC 7925
   with regards to the X.509 certificate profile.

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

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

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-05"/>
        </reference>
      </references>
    </references>
    <?line 1168?>

<section anchor="examples">
      <name>Examples</name>
      <t>The following examples show PSA attestation tokens for an hypothetical system
comprising a single measured software component.
The attesting device is in a lifecycle state (<xref target="sec-security-lifecycle"/>) of
SECURED.  The attestation has been requested from a client residing in the
SPE.</t>
      <t>The example in <xref target="ex-sign1"/> illustrates the case where the IAK is an asymmetric key.  A COSE Sign1 envelope is used to wrap the PSA claims-set.</t>
      <t><xref target="ex-mac0"/> illustrates the case where the IAK is a symmetric key and a COSE Mac0 envelope is used instead.</t>
      <t>The claims sets are identical, except for the Instance ID which is synthesized from the key material.</t>
      <section anchor="ex-sign1">
        <name>COSE Sign1 Token</name>
        <artwork><![CDATA[
{
  / ueid /                     256: h'01020202020202020202020202
0202020202020202020202020202020202020202',
  / psa-implementation-id /   2396: h'00000000000000000000000000
00000000000000000000000000000000000000',
  / eat_nonce /                 10: h'01010101010101010101010101
01010101010101010101010101010101010101',
  / psa-client-id /           2394: 2147483647,
  / psa-security-lifecycle /  2395: 12288,
  / eat_profile /              265: "tag:psacertified.org,2023:p
sa#tfm",
  / psa-boot-seed /           2397: h'0000000000000000',
  / psa-software-components / 2399: [
    {
      / signer ID /         5: h'0404040404040404040404040404040
404040404040404040404040404040404',
      / measurement value / 2: h'0303030303030303030303030303030
303030303030303030303030303030303'
    }
  ]
}
]]></artwork>
        <t>The JWK representation of the IAK used for creating the COSE Sign1 signature
over the PSA token is:</t>
        <artwork><![CDATA[
{
  "kty": "EC",
  "crv": "P-256",
  "alg": "ES256",
  "x": "Tl4iCZ47zrRbRG0TVf0dw7VFlHtv18HInYhnmMNybo8",
  "y": "gNcLhAslaqw0pi7eEEM2TwRAlfADR0uR4Bggkq-xPy4",
  "d": "Q__-y5X4CFp8QOHT6nkL7063jN131YUDpkwWAPkbM-c"
}
]]></artwork>
        <t>The resulting COSE object is:</t>
        <artwork><![CDATA[
18([
  h'A10126',  
  {},
  h'A81901005821010202020202020202020202020202020202020202020202
02020202020202020219095C5820000000000000000000000000000000000000
00000000000000000000000000000A5820010101010101010101010101010101
010101010101010101010101010101010119095A1A7FFFFFFF19095B19300019
010978217461673A7073616365727469666965642E6F72672C323032333A7073
612374666D19095D48000000000000000019095F81A205582004040404040404
0404040404040404040404040404040404040404040404040402582003030303
03030303030303030303030303030303030303030303030303030303',
  h'2F4C8152ED1691833EEBB6A182D2120E3D19220DF85B9AC51109113A423F
A024205CEDA0815968548DE4FBB6DC94B88C916F0D266E64CEA24183A84F977D
E475'
])
]]></artwork>
        <t>which has the following base16 encoding:</t>
        <artwork><![CDATA[
d28443a10126a058faa81901005821010202020202020202020202020202
02020202020202020202020202020202020219095c582000000000000000
000000000000000000000000000000000000000000000000000a58200101
010101010101010101010101010101010101010101010101010101010101
19095a1a7fffffff19095b19300019010978217461673a70736163657274
69666965642e6f72672c323032333a7073612374666d19095d4800000000
0000000019095f81a2055820040404040404040404040404040404040404
040404040404040404040404040402582003030303030303030303030303
0303030303030303030303030303030303030358402f4c8152ed1691833e
ebb6a182d2120e3d19220df85b9ac51109113a423fa024205ceda0815968
548de4fbb6dc94b88c916f0d266e64cea24183a84f977de475
]]></artwork>
      </section>
      <section anchor="ex-mac0">
        <name>COSE Mac0 Token</name>
        <artwork><![CDATA[
{
  / ueid /                     256: h'01C557BD4FADC83F756FCA2CD5
EA2DCC8B82159BB4E7453D6A744D4EECD6D0AC60',
  / psa-implementation-id /   2396: h'00000000000000000000000000
00000000000000000000000000000000000000',
  / eat_nonce /                 10: h'01010101010101010101010101
01010101010101010101010101010101010101',
  / psa-client-id /           2394: 2147483647,
  / psa-security-lifecycle /  2395: 12288,
  / eat_profile /              265: "tag:psacertified.org,2023:p
sa#tfm",
  / psa-boot-seed /           2397: h'0000000000000000',
  / psa-software-components / 2399: [
    {
      / signer ID /         5: h'0404040404040404040404040404040
404040404040404040404040404040404',
      / measurement value / 2: h'0303030303030303030303030303030
303030303030303030303030303030303'
    }
  ]
}
]]></artwork>
        <t>The JWK representation of the IAK used for creating the COSE Mac0 signature
over the PSA token is:</t>
        <artwork><![CDATA[
========== NOTE: '\\' line wrapping per RFC 8792 ==========

{
  "kty": "oct",
  "alg": "HS256",
  "k": "3gOLNKyhJXaMXjNXq40Gs2e5qw1-i-Ek7cpH_gM6W7epPTB_8imqNv8k\
       \bBKVlk-s9xq3qm7E_WECt7OYMlWtkg"
}
]]></artwork>
        <t>The resulting COSE object is:</t>
        <artwork><![CDATA[
17([
  h'A10105',
  {},
  h'A8190100582101C557BD4FADC83F756FCA2CD5EA2DCC8B82159BB4E7453D
6A744D4EECD6D0AC6019095C5820000000000000000000000000000000000000
00000000000000000000000000000A5820010101010101010101010101010101
010101010101010101010101010101010119095A1A7FFFFFFF19095B19300019
010978217461673A7073616365727469666965642E6F72672C323032333A7073
612374666D19095D48000000000000000019095F81A205582004040404040404
0404040404040404040404040404040404040404040404040402582003030303
03030303030303030303030303030303030303030303030303030303',
  h'9B9FAA23F25D630B620C40508C978FBDC46130A5898BA1E8014085B13E43
256E'
])
]]></artwork>
        <t>which has the following base16 encoding:</t>
        <artwork><![CDATA[
d18443a10105a058faa8190100582101c557bd4fadc83f756fca2cd5ea2d
cc8b82159bb4e7453d6a744d4eecd6d0ac6019095c582000000000000000
000000000000000000000000000000000000000000000000000a58200101
010101010101010101010101010101010101010101010101010101010101
19095a1a7fffffff19095b19300019010978217461673a70736163657274
69666965642e6f72672c323032333a7073612374666d19095d4800000000
0000000019095f81a2055820040404040404040404040404040404040404
040404040404040404040404040402582003030303030303030303030303
0303030303030303030303030303030303030358209b9faa23f25d630b62
0c40508c978fbdc46130a5898ba1e8014085b13e43256e
]]></artwork>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to Carsten Bormann for help with the CDDL and Nicholas Wood for ideas
and comments.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="L." surname="Lundblade" fullname="Laurence Lundblade">
        <organization>Security Theory LLC</organization>
        <address>
          <email>lgl@securitytheory.com</email>
        </address>
      </contact>
      <contact initials="T." surname="Ban" fullname="Tamas Ban">
        <organization>Arm Limited</organization>
        <address>
          <email>Tamas.Ban@arm.com</email>
        </address>
      </contact>
      <contact initials="S." surname="Trofimov" fullname="Sergei Trofimov">
        <organization>Arm Limited</organization>
        <address>
          <email>Sergei.Trofimov@arm.com</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
n0uAIhszq+cuQYOaDwAhHKswcxAbUTEGjU5c5s4jLtNsL+3khTORQrwFeGye
2DtthhxHxSOCDKmsEckNWeLNzk1yp5KJrrNI4tAWVxFycWazatUoqLYMCc+N
DNj290ux8+dm/ejHD7A0df7U+7TjPdWK3kv/Jp7qS+4pbYZ8blybzBjbrmyB
WDv1XcaTKFgHidl12mk+Ua+Uln2zUjVLBqVQvBemAXKMsE4Wj87Uu5l6UyEV
sTsQykNKIxTGLHgXqRRCASHm/l/ReYMaIcUTuuDAAtMTPLWpgOlljoF4BaqJ
tdOd0s0Ynm9oN4K1lLqKKu1eXL25HF2Nru+G6E8mzkbnF9ejs12eD+4LraIq
A4C8R9zDX77IIqH9+3K5f1kPLzfsX/7c6h0P/vIjILDdRRnGpLe1ax0eN6lS
9aAlnIwRpdQccxuwm1es15DkAW0zumSdS6IXGR7bKPd61k5FgkDOcKxDZQnL
kkHVCUka97iQLPjt6PSbGxgfLO7162uK+Lx5fff2bHTyzdf2mua/jJ19xqli
i9XdcqLAEsC4ZWki6mhdfmP7ol+mwX2Ivn3GhaBk5bRNZpYxdndbeddwVznA
xgvrVr41A/3d9soP9F9l5dJ4Gs77xpbnsjINSKMND9JU+VIqnEPx5WYH0HPJ
+LjrzH9XA3e3BIWtc/648fn/lgZcqrxZgX8eNp6Yh1T5BASGe0xJYFeusto3
nMdfbl/sj/zPNZwManedRePVlJf9JgpSjERD8ebJCeyWB8DwM6Zv2ahsoeG4
E3zpLrIz/91SqxLdqcwdSS1IE4Wz0hu+ClbFLe1VdV2xZUouUQ4i/f4jTBJz
SHDmDMC+J72BNizgrjm7TDJtk7Y5Uumwzsm0rbgQU3G1uF8ARVH8B0j+8NNo
4N/JpFRW2oLXdTgS6kj+TK2WrNXarIXfMg6e1ZTMVGzLiu3NimyFDU3Zjizb
2Sy7ANRUHYWIRaZWV9bqbtbKDOZuq92TtXubtUNnIU2VvqzSxyqlOrKQFni2
LMRBRYEt0K8quh3kVaUdOFcV2ALcqqLPQLSqSgUYS1BzRERT0RINXQDbIiFb
oKMo1OwoeRnkGLQhuVBdZJP59KUEEGQRMSu+CnwiXwVBRnbkJj008qORMn00
1qhYq4AcHkW/5zbyiGZe5juGP7yY7biYqHI15HcUy6IkmgFxiZ220vppIqAB
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
C49FNHPEAAA=

-->

</rfc>
