<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.13 -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-architecture-03" category="info" obsoletes="" updates="" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 2.23.1 -->
  <front>
    <title abbrev="RATS Arch &amp; Terms">Remote Attestation Procedures Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-03"/>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="D." surname="Thaler" fullname="Dave Thaler">
      <organization>Microsoft</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>USA</country>
        </postal>
        <email>dthaler@microsoft.com</email>
      </address>
    </author>
    <author initials="M." surname="Richardson" fullname="Michael Richardson">
      <organization>Sandelman Software Works</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>Canada</country>
        </postal>
        <email>mcr+ietf@sandelman.ca</email>
      </address>
    </author>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization abbrev="Intel">Intel Corporation</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <code/>
          <country>USA</country>
        </postal>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization>Huawei Technologies</organization>
      <address>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date year="2020" month="May" day="21"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>In network protocol exchanges, it is often the case that
one entity (a Relying Party) requires evidence about a remote peer to assess the peer's
trustworthiness, and a way to appraise such evidence. The evidence is typically a set of claims
about its software and hardware platform. This document describes an architecture for such
remote attestation procedures (RATS).</t>
    </abstract>
    <note>
      <name>Note to Readers</name>
      <t>Discussion of this document takes place on the
  RATS Working Group mailing list (rats@ietf.org),
  which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/">https://mailarchive.ietf.org/arch/browse/rats/</eref>.</t>
      <t>Source for this draft and an issue tracker can be found at
  <eref target="https://github.com/ietf-rats-wg/architecture">https://github.com/ietf-rats-wg/architecture</eref>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction" numbered="true" toc="default">
      <name>Introduction</name>
      <t>In Remote Attestation Procedures (RATS), one peer (the "Attester")
produces believable information about itself - Evidence - to enable
a remote peer (the "Relying Party") to decide whether to consider that
Attester a trustworthy peer or not.
RATS are facilitated by an additional vital party, the Verifier.</t>
      <t>This documents defines a flexible architecture consisting of attestation roles
and their interactions via conceptual messages.
Additionally, this document defines a universal set of terms that can be mapped to various existing and emerging Remote Attestation Procedures.
Common topological models and the data flows associated with them, such as
the "Passport Model" and the "Background-Check Model" are illustrated.
The purpose is to enable readers to map their solution architecture to the
canonical attestation architecture provided here and to define useful terminology for attestation.
Having a common terminology that provides well-understood meanings for common themes
such as, roles, device composition, topological models and appraisal is vital for
semantic interoperability across solutions and platforms involving multiple vendors and providers.</t>
      <t>Amongst other things, this document is about trust and trustworthiness.
Trust is a decision being made. Trustworthiness is a quality that is
assessed via evidence created. This is a subtle difference and being
familiar with the difference is crucial for using this document.
Additionally, the concepts of freshness and trust relationships with
respect to RATS are elaborated on to enable implementers in order to choose
appropriate solutions to compose their Remote Attestation Procedures.</t>
    </section>
    <section anchor="terminology" numbered="true" toc="default">
      <name>Terminology</name>
      <t>This document uses the following terms.</t>
      <dl newline="false" spacing="normal">
        <dt>Appraisal Policy for Evidence:</dt>
        <dd>
  A set of rules that direct how a Verifier evaluates the validity of information about an Attester. Compare /security policy/ in <xref target="RFC4949" format="default"/></dd>
        <dt>Appraisal Policy for Attestation Result:</dt>
        <dd>
  A set of rules that direct how a Relying Party uses the Attestation Results regarding an Attester generated by the Verifiers. Compare /security policy/ in <xref target="RFC4949" format="default"/></dd>
        <dt>Attestation Result:</dt>
        <dd>
  The output generated by a Verifier, typically including information about an Attester, where the Verifier vouches for the validity of the Evidence it has appraised</dd>
        <dt>Attester:</dt>
        <dd>
  An entity (typically a device), whose Evidence must be appraised in order to infer the extent to which the Attester is considered trustworthy, such as when deciding whether it is authorized to perform some operation</dd>
        <dt>Claim:</dt>
        <dd>
  A piece of asserted information, often in the form of a name/value pair.
(Compare /claim/ in <xref target="RFC7519" format="default"/>)</dd>
        <dt>Endorsement:</dt>
        <dd>
  Statements that Endorsers make (typically a manufacturer) that vouches for the design and implementation of the Attester. Often this includes statements about the integrity of an Attester's signing capability</dd>
        <dt>Endorser:</dt>
        <dd>
  An entity (typically a manufacturer) whose Endorsements help Verifiers appraise the authenticity of Evidence</dd>
        <dt>Evidence:</dt>
        <dd>
  A set of information that asserts the trustworthiness status of an Attester, that is appraised by a Verifier</dd>
        <dt>Relying Party:</dt>
        <dd>
  An entity, that depends on the validity of information about an Attester, for purposes of reliably applying application specific actions.  Compare /relying party/ in <xref target="RFC4949" format="default"/></dd>
        <dt>Relying Party Owner:</dt>
        <dd>
  An entity (typically an administrator), that is authorized to configure Appraisal Policy for Attestation Results in a Relying Party</dd>
        <dt>Verifier:</dt>
        <dd>
  An entity (typically a service), that appraises the validity of Evidence about an Attester
 and produces Attestation Results to be used by a Relying Party</dd>
        <dt>Verifier Owner:</dt>
        <dd>
  An entity (typically an administrator), that is authorized to configure Appraisal Policy for Evidence in a Verifier</dd>
      </dl>
    </section>
    <section anchor="referenceusecases" numbered="true" toc="default">
      <name>Reference Use Cases</name>
      <t>This section covers a number of representative use cases for remote attestation, independent of specific
solutions.  The purpose is to provide motivation for various aspects of the
architecture presented in this draft.  Many other use cases exist, and this
document does not intend to have a complete list, only to have a set of use
cases that collectively cover all the functionality required in the architecture.</t>
      <t>Each use case includes a description, and a summary of what an Attester and a Relying
Party refer to in the use case.</t>
      <section anchor="network-endpoint-assessment" numbered="true" toc="default">
        <name>Network Endpoint Assessment</name>
        <t>Network operators want a trustworthy report of identity
and version of information of the hardware and software on the
machines attached to their network, for purposes such as inventory,
auditing, and/or logging.  The network operator may also want a policy
by which full access is only granted to devices that meet some definition
of health, and so wants to get claims about such information and verify
their validity. Remote attestation is desired to prevent vulnerable or
compromised devices from getting access to the network and potentially
harming others.</t>
        <t>Typically, solutions start with a specific component (called a "Root of Trust") that
provides device identity and protected storage for measurements.
These components perform a series of measurements, and express this with Evidence as to the
hardware and firmware/software that is running.</t>
        <dl newline="false" spacing="normal">
          <dt>Attester:</dt>
          <dd>
  A device desiring access to a network</dd>
          <dt>Relying Party:</dt>
          <dd>
  A network infrastructure device such as a router, switch, or access point</dd>
        </dl>
      </section>
      <section anchor="confidential-machine-learning-ml-model-protection" numbered="true" toc="default">
        <name>Confidential Machine Learning (ML) Model Protection</name>
        <t>A device manufacturer wants to protect its intellectual property
in terms of the ML model it developed and that runs in the devices that its
customers purchased, and it wants to prevent attackers, potentially including
the customer themselves, from seeing the details of the model.</t>
        <t>This typically works by having some protected environment
in the device attest to some manufacturer service.  If remote attestation succeeds,
then the manufacturer service releases either the model, or a key to decrypt
a model the Attester already has in encrypted form, to the requester.</t>
        <dl newline="false" spacing="normal">
          <dt>Attester:</dt>
          <dd>
  A device desiring to run an ML model to do inferencing</dd>
          <dt>Relying Party:</dt>
          <dd>
  A server or service holding ML models it desires to protect</dd>
        </dl>
      </section>
      <section anchor="confidential-data-retrieval" numbered="true" toc="default">
        <name>Confidential Data Retrieval</name>
        <t>This is a generalization of the ML model use case above, where
the data can be any highly confidential data, such as health data
about customers, payroll data about employees, future business plans, etc.
Attestation is desired to prevent leaking data to compromised devices.</t>
        <dl newline="false" spacing="normal">
          <dt>Attester:</dt>
          <dd>
  An entity desiring to retrieve confidential data</dd>
          <dt>Relying Party:</dt>
          <dd>
  An entity that holds confidential data for retrieval by other entities</dd>
        </dl>
      </section>
      <section anchor="critical-infrastructure-control" numbered="true" toc="default">
        <name>Critical Infrastructure Control</name>
        <t>In this use case, potentially dangerous physical equipment
(e.g., power grid, traffic control, hazardous chemical processing, etc.)
is connected to a network.  The organization managing such infrastructure
needs to ensure that only authorized code and users can control such
processes, and they are protected from malware or other adversaries.
When a protocol operation can affect some critical
system, the device attached to the critical equipment thus wants some
assurance that the requester has not been compromised.  As such,
remote attestation can be used to only accept commands from requesters
that are within policy.</t>
        <dl newline="false" spacing="normal">
          <dt>Attester:</dt>
          <dd>
  A device or application wishing to control physical equipment</dd>
          <dt>Relying Party:</dt>
          <dd>
  A device or application connected to potentially dangerous physical
equipment (hazardous chemical processing, traffic control, power grid,
etc.)</dd>
        </dl>
      </section>
      <section anchor="trusted-execution-environment-tee-provisioning" numbered="true" toc="default">
        <name>Trusted Execution Environment (TEE) Provisioning</name>
        <t>A "Trusted Application Manager (TAM)" server is responsible
for managing the applications running in the TEE of a client device.
To do this, the TAM wants to assess the state of a TEE, or of applications
in the TEE, of a client device.  The TEE attests to the TAM, which can
then decide whether the TEE is already in compliance with the TAM's latest
policy, or if the TAM needs to uninstall, update, or install approved
applications in the TEE to bring it back into compliance with the TAM's policy.</t>
        <dl newline="false" spacing="normal">
          <dt>Attester:</dt>
          <dd>
  A device with a trusted execution environment capable of
running trusted applications that can be updated</dd>
          <dt>Relying Party:</dt>
          <dd>
  A Trusted Application Manager</dd>
        </dl>
      </section>
      <section anchor="hardware-watchdog" numbered="true" toc="default">
        <name>Hardware Watchdog</name>
        <t>One significant problem is malware that holds a device
hostage and does not allow it to reboot to prevent updates to be
applied.  This is a significant problem, because it allows a fleet
of devices to be held hostage for ransom.</t>
        <t>A hardware watchdog can be implemented by forcing a reboot unless
remote attestation to a server succeeds within a periodic interval,
and having the reboot do remediation by bringing a device into
compliance, including installation of patches as needed.</t>
        <dl newline="false" spacing="normal">
          <dt>Attester:</dt>
          <dd>
  The device that is desired to keep from being held hostage for
a long period of time</dd>
          <dt>Relying Party:</dt>
          <dd>
  A remote server that will securely grant the Attester
permission to continue operating (i.e., not reboot) for a period of time</dd>
        </dl>
      </section>
    </section>
    <section anchor="architectural-overview" numbered="true" toc="default">
      <name>Architectural Overview</name>
      <t><xref target="dataflow" format="default"/> depicts the data that flows between different roles, independent of protocol or use case.</t>
      <figure anchor="dataflow">
        <name>Conceptual Data Flow</name>
        <artwork type="WHOLEFLOW" align="center" name="" alt=""><![CDATA[
           ************   ************     ****************
           * Endorser *   * Verifier *     * Relying Party*
           ************   *  Owner   *     *  Owner       *
                 |        ************     ****************
                 |              |                 |
     Endorsements|              |                 |
                 |              |Appraisal        |
                 |              |Policy           |
                 |              |for              | Appraisal
                 |              |Evidence         | Policy for
                 |              |                 | Attestation
                 |              |                 |  Result
                 v              v                 |
               .-----------------.                |
        .----->|     Verifier    |------.         |
        |      '-----------------'      |         |
        |                               |         |
        |                    Attestation|         |
        |                    Results    |         |
        | Evidence                      |         |
        |                               |         |
        |                               v         v
  .----------.                      .-----------------.
  | Attester |                      | Relying Party   |
  '----------'                      '-----------------'
]]></artwork>
      </figure>
      <t>An Attester creates Evidence that is conveyed to a Verifier.</t>
      <t>The Verifier uses the Evidence, and any Endorsements from Endorsers,
by applying an Evidence Appraisal Policy to assess the trustworthiness of the Attester,
and generates Attestation Results for use by Relying Parties.  The Evidence Appraisal Policy
might be obtained from an Endorser along with the Endorsements, or might be obtained
via some other mechanism such as being configured in the Verifier by an
administrator.</t>
      <t>The Relying Party uses Attestation Results by applying its own
Appraisal Policy to make application-specific decisions such as authorization decisions.
The Attestation Result Appraisal Policy might, for example, be configured in the Relying Party
by an administrator.</t>
      <section anchor="appraisal-policies" numbered="true" toc="default">
        <name>Appraisal Policies</name>
        <t>The Verifier, when appraising Evidence, or the Relying Party, when
appraising Attestation Results, checks the values of some claims
against constraints specified in its Appraisal Policy.  Such constraints might
involve a comparison for equality against a reference value, or a check for being in
a range bounded by reference values, or membership in a set of reference values,
or a check against values in other claims, or any other test.</t>
        <t>Such reference values might be specified as part of the Appraisal Policy itself,
or might be obtained from a separate source, such as an Endorsement, and then used by
the Appraisal Policy.</t>
        <t>The actual data format and semantics of any reference values are specific to
claims and implementations. This architecture document does not define any
general purpose format for them or general means for comparison.</t>
      </section>
      <section anchor="two-types-of-environments-of-an-attester" numbered="true" toc="default">
        <name>Two Types of Environments of an Attester</name>
        <t>An Attester consists of at least one Attesting Environment and at least one
Target Environment. In some implementations, the Attesting and Target Environments
might be combined.
Other implementations might have multiple Attesting and Target Environments,
such as in the examples described in more detail in <xref target="layered-attestation" format="default"/>
and <xref target="compositedevice" format="default"/>.  Other examples may exist, and the examples
discussed could even be combined into even more complex implementations.</t>
        <t>Claims are collected from Target Environments, as shown in <xref target="twotypes-env" format="default"/>.
That is, Attesting Environments collect the raw values and
the information to be represented in claims, such as by doing some
measurement of a Target Environment's code, memory, and/or registers.
Attesting Environments then format the claims appropriately, and typically
use key material and
cryptographic functions, such as signing or cipher algorithms, to
create Evidence.
Places that Attesting Environments can exist
include Trusted  Execution Environments (TEE), embedded Secure Elements
(eSE), and BIOS firmware.
An execution environment may not, by default, be capable of claims collection
for a given Target Environment.
Attesting Environments are designed specifically with claims collection in mind.</t>
        <figure anchor="twotypes-env">
          <name>Two Types of Environments</name>
          <artwork type="TWOTYPES" align="center" name="" alt=""><![CDATA[
  .--------------------------------.
  |                                |
  |            Verifier            |
  |                                |
  '--------------------------------'
                          ^
                          | 
.-------------------------|----------.
|                         |          |
|   .----------------.    |          |
|   | Target         |    |          |
|   | Environment    |    |          |
|   |                |    | Evidence |
|   '----------------'    |          |
|                   |     |          |
|                   |     |          |
|          Collect  |     |          | 
|           Claims  |     |          |
|                   |     |          |
|                   v     |          |
|                 .-------------.    |
|                 | Attesting   |    |
|                 | Environment |    |
|                 |             |    |
|                 '-------------'    |
|               Attester             |
'------------------------------------'
]]></artwork>
        </figure>
      </section>
      <section anchor="layered-attestation" numbered="true" toc="default">
        <name>Layered Attestation Environments</name>
        <t>By definition, the Attester role takes on the duty to create Evidence.
The fact that an Attester role is composed of environments that
can be nested or staged adds complexity to the architectural layout of how an
Attester can be composed and therefore has to conduct the Claims collection
in order to create believable attestation Evidence.</t>
        <t><xref target="layered" format="default"/> depicts an example of a device that includes (A) a BIOS stored
in read-only memory in this example, (B) an updatable bootloader, and (C)
an operating system kernel.</t>
        <figure anchor="layered">
          <name>Layered Attester</name>
          <artwork type="LAYERED" align="center" name="" alt=""><![CDATA[
    .----------.                    .----------.
    |          |                    |          |
    | Endorser |------------------->| Verifier |
    |          |    Endorsements    |          |
    '----------'  for A, B, and C   '----------'
                                          ^
.------------------------------------.    | 
|                                    |    |
|   .---------------------------.    |    |
|   | Target                    |    |    | Layered
|   | Environment               |    |    | Evidence
|   | C                         |    |    |   for
|   '---------------------------'    |    | B and C
|           Collect |                |    |
|           claims  |                |    |
|   .---------------|-----------.    |    |
|   | Target        v           |    |    |
|   | Environment .-----------. |    |    |
|   | B           | Attesting | |    |    |
|   |             |Environment|-----------'
|   |             |     B     | |    |
|   |             '-----------' |    |
|   |                     ^     |    |
|   '---------------------|-----'    |
|           Collect |     | Evidence |
|           claims  v     |  for B   |
|                 .-----------.      |
|                 | Attesting |      |
|                 |Environment|      |
|                 |     A     |      |
|                 '-----------'      |
|                                    |
'------------------------------------'
]]></artwork>
        </figure>
        <t>Attesting Environment A, the read-only BIOS in this example,
has to ensure the integrity of the bootloader (Target Environment B).
There are
potentially multiple kernels to boot, and the decision is up to the bootloader.
Only a bootloader with intact integrity will make an appropriate decision. Therefore, these Claims have to be measured securely.
At this stage of the boot-cycle of the
device, the Claims collected typically cannot be composed into Evidence.</t>
        <t>After the boot sequence is started, the BIOS conducts the
most important and defining feature of layered attestation, which is that
the successfully measured Target Environment B
now becomes (or contains) an Attesting Environment for the next layer.
This procedure in Layered Attestation is sometimes called "staging".
It is important that the new Attesting Environment B not be
able to alter any Claims about its own Target Environment B.
This can be ensured having those Claims be either signed by Attesting
Environment A or stored in an untamperable manner by Attesting
Environment A.</t>
        <t>Continuing with this example, the bootloader's Attesting Environment B is now in charge of collecting Claims
about Target Environment C, which in this example
is the kernel to be booted.  The final Evidence thus contains two sets of
Claims: one set about the bootloader as measured and signed by the BIOS,
plus a set of Claims about the kernel as measured and signed by the bootloader.</t>
        <t>This example could be extended further
by, say, making the kernel become another Attesting Environment for
an application as another Target Environment, resulting in a third set
of Claims in the Evidence pertaining to that application.</t>
        <t>The essence of this example is a cascade of staged environments. Each
environment has the responsibility
of measuring the next environment before the next environment is started.
In general, the number of layers may vary by device or implementation,
and an Attesting Environment might even have multiple Target Environments
that it measures, rather than only one as shown in <xref target="layered" format="default"/>.</t>
      </section>
      <section anchor="compositedevice" numbered="true" toc="default">
        <name>Composite Device</name>
        <t>A Composite Device is an entity composed of multiple sub-entities such that its
trustworthiness has to be determined by the appraisal of all these sub-entities.</t>
        <t>Each sub-entity has at least one Attesting Environment collecting the claims
from at least one Target Environment, then this sub-entity generates Evidence
about its trustworthiness. Therefore each sub-entity can be called an Attester.
Among all the Attesters, there may be only some which have the ability to communicate
with the Verifier while others do not.</t>
        <t>For example, a carrier-grade router consists of a chassis and multiple slots.
The trustworthiness of the router depends on all its slots' trustworthiness.
Each slot has an Attesting Environment such as a TEE collecting the
claims of its boot process, after which it generates Evidence from the claims.
Among these slots, only a main slot can communicate with the Verifier
while other slots cannot. But other slots can communicate with the main
slot by the links between them inside the router. So the main slot collects
the Evidence of other slots, produces the final Evidence of the whole router and
conveys the final Evidence to the Verifier. Therefore the router is a Composite
Device, each slot is an Attester, and the main slot is the lead Attester.</t>
        <t>Another example is a multi-chassis router composed of multiple single carrier-grade routers.
The multi-chassis router provides higher throughput by interconnecting
multiple routers and can be logically treated as one router for simpler management.
Among these routers, there is only one main router that connects to the Verifier.
Other routers are only connected to the main router by the network cables,
and therefore they are managed and appraised via this main router's help.
So, in this case, the multi-chassis router is the Composite Device,
each router is an Attester and the main router is the lead Attester.</t>
        <t><xref target="composite" format="default"/> depicts the conceptual data flow for a Composite Device.</t>
        <figure anchor="composite">
          <name>Conceptual Data Flow for a Composite Device</name>
          <artwork type="COMPOSITE" name="" align="left" alt=""><![CDATA[
                   .-----------------------------.
                   |           Verifier          |
                   '-----------------------------'
                                   ^
                                   |
                                   | Evidence of
                                   | Composite Device
                                   |
.----------------------------------|-------------------------------.
| .--------------------------------|-----.      .------------.     |
| |  Collect             .------------.  |      |            |     |
| |  Claims   .--------->|  Attesting |<--------| Attester B |-.   |
| |           |          |Environment |  |      '------------. |   |
| |  .----------------.  |            |<----------| Attester C |-. |
| |  |     Target     |  |            |  |        '------------' | |
| |  | Environment(s) |  |            |<------------| ...        | |
| |  |                |  '------------'  | Evidence '------------' |
| |  '----------------'                  |    of                   |
| |                                      | Attesters               |
| | lead Attester A                      | (via Internal Links or  |
| '--------------------------------------' Network Connections)    |
|                                                                  |
|                       Composite Device                           |
'------------------------------------------------------------------'
]]></artwork>
        </figure>
        <t>In the Composite Device, each Attester generates its own Evidence by its
Attesting Environment(s) collecting the claims from its Target Environment(s).
The lead Attester collects the Evidence of all other Attesters and then
generates the Evidence of the whole Composite Attester.</t>
      </section>
    </section>
    <section anchor="overview" numbered="true" toc="default">
      <name>Topological Models</name>
      <t><xref target="dataflow" format="default"/> shows a basic model for communication between an Attester,
a Verifier, and a Relying Party. The Attester conveys its Evidence to the Verifier
for appraisal, and the Relying Party gets the Attestation Results from the Verifier.
There are multiple other possible models. This section includes some reference models,
but this is not intended to be a restrictive list, and other variations may exist.</t>
      <section anchor="passport-model" numbered="true" toc="default">
        <name>Passport Model</name>
        <t>In this model, an Attester conveys Evidence to a Verifier, which compares
the Evidence against its Appraisal Policy.  The Verifier then gives back
an Attestation Result.  If the Attestation Result was a successful one,
the Attester can then present the Attestation Result to a Relying Party,
which then compares the Attestation Result against its own Appraisal Policy.</t>
        <t>There are three ways in which the process may fail.  First, the Verifier may
refuse to issue the Attestation Result due to some error in processing, or
some missing input to the Verifier.
The second way in which the process may fail is when the resulting Result is
examined by the Relying Party, and based upon the Appraisal Policy, the
result does not pass the policy.
The third way is when the Verifier is unreachable.</t>
        <t>Since the resource access protocol between the Attester and Relying Party
includes an Attestation Result, in this model the details of that protocol
constrain the serialization format of the Attestation Result. The
format of the Evidence on the other hand is only constrained by the
Attester-Verifier remote attestation protocol.</t>
        <figure anchor="passport">
          <name>Passport Model</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
      +-------------+
      |             | Compare Evidence
      |   Verifier  | against Appraisal Policy
      |             |
      +-------------+
           ^    |
   Evidence|    |Attestation
           |    |  Result
           |    v
      +----------+              +---------+
      |          |------------->|         |Compare Attestation
      | Attester | Attestation  | Relying | Result against
      |          |    Result    |  Party  | Appraisal
      +----------+              +---------+  Policy
]]></artwork>
        </figure>
        <t>The passport model is so named because of its resemblance to how nations issue
passports to their citizens. The nature of the Evidence that an individual needs
to provide to its local authority is specific to the country involved. The citizen
retains control of the resulting passport document and presents it to other entities
when it needs to assert a citizenship or identity claim, such as an airport immigration
desk. The passport is considered sufficient because it vouches for the citizenship and
identity claims, and it is issued by a trusted authority. Thus, in this immigration
desk analogy, the passport issuing agency is a Verifier, the passport is an Attestation
Result, and the immigration desk is a Relying Party.</t>
      </section>
      <section anchor="background-check-model" numbered="true" toc="default">
        <name>Background-Check Model</name>
        <t>In this model, an Attester conveys Evidence to a Relying Party, which simply
passes it on to a Verifier.  The Verifier then compares the Evidence against
its Appraisal Policy, and returns an Attestation Result to the Relying Party.
The Relying Party then compares the Attestation Result against its own
appraisal policy.</t>
        <t>The resource access protocol between the Attester and Relying Party
includes Evidence rather than an Attestation Result, but that Evidence is
not processed by the Relying Party.  Since the Evidence is merely forwarded
on to a trusted Verifier, any serialization format can be used
for Evidence because the Relying Party does not need a parser for it.
The only requirement is that the Evidence can be <em>encapsulated in</em> the format
required by the resource access protocol between the Attester and Relying Party.</t>
        <t>However, like in the Passport model, an Attestation Result is still consumed by the
Relying Party and so the serialization format of the Attestation Result is still
important.  If the Relying Party is a constrained node whose purpose is to serve
a given type resource using a standard resource access protocol, it already needs
the parser(s) required by that existing protocol.  Hence, the ability to let the
Relying Party obtain an Attestation Result in the same serialization format allows
minimizing the code footprint and attack surface area of the Relying Party, especially
if the Relying Party is a constrained node.</t>
        <figure anchor="backgroundcheck">
          <name>Background-Check Model</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
                               +-------------+
                               |             | Compare Evidence
                               |   Verifier  | against Appraisal
                               |             | Policy
                               +-------------+
                                    ^    |
                            Evidence|    |Attestation
                                    |    |  Result
                                    |    v
   +------------+               +-------------+
   |            |-------------->|             | Compare Attestation
   |   Attester |   Evidence    |   Relying   | Result against
   |            |               |    Party    | Appraisal Policy
   +------------+               +-------------+
]]></artwork>
        </figure>
        <t>The background-check model is so named because of the resemblance of how employers and volunteer
organizations perform background checks. When a prospective employee provides claims about
education or previous experience, the employer will contact the respective institutions or
former employers to validate the claim. Volunteer organizations often perform police background
checks on volunteers in order to determine the volunteer's trustworthiness.
Thus, in this analogy, a prospective volunteer is an Attester, the organization is the Relying Party,
and a former employer or government agency that issues a report is a Verifier.</t>
      </section>
      <section anchor="combinations" numbered="true" toc="default">
        <name>Combinations</name>
        <t>One variation of the background-check model is where the Relying Party
and the Verifier on the same machine, and so there is no need for a protocol between the two.</t>
        <t>It is also worth pointing out that the choice of model is generally up to the Relying Party,
and the same device may need to create Evidence for different Relying Parties and different use cases
(e.g., a network infrastructure device to gain access to the network, and then a
server holding confidential data to get access to that data).  As such, both models may
simultaneously be in use by the same device.</t>
        <t><xref target="combination" format="default"/> shows another example of a combination where Relying Party 1 uses the
passport model, whereas Relying Party 2 uses an extension of the background-check model.
Specifically, in addition to the basic functionality shown in <xref target="backgroundcheck" format="default"/>, Relying Party 2
actually provides the Attestation Result back to the Attester, allowing the Attester to
use it with other Relying Parties.  This is the model that the Trusted Application Manager
plans to support in the TEEP architecture <xref target="I-D.ietf-teep-architecture" format="default"/>.</t>
        <figure anchor="combination">
          <name>Example Combination</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
      +-------------+
      |             | Compare Evidence
      |   Verifier  | against Appraisal Policy
      |             |
      +-------------+
           ^    |
   Evidence|    |Attestation
           |    |  Result
           |    v
      +-------------+
      |             | Compare
      |   Relying   | Attestation Result
      |   Party 2   | against Appraisal Policy
      +-------------+
           ^    |
   Evidence|    |Attestation
           |    |  Result
           |    v
      +----------+               +----------+
      |          |-------------->|          | Compare Attestation
      | Attester |  Attestation  |  Relying | Result against
      |          |     Result    |  Party 1 | Appraisal Policy
      +----------+               +----------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="roles-and-entities" numbered="true" toc="default">
      <name>Roles and Entities</name>
      <t>HENK VERSION</t>
      <t>An entity in the RATS architecture includes at least one of the roles defined
in this document. As a result, the entity can participate as a constituent of
the RATS architecture. Additionally, an entity can aggregate more than one
role into itself. These collapsed roles combine the duties of multiple roles.
In these cases, interaction between these roles do not necessarily use the
Internet Protocol. They can be using a loopback device or other IP-based
communication between separate environments, but they do not have to.
Alternative channels to convey conceptual messages include function calls, sockets, GPIO
interfaces, local busses, or hypervisor calls. This type of conveyance is typically found
in Composite Devices. Most importantly, these conveyance methods are
out-of-scope of RATS, but they are presumed to exist in order to convey
conceptual messages appropriately between roles.</t>
      <t>For example, an entity that both connects to a wide-area network and to a system bus is taking on both the Attester and Verifier roles.
As a system bus entity, a Verifier consumes Evidence from other devices
connected to the system bus that implement Attester roles. As a wide-area
network connected entity, it may implement an Attester role. The entity, as a
system bus Verifier, may choose to fully isolate its role as a wide-area
network Attester.</t>
      <t>In essence, an entity that combines more than one role also creates and
consumes the corresponding conceptual messages as defined in this document.</t>
    </section>
    <section anchor="role-hosting-and-composition" numbered="true" toc="default">
      <name>Role Hosting and Composition</name>
      <t>NED VERSION</t>
      <t>The RATS architecture includes the definition of Roles (e.g. Attester, Verifier,
Relying Party, Endorser) and conceptual messages (e.g., Evidence, Attestation Results,
Endorsements, Appraisal Policies) that captures canonical attestation behaviors,
that are common to a broad range of attestation-enabled systems. An entity that
combines multiple Roles produces and consumes the associated Role Messages.</t>
      <t>The RATS architecture is not prescriptive about deployment configuration options
of attestation-enabled systems, therefore the various Roles can be hosted on any
participating entity. This implies, for a given entity, that multiple Roles could
be co-resident so that the duties of multiple roles could be performed simultaneously.
Nevertheless, the semantics of which Role Messages are inputs and outputs to a Role
entity remains constant. As a result, the entity can participate as a constituent of the RATS architecture
while flexibly accommodating the needs of various deployment architectures.</t>
      <t>Interactions between Roles do not necessarily require use of Internet protocols.
They could, for example, use inter-process communication, local system buses,
shared memory, hypervisors, IP-loopback devices or any communication path
between the various environments that may exist on the entity that combines multiple Roles.</t>
      <t>The movement of Role Messages between locally hosted Roles is referred to as
"local conveyance". Most importantly, the definition of local conveyance methods is
out-of-scope for the RATS architecture.</t>
      <t>The following paragraph elaborates on an exemplary usage scenario:</t>
      <t>In a Composite Device scenario, in addition to local entities that host the
lead Attester and other subordinate Attesters, the Composite Device can host the
Verifier role locally to appraise Evidence from one or more subordinate Attesters.
The local Verifier might convey local Attestation Results to a remote Relying party
or the Relying Party role also could become local where an application-specific
action is taken locally. For example, a secure boot scenario prevents system software
from loading if the firmware fails to satisfy a local trustworthiness appraisal policy.</t>
      <t>In a multi-network scenario, a network node might bridge a wide-area
network, local-area network, and span various system buses. In so doing, the bridge node
might need to host multiple Roles depending on the type of behavior each connected domain
expects. For example, the node might be an Attester to a wide-area network, a Verifier to
the local-area network, and a Relying Party to components attached to a local system bus.</t>
    </section>
    <section anchor="trustmodel" numbered="true" toc="default">
      <name>Trust Model</name>
      <t>The scope of this document is scenarios for which a Relying Party
trusts a Verifier that can appraise the trustworthiness of
information about an Attester.  Such trust might come by the Relying
Party trusting the Verifier (or its public key) directly, or might
come by trusting an entity (e.g., a Certificate Authority) that is
in the Verifier's certificate chain.  The Relying Party
might implicitly trust a Verifier (such as in the Verifying Relying
Party combination).  Or, for a stronger level of security, the
Relying Party might require that the Verifier itself provide
information about itself that the Relying Party can use to assess
the trustworthiness of the Verifier before accepting its Attestation Results.</t>
      <t>The Endorser and Verifier Owner may need to trust the Verifier
before giving the Endorsement and Appraisal Policy to it.
Such trust can also be established directly or indirectly,
implicitly or explicitly. One explicit way to establish such trust
may be the Verifier first acts as an Attester and creates Evidence about itself to be consumed by the
Endorser and/or Verifier Owner as the Relying Parties.
If it is accepted as trustworthy, then they can provide Endorsements
and Appraisal Policies that enable it to act as a Verifier.</t>
      <t>The Verifier trusts (or more specifically, the Verifier's security
policy is written in a way that configures the Verifier to trust) a
manufacturer, or the manufacturer's hardware, so as to be able to
appraise the trustworthiness of that manufacturer's devices.  In solutions
with weaker security, a Verifier might be configured to implicitly
trust firmware or even software (e.g., a hypervisor).  That is, it
might appraise the trustworthiness of an application component, or operating
system component or service, under the assumption that information
provided about it by the lower-layer hypervisor or firmware is true.
A stronger level of security comes when information can be vouched
for by hardware or by ROM code, especially if such hardware is
physically resistant to hardware tampering.  The component that is
implicitly trusted is often referred to as a Root of Trust.</t>
      <t>In some scenarios, Evidence might contain sensitive information such as
Personally Identifiable Information.
Thus, an Attester must trust entities to which it conveys Evidence, to not
reveal sensitive data to unauthorized parties.
The Verifier might share this information with other authorized parties, according rules that it controls.
In the background-check model, this Evidence may also be revealed to Relying Party(s).</t>
    </section>
    <section anchor="messages" numbered="true" toc="default">
      <name>Conceptual Messages</name>
      <section anchor="evidence" numbered="true" toc="default">
        <name>Evidence</name>
        <t>Evidence is a set of claims about the target environment that reveal operational
status, health, configuration or construction that have security relevance.
Evidence is evaluated by a Verifier to establish its relevance, compliance, and timeliness.
Claims need to be collected in a manner that is reliable.
Evidence needs to be securely associated with the target environment
so that the Verifier cannot be tricked into accepting claims originating
from a different environment (that may be more trustworthy).
Evidence also must be protected from man-in-the-middle attackers who may observe,
change or misdirect Evidence as it travels from Attester to Verifier.
The timeliness of Evidence can be captured using claims that pinpoint the time
or interval when changes in operational status, health, and so forth occur.</t>
      </section>
      <section anchor="endorsements" numbered="true" toc="default">
        <name>Endorsements</name>
        <t>An Endorsement is a secure statement that some entity (e.g., a manufacturer) vouches for the integrity of the
device's signing capability.  For example, if the signing capability is in hardware, then
an Endorsement might be a manufacturer certificate that signs a public key whose corresponding
private key is only known inside the device's hardware.  Thus, when Evidence and such an Endorsement
are used together, an appraisal procedure can be conducted based on Appraisal Policies that may not be specific to the
device instance, but merely specific to the manufacturer providing the Endorsement. For example,
an Appraisal Policy might simply check that devices from a given manufacturer have information
matching a set of known-good reference values, or an Appraisal Policy might have a set of more complex
logic on how to appraise the validity of information.</t>
        <t>However, while an Appraisal Policy that treats all devices from a given manufacturer the same
may be appropriate for some use cases, it would be inappropriate to use such an Appraisal Policy
as the sole means of authorization for use cases that wish to constrain <em>which</em> compliant devices
are considered authorized for some purpose.  For example, an enterprise using remote attestation for
Network Endpoint Assessment may not wish to let every healthy laptop from the same
manufacturer onto the network, but instead only want to let devices that it legally owns
onto the network.  Thus, an Endorsement may be helpful information in authenticating
information about a device, but is not necessarily sufficient to authorize access to
resources which may need device-specific information such as a public key for the device or
component or user on the device.</t>
      </section>
      <section anchor="attestation-results" numbered="true" toc="default">
        <name>Attestation Results</name>
        <t>Attestation Results may indicate compliance or non-compliance with a Verifier's Appraisal Policy.
A result that indicates non-compliance can be used by an Attester (in the passport model) or
a Relying Party (in the background-check model) to indicate that the Attester
should not be treated as authorized and may be in need of remediation.  In some cases,
it may even indicate that the Evidence itself cannot be authenticated as being correct.</t>
        <t>An Attestation Result that indicates compliance can be used by a Relying Party to make
authorization decisions based on the Relying Party's Appraisal Policy.  The simplest such
policy might be to simply authorize any party supplying a compliant Attestation Result
signed by a trusted Verifier.  A more complex policy might also entail comparing information
provided in the result against known-good reference values, or applying more complex logic
on such information.</t>
        <t>Thus, Attestation Results often need to include detailed information about the Attester,
for use by Relying Parties, much like physical passports and drivers licenses include
personal information such as name and date of birth.  Unlike Evidence, which is often
very device- and vendor-specific, Attestation Results can be vendor-neutral if the Verifier
has a way to generate vendor-agnostic information based on the appraisal of vendor-specific
information in Evidence.  This allows a Relying Party's Appraisal Policy to be simpler,
potentially based on standard ways of expressing the information, while still allowing
interoperability with heterogeneous devices.</t>
        <t>Finally, whereas Evidence is signed by the device (or indirectly by a manufacturer, if
Endorsements are used), Attestation Results are signed by a Verifier, allowing a Relying
Party to only need a trust relationship with one entity, rather than a larger set of
entities, for purposes of its Appraisal Policy.</t>
      </section>
    </section>
    <section anchor="claims-encoding-formats" numbered="true" toc="default">
      <name>Claims Encoding Formats</name>
      <t>The following diagram illustrates a relationship to which remote attestation is desired to be added:</t>
      <figure anchor="clientserver">
        <name>Typical Resource Access</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   +-------------+               +------------+ Evaluate
   |             |-------------->|            | request
   |  Attester   |  Access some  |   Relying  | against
   |             |    resource   |    Party   | security
   +-------------+               +------------+ policy
]]></artwork>
      </figure>
      <t>In this diagram, the protocol between Attester and a Relying Party
can be any new or existing protocol (e.g., HTTP(S), COAP(S),
802.1x, OPC UA, etc.), depending on the use case.  Such
protocols typically already have mechanisms for passing security
information for purposes of authentication and authorization.  Common
formats include JWTs <xref target="RFC7519" format="default"/>, CWTs <xref target="RFC8392" format="default"/>, and X.509 certificates.</t>
      <t>To enable remote attestation to be added to existing protocols, enabling a higher
level of assurance against malware for example, it is important that
information needed for appraising the Attester be usable with existing
protocols that have constraints around what formats they can transport.
For example, OPC UA <xref target="OPCUA" format="default"/> (probably the most common protocol in
industrial IoT environments) is defined to carry X.509 certificates and so
security information must be embedded into an X.509 certificate to be passed
in the protocol.  Thus, remote attestation related information could be natively
encoded in X.509 certificate extensions, or could be natively encoded in
some other format (e.g., a CWT) which in turn is then encoded in an X.509
certificate extension.</t>
      <t>Especially for constrained nodes, however, there is a desire to minimize
the amount of parsing code needed in a Relying Party, in order to both
minimize footprint and to minimize the attack surface area.  So while
it would be possible to embed a CWT inside a JWT, or a JWT inside an
X.509 extension, etc., there is a desire to encode the information
natively in the format that is natural for the Relying Party.</t>
      <t>This motivates having a common "information model" that describes
the set of remote attestation related information in an encoding-agnostic
way, and allowing multiple encoding formats (CWT, JWT, X.509, etc.)
that encode the same information into the claims format needed by the
Relying Party.</t>
      <t>The following diagram illustrates that Evidence and Attestation Results
might each have multiple possible encoding formats, so that they can be
conveyed by various existing protocols.  It also motivates why the Verifier
might also be responsible for accepting Evidence that encodes claims in
one format, while issuing Attestation Results that encode claims in
a different format.</t>
      <figure anchor="multievidence_diag">
        <name>Multiple Attesters and Relying Parties with Different Formats</name>
        <artwork type="MULTIEVIDENCE" align="center" name="" alt=""><![CDATA[
                Evidence           Attestation Results
.--------------.   CWT                    CWT   .-------------------.
|  Attester-A  |------------.      .----------->|  Relying Party V  |
'--------------'            v      |            `-------------------'
.--------------.   JWT   .------------.   JWT   .-------------------.
|  Attester-B  |-------->|  Verifier  |-------->|  Relying Party W  |
'--------------'         |            |         `-------------------'
.--------------.  X.509  |            |  X.509  .-------------------.
|  Attester-C  |-------->|            |-------->|  Relying Party X  |
'--------------'         |            |         `-------------------'
.--------------.   TPM   |            |   TPM   .-------------------.
|  Attester-D  |-------->|            |-------->|  Relying Party Y  |
'--------------'         '------------'         `-------------------'
.--------------.  other     ^      |     other  .-------------------.
|  Attester-E  |------------'      '----------->|  Relying Party Z  |
'--------------'                                `-------------------'
]]></artwork>
      </figure>
    </section>
    <section anchor="freshness" numbered="true" toc="default">
      <name>Freshness</name>
      <t>It is important to prevent replay attacks where an attacker replays
old Evidence or an old Attestation Result that is no longer correct.
To do so, some mechanism of ensuring that the Evidence and Attestation
Result are fresh, meaning that there is some degree of assurance
that they still reflect the latest state of the Attester, and that any Attestation
Result was generated using the latest Appraisal Policy for Evidence.
There is, however, always a race condition possible in that the
state of the Attester, and the Appraisal Policy for Evidence,
might change immediately after the Evidence or Attestation Result was generated.
The goal is merely to narrow the time window to something the Verifier
(for Evidence) or Relying Party (for an Attestation Result) is willing to accept.</t>
      <t>There are two common approaches to providing some assurance of freshness.
The first approach is that a nonce is generated by a remote entity
(e.g., the Verifier for Evidence, or the Relying Party for an Attestation
Result), and the nonce is then signed and included along with the claims in
the Evidence or Attestation Result, so that the remote entity knows that the
claims were signed after the nonce was generated.</t>
      <t>A second approach is to rely on synchronized clocks, and include a signed
timestamp (e.g., using <xref target="I-D.birkholz-rats-tuda" format="default"/>) along with the
claims in the Evidence or Attestation Result, so that the remote entity knows
that the claims were signed at that time, as long as it has some assurance that
the timestamp is correct.  This typically requires additional claims about
the signer's time synchronization mechanism in order to provide such assurance.</t>
      <t>In either approach, it is important to note that the actual values in claims
might have been generated long before the claims are signed.  If so, it is the
signer's responsibility to ensure that the values are still correct when they
are signed.  For example, values might have been generated at boot, and then
used in claims as long as the signer can guarantee that they cannot have changed
since boot.</t>
      <t>A more detailed discussion with examples appears in <xref target="time-considerations" format="default"/>.</t>
    </section>
    <section anchor="privacy-considerations" numbered="true" toc="default">
      <name>Privacy Considerations</name>
      <t>The conveyance of Evidence and the resulting Attestation Results
reveal a great deal of information about the internal state of a
device.  In many cases, the whole point of the Attestation process is
to provide reliable information about the type of the device and the
firmware/software that the device is running.  This information might be
particularly interesting to many attackers. For example, knowing that a device is
running a weak version of firmware provides a way to aim attacks better.</t>
      <t>Evidence and Attestation Results data structures are expected to support
integrity protection encoding (e.g., COSE, JOSE, X.509) and optionally might
support confidentiality protection (e.g., COSE, JOSE).
Therefore, if confidentiality protection is omitted or unavailable, the protocols
that convey Evidence or Attestation Results are responsible for detailing what
kinds of information are disclosed, and to whom they are exposed.</t>
      <t>Furthermore, because Evidence might contain sensitive information,
Attesters are responsible for only sending such Evidence to trusted
Verifiers.  Some Attesters might want a stronger level of assurance of
the trustworthiness of a Verifier before sending Evidence to it.  In such cases,
an Attester can first act as a Relying Party and ask for the Verifier's own
Attestation Result, and appraising it just as a Relying Party would appraise
an Attestation Result for any other purpose.</t>
    </section>
    <section anchor="security-considerations" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>Any solution that conveys information used for security purposes, whether
such information is in the form of Evidence, Attestation Results,
Endorsements, or Appraisal Policy, needs to support end-to-end integrity protection
and replay attack prevention, and often also needs to support additional
security protections.  For example, additional means of authentication,
confidentiality, integrity, replay, denial of service and privacy
protection are needed in many use cases.
<xref target="freshness" format="default"/> discusses ways in which freshness can be used in this
architecture to protect against replay attacks.</t>
      <t>To assess the security provided by a particular Appraisal Policy, it
is important to understand the strength of the Root of Trust, e.g.,
whether it is mutable software, or firmware that is read-only after
boot, or immutable hardware/ROM.</t>
      <t>It is also important that the Appraisal Policy was itself obtained
securely.  As such, if Appraisal Policies for a Relying Party or for a Verifier
can be configured via a network protocol, the ability to create Evidence about
the integrity of the entity providing the Appraisal Policy needs to be
considered.</t>
      <t>The security of conveyed information may be applied at different layers, whether by a conveyance protocol, or an information encoding format. This architecture expects attestation messages (i.e., Evidence, Attestation Results, Endorsements and Policies) are end-to-end protected based on the role interaction context.
For example, if an Attester produces Evidence that is relayed through some other entity that doesn't implement the Attester or the intended Verifier roles, then the relaying entity should not expect to have access to the Evidence.</t>
    </section>
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
      <t>This document does not require any actions by IANA.</t>
    </section>
    <section anchor="acknowledgments" numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>Special thanks go to
Joerg Borchert,
Nancy Cam-Winget,
Jessica Fitzgerald-McKay,
Thomas Fossati,
Diego Lopez,
Laurence Lundblade,
Wei Pan,
Paul Rowe,
Hannes Tschofenig,
Frank Xia,
and
David Wooten.</t>
    </section>
    <section anchor="contributors" numbered="true" toc="default">
      <name>Contributors</name>
      <t>Thomas Hardjono created older versions of the terminology section in collaboration with Ned Smith.
Eric Voit provided the conceptual separation between Attestation Provision Flows and Attestation Evidence Flows.
Monty Wisemen created the content structure of the first three architecture drafts.
Carsten Bormann provided many of the motivational building blocks with respect to the Internet Threat Model.</t>
    </section>
    <section anchor="time-considerations" numbered="true" toc="default">
      <name>Appendix A: Time Considerations</name>
      <t>The table below defines a number of relevant events, with an ID that
is used in subsequent diagrams.  The times of said events might be
defined in terms of an absolute clock time such as Coordinated Universal Time,
or might be defined relative to some other timestamp or timeticks counter.</t>
      <table align="center">
        <thead>
          <tr>
            <th align="left">ID</th>
            <th align="left">Event</th>
            <th align="left">Explanation of event</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">VG</td>
            <td align="left">Value generation</td>
            <td align="left">A value to appear in a claim was created</td>
          </tr>
          <tr>
            <td align="left">NS</td>
            <td align="left">Nonce sent</td>
            <td align="left">A random number not predictable to an Attester is sent</td>
          </tr>
          <tr>
            <td align="left">NR</td>
            <td align="left">Nonce relayed</td>
            <td align="left">The nonce is relayed to an Attester by enother entity</td>
          </tr>
          <tr>
            <td align="left">EG</td>
            <td align="left">Evidence generation</td>
            <td align="left">An Attester collects claims and generates Evidence</td>
          </tr>
          <tr>
            <td align="left">ER</td>
            <td align="left">Evidence relayed</td>
            <td align="left">A Relying Party relays Evidence to a Verifier</td>
          </tr>
          <tr>
            <td align="left">RG</td>
            <td align="left">Result generation</td>
            <td align="left">A Verifier appraises Evidence and generates an Attestation Result</td>
          </tr>
          <tr>
            <td align="left">RR</td>
            <td align="left">Result relayed</td>
            <td align="left">A Relying Party relays an Attestation Result to a Relying Party</td>
          </tr>
          <tr>
            <td align="left">RA</td>
            <td align="left">Result appraised</td>
            <td align="left">The Relying Party appraises Attestation Results</td>
          </tr>
          <tr>
            <td align="left">OP</td>
            <td align="left">Operation performed</td>
            <td align="left">The Relying Party performs some operation requested by the Attester.  For example, acting upon some message just received across a session created earlier at time(RA).</td>
          </tr>
          <tr>
            <td align="left">RX</td>
            <td align="left">Result expiry</td>
            <td align="left">An Attestation Result should no longer be accepted, according to the Verifier that generated it</td>
          </tr>
        </tbody>
      </table>
      <t>We now walk through a number of hypothetical examples of how
a solution might be built.  This list is not intended to be complete,
but is just representative enough to highlight various timing considerations.</t>
      <section anchor="example-1-timestamp-based-passport-model-example" numbered="true" toc="default">
        <name>Example 1: Timestamp-based Passport Model Example</name>
        <t>The following example illustrates a hypothetical Passport Model
solution that uses timestamps and requires roughly synchronized
clocks between the Attester, Verifier, and Relying Party, which
depends on using a secure clock synchronization mechanism.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   .----------.                     .----------.  .---------------.
   | Attester |                     | Verifier |  | Relying Party |
   '----------'                     '----------'  '---------------'
     time(VG)                             |               |
        |                                 |               |
        ~                                 ~               ~
        |                                 |               |
     time(EG)                             |               |
        |------Evidence{time(EG)}-------->|               |
        |                              time(RG)           |
        |<-----Attestation Result---------|               |
        |      {time(RG),time(RX)}        |               |
        ~                                                 ~
        |                                                 |
        |------Attestation Result{time(RG),time(RX)}-->time(RA)
        |                                                 |
        ~                                                 ~
        |                                                 |
        |                                              time(OP)
        |                                                 |
]]></artwork>
        <t>The Verifier can check whether the Evidence is fresh when appraising
it at time(RG) by checking <tt>time(RG) - time(EG) &lt; Threshold</tt>, where the
Verifier's threshold is large enough to account for the maximum
permitted clock skew between the Verifier and the Attester.</t>
        <t>If time(VG) is also included in the Evidence along with the claim value
generated at that time, and the Verifier decides that it can trust the
time(VG) value, the Verifier can also determine whether the claim value is
recent by checking <tt>time(RG) - time(VG) &lt; Threshold</tt>, again where the threshold
is large enough to account for the maximum permitted clock skew between
the Verifier and the Attester.</t>
        <t>The Relying Party can check whether the Attestation Result is fresh
when appraising it at time(RA) by checking <tt>time(RA) - time(RG) &lt; Threshold</tt>,
where the Relying Party's threshold is large enough to account for the
maximum permitted clock skew between the Relying Party and the Verifier.
The result might then be used for some time (e.g., throughout the lifetime
of a connection established at time(RA)).  The Relying Party must be
careful, however, to not allow continued use beyond the period for which
it deems the Attestation Result to remain fresh enough.  Thus,
it might allow use (at time(OP)) as long as <tt>time(OP) - time(RG) &lt; Threshold</tt>.
However, if the Attestation Result contains an expiry time time(RX) then
it could explicitly check <tt>time(OP) &lt; time(RX)</tt>.</t>
      </section>
      <section anchor="example-2-nonce-based-passport-model-example" numbered="true" toc="default">
        <name>Example 2: Nonce-based Passport Model Example</name>
        <t>The following example illustrates a hypothetical Passport Model
solution that uses nonces and thus does not require that any clocks
are synchronized.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
   .----------.                     .----------.  .---------------.
   | Attester |                     | Verifier |  | Relying Party |
   '----------'                     '----------'  '---------------'
     time(VG)                             |               |
        |                                 |               |
        ~                                 ~               ~
        |                                 |               |
        |<---Nonce1--------------------time(NS)           |
     time(EG)                             |               |
        |----Evidence-------------------->|               |
        |     {Nonce1, time(EG)-time(VG)} |               |
        |                              time(RG)           |
        |<---Attestation Result-----------|               |
        |     {time(RX)-time(RG)}         |               |
        ~                                                 ~
        |                                                 |
        |<---Nonce2------------------------------------time(NS')
     time(RR)
        |----Attestation Result{time(RX)-time(RG)}---->time(RA)
        |    Nonce2, time(RR)-time(EG)                    |
        ~                                                 ~
        |                                                 |
        |                                              time(OP)
]]></artwork>
        <t>In this example solution, the Verifier can check whether the Evidence is
fresh at time(RG) by verifying that <tt>time(RG) - time(NS) &lt; Threshold</tt>.</t>
        <t>The Verifier cannot, however, simply rely on a Nonce to
determine whether the value of a claim is recent, since the claim value
might have been generated long before the nonce was sent by the Verifier.
However, if the Verifier decides that the Attester can be trusted to
correctly provide the delta time(EG)-time(VG), then it can determine recency
by checking <tt>time(RG)-time(NS) + time(EG)-time(VG) &lt; Threshold</tt>.</t>
        <t>Similarly if, based on an Attestation Result from a Verifier it trusts,
the Relying Party decides that the Attester can be trusted to correctly
provide time deltas, then it can determine whether the Attestation
Result is fresh by checking
<tt>time(OP) - time(NS') + time(RR)-time(EG) &lt; Threshold</tt>.
Although the Nonce2 and time(RR)-time(EG) values cannot be inside
the Attestation Result, they might be signed by the Attester such
that the Attestation Result vouches for the Attester's signing
capability.</t>
        <t>The Relying Party must still be careful, however, to not allow continued
use beyond the period for which it deems the Attestation Result to remain
valid.  Thus, if the Attestation Result sends a validity lifetime
in terms of time(RX)-time(RG), then the Relying Party can check
<tt>time(OP) - time(NS') &lt; time(RX)-time(RG)</tt>.</t>
      </section>
      <section anchor="example-3-timestamp-based-background-check-model-example" numbered="true" toc="default">
        <name>Example 3: Timestamp-based Background-Check Model Example</name>
        <t>The following example illustrates a hypothetical Background-Check Model
solution that uses timestamps and requires roughly synchronized
clocks between the Attester, Verifier, and Relying Party.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.         .---------------.              .----------.
| Attester |         | Relying Party |              | Verifier |
'----------'         '---------------'              '----------'
  time(VG)                   |                           |
        |                    |                           |
        ~                    ~                           ~
        |                    |                           |
  time(EG)                   |                           |
        |----Evidence------->|                           |
        |    {time(EG)}   time(ER)--Evidence{time(EG)}-->|
        |                    |                        time(RG)
        |                 time(RA)<-Attestation Result---|
        |                    |        {time(RX)}         |
        ~                    ~                           ~
        |                    |                           |
        |                 time(OP)                       |
]]></artwork>
        <t>The time considerations in this example are equivalent to those
discussed under Example 1 above.</t>
      </section>
      <section anchor="example-4-nonce-based-background-check-model-example" numbered="true" toc="default">
        <name>Example 4: Nonce-based Background-Check Model Example</name>
        <t>The following example illustrates a hypothetical Background-Check Model
solution that uses nonces and thus does not require that any clocks
are synchronized.  In this example solution, a nonce is
generated by a Verifier at the request of a Relying Party, when
the Relying Party needs to send one to an Attester.</t>
        <artwork name="" type="" align="left" alt=""><![CDATA[
.----------.         .---------------.              .----------.
| Attester |         | Relying Party |              | Verifier |
'----------'         '---------------'              '----------'
  time(VG)                   |                           |
     |                       |                           |
     ~                       ~                           ~
     |                       |                           |
     |                       |<-----Nonce-------------time(NS)
     |<---Nonce-----------time(NR)                       |
  time(EG)                   |                           |
     |----Evidence{Nonce}--->|                           |
     |                    time(ER)--Evidence{Nonce}----->|
     |                       |                        time(RG)
     |                    time(RA)<-Attestation Result---|
     |                       |      {time(RX)-time(RG)}  |
     ~                       ~                           ~
     |                       |                           |
     |                    time(OP)                       |
]]></artwork>
        <t>The Verifier can check whether the Evidence is fresh, and whether a claim
value is recent, the same as in Example 2 above.</t>
        <t>However, unlike in Example 2, the Relying Party can use the Nonce to
determine whether the Attestation Result is fresh, by verifying that
<tt>time(OP) - time(NR) &lt; Threshold</tt>.</t>
        <t>The Relying Party must still be careful, however, to not allow continued
use beyond the period for which it deems the Attestation Result to remain
valid.  Thus, if the Attestation Result sends a validity lifetime
in terms of time(RX)-time(RG), then the Relying Party can check
<tt>time(OP) - time(ER) &lt; time(RX)-time(RG)</tt>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7519" target="https://www.rfc-editor.org/info/rfc7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <seriesInfo name="DOI" value="10.17487/RFC7519"/>
            <seriesInfo name="RFC" value="7519"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="J." surname="Bradley" fullname="J. Bradley">
              <organization/>
            </author>
            <author initials="N." surname="Sakimura" fullname="N. Sakimura">
              <organization/>
            </author>
            <date year="2015" month="May"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8392" target="https://www.rfc-editor.org/info/rfc8392">
          <front>
            <title>CBOR Web Token (CWT)</title>
            <seriesInfo name="DOI" value="10.17487/RFC8392"/>
            <seriesInfo name="RFC" value="8392"/>
            <author initials="M." surname="Jones" fullname="M. Jones">
              <organization/>
            </author>
            <author initials="E." surname="Wahlstroem" fullname="E. Wahlstroem">
              <organization/>
            </author>
            <author initials="S." surname="Erdtman" fullname="S. Erdtman">
              <organization/>
            </author>
            <author initials="H." surname="Tschofenig" fullname="H. Tschofenig">
              <organization/>
            </author>
            <date year="2018" month="May"/>
            <abstract>
              <t>CBOR Web Token (CWT) is a compact means of representing claims to be transferred between two parties.  The claims in a CWT are encoded in the Concise Binary Object Representation (CBOR), and CBOR Object Signing and Encryption (COSE) is used for added application-layer security protection.  A claim is a piece of information asserted about a subject and is represented as a name/value pair consisting of a claim name and a claim value.  CWT is derived from JSON Web Token (JWT) but uses CBOR rather than JSON.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC4949" target="https://www.rfc-editor.org/info/rfc4949">
          <front>
            <title>Internet Security Glossary, Version 2</title>
            <seriesInfo name="DOI" value="10.17487/RFC4949"/>
            <seriesInfo name="RFC" value="4949"/>
            <seriesInfo name="FYI" value="36"/>
            <author initials="R." surname="Shirey" fullname="R. Shirey">
              <organization/>
            </author>
            <date year="2007" month="August"/>
            <abstract>
              <t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="OPCUA" target="https://opcfoundation.org/developer-tools/specifications-unified-architecture/part-2-security-model/">
          <front>
            <title>OPC Unified Architecture Specification, Part 2: Security Model, Release 1.03</title>
            <seriesInfo name="OPC 10000-2" value=""/>
            <author>
              <organization>OPC Foundation</organization>
            </author>
            <date year="2015" month="November" day="25"/>
          </front>
        </reference>
        <reference anchor="I-D.birkholz-rats-tuda" target="http://www.ietf.org/internet-drafts/draft-birkholz-rats-tuda-02.txt">
          <front>
            <title>Time-Based Uni-Directional Attestation</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-tuda-02"/>
            <author initials="A" surname="Fuchs" fullname="Andreas Fuchs">
              <organization/>
            </author>
            <author initials="H" surname="Birkholz" fullname="Henk Birkholz">
              <organization/>
            </author>
            <author initials="I" surname="McDonald" fullname="Ira McDonald">
              <organization/>
            </author>
            <author initials="C" surname="Bormann" fullname="Carsten Bormann">
              <organization/>
            </author>
            <date month="March" day="9" year="2020"/>
            <abstract>
              <t>This documents defines the method and bindings used to conduct Time- based Uni-Directional Attestation (TUDA) between two RATS (Remote ATtestation procedureS) Principals over the Internet.  TUDA does not require a challenge-response handshake and thereby does not rely on the conveyance of a nonce to prove freshness of remote attestation Evidence.  Conversely, TUDA enables the creation of Secure Audit Logs that can constitute Evidence about current and past operational states of an Attester.  As a prerequisite for TUDA, every RATS Principal requires access to a trusted and synchronized time-source. Per default, in TUDA this is a Time Stamp Authority (TSA) issuing signed Time Stamp Tokens (TST).</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-teep-architecture" target="http://www.ietf.org/internet-drafts/draft-ietf-teep-architecture-08.txt">
          <front>
            <title>Trusted Execution Environment Provisioning (TEEP) Architecture</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-teep-architecture-08"/>
            <author initials="M" surname="Pei" fullname="Mingliang Pei">
              <organization/>
            </author>
            <author initials="H" surname="Tschofenig" fullname="Hannes Tschofenig">
              <organization/>
            </author>
            <author initials="D" surname="Thaler" fullname="Dave Thaler">
              <organization/>
            </author>
            <author initials="D" surname="Wheeler" fullname="David Wheeler">
              <organization/>
            </author>
            <date month="April" day="4" year="2020"/>
            <abstract>
              <t>A Trusted Execution Environment (TEE) is an environment that enforces that any code within that environment cannot be tampered with, and that any data used by such code cannot be read or tampered with by any code outside that environment.  This architecture document motivates the design and standardization of a protocol for managing the lifecycle of trusted applications running inside such a TEE.</t>
            </abstract>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->
</rfc>
