<?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-12" 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-12"/>
    <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="July" day="07"/>
    <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="my-section">
      <name>My Section</name>
      <t>foo</t>
    </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 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-08"/>
            <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="6" month="February" year="2025"/>
            <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.

   This document also defines two serialisations of the proposed
   information model, utilising CBOR and JSON.

              </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="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 1300?>

<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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
DsKvcf77izIMkE9keB+edGHnwDbM1ZJ8o1wICCsAtSrkeNd7OmZC9knKYud7
YmQEXmeTiafZ3RTWyo6VXjY98aOfpAqE+ebCIL5+5ikunvg6RasI37VO4bR0
L7rZZHK6y0wNEKSX9hy3ok8iZ92NNgqQ2Ef+9QibR9lcrHun8Ed4XM1qvdID
rst1eIGd4NSZkpgCyAvgpwtE8BYJuddcDPkID4JSAd4bwlHT3VV8X6VJHcZ5
eepOi7TcOJeAzqRfeWnY/kTsLpyD5KUvOVnE0pdeouLXLfk1yEnK18uINiZp
68D4yc1G9VeGZgHcbT00ZLzkkKIgcdxdpCJlXOzVUeakJdWFbkD+8knXAthe
df2LRAwfTv/CUoY7hm+QGiYeUhkGbnLwqYYMrsJb+tBDNrtdsotm12S/Ojsl
Er3rgEpEWv8Z3nBuRHn/ZOx94lR5Am60nqncOOzu5NZhA8C0wRGs8ybAACf7
zjvNdvNk2z2hrsS8Mo7H80uBIsqlfEmF5OesLuh6Mj5A/MzrZr1Qtbc3OZGj
yUfGhS/duNaOfNdT7SEgYC0y/M8c1BuzT5Tzxv1yckCOv4sqWUIbP95ImEqg
0s4SGLdfMguign9NqYzkymA0uVnU2UhFGSMdFl08+YqdAGxYM2hPupqEagUI
0sGOT6KWIUDuSy9b5PB3QjDP5rq1Lgq3Z+iZcrel2GPgrZCG9bS2F0BXojqT
uYv7a21DSJju1tdtHT1+2NcRijeiwbGbgWQI02cQAeOxgnUKm3Ge0KDGffLi
5M33x0evX5zS12389aIqV0vCzd7sgfUun30Op6XIRYPr3k0rPbWAC7ovnegF
kUdbI1Zmq6xvruM3CWfTNx+YkX9x75ogFHaxoHWWSJXYTQJRzl2qK+JTH1Xq
q8lle9g/+qP0L4Mltd/ARluRl0xa5TrpWJcsLTPPv3JjeADwDVsb+0WPxwgZ
vanhsxRmJwR0ZN3YH/2ZrFN47ZQ6L/x2c+vKzXZW3k+/3Xz6WJCdUfDjbzCn
j45F2pNt8x9sYcvOobZ4uGFR3Onq4iGwMVkyJC2+J0PEgoAA0E0OMRNeoEOn
Kem64pV92nuyzyQ6kPuXw+gZp0OvamZvbcNMMdsLJSyEJmeyy5nI9TBMXAax
rf3YC0nAMoD46MCxLs8lAImX5+KhC1pzMIRnktTXi4VuqmzaRrd7QOw4Txoq
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
MhglftAFXd6lvLyzkdOm/hu6xG2Y2ckAAA==

-->

</rfc>
