<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.24 (Ruby 3.3.6) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>
<?rfc toc_levels="4"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-pkix-key-attestation-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.28.0 -->
  <front>
    <title abbrev="PKIX Key Attestation">PKIX Key Attestation</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-pkix-key-attestation-00"/>
    <author initials="M." surname="Ounsworth" fullname="Mike Ounsworth">
      <organization abbrev="Entrust">Entrust Limited</organization>
      <address>
        <postal>
          <street>2500 Solandt Road - Suite 100</street>
          <city>Ottawa, Ontario</city>
          <code>K2K 3G5</code>
          <country>Canada</country>
        </postal>
        <email>mike.ounsworth@entrust.com</email>
      </address>
    </author>
    <author initials="J.-P." surname="Fiset" fullname="Jean-Pierre Fiset">
      <organization abbrev="Crypto4A">Crypto4A Inc.</organization>
      <address>
        <postal>
          <street>1550A Laperriere Ave</street>
          <city>Ottawa, Ontario</city>
          <code>K1Z 7T2</code>
          <country>Canada</country>
        </postal>
        <email>jp@crypto4a.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="H-BRS">University of Applied Sciences Bonn-Rhein-Sieg</organization>
      <address>
        <postal>
          <country>Germany</country>
        </postal>
        <email>Hannes.Tschofenig@gmx.net</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>
    <author initials="M." surname="Wiseman" fullname="Monty Wiseman">
      <organization>Beyond Identity</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>monty.wiseman@beyondidentity.com</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <date year="2025" month="March" day="03"/>
    <area>Security</area>
    <workgroup>RATS</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 116?>

<t>This document specifies a vendor-agnostic format for attesting to the protection properties of a symmetric or asymmetric cryptographic key within a hardware cryptographic module to support applications such as providing evidence to a Certification Authority that a key is being protected in accordance with the requested certificate profile, or that HSMs can perform key import and maintain the private key protection properties in a robust way even when migrating keys across HSM vendors. This specification includes a format for requesting a key attestation containing certain attributes. This specification is called "PKIX Attestation" because it is designed to be easy to implement on top of a code base that already supports X.509 and PKCS#11 data models.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    Remote ATtestation ProcedureS Working Group mailing list (rats@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/hannestschofenig/key-attestation"/>.</t>
    </note>
  </front>
  <middle>
    <?line 120?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification is targeted at attesting to the storage of cryptographic key
material -- symmetric keys or asymmetric private keys -- within a hardware cryptographic
module such as a Hardware Security Module (HSM) or Trusted Platform Module (TPM).
HSMs and TPMs are devices whose primary purpose is to hold cryptographic keys and support interfaces whereby they can be used to perform encrypt, decrypt, sign, MAC and other keyed cryptographic operations on provided data without the key material ever leaving the hardware module.
Typically an HSM or TPM holds an uses cryptographic keys on behalf of an application such as a Certification Authority, a code signing service, a TLS server.
However, also included in the scope of this draft are single-purpose cryptographic devices such as smartcards which may hold only a single application key for a single purpose such as authenticating to a near-field "tap" terminal.
Within this specification we will generically refer to the attesting device as an "HSM", and to the cryptographic keys that it holds an operates on behalf of some other application as "application keys".</t>
      <t>The goal of this specification is to provide a standardized format in which an HSM can attest that one or more application keys are contained within a hardware module, and attest to any additional attributes relating to the protection of this key material.</t>
      <t>This requires providing evidence to the key protection properties of that key, referred to in
this specification as "key attributes", as well as to the operational state of the hardware platform,
referred to as "platform attributes". This specification also provides a format for requesting that a cryptographic module produce a key attestation about a specific application key, the application keys in a specific sub-environment of the HSM, or that the returned attestation contain a specific set of attributes.
See <xref target="sec-data-model"/> for the full information model.</t>
      <t>As described below in <xref target="sec-arch"/> "Architecture and Conceptual Model", this specification
uses a simplification of the Remote ATtestation procedureS (RATS) Architecture <xref target="RFC9334"/>
by assuming that the attesting environment and the target environment
are the same environment, and that this environment only produces evidence as this aligns with the
target hardware platforms. As such, the attestation data format specified in <xref target="sec-data-model"/> only contains
evidence (referred to in this document as "attributes") and does not provide for any form of endorsement except for
endorsement of the device's attestation signing key which is endorsed via an X.509 certificate chain rooted
in a trust anchor belonging either to the device manufacturer or to the device operator, as described in <xref target="sec-ak-chain"/>.</t>
      <t>Unlike other attestation data formats defined by the RATS working group, the format defined in this
document is targeting devices designed to operate within Public Key Infrastructure (PKI) ecosystems;
this motivates the following design choices:</t>
      <ul spacing="normal">
        <li>
          <t>Attestation data structure defined in ASN.1 <xref target="X.680"/> and encoded in Distinguished Encoding Rules (DER) <xref target="X.690"/>.</t>
        </li>
        <li>
          <t>Endorsement of attesting key uses an X.509 certificate chain <xref target="RFC5280"/>.</t>
        </li>
        <li>
          <t>Key attributes are mostly just a mapping of the private key properties from PKCS#11 <xref target="PKCS11"/>.</t>
        </li>
      </ul>
      <t>For these reasons, this attestation format is called "PKIX Key Attestation" and may be used,
for example within a Certificate Signing Request (CSR) object; <xref target="I-D.ietf-lamps-csr-attestation"/> specifies how to carry evidence within PKCS#10 <xref target="RFC2986"/> or Certificate Request Message Format (CRMF) <xref target="RFC4211"/>.</t>
      <t>This document provides a vendor-agnostic format for attesting to the logical and physical protection properties of a cryptographic key and it envisions uses such as providing evidence to a Certification Authority that a key is being protected in accordance with the requested certificate profile, or that HSMs can perform key import and maintain the private key protection properties in a robust way even when migrating keys across HSMs from different vendors.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The reader is assumed to be familiar with the vocabulary and concepts
defined in <xref target="RFC9334"/>.</t>
      <t>The following terms are used in this document:</t>
      <dl newline="true">
        <dt>Root of Trust (RoT):</dt>
        <dd>
          <t>A set of software and/or hardware components that need to be trusted
to act as a security foundation required for accomplishing the security
goals of a system. In our case, the RoT is expected to offer the
functionality for attesting to the state of the platform, and to attest
the properties of the application key. More precisely, it has to attest
the integrity of the application key (public as well as private key) and the
confidentiality of the private part of the application key. This document makes a simplifying
assumption that the RoT, the attesting environment holding the
attestation key, and the target environment being measured and attested
are all the same environment.</t>
        </dd>
        <dt>Attestation Key (AK):</dt>
        <dd>
          <t>Cryptographic key belonging to the RoT that is only used to sign
attestation tokens.</t>
        </dd>
        <dt>Hardware Security Module (HSM):</dt>
        <dd>
          <t>a physical computing device that safeguards and manages secrets (most importantly cryptographic keys),
and performs encryption, decryption, signing, MACing and other cryptographic operations with the managed
cryptographic keys. HSMs can sometimes host user applications within a secure enclave environment within
the HSM that are often used to extend the cryptographic functionality of the HSM.
This specification takes a broad definition of what counts as an HSM to include smartcards,
USB tokens, and similar devices which this specification refers to as "personal cryptographic tokens",
as well as TPMs, in addition to the usual PCI card, rack-mount, and blade server form-factor
of HSM which this specification refers to as "enterprise-grade" or "cloud-service grade" HSMs.</t>
        </dd>
        <dt>Key Attestation:</dt>
        <dd>
          <t>Evidence containing properties of the environment(s) in which the private
keys are generated and stored. For example, a Relying Party may want to know whether
a private key is stored in a hardware security module and cannot be
exported in cleartext.</t>
        </dd>
        <dt>Usage Protocol:</dt>
        <dd>
          <t>A (security) protocol that requires demonstrating possession of the
private component of the application key.</t>
        </dd>
        <dt>Attestation Token (AT):</dt>
        <dd>
          <t>A collection of claims that a RoT assembles (and signs) with the
purpose of informing - in a verifiable way - relying parties about the
identity and state of the platform. Essentially a type of Evidence as
per the RATS architecture terminology <xref target="RFC9334"/>.</t>
        </dd>
        <dt>Platform Attestation Entity:</dt>
        <dd>
          <t>An Entity containing attributes relating to the security state of the
platform,. The process of generating a platform entity typically involves gathering
data during measured boot.</t>
        </dd>
        <dt>Key Attestation Entity:</dt>
        <dd>
          <t>An Entity containing attributes relating to a specific application key
protected by the HSM. The key attestation service is part
of the root of trust (RoT).</t>
        </dd>
        <dt>Application Key:</dt>
        <dd>
          <t>The application key consists of a private and a public key.  The private key is
used by the usage protocol.  The public key is included in the Key
Attestation Token. The Key Attestation Entity makes claims about the
protection of this key.</t>
        </dd>
        <dt>Trust Anchor:</dt>
        <dd>
          <t>As defined in <xref target="RFC6024"/> and <xref target="RFC9019"/>, a Trust Anchor
"represents an authoritative entity via a public key and
associated data.  The public key is used to verify digital
signatures, and the associated data is used to constrain the types
of information for which the trust anchor is authoritative." The
Trust Anchor may be a certificate, a raw public key, or other
structure, as appropriate.  It can be a non-root certificate when
it is a certificate.</t>
        </dd>
        <dt>Presenter:</dt>
        <dd>
          <t>Party that proves possession of a private key to a recipient of a key
attestation token. Typically this will be an application layer entity,
such as a cryptographiclibrary constructing a Certificate Signing Request
that must embed attestation evidence, or a TLS library attempting to
perform attested TLS. The Presenter is not fulfilling any roles in the
RATS architecture.</t>
        </dd>
        <dt>Recipient:</dt>
        <dd>
          <t>Party that receives the attestation evidence containing the proof-of-possession key
information from the presenter. The Recipient is likely fulfilling
the roles of Verifier and Relying Party in the RATS architecture,
but the exact details of this arrangement is out-of-scope for this
specification.</t>
        </dd>
        <dt>Key Attestation Service (KAS):</dt>
        <dd>
          <t>The module within the HSM that is responsible for parsing the
PKIX Attestation Request, measuring the
Platform and the Key attributes, constructing the PKIX Attestation
object, and signing it with the AK. The KAS fulfills the role of
Attester in the RATS architecture.
Note that real HSMs may or may not implement the Attester as a
single internal module, but this abstraction is used for the
design and security analysis of this specification.</t>
        </dd>
      </dl>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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.</t>
      <?line -18?>

</section>
    <section anchor="sec-arch">
      <name>Architecture and Conceptual Model</name>
      <t>Key attestation is an extension to the attestation functionality
described in <xref target="RFC9334"/>. In the general RATS Architecture, an attesting device
consists of a hardware Root of Trust (RoT) which provides the basis for trust in the device,
and then one or more layers of attestations where an attesting environment collects
and signs measurements (evidence) about a target environment. Trust is
established by chaining the cryptographic signatures on each layer of
evidence up to the next layer of attester until the RoT is reached, and trust
is established in the RoT via 3rd party endorsements.
The target devices for this specification tend to operate on a different
architecture and trust model: the devices consist of one single logical environment
(combining the RATS roles of RoT, attesting environment, and target environment together into
a single entity), and trust is established via product validations conducted by third-party
testing labs against standardized security and functional requirements such
as FIPS 140-3 or a given Common Criteria protection profile. A FIPS or CC
certification provided by a testing lab would conceptually count as an
endorsement of the hardware platform in the RATS architecture, but they
are often not digitally-signed
artifacts, and are often conveyed out of band, sometimes via a website or even
via a paper certificate and so they are out of scope for the wire format
specified in this document.</t>
      <t>As such, the attestation data format defined in this document does not
capture the full functionality of the RATS architecture. If a device producing
evidence in the specified format requires to also carry nested attestation
statements or endorsements, then it must
be achieved by placing the attestation from this draft within another wrapper
layer such as RATS Conceptual Message Wrapper (CMW) <xref target="I-D.ietf-rats-msg-wrap"/>.</t>
      <figure anchor="fig-arch">
        <name>Architecture</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="448" width="488" viewBox="0 0 488 448" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 48,368 L 48,432" fill="none" stroke="black"/>
              <path d="M 56,32 L 56,304" fill="none" stroke="black"/>
              <path d="M 72,208 L 72,256" fill="none" stroke="black"/>
              <path d="M 104,264 L 104,360" fill="none" stroke="black"/>
              <path d="M 128,96 L 128,200" fill="none" stroke="black"/>
              <path d="M 144,264 L 144,360" fill="none" stroke="black"/>
              <path d="M 192,368 L 192,432" fill="none" stroke="black"/>
              <path d="M 200,96 L 200,144" fill="none" stroke="black"/>
              <path d="M 248,152 L 248,200" fill="none" stroke="black"/>
              <path d="M 312,96 L 312,144" fill="none" stroke="black"/>
              <path d="M 320,208 L 320,256" fill="none" stroke="black"/>
              <path d="M 336,368 L 336,432" fill="none" stroke="black"/>
              <path d="M 360,32 L 360,304" fill="none" stroke="black"/>
              <path d="M 480,368 L 480,432" fill="none" stroke="black"/>
              <path d="M 56,32 L 360,32" fill="none" stroke="black"/>
              <path d="M 200,96 L 312,96" fill="none" stroke="black"/>
              <path d="M 200,144 L 312,144" fill="none" stroke="black"/>
              <path d="M 72,208 L 320,208" fill="none" stroke="black"/>
              <path d="M 72,256 L 320,256" fill="none" stroke="black"/>
              <path d="M 56,304 L 360,304" fill="none" stroke="black"/>
              <path d="M 48,368 L 192,368" fill="none" stroke="black"/>
              <path d="M 336,368 L 480,368" fill="none" stroke="black"/>
              <path d="M 192,400 L 328,400" fill="none" stroke="black"/>
              <path d="M 48,432 L 192,432" fill="none" stroke="black"/>
              <path d="M 336,432 L 480,432" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="336,400 324,394.4 324,405.6" fill="black" transform="rotate(0,328,400)"/>
              <polygon class="arrowhead" points="256,152 244,146.4 244,157.6" fill="black" transform="rotate(270,248,152)"/>
              <polygon class="arrowhead" points="152,360 140,354.4 140,365.6" fill="black" transform="rotate(90,144,360)"/>
              <polygon class="arrowhead" points="136,96 124,90.4 124,101.6" fill="black" transform="rotate(270,128,96)"/>
              <polygon class="arrowhead" points="112,264 100,258.4 100,269.6" fill="black" transform="rotate(270,104,264)"/>
              <g class="text">
                <text x="100" y="52">Hardware</text>
                <text x="172" y="52">Security</text>
                <text x="236" y="52">Module</text>
                <text x="116" y="84">Platform</text>
                <text x="200" y="84">environment</text>
                <text x="256" y="116">Application</text>
                <text x="228" y="132">Keys</text>
                <text x="188" y="196">measurements</text>
                <text x="128" y="228">Attestation</text>
                <text x="112" y="244">Service</text>
                <text x="48" y="324">Attestation</text>
                <text x="172" y="324">PKIX</text>
                <text x="64" y="340">Request</text>
                <text x="200" y="340">Attestation</text>
                <text x="224" y="388">Usage</text>
                <text x="284" y="388">Protocol</text>
                <text x="120" y="404">Presenter</text>
                <text x="408" y="404">Recipient</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
      .-------------------------------------.
      | Hardware Security Module            |
      |                                     |
      |   Platform environment              |
      |        ^        .-------------.     |
      |        |        | Application |     |
      |        |        | Keys        |     |
      |        |        '-------------'     |
      |        |              ^             |
      |        |              |             |
      |        | measurements |             |
      | .------------------------------.    |
      | | Attestation                  |    |
      | | Service                      |    |
      | '------------------------------'    |
      |     ^    |                          |
      |     |    |                          |
      '-----+----+--------------------------'
Attestation |    | PKIX
    Request |    | Attestation
            |    v
     .-----------------.                 .-----------------.
     |                 | Usage Protocol  |                 |
     |    Presenter    +---------------->|    Recipient    |
     |                 |                 |                 |
     '-----------------'                 '-----------------'
]]></artwork>
        </artset>
      </figure>
      <t><xref target="fig-arch"/> depicts a typical workflow where an external tool queries the HSM
for the status of one or more cryptographic keys that it is protecting ("Application Keys").
The "Presenter" may be, for example, a command-line or graphical user interface which will display
the evidence to an operator or auditor; a cryptographic library which will include
the evidence in a CSR for transmission to a Certification Authority; a TLS library
which will include the evidence in at attested TLS session <xref target="I-D.fossati-tls-attestation"/>;
or similar applications, refered to as the "Usage Protocol".</t>
      <t>This model does not assume any internal structure or logical separation within the HSM
except for the existence of some kind of attestation service which may or may not be logically separate
from the overall HSM Root of Trust, and that this attestation service measures the
required evidence about both the hardware environment and the application keys
that are being attested.
In addition to emitting key attestation evidence, an HSM may also need to parse it,
for example when running in an operational mode that only allows importing keys
from other HSMs at a comparable security level (requires checking for specific claims) or within the same operational network (requires checking the trust anchor of the attestation key certificate chain).
This implies that the attestation service needs to be
part of the core HSM "kernel" and therefore would be subject to validations such as
FIPS 140-3 or Common Criteria, which motivates a design requirement to keep the evidence
data format as simple as possible and as close as possible to existing functionality
and data models of existing HSM and TPM products.
As such, the information model presented in <xref target="sec-data-model"/>
will feel familiar to implementers with experience with PKI and PKCS#11.</t>
      <section anchor="sec-ak-chain">
        <name>Attestation Key Certificate Chain</name>
        <t>The data format in this specification represents attestation evidence and
requires third-party endorsement in order to establish trust. Part of this
endorsement is a trust anchor that chains to the HSM's attestation key (AK)
which signs the evidence. In practice the trust anchor will usually be a
manufacturing CA belonging to the device vendor which proves
that the device is genuine and not counterfeit. The trust anchor can also belong
to the device operator as would be the case when the AK certificate is replaced
as part of onboarding the device into a new operational network.</t>
        <t>Note that the data format specified in <xref target="sec-data-model"/> allows for zero, one, or multiple
'SignatureBlock's, so a single evidence statement could be un-protected, or could be endorsed by multiple
AK chains leading to different trust anchors. See <xref target="sec-verif-proc"/> for a discussion of handling multiple SignatureBlocks.</t>
      </section>
    </section>
    <section anchor="sec-data-model">
      <name>Information Model</name>
      <t>This section describes the semantics of the key claims as part of the information
model.</t>
      <t>The envelop structure is:</t>
      <sourcecode type="asn.1"><![CDATA[
PkixAttestation ::= SEQUENCE {
    tbs TbsPkixAttestation,
    signatures SEQUENCE SIZE (0..MAX) of SignatureBlock
}

TbsPkixAttestation ::= SEQUENCE {
    version INTEGER,
    reportedEntities SEQUENCE SIZE (1..MAX) OF ReportedEntity
}

SignatureBlock ::= SEQUENCE {
   certChain SEQUENCE of Certificate,
   signatureAlgorithm AlgorithmIdentifier,
   signatureValue OCTET STRING
}
]]></sourcecode>
      <t>A PkixAttestation message is composed of a protected section known as the To-Be-Signed or TBS. The integrity of the To-Be-Signed section is ensured with one or multiple cryptographic signatures over the content of the section. There is a provision to carry the X.509 certificates supporting the signature(s).</t>
      <t>The TBS section is composed of a version number, to ensure future extensibility, and a sequence of reported entities.</t>
      <t>For compliance with this specification, <tt>TbsPkixAttestation.version</tt> <bcp14>MUST</bcp14> be <tt>1</tt>.
This envelope format is not extensible; future specifications which make compatibility-breaking changes <bcp14>MUST</bcp14> increment the version number.</t>
      <t>EDNOTE: do we want extension marks on the TbsAttestation object? I can see pros and cons to doing that.</t>
      <t><tt>SignatureBlock.certChain</tt> <bcp14>MUST</bcp14> contain at least one X.509 certificate as per <xref target="RFC5280"/>.
While there might exist attesting environments which use out-of-band or non-X.509 mechanisms for communicating
the AK public key to the Verifier, these <bcp14>SHALL</bcp14> be considered non-compliant with this specification.</t>
      <t>The attribute format is intended to be generic, flexible, and extensible with a default set of attributes defined in this document. Attributes are grouped into entities; an entity can be either a key, a platform, or a request containing a set of claims that are requested to be filled by the attesting environment.</t>
      <sourcecode type="asn.1"><![CDATA[
ReportedEntity ::= SEQUENCE {
    entityType         OBJECT IDENTIFIER,
    reportedAttributes SEQUENCE SIZE (1..MAX) OF ReportedAttribute
}
]]></sourcecode>
      <t>A reported entity is a unit of observation measured by the Attester (the HSM). In this specification, there are three types of entities defined:
- Platform Entity : An entity that reports attributes about the platform, itself. A PKIX Attestation <bcp14>MAY</bcp14> contain only one Platform Entity.
- Key Entity : An entity that represents a single cryptographic key found in a HSM ad its associated attributes. A PKIX Attestation <bcp14>MAY</bcp14> contain one or more Key Entities.
- Transaction Entity : An entity reporting attributes observed from the request itself. A PKIX Attestation <bcp14>MAY</bcp14> contain only one Transaction Entity.</t>
      <t>A reported entity is composed of an Object Identifier (OID), specifying the entity type, and a sequence of reported attributes associated with the entity.</t>
      <t>Although this specification defines only three types of entities, implementations <bcp14>MAY</bcp14> define additional entity types by registering additional OIDs.</t>
      <t>An Attester (HSM) which is requested to provide information about unrecognized entity types <bcp14>MUST</bcp14> fail the operation.</t>
      <t>A Verifier which encounters an unrecognized entity type <bcp14>MAY</bcp14> ignore it.</t>
      <sourcecode type="asn.1"><![CDATA[
id-pkix-attest                    OBJECT IDENTIFIER ::= { 1 2 3 999 }
id-pkix-attest-entity-type        OBJECT IDENTIFIER ::= { id-pkix-attest 0 }
id-pkix-attest-entity-transaction OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 0 }
id-pkix-attest-entity-platform    OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 1 }
id-pkix-attest-entity-key         OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 2 }
id-pkix-attest-entity-request     OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 3 }
]]></sourcecode>
      <t>TODO: do we need entity types for "platform policy" and "key policy" ?</t>
      <t>A PKIX Attestation <bcp14>MUST NOT</bcp14> contain more than one platform entity since duplicate and conflicting platform claims across multiple platform entities can easily lead to security bugs.
A parser <bcp14>MUST</bcp14> fail with an error if it encouters multiple platform entities.</t>
      <t>A PKIX Attestation <bcp14>MUST NOT</bcp14> contain more than one transaction entity. A transaction entity contains attributes that are related to the request such as a "nonce".
A parser <bcp14>MUST</bcp14> fail with an error if it encouters multiple transaction entities.</t>
      <t>A PKIX Attestation <bcp14>MAY</bcp14> contain one or more application key entities. Each key entity <bcp14>SHOULD</bcp14> describe a unique application key. Multiple ReportedEntity objects of type <tt>entity-key</tt> that describe the same application key <bcp14>SHOULD</bcp14> be avoided since different or conflicting claims could lead to security issues on the part of the Verifier or Relying Party.</t>
      <t>TODO: note that we need to be careful about whether it is allowed to include the AK(s) and other "platform-owned" keys in the set of keys you can attest, or only attesting application keys.</t>
      <t>Each reported attribute is composed of an Object Identifier (OID), identifying the type of the attribute, and a value which must be one of the prescribed data types.</t>
      <sourcecode type="asn.1"><![CDATA[
ReportedAttribute ::= SEQUENCE {
    attributeType      OBJECT IDENTIFIER,
    value              OPTIONAL AttributeValue
}

AttributeValue :== CHOICE {
   bytes       [0] IMPLICIT OCTET STRING
   utf8String  [1] IMPLICIT UTF8String,
   bool        [2] IMPLICIT BOOLEAN,
   time        [3] IMPLICIT GeneralizedTime,
   int         [4] IMPLICIT INTEGER,
   oid         [5] IMPLICIT OBJECT IDENTIFIER
}
]]></sourcecode>
      <t>An attribute type is generally associated with a single entity type. In the following sub-sections, defined attributes are grouped according to their related entity types.</t>
      <t>There are circumstances where an attribute type can be repeated for a given entity while other attribute types are unique.
For example, the <tt>hwmodel</tt>, <tt>uptime</tt>, and <tt>fipsboot</tt> attributes are not allowed to have multiple instances since these are global measurements of the platform. However, other attribute types such as <tt>usermods</tt> allow multiple instances as an HSM can have more than one user module loaded. The tables below list for each attribute type whether multiples are allowed.
For attribute types that do not allow multiples, a parser <bcp14>MUST</bcp14> fail with an error if it encouters multiple instances.
For attribute types that allow multiples, a parser <bcp14>MUST</bcp14> treat each one as an independent attribute and <bcp14>MUST NOT</bcp14>, for example, consider later ones to overwrite the previous one. Appraisal policies and profiles <bcp14>SHOULD</bcp14> be clear about how to handle multiples when requiring attribute types that allow multiples.</t>
      <t>PKIX Attestation Requests are discussed in <xref target="sec-reqs"/>.
In the tables in the sections that follow, the column "Request Contains a Value" specifies whether,
when the given attribute appears in a request, whether it is to be a valued or un-valued request attribute as described in <xref target="sec-reqs"/>.</t>
      <section anchor="transaction-attributes">
        <name>Transaction Attributes</name>
        <t>A default and vendor-agnostic set of transaction attributes is defined in this section.</t>
        <t>These attribute types <bcp14>MAY</bcp14> be contained within a transaction entity; i.e. an entity identified by <tt>id-pkix-attest-entity-transaction</tt>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">AttributeValue</th>
              <th align="left">Reference</th>
              <th align="left">Multiple Allowed</th>
              <th align="left">Request Contains a Value</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">nonce</td>
              <td align="left">bytes</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST</bcp14></td>
              <td align="left">Repeats a "nonce" provided during the atttestation request.</td>
            </tr>
            <tr>
              <td align="left">timestamp</td>
              <td align="left">time</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">The time at which this attestation was generated. Corresponds to EAT IAT claim.</td>
            </tr>
          </tbody>
        </table>
        <section anchor="nonce">
          <name>nonce</name>
          <t>The nonce attribute is used to provide "freshness" quality as to the information provided by the Attester (HSM) in the PkixAttestation message. A client requesting a PkixAttestation message <bcp14>MAY</bcp14> provide a nonce value as part of the request. This nonce value, if provided, <bcp14>SHOULD</bcp14> be repeated as an attribute to the transaction entity.</t>
        </section>
        <section anchor="time">
          <name>time</name>
          <t>The time at which this attestation was generated, according to the internal system clock of the HSM.</t>
          <t>Note that it is common for HSMs to not have an accurate system clock; consider an HSM for a root CA kept offline and booted up infrequently in an local network segregated from all other network, or a smart card which boots up only when held against an NFC reader.
Implementers of emitters <bcp14>SHOULD</bcp14> include this attribute only if the device reliably knows its own time (for example has had recent contact with an NTP server).
Implementers of parsers <bcp14>SHOULD</bcp14> be wary of trusting the contents of this attribute. A challenge-response protocol that makes use of the nonce attribute is a far more reliable way of establishing freshness.</t>
        </section>
      </section>
      <section anchor="platform-attributes">
        <name>Platform Attributes</name>
        <t>A default and vendor-agnostic set of platform attributes is defined in this section.</t>
        <t>These attribute types <bcp14>MAY</bcp14> be contained within a platform entity; i.e. an entity identified by <tt>id-pkix-attest-entity-platform</tt>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">AttributeValue</th>
              <th align="left">Reference</th>
              <th align="left">Multiple Allowed</th>
              <th align="left">Request Contains a Value</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">vendor</td>
              <td align="left">utf8String</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">A human-readable string by which the vendor identifies themself.</td>
            </tr>
            <tr>
              <td align="left">oemid</td>
              <td align="left">bytes</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">The EAT OEM ID as defined in <xref target="I-D.ietf-rats-eat"/>.</td>
            </tr>
            <tr>
              <td align="left">hwmodel</td>
              <td align="left">utf8String</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Model or product line of the hardware module.</td>
            </tr>
            <tr>
              <td align="left">hwserial</td>
              <td align="left">utf8String</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Serial number of the hardware module, often matches the number engraved or stickered on the case.</td>
            </tr>
            <tr>
              <td align="left">swversion</td>
              <td align="left">utf8String</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">A text string identifying the firmware or software running on the HSM.</td>
            </tr>
            <tr>
              <td align="left">dbgstat</td>
              <td align="left">int</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Indicates whether the HSM is currently in a debug state, or is capable in the future of being turned to a debug state. Semantics and integer codes are defined in <xref target="I-D.ietf-rats-eat"/>.</td>
            </tr>
            <tr>
              <td align="left">uptime</td>
              <td align="left">int</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Contains the number of seconds that have elapsed since the entity was last booted.</td>
            </tr>
            <tr>
              <td align="left">bootcount</td>
              <td align="left">int</td>
              <td align="left">
                <xref target="I-D.ietf-rats-eat"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Contains a count of the number of times the entity has been booted.</td>
            </tr>
            <tr>
              <td align="left">usermods</td>
              <td align="left">utf8String</td>
              <td align="left">RFCthis</td>
              <td align="left">Yes</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">This attribute lists user modules currently loaded onto the HSM in a human readable format, preferabbly JSON.</td>
            </tr>
            <tr>
              <td align="left">fipsboot</td>
              <td align="left">bool</td>
              <td align="left">
                <xref target="FIPS.140-3"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Indicates whether the devices is currently running in FIPS mode.</td>
            </tr>
            <tr>
              <td align="left">fipsver</td>
              <td align="left">utf8String</td>
              <td align="left">
                <xref target="FIPS.140-3"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Indicates the version of the FIPS CMVP standard that is being enforced. At time of writing this is typically "FIPS 140-2" or "FIPS 140-3".</td>
            </tr>
            <tr>
              <td align="left">fipslevel</td>
              <td align="left">int</td>
              <td align="left">
                <xref target="FIPS.140-3"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Indicates the FIPS Level to which the device is currently operating in compliance with.</td>
            </tr>
            <tr>
              <td align="left">envid</td>
              <td align="left">utf8String</td>
              <td align="left">RFCthis</td>
              <td align="left">Yes</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">An environment ID, which will typically be a URI, UUID, or similar.</td>
            </tr>
            <tr>
              <td align="left">envdesc</td>
              <td align="left">utf8String</td>
              <td align="left">RFCthis</td>
              <td align="left">Yes</td>
              <td align="left">
                <bcp14>MUST NOT</bcp14></td>
              <td align="left">Further description of the environment.</td>
            </tr>
          </tbody>
        </table>
        <t>TODO: find the actual reference for "FIPS Mode" -- FIPS 140-3 does not define it (at least not the 11 page useless version of 140-3 that I found).</t>
        <t>Each attribute has an assigned OID, see <xref target="sec-asn1-mod"/>.</t>
        <t>Some of the attributes defined in this specification have further details below.</t>
        <section anchor="usermods">
          <name>usermods</name>
          <t>Most HSMs have some concept of trusted execution environment where user software modules can be loaded inside the HSM to run with some level of privileged access to the application keys. This attribute lists user modules currently loaded onto the HSM in a human readable format, preferably JSON.</t>
        </section>
        <section anchor="fipsboot-fipsver-and-fipslevel">
          <name>fipsboot, fipsver and fipslevel</name>
          <t>FIPS 140-3 CMVP validation places stringent requirements on the mode of operation of the device and the cryptography offered by the module, including only enabling FIPS-approved algorithms, certain requirements on entropy sources, and extensive start-up self-tests. FIPS 140-3 offers compliance levels 1 through 4 with increasingly strict requirements. Many HSMs include a configuration setting that allows the device to be taken out of FIPS mode and thus enable additional functionality or performance, and some offer configuration settings to change between compliance levels.</t>
          <t>The boolean attribute <tt>fipsboot</tt> indicates whether the device is currently operating in FIPS mode. For most HSMs, changing this configuration setting from <tt>fipsboot=true</tt> to <tt>fips-boos=false</tt> is destructive and will result in zeroization of all cryptographic keys held within the module.</t>
          <t>The UTF8String attribet <tt>fipsver</tt> indicates the version of the FIPS CMVP specification with which the device's operational mode is compliant. At the time of writing, the strings "FIPS 140-2" or "FIPS 140-3" <bcp14>SHOULD</bcp14> be used.</t>
          <t>The integer attribute <tt>fipslevel</tt> indicates the compliance level to which the device is currently operating and <bcp14>MUST</bcp14> only be 1, 2, 3, or 4. The <tt>fipslevel</tt> attribute has no meaning if <tt>fipsboot</tt> is absent or <tt>false</tt>.</t>
          <t>The FIPS status information in a PKIX Attestation indicates only the mode of operation of the device and is not authoritative of its validation status.
This information is available on the NIST CMVP website or by contacting the device vendor.
As an example, some devices may have the option to enable FIPS mode in configuration even if the vendor has not sumbitted this model for validation. As another example, a device may be running in a mode consistent with FIPS Level 3 but the device was only validated and certified to Level 2.
A Relying Party wishing to know the validation status of the device <bcp14>MUST</bcp14> couple the device state information contained in the attestation with a valid FIPS CMVP certificate for the device.</t>
        </section>
        <section anchor="envid">
          <name>envid</name>
          <t>An identifier for an environment to which the attested keys belong. These will be an a vendor-chosen format, but are constrained to ASCII as URIs, UUID, and similar types of identifiers are envisioned.</t>
          <t>There <bcp14>MAY</bcp14> be multiple envid attributes if the attested keys simultaneously belong to multiple environments.</t>
          <t>Note that by including envid as a Platform Attribute, this implies that it applies to all attested key entities. If the HSM needs to attest multiple keys across multiple disjoint environments, then multiple PKIXAttestations are required. This naturally enforces privacy constraints of only attesting a single environment at a time.</t>
          <t>If an envdid request attribute contains a value, this means that the Presenter is requesting that only keys belogning to the given environment be included in the returned attestation.</t>
        </section>
        <section anchor="envdesc">
          <name>envdesc</name>
          <t>Further description of the environment beyond hwvendor, hwmodel, hwserial, swversion; for example if there is a need to describe multiple logical partitions within the same device. Contents could be a human-readable description or other identifiers.</t>
        </section>
      </section>
      <section anchor="key-attributes">
        <name>Key Attributes</name>
        <t>A default and vendor-agnostic set of key attributes is defined in this section.</t>
        <t>These attribute types <bcp14>MAY</bcp14> be contained within a key entity; i.e. an entity identified by <tt>id-pkix-attest-entity-key</tt>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Attribute</th>
              <th align="left">AttributeValue</th>
              <th align="left">Reference</th>
              <th align="left">Multiple Allowed</th>
              <th align="left">Request Contains a Value</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">identifier</td>
              <td align="left">utf8String</td>
              <td align="left">RFCthis</td>
              <td align="left">Yes</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Identifies the subject key, with a vendor-specific format which could be numeric, UUID, or other textual identifier.</td>
            </tr>
            <tr>
              <td align="left">spki</td>
              <td align="left">bytes</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">A complete DER-encoded SubjectPublicKeyInfo representing the public key associated with the asymetric key pair being attested.</td>
            </tr>
            <tr>
              <td align="left">purpose</td>
              <td align="left">bytes</td>
              <td align="left">
                <xref target="PKCS11"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Defines the intended usage for the key.</td>
            </tr>
            <tr>
              <td align="left">extractable</td>
              <td align="left">bool</td>
              <td align="left">
                <xref target="PKCS11"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Indicates if the key is able to be exported from the module. Corresponds directly to PKCS#11 CKA_EXTRACTABLE.</td>
            </tr>
            <tr>
              <td align="left">sensitive</td>
              <td align="left">bool</td>
              <td align="left">
                <xref target="PKCS11"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Indicates that the key cannot leave the module in plaintext. Corresponds directly to PKCS#11 CKA_SENSITIVE.</td>
            </tr>
            <tr>
              <td align="left">never-extractable</td>
              <td align="left">bool</td>
              <td align="left">
                <xref target="PKCS11"/></td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Indicates if the key was able to be exported from the module. Corresponds directly to PKCS#11  CKA_NEVER_EXTRACTABLE.</td>
            </tr>
            <tr>
              <td align="left">local</td>
              <td align="left">bool</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Indicates whether the key was generated locally or imported.</td>
            </tr>
            <tr>
              <td align="left">expiry</td>
              <td align="left">time</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Defines the expiry date or "not after" time for the key.</td>
            </tr>
            <tr>
              <td align="left">protection</td>
              <td align="left">bytes</td>
              <td align="left">RFCthis</td>
              <td align="left">No</td>
              <td align="left">
                <bcp14>MAY</bcp14></td>
              <td align="left">Indicates any additional key protection properties.</td>
            </tr>
          </tbody>
        </table>
        <t>PKCS#11 private key attributes can be somewhat complex to parse, especially as their exact meanings can vary by the key type and the exact details of key export mechanisms supported by the HSM.</t>
        <t>In most cases, the Verifier of a PKIX Attestation will want to know simply that the key is in hardware and cannot be extracted to be used with a software cryptographic module. A setting of <tt>extractable=false</tt> satisfies this requirement. Generally <tt>extractable=true &amp;&amp; sensitive=true</tt> also satisfies this requirement as the key cannot be extracted in plaintext, but only under key wrap. This is common in HSM clustering scenarios, and is also common in scenarios where keys are exported under wrap so that they can be stored in an off-board database for re-import later, thus allowing the HSM to protect and manage a much larger set of keys than it has internal memory for. The <tt>never-extractable</tt> and <tt>local</tt> attributes give additional assurance that the key has always been in hardware and was not imported from software.</t>
        <section anchor="purpose">
          <name>purpose</name>
          <t>TODO: probably need to define a mapping from PKCS#11 CKA enums to a bit-indexed byte array.</t>
        </section>
        <section anchor="protection">
          <name>protection</name>
          <t>Indicates any additional key protection properties around use or modification of this key. These are generalized properties and will not apply the same way to all HSM vendors. Consult vendor documentation for the in-context meaning of these flags.</t>
          <t>TODO: define a bit-indexed byte array</t>
          <t>BIT MASK / Boolean Array {DualControl (0), CardControl (1), PasswordControl (2), ...}</t>
          <t>We may need to say that the first X are reserved for use by future RFCs that update this specification, and beyond that is private use.</t>
        </section>
      </section>
      <section anchor="sec-additional-attr-types">
        <name>Additional Entity and Attribute Types</name>
        <t>It is expected that HSM vendors will register additional Entity and Attribute types by assigning OIDs from their own proprietary OID arcs to hold data describing additional proprietary key properties.</t>
        <t>An Attester (HSM) which is requested to provide information about unrecognized Entity or Attribute types <bcp14>MUST</bcp14> fail the operation.</t>
        <t>A Verifier which encounters an unrecognized Entity or Attribute type <bcp14>MAY</bcp14> ignore it.</t>
      </section>
      <section anchor="encoding">
        <name>Encoding</name>
        <t>A PKIXAttestation is to be DER encoded <xref target="X.690"/>.</t>
        <t>If a textual representation is required, then the DER encoding <bcp14>MAY</bcp14> be subsequently encoded into Base64.</t>
        <t>EDNOTE: I think we have to be precise about which flavour of Base64 we are referrring to.</t>
      </section>
    </section>
    <section anchor="signing-procedure">
      <name>Signing Procedure</name>
      <t>The <tt>SignatureBlock.signatureValue</tt> signs over the DER-encoded to-be-signed attestation data
<tt>PkixAttestation.tbs</tt> and <bcp14>MUST</bcp14> be validated with the subject public key of the leaf
X.509 certificate contained in the <tt>SignatureBlock.certChain</tt>.</t>
    </section>
    <section anchor="sec-verif-proc">
      <name>Verification Procedure</name>
      <t>The <tt>SignatureBlock.signatureValue</tt> signs over the DER-encoded to-be-signed attestation data
<tt>PkixAttestation.tbs</tt> and <bcp14>MUST</bcp14> be validated with the subject public key of the leaf
X.509 certificate contained in the <tt>SignatureBlock.certChain</tt>.</t>
      <t>Note that a PkixAttestation <bcp14>MAY</bcp14> contain zero or more SignatureBlocks.
A PkixAttestation with zero SignatureBlocks is unsigned, <bcp14>MUST</bcp14> be treated as un-protected and un-trusted,
and any signature validation procedure <bcp14>MUST</bcp14> fail.</t>
      <t>More than one SignatureBlocks <bcp14>MAY</bcp14> be used to convey a number of different semantics.
For example, the HSM's Attesting Service might hold multiple Attestation Keys on different cryptographic
algorithms in order to provide algorithm redundancy in the case that one algorithm becomes cryptographically broken. In this case a Verifier would be expected to validate all SignatureBlocks. Alternatively, the HSM's Attesting Service may hold multiple Attestion Keys (or multiple X.509 certificates for the same key) from multiple operational environments to which it belongs. In this case a Verifier would be expected to only validate the SignatureBlock corresponding to its own environment. Alternatively, multiple SignatureBlocks could be used to convey counter-signatures from external parties, in which case the Verifier will need to be equipped with environment-specific verification logic. Multiple of these cases, and potentially others, could be present in a single PkixAttestation object.</t>
      <t>Note that each SignatureBlock is a fully detached signature over the tbs content with no binding between the signed content and the SignatureBlocks, or between SignatureBlocks, meaning that a third party can add a
counter-signature of the evidence after the fact, or an attacker can remove a SignatureBlock without leaving any artifact. See {#sec-detached-sigs} for further discussion.</t>
    </section>
    <section anchor="sec-reqs">
      <name>Attestation Requests</name>
      <t>EDNOTE: MikeO: this is complex, but I'm not really sure how to define a request format in any simpler way. Ideas are welcome!</t>
      <t>This section specifies a standardized format that a Presenter can use to request a PKIX Attestation about a specific key or set of keys, a specific environment, or containing specific attributes.</t>
      <t>Hardware Security Modules range greatly in size and complexity from personal cryptographic tokens containing a single application key such as a smartcard acting as a personal ID card, up to clusters of enterprise-grade HSMs serving an entire cloud service.</t>
      <t>The manufacturer of a HSM device with limited capabilities may implement a response to the attestation request which includes a fixed set of reported entities, each with a fixed set of reported attributes and parses an Attestion Request object only for the purposes of extracting the nonce.</t>
      <t>On the other hand, an enterprise grade HSM with the capability to hold a large number of private keys is expected to be capable of parsing attestation requests such that a Presenter can request attestation of specific key(s) by their identifier, or request attestation of all keys with given key attributes within a given sub-environment of the HSM. A full implementation will also create a PKIX Attestation containing exactly the set of requested attributes so that the Presenter can fine-tune the information that it wishes to disclose to the Recipient.</t>
      <t>A PKIX Attestation Request consists of a un-signed TbsPkixAttestation object containing a single <tt>ReportedEntity</tt> identified with <tt>id-pkix-attest-entity-request</tt>, called a request entity. A TbsPkixAttestation containing a request entity <bcp14>MUST NOT</bcp14> contain any other type of entities. Request entities <bcp14>MAY</bcp14> contain Attributes of any type; transaction, platform, key, or any additional attribute type. Any attribute contained in a request entity is called a request attribute. Request entities <bcp14>MUST NOT</bcp14> appear in PKIX Attestation response objects. The TbsPkixAttestation object of an attestation request <bcp14>MAY</bcp14> appear inside a signed PKIXAttestation for the purposes of authenticating and authorizing the requester, but the semantics of doing so are left to the implementer.</t>
      <t>An Attester that supports Attestation Requests <bcp14>MUST</bcp14>, at the minimum, support extracting the value from a <tt>nonce</tt> attribute and echoing it into a <tt>nonce</tt> attribute within a TransactionEntity.</t>
      <t>Some request attributes contain a value that the HSM uses as a filter or search parameter in constructing the PKIX Attestation; these are called valued requests attributes.
Other requests attributes omit the optional <tt>value</tt> field so that they consist of only the attribute type OID and indicate that the HSM <bcp14>SHOULD</bcp14> collect and return the appropriate measurement; these are called un-valued request attributes.
An Attester <bcp14>SHOULD</bcp14> return a PKIX Attestation containing exactly the set of attributes listed in the request, including both valued and un-valued request attributes but <bcp14>MAY</bcp14> omit requested attributes if it cannot be measured in the current device configuration.
Note that an Attestation Request will contain all request attributes inside a single request entity, but the HSM <bcp14>MUST</bcp14> sort the attributes in the response PKIX Attestation into the appropriate entity types.
For example, if the request contains the key <tt>purpose</tt> attribute (either valued or un-valued), then all returned key entities will contain the <tt>purpose</tt> attribute when this data is available for the given key.
The tables in the following sections indicate whether an attribute of the given type <bcp14>MUST</bcp14>, <bcp14>MAY</bcp14>, or <bcp14>MUST NOT</bcp14> contain a value when included in a request entity.</t>
      <t>Generally errors should be handled gracefully by simply omitting an unfulfillable request attribute from the response.
An example would be if the <tt>hwserial</tt> attribute was requested but the devices does not have a serial number.
However in some cases a fatal error <bcp14>MAY</bcp14> be returned, for example if attestation of a specific key is requested by key identifier or SubjectPublicKeyInfo but the HSM does not contain a matching key.
HSMs <bcp14>SHOULD</bcp14> ignore request attributes with unrecognized type OIDs.</t>
      <t>Generally, the Attester <bcp14>SHOULD NOT</bcp14> include additional attributes beyond those that were requested. This is to allow the Presenter to fine-tune the information that will be disclosed to the Recipient.
Further privacy concerns are discussed in <xref target="sec-cons-privacy"/>.
However, in some contexts this <bcp14>MAY</bcp14> be appropriate, for example, a request containing only a key <tt>identifier</tt> attribute could be responded to with the full set of platform and key attributes that apply to that key.
Discretion is left to implementers.</t>
      <t>For both error handling and privacy reasons, the Presenter <bcp14>SHOULD</bcp14> check that the returned PKIX Attestation contains the expected attributes prior to forwarding it to the Recipient.</t>
    </section>
    <section anchor="sec-profiles">
      <name>Appraisal Policies and Profiles</name>
      <t>This section provides some sample profiles of appraisal policies that verifiers
<bcp14>MAY</bcp14> apply when evaluating evidence. These appraisal profiles represent environment-specific requirements
on the contents of the evidence and / or endorsement certificate chain.</t>
      <section anchor="key-import-into-an-hsm">
        <name>Key Import into an HSM</name>
        <t>An HSM which is compliant with this draft <bcp14>SHOULD</bcp14> validate any PKIX Key Attestations that are provided
along with the key being imported.</t>
        <t>The SignatureBlocks <bcp14>MUST</bcp14> be validated and <bcp14>MUST</bcp14> chain to a trust anchor known to the HSM. In most cases this will
be the same trust anchor that endorsed the HSMs own AK, but the HSM <bcp14>MAY</bcp14> be configured with set of third party trust anchors from which it will accept key attestations.</t>
        <t>If the HSM is operating in FIPS Mode, then it <bcp14>MUST</bcp14> only import keys from HSMs also operating in FIPS Mode.</t>
        <t>The claims <tt>key-purpose</tt>, <tt>key-extractable</tt>, <tt>key-never-extractable</tt>, <tt>key-local</tt> <bcp14>MUST</bcp14> be checked and honoured during key import, which typically means that after import, the key <bcp14>MUST NOT</bcp14> claim a stronger protection property than it had on the previous hardware. In other words, Key Attestation allows and requires that key protection properties be preserved over export / import operations between different HSMs, and this format provides a vendor-agnostic
way to acheive this.</t>
        <t>How to handle errors is outside the scope of this specification and is left to implementors; for example the
key import <bcp14>MAY</bcp14> be aborted, or a prompt <bcp14>MAY</bcp14> be given to the user administrator, or any similar reasonable error handling logic.</t>
      </section>
      <section anchor="cabrowser-forum-code-signing">
        <name>CA/Browser Forum Code-Signing</name>
        <t>TODO: ... intro text</t>
        <t>The subscriber <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Provide the CA with a CSR containing the subscriber key.</t>
          </li>
          <li>
            <t>Provide an attestation token as per this specification describing the private key protection properties of the subscriber's private key. This token <bcp14>MAY</bcp14> be transported inside the CSR as per draft-ietf-lamps-csr-attest, or it <bcp14>MAY</bcp14> be transported adjacent to the CSR over any other certificate enrollment mechanism.</t>
          </li>
        </ul>
        <t>The CA / RA / RP / Verifier <bcp14>MUST</bcp14>:</t>
        <ul spacing="normal">
          <li>
            <t>Ensure that the subscriber key which is the subject of the CSR is also described by a KAT by matching either the key fingerprint or full SubjectPublicKeyInfo.</t>
          </li>
          <li>
            <t>The hardware root-of-trust described by a PAT has a valid and active FIPS certificate according to the NIST CMVP database.</t>
          </li>
          <li>
            <t>The attestation signing key (AK) which has signed the attestation token chains to a root certificate that A) belongs to the hardware vendor described in the PAT token, and B) is trusted by the CA / RA / RP / Verifier to endorse hardware from this vendor, for example through a CA's partner program or through a network operator's device on-boarding process.</t>
          </li>
          <li>
            <t>The key is protected by a module running in FIPS mode. The parsing logic is to start at the leaf KAT token that matches the key in the CSR and parsing towards the root PAT ensuring that there is at least one <tt>fipsboot=true</tt> and no <tt>fipsboot=false</tt> on that path.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sec-asn1-mod">
      <name>ASN.1 Module</name>
      <sourcecode type="asn.1"><![CDATA[
<CODE STARTS>

PKIX-Key-Attest-2025
      { iso(1) identified-organization(3) dod(6) internet(1) 
        security(5) mechanisms(5) pkix(7) id-mod(0) 
        id-mod-pkik-key-attest-2025(TBDMOD) }


PkixAttestation ::= SEQUENCE {
    tbs TbsPkixAttestation,
    signatures SEQUENCE SIZE (0..MAX) of SignatureBlock
}

TbsPkixAttestation ::= SEQUENCE {
    version INTEGER,
    reportedEntities SEQUENCE SIZE (1..MAX) OF ReportedEntity
}

ReportedEntity ::= SEQUENCE {
    entityType         OBJECT IDENTIFIER,
    reportedAttributes SEQUENCE SIZE (1..MAX) OF ReportedAttribute
}

ReportedAttribute ::= SEQUENCE {
    attributeType      OBJECT IDENTIFIER,
    value              AttributeValue
}

AttributeValue :== CHOICE {
   bytes       [0] IMPLICIT OCTET STRING
   utf8String  [1] IMPLICIT UTF8String,
   bool        [2] IMPLICIT BOOLEAN,
   time        [3] IMPLICIT GeneralizedTime,
   int         [4] IMPLICIT INTEGER,
   oid         [5] IMPLICIT OBJECT IDENTIFIER
}

SignatureBlock ::= SEQUENCE {
   certChain SEQUENCE of Certificate,
   signatureAlgorithm AlgorithmIdentifier,
   signatureValue OCTET STRING
}

id-pkix-attest OBJECT IDENTIFIER ::= { 1 2 3 999 }

id-pkix-attest-entity-type        OBJECT IDENTIFIER ::= { id-pkix-attest 0 }
id-pkix-attest-entity-transaction OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 0 }
id-pkix-attest-entity-platform    OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 1 }
id-pkix-attest-entity-key         OBJECT IDENTIFIER ::= { id-pkix-attest-entity-type 2 }

id-pkix-attest-attribute-type OBJECT IDENTIFIER ::= { id-pkix-attest 1 }

id-pkix-attest-attribute-transaction       OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-type 0 }
id-pkix-attest-attribute-transaction-nonce OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-transaction 0 }

id-pkix-attest-attribute-platform            OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-type 1 }
id-pkix-attest-attribute-platform-vendor     OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 0 }
id-pkix-attest-attribute-platform-hwserial   OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 1 }
id-pkix-attest-attribute-platform-fipsboot   OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 2 }
id-pkix-attest-attribute-platform-desc       OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 3 }
id-pkix-attest-attribute-platform-time       OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 4 }
id-pkix-attest-attribute-platform-swversion  OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 5 }
id-pkix-attest-attribute-platform-oemid      OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 6 }
id-pkix-attest-attribute-platform-debugstat  OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 7 }
id-pkix-attest-attribute-platform-uptime     OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 8 }
id-pkix-attest-attribute-platform-bootcount  OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 9 }
id-pkix-attest-attribute-platform-usermods   OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 8 }
id-pkix-attest-attribute-platform-envid      OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 9 }
id-pkix-attest-attribute-platform-envdesc    OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 10 }
id-pkix-attest-attribute-platform-fipsver  OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 11 }
id-pkix-attest-attribute-platform-fipslevel  OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-platform 12 }



id-pkix-attest-attribute-key                   OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-type 2 }
id-pkix-attest-attribute-key-identifier        OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 0 }
id-pkix-attest-attribute-key-spki              OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 1 }
id-pkix-attest-attribute-key-purpose           OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 2 }
id-pkix-attest-attribute-key-extractable       OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 3 }
id-pkix-attest-attribute-key-never-extractable OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 4 }
id-pkix-attest-attribute-key-local             OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 5 }
id-pkix-attest-attribute-key-expiry            OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 6 }
id-pkix-attest-attribute-key-protection        OBJECT IDENTIFIER ::= { id-pkix-attest-attribute-key 7 }

<CODE ENDS>

]]></sourcecode>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>Please replace "RFCthis" with the RFC number assigned to this document.</t>
      <t>TODO: list out all the OIDs that need IANA registration.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>A Verifier <bcp14>MAY</bcp14> reject a PKIX Attestation if it lacks required attributes per their
appraisal policy. For example, if a Relying Party mandates a FIPS-certified device,
it <bcp14>SHOULD</bcp14> reject evidence lacking sufficient information to verify the device's FIPS
certification status.</t>
      <section anchor="sec-cons-simple">
        <name>Simple to Implement</name>
        <t>The nature of attestation requires the attestation service to be implemented in an extremely privileged position within the HSM so that it can collect measurements of both the hardware environment and the application keys being attested. For many HSM and TPM architectures, this will place the Attestation Service inside the "HSM kernel" and potentially subject to FIPS 140-3 or Common Criteria validation and change control. For both security and compliance reasons there is incentive for the emitting and parsing logic to be simple and easy to implement correctly. Additionally, when the data formats contained in this specification are parsed within an HSM boundary -- that would be parsing a request entity, or parsing an attestation produced by a different HSM -- implementers <bcp14>SHOULD</bcp14> opt for simple logic that rejects any data that does not match the expected format instead of attempting to be flexible.</t>
        <t>In particular, Attesting Services <bcp14>SHOULD</bcp14> generate the attestation object from scratch and avoid copying any content from the request. Attesting Services <bcp14>MUST NOT</bcp14> allow unrecognized attributes or any attribute value other than the nonce to be echoed from the request into the attestation object.</t>
      </section>
      <section anchor="sec-detached-sigs">
        <name>Detached Signatures</name>
        <t>TODO beef this up</t>
        <t>No indication within the tbs content about what or how many signatures to expect.</t>
        <t>A SignatureBlock can be trivially stripped off without leaving any evidence.</t>
        <t>When multiple SignatureBlocks are used for providing third party counter-signatures, note that the counter signature only covers the tbs content and not existing SignatureBlocks.</t>
      </section>
      <section anchor="sec-cons-privacy">
        <name>Privacy</name>
        <t>Often, a TPM will host cryptographic keys for both the kernel and userspace of a local operating system but a Presenter may only represents a single user or application.
Similarly, a single enterprise-grade Hardware Security Module will often host cryptographic keys for an entire multi-tenant cloud service and the Presenter or Reciever or Recipient belongs only to a single tenant. For example the HSM backing a TLS-terminating loadbalancer fronting thousands of un-related web domains.
In these cases, disclosing that two different keys reside on the same hardware, or in some cases even disclosing the existance of a given key, let alone its attributes, to an unauthorized party would constitute an egregious privacy violation.</t>
        <t>Implementions <bcp14>SHOULD</bcp14> be careful to avoid over-disclosure of information, for example by authenticating the Presenter as described in <xref target="sec-cons-auth-the-presenter"/> and only returning results for keys and envirnments for which it is authorized.
In absence of an existing mechanism for authenticating and authorizing administrative connections to the HSM, the attestation request <bcp14>MAY</bcp14> be authenticated by embedding the TbsPkixAttestation of the request inside a PKIXAttestation signed with a certificate belogning to the Presenter.</t>
        <t>Furthermore, enterprise and cloud-services grade HSMs <bcp14>SHOULD</bcp14> support the full set of attestation request functionality described in <xref target="sec-reqs"/> so that Presenters can fine-tune the content of a PKIX Attestation such that it is appropriate for the intended Recipient.</t>
      </section>
      <section anchor="sec-cons-auth-the-presenter">
        <name>Authenticating and Authorizing the Presenter</name>
        <t>The Presenter represents a priviledged role within the architecture of this specification as it gets to learn about the existence of application keys and their protection properties, as well as details of the platform.
The Presenter is in the position of deciding how much information to disclose to the Recipient, and to request a suitably redacted attestation from the HSM.</t>
        <t>For personal cryptographic tokens it might be appropriate for the attestation request interface to be un-authenticated. However, for enterprise and cloud-services grade HSMs the Presenter <bcp14>SHOULD</bcp14> be authenticated using the HSM's native authentication mechanism. The details will be HSM-specific and are thus left up to the implementer, however it is <bcp14>RECOMMENDED</bcp14> to implement an authorization framework similar to the following.</t>
        <t>A Presenter <bcp14>SHOULD</bcp14> be allowed to request attestation for any application keys which it is allowed to use.
For example, a TLS application that is correctly authenticated to the HSM in order to use its TLS keys <bcp14>SHOULD</bcp14> be able to request attestation of those same keys without needing to perform any additional authentication or requiring any additional roles or permissions.
HSMs that wish to allow a Presenter to request attestation of keys which is not allowed to use, for example for the purposes of displaying HSM status information on an administrative console or UI, <bcp14>SHOULD</bcp14> have a "Attestation Requester" role or permission and <bcp14>SHOULD</bcp14> enforce the HSM's native access controls such that the Presenter can only retrieve attestations for keys for which it has read access.</t>
      </section>
      <section anchor="proof-of-possession-of-application-keys">
        <name>Proof-of-Possession of Application Keys</name>
        <t>With asymmetric keys within a Public Key Infrastructure (PKI) it is common to require a key holder to prove that they are in control of the private key by using it. This is called "proof-of-possession (PoP)". This specification intentionally does not provide a mechnaism for PoP of application keys and relies on the Presenter, Recipient, Verifier, and Relying Party trusting the Attester to correctly report the cryptographic keys that it is holding.</t>
        <t>It would be easy to add a PoP Key Attribute that uses the attested application key to sign over, for example, the Transaction Entity, however this is a bad idea and <bcp14>MUST NOT</bcp14> be added as a custom attribute for several reasons.</t>
        <t>First, an application key intended, for example, for TLS <bcp14>SHOULD</bcp14> only be used with the TLS protocol and introducing a signature oracle whereby the TLS application key is used to sign attestation content could lead to cross-protocol attacks whereby the attacker submits a nonce value which is in fact not random but is crafted in such a way as to appear as a valid message in some other protocol context or exploit some other weakness in the signature algorithm.</t>
        <t>Second, the Presenter who has connected to the HSM to request an attestation may have permissions to view the requested application keys but not permission to use them, as in the case where the Presenter is an administrative UI displaying HSM status information to an systems administrator or auditor.
Requiring the Attestation Service to use the attested application keys could, in some architectures, require the Attestation Service to resolve complex access control logic and handle complex error conditions for each requested key, which violates the "simple to implement" design principle outlined in <xref target="sec-cons-simple"/>. More discussion of authenticating the Presenter can be found in <xref target="sec-cons-auth-the-presenter"/>.</t>
        <t>In cases where explicit PoP is required for a given attested application key, it <bcp14>MUST</bcp14> be done as part of the regular usage protocol for which that key is intended and performed through the HSM's regular application interface, not its attestation interface. For example, PoP could be performed by signing a Certificate Signing Request (CSR), through a PKI enrollment protocol such as Certificate Management Protocol (CMP) which includes a challenge-response PoP, by using the key within a TLS handshake, or some other protocol which is part of the key's intended usage.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="RFC5280">
          <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="I-D.ietf-rats-eat">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="Laurence Lundblade" initials="L." surname="Lundblade">
              <organization>Security Theory LLC</organization>
            </author>
            <author fullname="Giridhar Mandyam" initials="G." surname="Mandyam">
              <organization>Mediatek USA</organization>
            </author>
            <author fullname="Jeremy O'Donoghue" initials="J." surname="O'Donoghue">
              <organization>Qualcomm Technologies Inc.</organization>
            </author>
            <author fullname="Carl Wallace" initials="C." surname="Wallace">
              <organization>Red Hound Software, Inc.</organization>
            </author>
            <date day="6" month="September" year="2024"/>
            <abstract>
              <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, IoT device, network equipment or such.  This claims set
   is used by a relying party, server or service to determine the type
   and degree of trust placed in the entity.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-eat-31"/>
        </reference>
        <reference anchor="X.680" target="https://www.itu.int/rec/T-REC-X.680">
          <front>
            <title>Information technology -- Abstract Syntax Notation One (ASN.1): Specification of basic notation</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="X.690">
          <front>
            <title>Information technology - ASN.1 encoding Rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)</title>
            <author>
              <organization>ITU-T</organization>
            </author>
            <date year="2015" month="November"/>
          </front>
          <seriesInfo name="ISO/IEC" value="8825-1:2015"/>
        </reference>
        <reference anchor="PKCS11" target="https://docs.oasis-open.org/pkcs11/pkcs11-spec/v3.1/cs01/pkcs11-spec-v3.1-cs01.html">
          <front>
            <title>PKCS #11 Specification Version 3.1</title>
            <author initials="T." surname="Cox" fullname="Tony Cox">
              <organization>OASIS PKCS 11 TC</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FIPS.140-3" target="https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-3.pdf">
          <front>
            <title>SECURITY REQUIREMENTS FOR CRYPTOGRAPHIC MODULES</title>
            <author>
              <organization>NIST - Information Technology Laboratory</organization>
            </author>
            <date>n.d.</date>
          </front>
          <seriesInfo name="FIPS" value="140-3"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2986">
          <front>
            <title>PKCS #10: Certification Request Syntax Specification Version 1.7</title>
            <author fullname="M. Nystrom" initials="M." surname="Nystrom"/>
            <author fullname="B. Kaliski" initials="B." surname="Kaliski"/>
            <date month="November" year="2000"/>
            <abstract>
              <t>This memo represents a republication of PKCS #10 v1.7 from RSA Laboratories' Public-Key Cryptography Standards (PKCS) series, and change control is retained within the PKCS process. The body of this document, except for the security considerations section, is taken directly from the PKCS #9 v2.0 or the PKCS #10 v1.7 document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2986"/>
          <seriesInfo name="DOI" value="10.17487/RFC2986"/>
        </reference>
        <reference anchor="RFC6024">
          <front>
            <title>Trust Anchor Management Requirements</title>
            <author fullname="R. Reddy" initials="R." surname="Reddy"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>A trust anchor represents an authoritative entity via a public key and associated data. The public key is used to verify digital signatures, and the associated data is used to constrain the types of information for which the trust anchor is authoritative. A relying party uses trust anchors to determine if a digitally signed object is valid by verifying a digital signature using the trust anchor's public key, and by enforcing the constraints expressed in the associated data for the trust anchor. This document describes some of the problems associated with the lack of a standard trust anchor management mechanism and defines requirements for data formats and push-based protocols designed to address these problems. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6024"/>
          <seriesInfo name="DOI" value="10.17487/RFC6024"/>
        </reference>
        <reference anchor="RFC9019">
          <front>
            <title>A Firmware Update Architecture for Internet of Things</title>
            <author fullname="B. Moran" initials="B." surname="Moran"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="D. Brown" initials="D." surname="Brown"/>
            <author fullname="M. Meriac" initials="M." surname="Meriac"/>
            <date month="April" year="2021"/>
            <abstract>
              <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
              <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9019"/>
          <seriesInfo name="DOI" value="10.17487/RFC9019"/>
        </reference>
        <reference anchor="RFC4211">
          <front>
            <title>Internet X.509 Public Key Infrastructure Certificate Request Message Format (CRMF)</title>
            <author fullname="J. Schaad" initials="J." surname="Schaad"/>
            <date month="September" year="2005"/>
            <abstract>
              <t>This document describes the Certificate Request Message Format (CRMF) syntax and semantics. This syntax is used to convey a request for a certificate to a Certification Authority (CA), possibly via a Registration Authority (RA), for the purposes of X.509 certificate production. The request will typically include a public key and the associated registration information. This document does not define a certificate request protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4211"/>
          <seriesInfo name="DOI" value="10.17487/RFC4211"/>
        </reference>
        <reference anchor="I-D.ietf-lamps-csr-attestation">
          <front>
            <title>Use of Remote Attestation with Certification Signing Requests</title>
            <author fullname="Mike Ounsworth" initials="M." surname="Ounsworth">
              <organization>Entrust Limited</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>Siemens</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Monty Wiseman" initials="M." surname="Wiseman">
              <organization>Beyond Identity</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <date day="2" month="March" year="2025"/>
            <abstract>
              <t>   A PKI end entity requesting a certificate from a Certification
   Authority (CA) may wish to offer trustworthy claims about the
   platform generating the certification request and the environment
   associated with the corresponding private key, such as whether the
   private key resides on a hardware security module.

   This specification defines an attribute and an extension that allow
   for conveyance of Evidence and Attestation Results in Certificate
   Signing Requests (CSRs), such as PKCS#10 or Certificate Request
   Message Format (CRMF) payloads.  This provides an elegant and
   automatable mechanism for transporting Evidence to a Certification
   Authority.

   Including Evidence and Attestation Results along with a CSR can help
   to improve the assessment of the security posture for the private
   key, and can help the Certification Authority to assess whether it
   satisfies the requested certificate profile.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lamps-csr-attestation-17"/>
        </reference>
        <reference anchor="I-D.fossati-tls-attestation">
          <front>
            <title>Using Attestation in Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <author fullname="Yaron Sheffer" initials="Y." surname="Sheffer">
              <organization>Intuit</organization>
            </author>
            <author fullname="Paul Howard" initials="P." surname="Howard">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Ionuț Mihalcea" initials="I." surname="Mihalcea">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
              <organization>Arm Limited</organization>
            </author>
            <author fullname="Arto Niemi" initials="A." surname="Niemi">
              <organization>Huawei</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <date day="21" month="October" year="2024"/>
            <abstract>
              <t>   The TLS handshake protocol allows authentication of one or both peers
   using static, long-term credentials.  In some cases, it is also
   desirable to ensure that the peer runtime environment is in a secure
   state.  Such an assurance can be achieved using attestation which is
   a process by which an entity produces evidence about itself that
   another party can use to appraise whether that entity is found in a
   secure state.  This document describes a series of protocol
   extensions to the TLS 1.3 handshake that enables the binding of the
   TLS authentication key to a remote attestation session.  This enables
   an entity capable of producing attestation evidence, such as a
   confidential workload running in a Trusted Execution Environment
   (TEE), or an IoT device that is trying to authenticate itself to a
   network access point, to present a more comprehensive set of security
   metrics to its peer.  These extensions have been designed to allow
   the peers to use any attestation technology, in any remote
   attestation topology, and mutually.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-fossati-tls-attestation-08"/>
        </reference>
        <reference anchor="I-D.ietf-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper (CMW)</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
            </author>
            <author fullname="Dionna Glaze" initials="D." surname="Glaze">
              <organization>Google LLC</organization>
            </author>
            <date day="28" month="February" year="2025"/>
            <abstract>
              <t>   This document defines a conceptual message wrapper (CMW) format - an
   encapsulation method applicable to any RATS conceptual message, such
   as Evidence, Attestation Results, Endorsements, and Reference Values.
   It also describes a collection type that aggregates one or more CMWs
   into a single message.

   In addition, this document specifies a corresponding CBOR tag, JSON
   Web Tokens (JWT) and CBOR Web Tokens (CWT) claims, and an X.509
   extension.  These mechanisms enable the embedding of enveloped
   conceptual messages into CBOR-based protocols, web APIs, and PKIX
   protocols.  Moreover, a Media Type and a CoAP Content-Format are
   defined for transporting CMWs over HTTP, MIME, CoAP, and other
   Internet protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rats-msg-wrap-12"/>
        </reference>
      </references>
    </references>
    <?line 920?>

<section anchor="samples">
      <name>Samples</name>
      <t>A reference implementation of this specification can be found at https://github.com/hannestschofenig/keyattestation</t>
      <t>It produces the following sample attestation:</t>
      <artwork><![CDATA[
PkixAttestation:
 tbs=TbsPkixAttestation:
  version=2
  reportedEntities=SequenceOf:
   ReportedEntity:
    entityType=1.2.3.999.0.0
    reportedAttributes=SequenceOf:
     ReportedAttribute:
      attributeType=1.2.3.999.1.0.0
      value=AttributeValue:
       bytes=0102030405


   ReportedEntity:
    entityType=1.2.3.999.0.1
    reportedAttributes=SequenceOf:
     ReportedAttribute:
      attributeType=1.2.3.999.1.1.0
      value=AttributeValue:
       utf8String=HSM-123

     ReportedAttribute:
      attributeType=1.2.3.999.1.1.1
      value=AttributeValue:
       bool=True

     ReportedAttribute:
      attributeType=1.2.3.999.1.1.2
      value=AttributeValue:
       utf8String=Model ABC

     ReportedAttribute:
      attributeType=1.2.3.999.1.1.4
      value=AttributeValue:
       utf8String=3.1.9

     ReportedAttribute:
      attributeType=1.2.3.999.1.1.3
      value=AttributeValue:
       time=202502032234Z


   ReportedEntity:
    entityType=1.2.3.999.0.2
    reportedAttributes=SequenceOf:
     ReportedAttribute:
      attributeType=1.2.3.999.1.2.0
      value=AttributeValue:
       utf8String=26d765d8-1afd-4dfb-a290-cf867ddecfa1

     ReportedAttribute:
      attributeType=1.2.3.999.1.2.3
      value=AttributeValue:
       bool=False

     ReportedAttribute:
      attributeType=1.2.3.999.1.2.1
      value=AttributeValue:
       bytes=0x3059301306072a8648ce3d020106082a8648ce3d03010703420004422548f88fb782ffb5eca3744452c72a1e558fbd6f73be5e48e93232cc45c5b16c4cd10c4cb8d5b8a17139e94882c8992572993425f41419ab7e90a42a494272


   ReportedEntity:
    entityType=1.2.3.999.0.2
    reportedAttributes=SequenceOf:
     ReportedAttribute:
      attributeType=1.2.3.999.1.2.0
      value=AttributeValue:
       utf8String=49a96ace-e39a-4fd2-bec1-13165a99621c

     ReportedAttribute:
      attributeType=1.2.3.999.1.2.3
      value=AttributeValue:
       bool=True

     ReportedAttribute:
      attributeType=1.2.3.999.1.2.1
      value=AttributeValue:
       bytes=0x3059301306072a8648ce3d020106082a8648ce3d03010703420004422548f88fb782ffb5eca3744452c72a1e558fbd6f73be5e48e93232cc45c5b16c4cd10c4cb8d5b8a17139e94882c8992572993425f41419ab7e90a42a494272


   ReportedEntity:
    entityType=1.2.3.888.0
    reportedAttributes=SequenceOf:
     ReportedAttribute:
      attributeType=1.2.3.888.1
      value=AttributeValue:
       utf8String=partition 1




 signatures=SequenceOf:
  SignatureBlock:
   certChain=SequenceOf:
    Certificate:
     tbsCertificate=TBSCertificate:
      version=v3
      serialNumber=510501933685942792810365453374472870755160518925
      signature=AlgorithmIdentifier:
       algorithm=1.2.840.113549.1.1.11
       parameters=0x0500

      issuer=Name:
       rdnSequence=RDNSequence:
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.10
          value=0x0c0449455446
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.11
          value=0x0c0452415453
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.3
          value=0x0c06414b20525341


      validity=Validity:
       notBefore=Time:
        utcTime=250117171303Z

       notAfter=Time:
        generalTime=20520604171303Z


      subject=Name:
       rdnSequence=RDNSequence:
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.10
          value=0x0c0449455446
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.11
          value=0x0c0452415453
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.3
          value=0x0c06414b20525341


      subjectPublicKeyInfo=SubjectPublicKeyInfo:
       algorithm=AlgorithmIdentifier:
        algorithm=1.2.840.113549.1.1.1
        parameters=0x0500

       subjectPublicKey=31795268810366627125468059984427145931784542919710733587190808152893606542214208096328883077225607136393362795609997601968312039001251339428349101203532726047646450301142882318337709398316574407647199690000689245113739552615279534528145776090813314822312012607567736073057936820713733090928849092672110937300300755561797808000438134839458043673852453722969649609202093945235393494912138691342219564365300965387743701570507112064401758218314760153081271981340812350365663466513620853326534252424706992841033652817461354632316129312597825542820569667842318342646457447037125609399476844336456206583416539426479221164971369788464727307915820767918489601

      extensions=Extensions:
       Extension:
        extnID=2.5.29.14
        critical=False
        extnValue=0x04148919595e0ef169f5cbbd47e134fce298cc693091
       Extension:
        extnID=2.5.29.35
        critical=False
        extnValue=0x301680148919595e0ef169f5cbbd47e134fce298cc693091
       Extension:
        extnID=2.5.29.19
        critical=True
        extnValue=0x30030101ff


     signatureAlgorithm=AlgorithmIdentifier:
      algorithm=1.2.840.113549.1.1.11
      parameters=0x0500

     signature=12977775424631768289542539102653382982431795551146145281750189553757940982572813264428982985997740595878077027853994515775116752030963858469651548765808775269857271167748512795017916284867051302884465315751010913658016640170608413935780119349866986170148033301955753116984041271273907756544780231564646860424999020990745523383622980115200446260103173103500647838758197610238552349053064525420240826193553395378873725256584269666918504793674497748455574822238022085054752185687440807655337724821853332688158460379554906105417720665175648371832825939577039874730442790337726004105878168375998123110331993348833629325492

   signatureAlgorithm=AlgorithmIdentifier:
    algorithm=1.2.840.113549.1.1.10
    parameters=RSASSA_PSS_params:
     hashAlgorithm=AlgorithmIdentifier:
      algorithm=2.16.840.1.101.3.4.2.1

     maskGenAlgorithm=AlgorithmIdentifier:
      algorithm=1.2.840.113549.1.1.8

     saltLength=20
     trailerField=1


   signatureValue=0x9b6ac1932f1cd85befbde054e084577ebc9181bcf05179658a700e22556fc3f1931f59dc9734efe08df204fcfe55c64c6a97e8d520e58c1f64080b6cce1c08e88db510c06d6914a818b70df82326b37a2abe54fab0567d748e1e82e2de954cac63c5ab3bc92fff9cb8aa64fbcb83dd8bacbce96392f91dd40ee05058adceb11f5cf0c379241fd470918abceea70fd01c0cbc64d96067fe549ec443738655bc2bcf7e5bd54c15d5e5ac2f4ad180d973a7e6025126ccd2b45d78e9944662237959ef73f47e9ae0fa9b0c55177bb6f867a90b41d0efb72c192f15a66531d030bc85fed3d135aea4045e024ef2e807517504d313dbea4b0f709d0553b60793b2dcaa
  SignatureBlock:
   certChain=SequenceOf:
    Certificate:
     tbsCertificate=TBSCertificate:
      version=v3
      serialNumber=43752118382009037811618748949928339462896457144
      signature=AlgorithmIdentifier:
       algorithm=1.2.840.10045.4.3.2

      issuer=Name:
       rdnSequence=RDNSequence:
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.10
          value=0x0c0449455446
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.11
          value=0x0c0452415453
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.3
          value=0x0c07414b2050323536


      validity=Validity:
       notBefore=Time:
        utcTime=250117171428Z

       notAfter=Time:
        generalTime=20520604171428Z


      subject=Name:
       rdnSequence=RDNSequence:
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.10
          value=0x0c0449455446
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.11
          value=0x0c0452415453
        RelativeDistinguishedName:
         AttributeTypeAndValue:
          type=2.5.4.3
          value=0x0c07414b2050323536


      subjectPublicKeyInfo=SubjectPublicKeyInfo:
       algorithm=AlgorithmIdentifier:
        algorithm=1.2.840.10045.2.1
        parameters=0x06082a8648ce3d030107

       subjectPublicKey=57095560233504924588952816185508037812996307929249104847846164660564888397123390877585670462836285725041261897550020311481127562655774333675293173915140722

      extensions=Extensions:
       Extension:
        extnID=2.5.29.14
        critical=False
        extnValue=0x04145b70a79817f79ff637d2f7e3dc446c2109d7bbd4
       Extension:
        extnID=2.5.29.35
        critical=False
        extnValue=0x301680145b70a79817f79ff637d2f7e3dc446c2109d7bbd4
       Extension:
        extnID=2.5.29.19
        critical=True
        extnValue=0x30030101ff


     signatureAlgorithm=AlgorithmIdentifier:
      algorithm=1.2.840.10045.4.3.2

     signature=182167519797146035745575043154801415115532979136731128676399180692664821804883990401552040789643013103202424486088058364982966709324496782518079519267269438816178719668437

   signatureAlgorithm=AlgorithmIdentifier:
    algorithm=1.2.840.10045.2.1
    parameters=0x06082a8648ce3d030107

   signatureValue=0x304402201e7703f63bff951917714e5fa813de5265f151a6802165ef0be5f1fe6c91225b02200ad06b41a5062b07ff3ad37c7d112e19575f0e14a9750fe95e615550b88b5fed



DER Base64:
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
]]></artwork>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>This specification is the work of a design team created by the chairs
of the RATS working group. This specification has been developed
based on discussions in that design team and also with great amounts of
input taken from discussions on the RATS mailing list.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
kmeO6+uJVSeuIEv3qYwLl2V+rJxcRzqZBCevNhXwmdHtt+RBTEdrGF/iq1JF
S0p9LQT71msZ35crUpuWKZZ6z2DSLmG/NDzzt/ZrOifRi0Skgz93/lRBTZI6
nkfYml5kyjrBJGPiLhRAta2fuC+pz7ICjNyFSfJfPiE7Z8o7UX+K1C2pfk7d
bEpJMdiMkeEsjME4w4YOVdSfZLdhwtdkOIeYl7CeqNmG9IRiMhIhJB+F6CoZ
d4ujef2YcEXgi3EDVWt+jI4NQU7XEaow+UpVR+p33qV7QPAFs9rXIq1dGm5L
azWT4erhWb4ogqcy11P2uqErEky+I8H41875YdccjlqD0fDfuLt2Dugmx/I2
VyqUqgZXQvwC6wteFV9r4Y1cEE6BT3B/iVfl12BDO69qr0WytrvCpw1ZSSHv
z3hVfa3VHuBfGBt5VceBcX2vCtpL/BVGT+6xrlFGUHBZr0btw/754WsTNvR/
2VWm/6Mus/svuGcjWbb6z+s1sq/X+B93w236OrJvuXvsn5eP/UmXj6VHVgTJ
j3wjUIsvj6QB9rsWm1pMBoQzJ8lxG+fvn0RbZ+HFHekn+p0HkNpTxuHuTpPT
mhN/9zRqrS+CT02lNdz98am+bVda/80fnyrjBr2MqbSmiD8+VfmbptLY/Y9P
VfmmqbTuwj8+VfWbptIaUP/4VLVvPCu8u4+aE//4VPVvmkrrA/zjUzW+aSqt
m++PT5VxDWfWruIWvX/2rrSGqH/2rrTWpr+DMX0bE1Ttd3/HTN/OA0UP3N8x
F0nyF+SVrij8Xon1IsNFYyzdcuUHJsL1vnhSOE+6BcoPzvPiOWnu9t87z1fh
lu4y8oPzvCilMoMDPzbPiyJKxRp+//m8KJ8YbskmFD84z4vCifAg1VDiB+dB
yST8K92zQ/Su0AWIfzF7rbMWlT7jTTMcczCMC/T70F072L3W3FMdK/bi0N3g
qCOTlVVHY/LzYZxQ1E6rYmi6D4/y9edck0o1t+QoouIXWgXX8KpSVSqplKn3
6RVqdazobQ5dcuNmdZKkhCrYxn1cSZqIOrMT1wuNVMB3y/1S9QQkK9WwcIHF
DJRazt114zaH7BvcN7xVnItGK1QxW1wRXxY5mWB0mUpwtOSHgAPNWy215aeI
pjFiT6vezJIiHEOPPZuBqe62ER43Snrgwg1RehnXuliplFIRxEo5ikXlGGef
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
W8fjs8f+tOkdXZUKj6Wo+lAEHXA5bZ1fn1c7nz6dfrwtRf3m5rR+Pm4v6q0g
WtSfSscHxzfXhfPVVfFp2dkUvtiTQdMqPPpHo/mgfb5ejm9vD4b91Z2zPmss
LoFTtb90K+GjfeHOOsumcxV8qFc2N9eDk/cPV0cD52l6NTvsb/wvi+64vvjS
O/myuSh0H960rp2D2Ze7Svdu9qFzdG2dBtfvK/eV7tNRuXx1Nr344D0EIEIL
7Yez5XjdO59dDW7ff1w0W+35w4fH2zcHV8Hs7gvoXR8OB8UPIC2DKRxl6fzL
6W1nMPYuL9ZLp7uaLjebN8v6da/55W58PDu9CS8ee7MScFl7XY8+PDit0/Xk
zXSw7oXT+9nVxbjU6W0X1YK/bUfdaH3ROo9OPj6Neoc193A7OegMh6eXm5NN
At4n/XZtynQ6n87up+3by363NT2e8Xc6X5l24Vxai1LYvt827NLRw8OD276q
9AafJuF2MB0/ba4+zeee3zrvza8fNgfHo/dF354/jR4qvfK2ffH05tq+7VvL
SVAcHs7v2s37TmsVPc02vVqvVOz22ytrMAyOT+2zN53+IioHXx7mo1p0dNt0
ehV3uj5151fb6KbxMTxv3D8cVLeVL4tRfVu5cLzatlH7eD58MyhfHa7blx9P
yufRoGk3+mfVD+2DK/vD8cnDec0/bLbsw9PH+9LHtn8wH7qP3bOn2fxj46TR
fPOxed0/cj7Nw07zpHBzeGvXJovWvLt4OjspfPp0t5x3b71eeX5bL18UJstw
+mYZ9a8HTn31MPO/XK7ahfM35dP2/cORdTvvO63NQ+/Tm0KzWwy/XHY/TT+c
N9bT91efrrqFx4tx7T66sD8Ujq7qN+/v66f2F+T7sw3w/eM68P32CnWe69K0
BVy4Ne1dtWv+MjzYdpfvm87B5mLV2NROg2prMh9PN52pkuFdeH7TP+ye9VsR
0lq3M910h1fXV4M77bvNpnt1f3R19dS97Lcq9F1rAyR/FU2vQE85u2tNjzaF
7dkI9Cjg+8DjC/27mXXcaoAecwX/f7M5O0SZcLk9Pwr+gPn+u2T0yd3VUxt4
WIH40uH08mO7PRiDOXtzdOBOmneTYfPNhT043sw6jlsvHrYmKLfeD/vd48PW
x+nLz17QswPicd32qMX6SStQewP5B7IeFJ/uVad32bmcbIbri2Y/Kk0HjXvv
jXd5eXn20epO5gerQcspraPTD+2bYXdea/WmH46fTg+uP345v3O/HDZBWfa2
fnvz/qYZOHenlY/25KE0PneD+vrs6iV9rzu4a3dbXst1Nhel84M318cD53E0
fxN0m9Xh7eRosAxas1u3cVqdvH8z/tD1Pm56086qHV5aV8cnm8nB+eqsMRl0
18fXzuRwNlw6lwfLT4uj66tT7xSw/53sKNey8eYlqsPn66uMrEpETqnnOxWw
5YAoZFm51kJc6qxufMCrJsLIEJUDg9ZoSO9hIv40DNbLzFJHLJ8a08U52Ocy
WIK9gVdg0FU/cfWLKGqyVon5qYgb7wDhK6xxNaa1wL45WGhreP4SmwJYePcC
Fcnr44mCSFrlwvL4Fhovwl4I/x/iscsjGh8BAA==

-->

</rfc>
