<?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.7.19 (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-11" 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-11"/>
    <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="2025" month="January" day="09"/>
    <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 imported 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 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 evaluation 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 delivered
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 datastore 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 re-authentication 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@2025-01-09.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 anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-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-07"/>
            <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="2" month="September" 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-23"/>
            <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="29" month="July" 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 anchor="sec-informative-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="2025" month="January"/>
          </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 1298?>

<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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
MaklxskAAA==

-->

</rfc>
