<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-voit-rats-trustworthy-path-routing-10" category="std" consensus="true" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="trust-path">Trusted Path Routing</title>
    <seriesInfo name="Internet-Draft" value="draft-voit-rats-trustworthy-path-routing-10"/>
    <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="E." surname="Voit" fullname="Eric Voit">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>8135 Maple Lawn Blvd</street>
          <city>Fulton</city>
          <region>Maryland</region>
          <code>20759</code>
          <country>USA</country>
        </postal>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <author initials="C." surname="Liu" fullname="Chunchi Liu">
      <organization>Huawei Technologies</organization>
      <address>
        <email>liuchunchi@huawei.com</email>
      </address>
    </author>
    <author initials="D." surname="Lopez" fullname="Diego Lopez">
      <organization>Telefonica</organization>
      <address>
        <email>diego.r.lopez@telefonica.com</email>
      </address>
    </author>
    <author initials="M." surname="Chen" fullname="Meiling Chen">
      <organization abbrev="China Mobile">China Mobile</organization>
      <address>
        <email>chenmeiling@chinamobile.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="08"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 118?>

<t>There are end-users who believe encryption technologies like IPSec alone
are insufficient to protect the confidentiality of their highly sensitive
traffic flows.  These end-users want their flows to traverse devices which
have been freshly appraised and verified for trustworthiness. This specification
describes Trusted Path Routing.  Trusted Path Routing protects sensitive
flows as they transit a network by forwarding traffic to/from sensitive subnets
across network devices recently appraised as trustworthy.</t>
    </abstract>
  </front>
  <middle>
    <?line 128?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>There are end-users who believe encryption technologies like IPSec alone
are insufficient to protect the confidentiality of their highly sensitive
traffic flows.   These customers want their highly sensitive flows to be
transported over only network devices recently verified as trustworthy.</t>
      <t>By using a router's embedded TPM based cryptoprocessors in conjunction with
the Remote Attestation context established by <xref target="I-D.ietf-rats-ar4si"/>, a
network provider can identify potentially compromised devices as well
as potentially exploitable (or even exploited) vulnerabilities.  Using this
knowledge, it is then possible to redirect sensitive flows around these devices
while other remediations are potentially considered by Network Operations.</t>
      <t>Trusted Path Routing allows the establishing Trusted Topologies which only
include trust-verified network devices.  Membership in a Trusted Topology
is established and maintained via an exchange of Stamped Passports at the
link layer between peering network devices. As links to Attesting Devices
are appraised as meeting at least a minimum set of formally defined Trustworthiness
Claims, the links are then included as members of this Trusted Topology.
Routing protocols are then used to propagate topology state throughout a
network.</t>
      <t>IP Packets to and from end-user designated Sensitive Subnets are then forwarded
into this Trusted Topology at each network boundary.  This is done by an
end user identifying sensitive IP subnets where flows with applications using
these IP subnets need enhanced privacy guarantees. Trusted Path Routing passes
flows to/from these Sensitive Subnets over a Trusted Topology able to meet
these guarantees.  The Trusted Topology itself consists of the interconnection
of network devices where each potentially transited device has been verified
as achieving a specific set of Trustworthiness Claims during its most recent
trustworthiness appraisal. Interesting sets of Trustworthiness Claims might
be marketed to end-users in the following ways:</t>
      <ul spacing="normal">
        <li>all transited devices have booted with known hardware and firmware</li>
        <li>all transited devices are from a specific set of vendors and are running
known software containing the latest patches</li>
        <li>no guarantees provided</li>
      </ul>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <section anchor="terms">
        <name>Terms</name>
        <t>The following terms are imported from <xref target="RFC9334"/>:
Attester, Evidence, Passport, Relying Party, and Verifier.</t>
        <t>The following terms are impored from <xref target="I-D.ietf-rats-ar4si"/>:
Trustworthiness Claim, Trustworthiness Vector, AR-augmented Evidence</t>
        <t>Newly defined terms for this document:</t>
        <dl>
          <dt>Attested Device ---</dt>
          <dd>
            <t>a network connected Attester where a Verifier's most recent appraisal of
Evidence has returned a Trustworthiness Vector.</t>
          </dd>
          <dt>Stamped Passport ---</dt>
          <dd>
            <t>AR-augmented Evidence which can take two forms.  First if the Attester uses
a TPM2, the the Verifier Proof-of-Freshness includes the &lt;clock&gt;, &lt;reset-counter&gt;,
&lt;restart-counter&gt; and &lt;safe&gt; objects from a recent TPM2 quote made by that
Attester, and the Relying Party Proof-of-Freshness is returned along with
the timeticks as objects embedded within the most recent TPM quote signed
by the same TPM2. Second, if the Attester uses a TPM1.2: the Verifier Proof-of-Freshness
includes a global timestamp from that Verifier, and the Relying Party Proof-of-Freshness
is embedded within a more recent TPM quote signed by the same TPM Attesting
Environment.</t>
          </dd>
          <dt>Sensitive Subnet ---</dt>
          <dd>
            <t>an IP address range where IP packets to or from that range desire confidentially
guarantees beyond those of non-identified subnets.  In practice, flows to
or from a Sensitive Subnet must only have their IP headers and encapsulated
payloads accessible/visible only by Attested Devices supporting one or more
Trustworthiness Vectors.</t>
          </dd>
          <dt>Transparently-Transited Device ---</dt>
          <dd>
            <t>a network device within an network domain where any packets originally passed
into that network domain are completely opaque on that network device at
Layer 3 and above.</t>
          </dd>
          <dt>Trusted Topology ---</dt>
          <dd>
            <t>a topology which includes only Attested Devices and Transparently-Transited
Devices.</t>
          </dd>
        </dl>
      </section>
      <section anchor="requirements-notation">
        <name>Requirements Notation</name>
        <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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="implementation-prerequisites">
      <name>Implementation Prerequisites</name>
      <t>The specification is a valid instance of <xref target="I-D.ietf-rats-ar4si"/>.
This specification works under the following protocol and preconfiguration
prerequisite assumptions:</t>
      <ul spacing="normal">
        <li>All Attested Devices support the TPM remote attestation profile as laid out
in <xref target="RATS-Device"/>, and include either <xref target="TPM2.0"/> or <xref target="TPM1.2"/>.</li>
        <li>One or more Verifier A's as defined in <xref target="I-D.ietf-rats-ar4si"/> 'Interaction Model'
continuously appraise each of the Attested Devices in
a network domain, and these Verifiers return the Attestation Results back
to each originating Attested Device.</li>
        <li>The Attested Devices are connected via link layer protocols such as
<xref target="MACSEC"/> or <xref target="IEEE-802.1X"/>.</li>
        <li>Each Attester can pass a Stamped Passport to a Relying Party / Verifier B
as defined in <xref target="I-D.ietf-rats-ar4si"/> 'Interaction Model' within
<xref target="RFC3748"/> over that link layer protocol.</li>
        <li>A Trusted Topology such as <xref target="I-D.ietf-lsr-flex-algo"/> exists in an IGP
domain for the forwarding of Sensitive Subnet traffic.
This Topology will carry traffic across a set of Attested Devices which currently
meet at a defined set of Trustworthiness Vectors.</li>
        <li>A Relying Party is able to use mechanisms such as
<xref target="I-D.ietf-lsr-flex-algo"/>'s affinity to include/exclude links as part
of the Trusted Topology based on the appraisal of a Stamped Passport.</li>
        <li>Customer designated Sensitive Subnets and their requested Trustworthiness
Vectors have been identified and associated with external interfaces to/from
Attested Devices at the edge of a network. Traffic to a Sensitive Subnet
can be passed into the Trusted Topology by the Attested Device.</li>
        <li>Relying Party/Verifier B trusts information signed by Verifier A.  Verifier
B has also been pre-provisioned with certificates or public keys necessary
to confirm that Stamped Passports came from Verifier A.</li>
      </ul>
    </section>
    <section anchor="end-to-end-solution">
      <name>End-to-end Solution</name>
      <section anchor="network-topology-assembly">
        <name>Network Topology Assembly</name>
        <t>To be included in a Trusted Topology, Stamped Passports are shared between
Attested Devices (such as routers) as part of link layer authentication.
Upon receiving and appraising the Stamped Passport during the link layer
authentication phase, the Relying Party Attested Device decides if this link
should be added as an active adjacency for a particular Trusted Topology.
In <xref target="fig-topology"/> below, this might be done by applying an Appraisal Policy for Attestation
Results. The policy within each device might specify the evalutation of a
'hardware' claim as defined in <xref target="I-D.ietf-rats-ar4si"/>, Section 2.3.4. With the appraisal, an Attesting Device be most recently
appraised with the 'hardware' Trustworthiness Claim in the 'affirming' range.
If Attested Device has been appraised outside that range, it would not become
part of the Trustworthy Topology.</t>
        <t>When enough links have been successfully added, the Trusted Topology will
support edge-to-edge forwarding as routing protocols flood the adjacency
information across the network domain.</t>
        <figure anchor="fig-topology">
          <name>Trusted Path Topology Assembly</name>
          <artwork><![CDATA[
               .------------.                .----------.
               | Attested   |                | Edge     |
 .----------.  | Device 'x' |                | Attested |
 | Attested |  |            |                | Device   |
 | Device   |  |            |                |          |
 |          |  |        trust>---------------<no_trust  |
 |  no_trust>--<trust       |  .----------.  |          |---Sensitive
 |          |  '------------'  |     trust>==<trust     |   Subnet
 |     trust>==================<trust     |  |          |
 '----------'                  |          |  '----------'
                               | Attested |
                               | Device   |
                               '----------'
]]></artwork>
        </figure>
        <t>As the process described above repeats over time across the set of links
within a network domain, Trusted Topologies can be extended and maintained.
Traffic to and from Sensitive Subnets is then identified at the edges of
the network domain and passed into this Trusted Topology.  Traffic exchanged
with Sensitive Subnets can then be forwarded across that Trusted Topology
from all edges of the network domain.  After the initial Trusted Topology
establishment, new and existing devices will continue to provide incremental
Stamped Passports.  As each link is added/removed from the Trusted Topology,
the topology will adjust itself accordingly.</t>
        <t>Ultimately from an operator and users point of view, the delivered network
will be more secure and therefore the service provided more valuable. As
network operators attach great importance to the innate security of links,
also delivering security for transited network and networking devices will
also prove valuable.</t>
      </section>
      <section anchor="attestation-information-flows">
        <name>Attestation Information Flows</name>
        <t>Critical to the establishment and maintenance of a Trusted Topology is the
Stamped Passport.  A Stamped Passport is comprised of Evidence from both
an Attester and a Verifier.  A Stamped Passport is a valid type of AR-augmented
evidence as described in <xref target="I-D.ietf-rats-ar4si"/>.</t>
        <t>Stamped Passports are exchanged between adjacent network devices over a link
layer protocols like 802.1x or MACSEC.  As both sides of a link may need
might need to appraise the other, independent Stamped Passports will often
be transmitted from either side of the link.  Additionally, as link layer
protocols will continuously re-authenticate the link, this allows for fresh
Stamped Passports to be constantly appraised by either side of the connection.</t>
        <t>Each Stamped Passport will include the most recent Verifier provided Attestation
Results, as well as the most recent TPM Quote for that Attester.  Upon receiving
this information as part of link layer authentication, the Relying Party
Router appraises the results and decides if this link should be added to
a Trusted Topology.</t>
        <t><xref target="fig-timing"/> describes this flow of information using the time definitions described in <xref target="RFC9334"/>, and the information flows defined in Section 7 of <xref target="RATS-Interactions"/>.  This figure is also a valid embodiment of the "Interaction Model" described
within <xref target="I-D.ietf-rats-ar4si"/>.  (Note that the Relying Party must also be an Attested Device in order
to attract Sensitive Subnet traffic which may flow from the Attester.)</t>
        <figure anchor="fig-timing">
          <name>Trusted Path Timing</name>
          <artwork><![CDATA[
  .------------------.
  | Attester         |
  |                  |
  | (Attested Device |
  |   / Router)      |                           .------------------.
  |  .-------------. |                           | Relying Party    |
  |  | TPM based   | |                           |   / Verifier B   |
  |  | Attesting   | |           .----------.    |                  |
  |  | Environment | |           | Verifier |    | (Attested Device |
  |  '-------------' |           |     A    |    |   / Router)      |
  '------------------'           '----------'    '------------------'
        time(VG)                       |                 |
          |<------nonce--------------time(NS)            |
          |                            |                 |
 time(EG)(1)------Evidence------------>|                 |
          |                          time(RG)            |
          |<------Attestation Results-(2)                |
          ~                            ~                 ~
        time(VG')?                     |                 |
          ~                            ~                 ~
          |<------nonce---------------------------------(3)time(NS')
          |                            |                 |
time(EG')(4)------Stamped Passport---------------------->|
          |                            |   time(RG',RA')(5)
                                                        (6)
                                                         ~
                                                      time(RX')
]]></artwork>
        </figure>
        <t>To summarize <xref target="fig-timing"/> above, Evidence about a specific Attester is generated.
Some subset of this
evidence will be in the form of PCR quotes which are signed by a TPM that
exists as the Attester's Attesting Environment. This Evidence will be delibered
to and appraised by Verifier A.  Verifier A will then appraise the Attester
and give it a Trustworthiness Vector.  This Trustworthiness Vector is then
signed by Verifier A and be returned as Attestation Results to the Attester.
Later, when a request comes in from a Relying Party, the Attester assembles
and returns a Stamped Passport.  The Stamped Passport contains all the information
necessary for Verifier B to appraise the most recent Trustworthiness Vector
of the Attester.  Based on the Verifier B appraisal, the link will be included
or not in a Trusted Topology maintained on the Relying Party.</t>
        <t>More details on the mechanisms used in the construction, verification, and
transmitting of the Stamped Passport are listed below.  These numbers match
to both the numbered steps of <xref target="fig-timing"/> and numbered steps
described in Section 3 of <xref target="I-D.ietf-rats-ar4si"/>:</t>
        <section anchor="step-1">
          <name>Step 1</name>
          <t>Evidence about and Attester is generated.  A portion of this Evidence will
include a PCR quote signed by a TPM private LDevID key that exists within
the Attester's TPM based Attesting Environment.  The Attester sends a signed
TPM Quote which includes PCR measurements to Verifier A at time(EG).</t>
          <t>There are two alternatives for Verifier A to acquire this signed Evidence:</t>
          <ul spacing="normal">
            <li>Subscription to the &lt;attestation&gt; stream defined in <xref target="stream-subscription"/>.
Note: this method is recommended as it will minimize the interval between
when a PCR change is made in a TPM, and when the PCR change appraisal is
incorporated within a subsequent Stamped Passport.</li>
            <li>Periodic polling of RPC &lt;tpm20-challenge-response-attestation&gt; or the RPC
&lt;tpm12-challenge-response-attestation&gt; which are defined in <xref target="I-D.ietf-rats-yang-tpm-charra"/>.</li>
          </ul>
        </section>
        <section anchor="step-2">
          <name>Step 2</name>
          <t>Verifier A appraises the Evidence from Step 1.  A portion of this appraisal
process will follow the appraisal process flow described below. This appraisal
process <bcp14>MUST</bcp14> be able to set at least the following set of Trustworthiness
Claims from <xref target="I-D.ietf-rats-ar4si"/>: 'hardware', 'instance-identity',
and 'executables'.  The establishment
of a Trustworthiness Vector uses the following <xref target="verifier-A"/> logic on the Verifier:</t>
          <figure anchor="verifier-A">
            <name>Verifier A Appraisal Flow</name>
            <artwork><![CDATA[
Start: TPM Quote Received, log received, or appraisal timer expired
       for the the Attesting network device.

Appraisal 0: set Trustworthiness Vector = Null

Appraisal 1: Is there sufficient fresh signed evidence to appraise?
  (yes) - No Action
  (no) -  Goto End

Appraisal 2: Appraise Hardware Integrity PCRs
   if (hardware NOT "0") - push onto vector
   if (hardware NOT affirming or warning), go to End

Appraisal 3: Appraise Attesting Environment identity
   if (instance-identity <> "0") - push onto vector

Appraisal 4: Appraise executable loaded and filesystem integrity
   if (executables NOT "0") - push onto vector
   if (executables NOT affirming or warning), go to End

Appraisal 5: Appraise all remaining Trustworthiness Claims
        Independently and set as appropriate.

End
]]></artwork>
          </figure>
          <t>After the appraisal and generation of the Trustworthiness Vector, the following
are assembled as the set of Attestation Results from this particular appraisal
cycle:</t>
          <t>(2.1) the Public Attestation Key which was used to validate the TPM Quote
of Step 1.  This is encoded by &lt;public-key&gt;, &lt;public-key-format&gt;,
and &lt;public-key-algorithm-type&gt;.</t>
          <t>(2.2) the appraised Trustworthiness Vector of the Attester as calculated
in <xref target="verifier-A"/></t>
          <t>(2.3) the PCR state information from the TPM Quote of (1) plus the time information
associated with the TPM Quote of (1).  Specifically if the Attester has a
TPM2, then the values of the TPM PCRs are included (i.e., &lt;TPM2B_DIGEST&gt;,
&lt;tpm20-hash-algo&gt;, and &lt;pcr-index&gt;), as are the timing counters from the
TPM (i.e., &lt;clock&gt;, &lt;reset-counter&gt;, &lt;restart-counter&gt;, and &lt;safe&gt;).
Likewise if the Attester has a TPM1.2, the TPM PCR values of the &lt;pcr-index&gt;
and &lt;pcr-value&gt; are included.  Timing information comes from the Verifier
itself via the &lt;timestamp&gt; object.</t>
          <t>(2.4) a Verifier A signature across (2.1) though (2.3). This signature is
encoded by &lt;verifier-signature&gt;, &lt;verifier-key-algorithm-type&gt;, and
&lt;verifier-signature-key-name&gt;.</t>
          <t>Immediately subsequent to each Verifier appraisal cycle of an Attester, these
Attestation Results <bcp14>MUST</bcp14> be pushed to the Attesting Router.   This is done
via a daatstore write to the following YANG model on the Attester.  A YANG
tree showing the relevant YANG objects is below.  The YANG model describing
each of these objects is described later in the document.  Note however that
although the YANG model shows the specific objects which are needed, the
specific set of objects needs to be encoded in CDDL.  This makes the payload
going over TLS more efficient.  Look for this encoding in a new version of
the draft which is pending.</t>
          <figure anchor="fig-results-tree">
            <name>Attestation Results Tree</name>
            <sourcecode type="yangtree">
module: ietf-trustworthiness-claims
  +--rw attestation-results!
     +--rw (tpm-specification-version)?
        +--:(tpm20-attestation-results-cddl) {taa:tpm20}?
        |  +--rw tpm20-attestation-results-cddl
        |     +--rw trustworthiness-vector
        |     |  +--rw hardware?            hardware
        |     |  +--rw instance-identity?   instance-identity
        |     |  +--rw executables?         executables
        |     |  +--rw configuration?       configuration
        |     +--rw tpm20-pcr-selection* [tpm20-hash-algo]
        |     |  +--rw tpm20-hash-algo    identityref
        |     |  +--rw pcr-index*         tpm:pcr
        |     +--rw TPM2B_DIGEST                         binary
        |     +--rw clock                                uint64
        |     +--rw reset-counter                        uint32
        |     +--rw restart-counter                      uint32
        |     +--rw safe                                 boolean
        |     +--rw attester-certificate-name
        |     |       tpm:certificate-name-ref
        |     +--rw appraisal-timestamp
        |     |       yang:date-and-time
        |     +--rw verifier-algorithm-type              identityref
        |     +--rw verifier-signature                   binary
        |     +--rw verifier-certificate-keystore-ref
        |             tpm:certificate-name-ref
        +--:(tpm12-attestation-results-cddl) {taa:tpm12}?
           +--rw tpm12-attestation-results-cddl
              +--rw trustworthiness-vector
              |  +--rw hardware?            hardware
              |  +--rw instance-identity?   instance-identity
              |  +--rw executables?         executables
              |  +--rw configuration?       configuration
              +--rw pcr-index*                           pcr
              +--rw tpm12-pcr-value*                     binary
              +--rw tpm12-hash-algo                      identityref
              +--rw TPM12-quote-timestamp
              |       yang:date-and-time
              +--rw attester-certificate-name
              |       tpm:certificate-name-ref
              +--rw appraisal-timestamp
              |       yang:date-and-time
              +--rw verifier-algorithm-type              identityref
              +--rw verifier-signature                   binary
              +--rw verifier-certificate-keystore-ref
                      tpm:certificate-name-ref
</sourcecode>
          </figure>
        </section>
        <section anchor="step-3">
          <name>Step 3</name>
          <t>At time(NS') some form of time-based freshness (such as a nonce or Epoch
Handle <xref target="RATS-Interactions"/>) will be generated in a way which makes it available to the Relying Party.
Soon after time(NS'), a Relying Party will make a Link Layer authentication
request to an Attester via a either <xref target="MACSEC"/> or <xref target="IEEE-802.1X"/>.  This connection request <bcp14>MUST</bcp14> expect the return of <xref target="RFC3748"/> credentials from the Attester.</t>
        </section>
        <section anchor="step-4">
          <name>Step 4</name>
          <t>Upon receipt of the Link Layer request from Step 3, a Stamped Passport is
generated and sent to the Relying Party.  The Stamped Passport <bcp14>MUST</bcp14> include
the following:</t>
          <t>(4.1) The Attestation Results from Step 2</t>
          <t>(4.2) New signed, verifiably fresh PCR measurements based on a TPM quote
at time(EG') which incorporates the freshness information known by the Relying
Party from Step 3.  If it is a nonce, the freshness information will have
been delivered as part of the link layer connection request in Steps 3.</t>
          <t>Stamped Passports contain following objects, defined in this document via
YANG.  A subsequent draft will convert the objects below into CDDL format
so that the objects can efficiently be passed over EAP.</t>
          <t>If an Attester includes a TPM2, these YANG objects are:</t>
          <figure anchor="fig-tpm2-passport">
            <name>YANG Tree for a TPM2 Stamped Passport</name>
            <sourcecode type="yangtree">
    +---n tpm20-stamped-passport
       +--ro attestation-results
       |  +--ro trustworthiness-vector
       |  |  +--ro hardware?            hardware
       |  |  +--ro instance-identity?   instance-identity
       |  |  +--ro executables?         executables
       |  |  +--ro configuration?       configuration
       |  +--ro tpm20-pcr-selection* [tpm20-hash-algo]
       |  |  +--ro tpm20-hash-algo    identityref
       |  |  +--ro pcr-index*         tpm:pcr
       |  +--ro TPM2B_DIGEST                         binary
       |  +--ro clock                                uint64
       |  +--ro reset-counter                        uint32
       |  +--ro restart-counter                      uint32
       |  +--ro safe                                 boolean
       |  +--ro attester-certificate-name
       |  |       tpm:certificate-name-ref
       |  +--ro appraisal-timestamp
       |  |       yang:date-and-time
       |  +--ro verifier-algorithm-type              identityref
       |  +--ro verifier-signature                   binary
       |  +--ro verifier-certificate-keystore-ref
       |          tpm:certificate-name-ref
       +--ro tpm20-quote
          +--ro TPMS_QUOTE_INFO    binary
          +--ro quote-signature    binary
</sourcecode>
          </figure>
          <t>Note that where a TPM2.0 is used, the PCR numbers and hash algorithms quoted
in Step 1 <bcp14>MUST</bcp14> match the PCR numbers and hash algorithms quoted in this step.</t>
          <t>And if the Attester is a TPM1.2, the YANG object are:</t>
          <figure anchor="fig-tpm12-passport">
            <name>YANG Tree for a TPM1.2 Stamped Passport</name>
            <sourcecode type="yangtree">
    +---n tpm12-stamped-passport
       +--ro attestation-results
       |  +--ro trustworthiness-vector
       |  |  +--ro hardware?            hardware
       |  |  +--ro instance-identity?   instance-identity
       |  |  +--ro executables?         executables
       |  |  +--ro configuration?       configuration
       |  +--ro pcr-index*                           pcr
       |  +--ro tpm12-pcr-value*                     binary
       |  +--ro tpm12-hash-algo                      identityref
       |  +--ro TPM12-quote-timestamp
       |  |       yang:date-and-time
       |  +--ro attester-certificate-name
       |  |       tpm:certificate-name-ref
       |  +--ro appraisal-timestamp
       |  |       yang:date-and-time
       |  +--ro verifier-algorithm-type              identityref
       |  +--ro verifier-signature                   binary
       |  +--ro verifier-certificate-keystore-ref
       |          tpm:certificate-name-ref
       +--ro tpm12-quote
          +--ro TPM_QUOTE2?   binary
</sourcecode>
          </figure>
          <t>With either of these passport formats, if the TPM quote is verifiably fresh,
then the state of the Attester can be appraised by a network peer.</t>
          <t>Note that with <xref target="MACSEC"/> or <xref target="IEEE-802.1X"/>, Step 3 plus Step 4 will repeat periodically independently of any subsequent
iteration Steps 1 and Step 2. This allows for periodic reauthentication of
the link layer in a way not bound to the updating of Verifier A's Attestation
Results.</t>
        </section>
        <section anchor="step-5">
          <name>Step 5</name>
          <t>Upon receipt of the Stamped Passport generated in Step 4, the Relying Party
appraises this Stamped Passport as per its Appraisal Policy for Attestation
Results. The result of this application will determine how the Stamped Passport
will impact adjacencies within a Trusted Topology.  The decision process
is as follows:</t>
          <t>(5.1) Verify that (4.2) includes the freshness context from Step 3.</t>
          <t>(5.2) Use a local certificate to validate the signature (4.1).</t>
          <t>(5.3) Verify that the hash from (4.2) matches (4.1)</t>
          <t>(5.4) Use the identity of (2.1) to validate the signature of (4.2).</t>
          <t>(5.5) Failure of any steps (5.1) through (5.4) means the link does not meet
minimum validation criteria, therefore appraise the link as having a null
Verifier B Trustworthiness Vector.  Jump to Step 6.</t>
          <t>(5.6) Compare the time(EG) TPM state to the time(EG') TPM state</t>
          <ul spacing="normal">
            <li>
              <t>If TPM2.0  </t>
              <ol spacing="normal" type="1">
                <li>If the &lt;TPM2B_DIGEST&gt;, &lt;reset-counter&gt;, &lt;restart-counter&gt; and &lt;safe&gt;
   are equal between the Attestation Results and the TPM Quote at time(EG')
   then Relying Party can accept (2.1) as the link's Trustworthiness Vector.
   Jump to Step 6.</li>
                <li>If the &lt;reset-counter&gt;, &lt;restart-counter&gt; and &lt;safe&gt; are equal between
   the Attestation Results and the TPM Quote at time(EG'), and the &lt;clock&gt;
   object from time(EG') has not incremented by an unacceptable number of seconds
   since the Attestation Result, then Relying Party can accept (2.1) as the
   link's Trustworthiness Vector. Jump to Step 6.)</li>
                <li>Assign the link a null Trustworthiness Vector.</li>
              </ol>
            </li>
            <li>
              <t>If TPM1.2  </t>
              <ol spacing="normal" type="1">
                <li>If the &lt;pcr-index&gt;'s and &lt;tpm12-pcr-value&gt;'s are equal between the Attestation
   Results and the TPM Quote at time(EG'), then Relying Party can accept (2.1)
   as the link's Trustworthiness Vector. Jump to step (6).</li>
                <li>If the time hasn't incremented an unacceptable number of seconds from the
   Attestation Results &lt;timestamp&gt; and the system clock of the Relying Party,
   then Relying Party can accept (2.1) as the link's Trustworthiness Vector.
   Jump to step 6.)</li>
                <li>Assign the link a null Trustworthiness Vector.</li>
              </ol>
            </li>
          </ul>
          <t>(5.7) Assemble the Verifier B Trustworthiness Vector</t>
          <ol spacing="normal" type="1">
            <li>Copy Verifier A Trustworthiness Vector to Verifier B Trustworthiness Vector</li>
            <li>Prune any Trustworthiness Claims the Relying Party doesn't accept from this
  Verifier.</li>
          </ol>
        </section>
        <section anchor="step-6">
          <name>Step 6</name>
          <t>After the Trustworthiness Vector has been validated or reset, based on the
link's Trustworthiness Vector, the Relying Party adjusts the link affinity
of the corresponding ISIS <xref target="I-D.ietf-lsr-flex-algo"/> topology.  ISIS will then replicate the link state across the IGP domain.
Traffic will then avoid links which do not have a qualifying Trustworthiness
Vector.</t>
        </section>
      </section>
    </section>
    <section anchor="YANG-Module">
      <name>YANG Module</name>
      <t>This YANG module imports modules from <xref target="I-D.ietf-rats-yang-tpm-charra"/>, <xref target="I-D.ietf-netconf-crypto-types"/> and <xref target="RFC6021"/>.</t>
      <sourcecode type="YANG">
&lt;CODE BEGINS&gt; ietf-trustworthiness-claims@2024-07-07.yang
module ietf-trustworthiness-claims {
  yang-version 1.1;
  namespace 
   "urn:ietf:params:xml:ns:yang:ietf-trustworthiness-claims";
  prefix tc;
  
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-tcg-algs {
    prefix taa;
    reference
      "draft-ietf-rats-yang-tpm-charra";
  }
  import ietf-tpm-remote-attestation {
    prefix tpm;
    reference
      "draft-ietf-rats-yang-tpm-charra";
  }
   
  organization "IETF";
  contact
    "WG Web:   &lt;http://tools.ietf.org/wg/rats/&gt;
     WG List:  &lt;mailto:rats@ietf.org&gt;

     Editor:   Eric Voit
               &lt;mailto:evoit@cisco.com&gt;";
               
  description
    "This module contains conceptual YANG specifications for  
    subscribing to attestation streams being generated from TPM chips.
    
    Copyright (c) 2020 IETF Trust and the persons identified as  
    authors of the code.  All rights reserved.

    Redistribution and use in source and binary forms, with or without 
    modification, is permitted pursuant to, and subject to the license 
    terms contained in, the Simplified BSD License set forth in  
    Section 4.c of the IETF Trust's Legal Provisions Relating to IETF 
    Documents (https://trustee.ietf.org/license-info).

    This version of this YANG module is part of RFC XXXX; see the RFC 
    itself for full legal notices.";
  
  revision 2021-11-03 {
    description
      "Initial version.";    
    reference 
      "draft-voit-rats-trustworthy-path-routing";
  }


  /*
   * TYPEDEF
   */ 

  typedef trustworthiness-claim {
    type int8;
    description
      "A Verifier asserted value designed to enable a common 
      understanding of a Verifier trustworthiness appraisal.  The
      value assignments for this 8 bit signed integer will follow 
      these guidelines:

      Affirming: The Verifier affirms the Attester support for this 
      aspect of trustworthiness
        - Values 2 to 31: A standards enumerated reason for affirming.
        - Values -2 to -32: A non-standard reason for affirming.

      Warning: The Verifier warns about this aspect of trustworthiness.
        - Values 32 to 63: A standards enumerated reason for the 
          warning.
        - Values -33 to -64: A non-standard reason for the warning.

      Contraindicated: The Verifier asserts the Attester is explicitly 
      untrustworthy in regard to this aspect.    
        - Values 64 to 127: A standards enumerated reason for the 
          contraindication.
        - Values -65 to -128: A non-standard reason for the 
          contraindication.
  
      None: The Verifier makes no assertions about this Trustworthiness 
      Claim.  The following values are reserved with the following 
      meanings across all instances of trustworthiness-claim.
        - Value 0: Note: this should always be always treated 
          equivalently by the Relying Party as no claim being made. 
          I.e., the RP's Appraisal Policy for Attestation Results 
          SHOULD NOT make any distinction between a Trustworthiness 
          Claim with enumeration '0', and no Trustworthiness Claim 
          being provided.
        - Value 1: The Evidence received contains unexpected elements 
          which the Verifier is unable to parse.  An example might be 
          that the wrong type of Evidence has been delivered.
        - Value -1: An unexpected error occurred during the Verifier's 
          appraisal processing. Note: while no claim is being made, the 
          Relying Party MAY make a distinction between a 
          Trustworthiness Claim with enumeration '-1', and no 
          Trustworthiness Claim being provided.";
  }
  
  typedef hardware {
    type trustworthiness-claim;
    description
      "A Verifier has appraised any Attester hardware and firmware 
      which are able to expose fingerprints of their identity and 
      running code.
      
      The following are specific reserved values of hardware and
      the meanings of these reserved values:
      
      0: No assertion     
      
      1: The Verifer cannot parse unexpected Evidence
      
      -1:Verifier malfunction
           
      2: An Attester has passed its hardware and/or firmware 
         verifications needed to demonstrate that these are 
         genuine/supported.

      32:An Attester contains only genuine/supported hardware and/or 
         firmware, but there are known security vulnerabilities.
   
      96:Attester hardware and/or firmware is recognized, but its 
         trustworthiness is contraindicated.
   
      97:A Verifier does not recognize an Attester's hardware or 
         firmware, but it should be recognized.";
  }
  
  typedef instance-identity {
    type trustworthiness-claim;
    description
      "A Verifier has appraised an Attesting Environment's unique 
      identity based upon private key signed Evidence which can be 
      correlated to a unique instantiated instance of the Attester.  
      (Note: this Trustworthiness Claim should only be generated if 
      the Verifier actually expects to recognize the unique identity 
      of the Attester.)

      The following are specific reserved values of instance-identity 
      and the meanings of these reserved values:
      
      0: No assertion     
      
      1: The Verifer cannot parse unexpected Evidence
      
      -1:Verifier malfunction
            
      2: The Attesting Environment is recognized, and the associated 
         instance of the Attester is not known to be compromised.
   
      96:The Attesting Environment is recognized, and but its unique 
         private key indicates a device which is not trustworthy.
   
      97:The Attesting Environment is not recognized; however the 
         Verifier believes it should be.";
  }
  
  typedef executables {
    type trustworthiness-claim;
    description
      "A Verifier has appraised and evaluated relevant runtime files, 
      scripts, and/or other objects which have been loaded into the 
      Target environment's memory.
      
      The following are specific reserved values of executables and
      the meanings of these reserved values:
      
      0: No assertion     
      
      1: The Verifer cannot parse unexpected Evidence
      
      -1:Verifier malfunction
      
      2: Only a recognized genuine set of approved executables, 
         scripts, files, and/or objects have been loaded during 
         and after the boot process.
   
      3: Only a recognized genuine set of approved executables have 
         been loaded during the boot process.
   
      32:Only a recognized genuine set of executables, scripts, files, 
         and/or objects have been loaded.  However the Verifier cannot 
         vouch for a subset of these due to known bugs or other known 
         vulnerabilities.
   
      33:Runtime memory includes executables, scripts, files, and/or 
         objects which are not recognized.
   
      96:Runtime memory includes executables, scripts, files, and/or 
         object which are contraindicated.
      
      99:Cryptographic validation of the Evidence has failed.";
  }
  
  typedef configuration {
    type trustworthiness-claim;
    description
      "A Verifier has appraised an Attester's configuration, and is 
      able to make conclusions regarding the exposure of known 
      vulnerabilities.

      The following are specific reserved values of configuration and
      the meanings of these reserved values: 
      
      0: No assertion     
      
      1: The Verifer cannot parse unexpected Evidence
      
      -1:Verifier malfunction
      
      2: The configuration is a known and approved config
   
      3: The configuration includes or exposes no known vulnerabilities
   
      32:The configuration includes or exposes known vulnerabilities
   
      64:The configuration is unsupportable as it exposes unacceptable 
         security vulnerabilities.";
  }

  
  /*
   * GROUPINGS
   */

  grouping trustworthiness-vector {
    description
      "Allows the inclusion of a Trustworthiness Vector into
      other constructs.";
    container trustworthiness-vector {
      description
        "One or more Trustworthiness Claims assigned which expose the 
        Verifiers evaluation of the Evidence associated with the 
        AIK which signed as associated TPM Quote.";  
      leaf hardware {
        type hardware; 
        description 
          "An 8 bit signed integter encoded per the typedef.";
      }
      leaf instance-identity {
        type instance-identity; 
        description 
          "An 8 bit signed integter encoded per the typedef.";
      }
      leaf executables {
        type executables; 
        description 
          "An 8 bit signed integter encoded per the typedef.";
      }
      leaf configuration {
        type configuration; 
        description 
          "An 8 bit signed integter encoded per the typedef.";
      }
    }
  }
  
  grouping verifier-evidence {
    description  
      "Evidence generated by the Verifier.";
    leaf appraisal-timestamp {
      type yang:date-and-time;
      mandatory true;
      description
        "The timestamp of the Verifier's appraisal.  This can be used
        by a Relying Party to determine the freshness of the 
        attestation results.";
    }
    leaf verifier-algorithm-type {
      type identityref {
        base taa:asymmetric;
      }
      mandatory true;
      description
        "Platform asymmetric algorithm used in the Verifier signature
        process.";    
    } 
    leaf verifier-signature {
      type binary;
      mandatory true;
      description
        "Signature of the Verifier across all the current objects in 
        the attestation-results container except for 'verifier-
        signature' and 'verifier-certificate-keystore-ref'.
        This assumes CDDL encoding of the objects in the current
        order of this YANG model.";
    }   
    leaf verifier-certificate-keystore-ref {
      type tpm:certificate-name-ref;
      mandatory true;
      description
        "A reference to a specific certificate to an asymmetric key 
        in the Keystore for the Verifier which can be used to validate  
        the 'verifier-signature'. Note that the
        'name' reference must be globally unique so that it can be 
        read by the Relying Party in a way which identifies a 
        specific Verifier."; 
    }
  }
   
  grouping tpm20-cddl-attestation-results {
    description
      "Elements combined into a CDDL representation for TPM2.0.";
    uses trustworthiness-vector;
    list tpm20-pcr-selection {
      key "tpm20-hash-algo";
      description
        "Specifies the list of PCRs and Hash Algorithms used by the
        Verifier.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
         TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.9.7";
      uses tpm:tpm20-hash-algo;
      leaf-list pcr-index {
        type tpm:pcr;
        description
          "The numbers of the PCRs associated with the TPM2B_DIGEST.";
      }
    }
    leaf TPM2B_DIGEST {
      mandatory true;
      type binary;
      description
        "A hash of the latest PCR values (and the hash algorithm used)
        which have been returned from a Verifier for the selected PCRs
        identified within TPML_PCR_SELECTION.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
        TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.12.1";
    }    
    leaf clock {
      mandatory true;
      type uint64;
      description
        "Clock is a monotonically increasing counter that advances 
         whenever power is applied to a TPM2. The value of Clock is 
         incremented each millisecond.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
         TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.11.2";
    }
    leaf reset-counter {
      mandatory true;
      type uint32;
      description
        "This counter increments on each TPM Reset.  The most common
        TPM Reset would be due to a hardware power cycle.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
         TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.11.3";
    }
    leaf restart-counter {
      mandatory true;
      type uint32;
      description
        "This counter shall increment by one for each TPM Restart or
        TPM Resume. The restartCount shall be reset to zero on a TPM
        Reset.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
         TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.11.4";
    }
    leaf safe {
      mandatory true;
      type boolean;
      description
        "This parameter is set to YES when the value reported in Clock
        is guaranteed to be unique for the current Owner. It is set to
        NO when the value of Clock may have been reported in a previous
        attestation or access.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
        TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.11.5";
    }
    leaf attester-certificate-name {
      mandatory true;
      description
        "The Attester is associated with these results.";
      type tpm:certificate-name-ref;   
    }
    uses verifier-evidence;
  }

  grouping tpm12-cddl-attestation-results {
    description
      "Elements combined into a CDDL representation for TPM1.2.";
    uses trustworthiness-vector;
    uses tpm:tpm12-pcr-selection;
    leaf-list tpm12-pcr-value {
      type binary;
      description
        "The list of TPM_PCRVALUEs from each PCR selected in sequence
        of tpm12-pcr-selection.";
      reference
        "https://www.trustedcomputinggroup.org/wp-content/uploads/
         TPM-Main-Part-2-TPM-Structures_v1.2_rev116_01032011.pdf
         Section 10.9.7";
    }
    uses tpm:tpm12-hash-algo {   
      refine "tpm12-hash-algo" {
        mandatory true;
      }    
    }
    leaf TPM12-quote-timestamp {
      type yang:date-and-time;
      mandatory true;
      description
        "The timestamp for when the indicator of freshness (such as a 
        nonce) was generated.  This is the indicator of freshness
        which was used in the generation of the TPM1.2 quote.  This 
        timestamp can be used by a Relying Party to determine the 
        freshness of the attestation results.";
    }
    leaf attester-certificate-name {
      mandatory true;
      description
        "The Attester is associated with these results.";
      type tpm:certificate-name-ref;   
    }
    uses verifier-evidence;
  }
  
  /*
   * NOTIFICATIONS
   */  

  notification tpm20-stamped-passport {
    description
      "The augmentation of the most recent Attestation Results 
      delivered from a Verifier with a TPM2.0 Quote.";
    container attestation-results {
      description
        "The latest Verifier delivered Attestation Results.";
      uses tpm20-cddl-attestation-results;
    }
    container tpm20-quote {
      description
        "The TPM2.0 quote delivered in response to a connectivity
        request.";    
      leaf TPMS_QUOTE_INFO {
        type binary;
        mandatory true;
        description
          "A hash of the latest PCR values (and the hash algorithm 
           used) which have been returned from a Verifier for the 
           selected PCRs and Hash Algorithms.";
        reference
          "https://www.trustedcomputinggroup.org/wp-content/uploads/
           TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 10.12.1";
      }
      leaf quote-signature {
        type binary;
        mandatory true;
        description
          "Quote signature returned by TPM Quote.  The signature was
           generated using the key associated with the
           certificate 'name'.";
        reference
          "https://www.trustedcomputinggroup.org/wp-content/uploads/
           TPM-Rev-2.0-Part-2-Structures-01.38.pdf  Section 11.2.1";
      }
    }
  }

  notification tpm12-stamped-passport {
    description
      "The augmentation of the most recent Attestation Results 
      delivered from a Verifier with a TPM1.2 Quote.";
    container attestation-results {
      description
        "The latest Verifier delivered Attestation Results.";
      uses tpm12-cddl-attestation-results;
    }
    container tpm12-quote {
      description
        "The TPM1.2 quote delivered in response to a connectivity
        request.";    
      leaf TPM_QUOTE2 {
        type binary;
        description
          "Result of a TPM1.2 Quote2 operation. This includes PCRs,
           signatures, locality, the provided nonce and other data which
           can be further parsed to appraise the Attester.";
        reference
          "TPM1.2 commands rev116 July 2007, Section 16.5";
      }
    }
  }
  
  /*
   * DATA NODES
   */  

  container attestation-results {
    presence
      "Indicates that Verifier has appraised the security posture of 
      the Attester, and returned the results within this container.";
    description
      "Retains the most recent Attestation Results for this Attester.
      It must only be written by a Verfier which is to be trusted by a
      Relying Party."; 

    choice tpm-specification-version {
      description
        "Identifies the cryptoprocessor API set which drove the 
        Attestation Results.";
      case tpm20-attestation-results-cddl {
        if-feature "taa:tpm20";
        description
          "Attestation Results which are returned from the 
           evaluation of Evidence which includes a TPM2 quote.";
        container tpm20-attestation-results-cddl {
          description
            "Attestation Results which are returned from the 
             evaluation of Evidence which includes a TPM2 quote.";
          uses tpm20-cddl-attestation-results;
        }
      }
      case tpm12-attestation-results-cddl {
        if-feature "taa:tpm12";
        description
          "Attestation Results which are returned from the 
           evaluation of Evidence which includes a TPM1.2 quote.";
        container tpm12-attestation-results-cddl {
          description
            "Attestation Results which are returned from the 
             evaluation of Evidence which includes a TPM1.2 quote.";
          uses tpm12-cddl-attestation-results;
        }
      }
    }            
  }
}
&lt;CODE ENDS&gt;
</sourcecode>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Verifiers are limited to the Evidence available for appraisal from a Router.
Although the state of the art is improving, some exploits may not be visible
via Evidence.</t>
      <t>Only security measurements which are placed into PCRs are capable of being
exposed via TPM Quote at time(EG').</t>
      <t>Successful attacks on an Verifier have the potential of affecting traffic
on the Trusted Topology.</t>
      <t>For Trusted Path Routing, links which are part of the FlexAlgo are visible
across the entire IGP domain.  Therefore a compromised device will know when
it is being bypassed.</t>
      <t>Access control for the objects in <xref target="fig-results-tree"/> should be tightly
controlled so that it becomes difficult for the Stamped
Passport to become a denial of service vector.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC6021">
          <front>
            <title>Common YANG Data Types</title>
            <seriesInfo name="DOI" value="10.17487/RFC6021"/>
            <seriesInfo name="RFC" value="6021"/>
            <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>This document introduces a collection of common data types to be used with the YANG data modeling language. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-ar4si">
          <front>
            <title>Attestation Results for Secure Interactions</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-ar4si-06"/>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Thomas Hardjono" initials="T." surname="Hardjono">
              <organization>MIT</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Linaro</organization>
            </author>
            <author fullname="Vincent Scarlata" initials="V." surname="Scarlata">
              <organization>Intel</organization>
            </author>
            <date day="4" month="March" year="2024"/>
            <abstract>
              <t>   This document defines reusable Attestation Result information
   elements.  When these elements are offered to Relying Parties as
   Evidence, different aspects of Attester trustworthiness can be
   evaluated.  Additionally, where the Relying Party is interfacing with
   a heterogeneous mix of Attesting Environment and Verifier types,
   consistent policies can be applied to subsequent information exchange
   between each Attester and the Relying Party.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-netconf-crypto-types">
          <front>
            <title>YANG Data Types and Groupings for Cryptography</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-netconf-crypto-types-34"/>
            <author fullname="Kent Watsen" initials="K." surname="Watsen">
              <organization>Watsen Networks</organization>
            </author>
            <date day="16" month="March" year="2024"/>
            <abstract>
              <t>   This document presents a YANG 1.1 (RFC 7950) module defining
   identities, typedefs, and groupings useful to cryptographic
   applications.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <seriesInfo name="DOI" value="10.17487/RFC9334"/>
            <seriesInfo name="RFC" value="9334"/>
            <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>
        </reference>
        <reference anchor="I-D.ietf-rats-yang-tpm-charra">
          <front>
            <title>A YANG Data Model for Challenge-Response-based Remote Attestation Procedures using TPMs</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-yang-tpm-charra-22"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Michael Eckel" initials="M." surname="Eckel">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Shwetha Bhandari" initials="S." surname="Bhandari">
              <organization>ThoughtSpot</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Bill Sulzen" initials="B." surname="Sulzen">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Liang Xia" initials="L." surname="Xia">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Tom Laffey" initials="T." surname="Laffey">
              <organization>Hewlett Packard Enterprise</organization>
            </author>
            <author fullname="Guy Fedorkow" initials="G." surname="Fedorkow">
              <organization>Juniper Networks</organization>
            </author>
            <date day="27" month="February" year="2024"/>
            <abstract>
              <t>   This document defines YANG Remote Procedure Calls (RPCs) and a few
   configuration nodes required to retrieve attestation evidence about
   integrity measurements from a device, following the operational
   context defined in TPM-based Network Device Remote Integrity
   Verification.  Complementary measurement logs are also provided by
   the YANG RPCs, originating from one or more roots of trust for
   measurement (RTMs).  The module defined requires at least one TPM 1.2
   or TPM 2.0 as well as a corresponding TPM Software Stack (TSS), or
   equivalent hardware implementations that include the protected
   capabilities as provided by TPMs as well as a corresponding software
   stack, included in the device components of the composite device the
   YANG server is running on.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="TPM1.2" target="https://trustedcomputinggroup.org/resource/tpm-main-specification/">
          <front>
            <title>TPM 1.2 Main Specification</title>
            <author initials="" surname="TCG" fullname="Trusted Computing Group">
              <organization/>
            </author>
            <date year="2003" month="October"/>
          </front>
        </reference>
        <reference anchor="TPM2.0" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>TPM 2.0 Library Specification</title>
            <author initials="" surname="TCG" fullname="Trusted Computing Group">
              <organization/>
            </author>
            <date year="2013" month="March"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <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>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC3748">
          <front>
            <title>Extensible Authentication Protocol (EAP)</title>
            <seriesInfo name="DOI" value="10.17487/RFC3748"/>
            <seriesInfo name="RFC" value="3748"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="L. Blunk" initials="L." surname="Blunk"/>
            <author fullname="J. Vollbrecht" initials="J." surname="Vollbrecht"/>
            <author fullname="J. Carlson" initials="J." surname="Carlson"/>
            <author fullname="H. Levkowetz" initials="H." role="editor" surname="Levkowetz"/>
            <date month="June" year="2004"/>
            <abstract>
              <t>This document defines the Extensible Authentication Protocol (EAP), an authentication framework which supports multiple authentication methods. EAP typically runs directly over data link layers such as Point-to-Point Protocol (PPP) or IEEE 802, without requiring IP. EAP provides its own support for duplicate elimination and retransmission, but is reliant on lower layer ordering guarantees. Fragmentation is not supported within EAP itself; however, individual EAP methods may support this. This document obsoletes RFC 2284. A summary of the changes between this document and RFC 2284 is available in Appendix A. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RATS-Interactions" target="https://datatracker.ietf.org/doc/html/draft-ietf-rats-reference-interaction-models">
          <front>
            <title>Reference Interaction Models for Remote Attestation Procedures</title>
            <author>
              <organization/>
            </author>
            <date year="2022" month="January"/>
          </front>
        </reference>
        <reference anchor="stream-subscription" target="https://datatracker.ietf.org/doc/draft-ietf-rats-network-device-subscription/">
          <front>
            <title>Attestation Event Stream Subscription</title>
            <author>
              <organization/>
            </author>
            <date year="2021" month="October"/>
          </front>
        </reference>
        <reference anchor="I-D.ietf-lsr-flex-algo">
          <front>
            <title>IGP Flexible Algorithm</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-lsr-flex-algo-26"/>
            <author fullname="Peter Psenak" initials="P." surname="Psenak">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Shraddha Hegde" initials="S." surname="Hegde">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Ketan Talaulikar" initials="K." surname="Talaulikar">
              <organization>Cisco Systems, Inc</organization>
            </author>
            <author fullname="Arkadiy Gulko" initials="A." surname="Gulko">
              <organization>Edward Jones</organization>
            </author>
            <date day="17" month="October" year="2022"/>
            <abstract>
              <t>IGP protocols historically compute the best paths over the network based on the IGP metric assigned to the links.  Many network deployments use RSVP-TE or Segment Routing - Traffic Engineering (SR-TE) to steer traffic over a path that is computed using different metrics or constraints than the shortest IGP path.  This document specifies a solution that allows IGPs themselves to compute constraint-based paths over the network.  This document also specifies a way of using Segment Routing (SR) Prefix-SIDs and SRv6 locators to steer packets along the constraint-based paths.
              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RATS-Device" target="https://datatracker.ietf.org/doc/draft-ietf-rats-tpm-based-network-device-attest">
          <front>
            <title>Network Device Remote Integrity Verification</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="July"/>
          </front>
        </reference>
        <reference anchor="MACSEC" target="https://1.ieee802.org/security/802-1ae/">
          <front>
            <title>802.1AE: MAC Security (MACsec)</title>
            <author initials="M." surname="Seaman" fullname="Mick Seaman">
              <organization/>
            </author>
            <date year="2006" month="January"/>
          </front>
        </reference>
        <reference anchor="IEEE-802.1X" target="https://standards.ieee.org/standard/802_1X-2010.html">
          <front>
            <title>802.1AE: MAC Security (MACsec)</title>
            <author initials="G." surname="Parsons" fullname="Glenn Parsons">
              <organization/>
            </author>
            <date year="2020" month="January"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 1297?>

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Peter Psenak, Shwetha Bhandari, Adwaith Gautham, Annu Singh, Sujal Sheth,
Nancy Cam Winget, and Ned Smith.</t>
    </section>
    <section anchor="open-questions">
      <name>Open Questions</name>
      <t>(1) When there is no available Trusted Topology?</t>
      <t>Do we need functional requirements on how to handle traffic to/from Sensitive
Subnets when no Trusted Topology exists between IGP edges?  The network typically
can make this unnecessary.    For example it is possible to construct a local
IPSec tunnel to make untrusted devices appear as Transparently-Transited
Devices.  This way Secure Subnets could be tunneled between FlexAlgo nodes
where an end-to-end path doesn't currently exist.  However there still is
a corner case where all IGP egress points are not considered sufficiently
trustworthy.</t>
      <t>(2) Extension of the Stamped Passport?</t>
      <t>Format of the reference to the 'verifier-certificate-name' based on WG desire
to include more information in the Stamped Passport.  Also we need to make
sure that the keystore referenced names are globally unique, else we will
need to include a node name in the object set.</t>
      <t>(3) Encoding of objects in CDDL.  A Verifier will want to sign encoded objects
rather than YANG structures.  It is most efficient to encode the Attestation
Results once on the Verifier, and push these down via a YANG model to the
Attester.</t>
    </section>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <contact initials="C. R." surname="Gaddam" fullname="Chennakesava Reddy Gaddam">
        <organization/>
        <address>
          <email>chgaddam@cisco.com</email>
        </address>
      </contact>
      <contact initials="G. C." surname="Fedorkow" fullname="Guy C. Fedorkow">
        <organization/>
        <address>
          <email>gfedorkow@juniper.net</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
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
dzZy2tR/A23JYWvHyQAA

-->

</rfc>
