<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.2 (Ruby 2.5.1) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-voit-rats-trustworthy-path-routing-05" category="std" consensus="true" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="trust-path">Trusted Path Routing</title>

    <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="Gaddam" fullname="Chennakesava Reddy Gaddam">
      <organization abbrev="Cisco">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street>Cessna Business Park, Kadubeesanahalli</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560103</code>
          <country>India</country>
        </postal>
        <email>chgaddam@cisco.com</email>
      </address>
    </author>
    <author initials="G." surname="Fedorkow" fullname="Guy C. Fedorkow">
      <organization abbrev="Juniper">Juniper Networks</organization>
      <address>
        <postal>
          <street>10 Technology Park Drive</street>
          <city>Westford</city>
          <region>Massachusetts</region>
          <code>01886</code>
          <country>USA</country>
        </postal>
        <email>gfedorkow@juniper.net</email>
      </address>
    </author>
    <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="M." surname="Chen" fullname="Meiling Chen">
      <organization abbrev="China Mobile">China Mobile</organization>
      <address>
        <email>chenmeiling@chinamobile.com</email>
      </address>
    </author>

    <date year="2022" month="March" day="02"/>

    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


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


<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="attestation-results"/>, 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>

<t><list style="symbols">
  <t>all transited devices have booted with known hardware and firmware</t>
  <t>all transited devices are from a specific set of vendors and are running known software containing the latest patches</t>
  <t>no guarantees provided</t>
</list></t>

</section>
<section anchor="terminology"><name>Terminology</name>

<section anchor="terms"><name>Terms</name>
<t>The following terms are imported from <xref target="RATS-Arch"/>: 
Attester, Evidence, Passport, Relying Party, and Verifier.</t>

<t>The following terms are impored from <xref target="attestation-results"/>:
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 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="implementation-prerequisites"><name>Implementation Prerequisites</name>

<t>The specification is a valid instance of <xref target="attestation-results"/>.  This specification works under the following protocol and preconfiguration prerequisite assumptions:</t>

<t><list style="symbols">
  <t>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"/>.</t>
  <t>One or more Verifier A's as defined in <xref target="attestation-results"/> '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.</t>
  <t>The Attested Devices are connected via link layer protocols such as <xref target="MACSEC"/> or <xref target="IEEE-802.1X"/>.</t>
  <t>Each Attester can pass a Stamped Passport to a Relying Party / Verifier B as defined in <xref target="attestation-results"/> 'Interaction Model' within <xref target="RFC3748"/> over that link layer protocol.</t>
  <t>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.</t>
  <t>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.</t>
  <t>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.</t>
  <t>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.</t>
</list></t>

</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="attestation-results"/>, 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 title="Trusted Path Topology Assembly" anchor="fig-topology"><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="attestation-results"/>.</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="RATS-Arch"/>, 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="attestation-results"/>.  (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 title="Trusted Path Timing" anchor="fig-timing"><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="attestation-results"/>:</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>

<t><list style="symbols">
  <t>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.</t>
  <t>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="RATS-YANG"/>.</t>
</list></t>

</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 MUST be able to set at least the following set of Trustworthiness Claims from <xref target="attestation-results"/>: 'hardware', 'instance-identity', and 'executables'.  The establishment of a Trustworthiness Vector uses the following <xref target="verifier-A"/> logic on the Verifier:</t>

<figure title="Verifier A Appraisal Flow" anchor="verifier-A"><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 MUST 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 title="Attestation Results Tree" anchor="fig-results-tree"><sourcecode type="YANG"><![CDATA[
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 MUST 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 MUST 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 title="YANG Tree for a TPM2 Stamped Passport" anchor="fig-tpm2-passport"><artwork><![CDATA[
    +---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

]]></artwork></figure>

<t>Note that where a TPM2.0 is used, the PCR numbers and hash algorithms quoted in Step 1 MUST 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 title="YANG Tree for a TPM1.2 Stamped Passport" anchor="fig-tpm12-passport"><artwork><![CDATA[
    +---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
]]></artwork></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>

<t><list style="symbols">
  <t>If TPM2.0  <list style="numbers">
      <t>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.</t>
      <t>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.)</t>
      <t>Assign the link a null Trustworthiness Vector.</t>
    </list></t>
  <t>If TPM1.2  <list style="numbers">
      <t>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).</t>
      <t>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.)</t>
      <t>Assign the link a null Trustworthiness Vector.</t>
    </list></t>
</list></t>

<t>(5.7) Assemble the Verifier B Trustworthiness Vector</t>

<t><list style="numbers">
  <t>Copy Verifier A Trustworthiness Vector to Verifier B Trustworthiness Vector</t>
  <t>Prune any Trustworthiness Claims the Relying Party doesn't accept from this Verifier.</t>
</list></t>

</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="RATS-YANG"/>, <xref target="crypto-types"/> and <xref target="RFC6021"/>.</t>

<figure><sourcecode type="YANG"><![CDATA[
<CODE BEGINS> ietf-trustworthiness-claims@2021-11-03.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:   <http://tools.ietf.org/wg/rats/>
     WG List:  <mailto:rats@ietf.org>

     Editor:   Eric Voit
               <mailto:evoit@cisco.com>";
               
  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;
        }
      }
    }            
  }
}
<CODE ENDS>
]]></sourcecode></figure>

</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 title='Normative References'>





<reference anchor='RFC6021' target='https://www.rfc-editor.org/info/rfc6021'>
<front>
<title>Common YANG Data Types</title>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<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>
<seriesInfo name='RFC' value='6021'/>
<seriesInfo name='DOI' value='10.17487/RFC6021'/>
</reference>


<reference anchor="attestation-results" target="https://datatracker.ietf.org/doc/draft-ietf-rats-ar4si/">
  <front>
    <title>Attestation Results for Connectivity</title>
    <author >
      <organization></organization>
    </author>
    <date year="2021" month="December" day="02"/>
  </front>
</reference>
<reference anchor="crypto-types" target="https://datatracker.ietf.org/doc/draft-ietf-netconf-crypto-types/">
  <front>
    <title>Common YANG Data Types for Cryptography</title>
    <author >
      <organization></organization>
    </author>
    <date year="2021" month="December" day="17"/>
  </front>
</reference>
<reference anchor="RATS-Arch" target="https://datatracker.ietf.org/doc/draft-ietf-rats-architecture/">
  <front>
    <title>Remote Attestation Procedures Architecture</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022" month="February" day="08"/>
  </front>
</reference>
<reference anchor="RATS-YANG" target="https://datatracker.ietf.org/doc/draft-ietf-rats-yang-tpm-charra/">
  <front>
    <title>A YANG Data Model for Challenge-Response-based Remote Attestation Procedures using TPMs</title>
    <author >
      <organization></organization>
    </author>
    <date year="2022" month="February" day="28"/>
  </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></organization>
    </author>
    <date year="2003" month="October" day="02"/>
  </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></organization>
    </author>
    <date year="2013" month="March" day="15"/>
  </front>
</reference>




<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC3748' target='https://www.rfc-editor.org/info/rfc3748'>
<front>
<title>Extensible Authentication Protocol (EAP)</title>
<author fullname='B. Aboba' initials='B.' surname='Aboba'><organization/></author>
<author fullname='L. Blunk' initials='L.' surname='Blunk'><organization/></author>
<author fullname='J. Vollbrecht' initials='J.' surname='Vollbrecht'><organization/></author>
<author fullname='J. Carlson' initials='J.' surname='Carlson'><organization/></author>
<author fullname='H. Levkowetz' initials='H.' role='editor' surname='Levkowetz'><organization/></author>
<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>
<seriesInfo name='RFC' value='3748'/>
<seriesInfo name='DOI' value='10.17487/RFC3748'/>
</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></organization>
    </author>
    <date year="2022" month="January" day="26"/>
  </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></organization>
    </author>
    <date year="2021" month="October" day="16"/>
  </front>
</reference>



<reference anchor='I-D.ietf-lsr-flex-algo'>
   <front>
      <title>IGP Flexible Algorithm</title>
      <author fullname='Peter Psenak'>
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname='Shraddha Hegde'>
	 <organization>Juniper Networks</organization>
      </author>
      <author fullname='Clarence Filsfils'>
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname='Ketan Talaulikar'>
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname='Arkadiy Gulko'>
	 <organization>Edward Jones</organization>
      </author>
      <date day='25' month='October' year='2021'/>
      <abstract>
	 <t>   IGP protocols traditionally compute best paths over the network based
   on the IGP metric assigned to the links.  Many network deployments
   use RSVP-TE based or Segment Routing based Traffic Engineering to
   steer traffic over a path that is computed using different metrics or
   constraints than the shortest IGP path.  This document proposes 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>
   <seriesInfo name='Internet-Draft' value='draft-ietf-lsr-flex-algo-18'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-lsr-flex-algo-18.txt' type='TXT'/>
</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></organization>
    </author>
    <date year="n.d."/>
  </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></organization>
    </author>
    <date year="2006" month="January" day="01"/>
  </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></organization>
    </author>
    <date year="2020" month="January" day="01"/>
  </front>
</reference>


    </references>


<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="change-log"><name>Change Log</name>

<t>[THIS SECTION TO BE REMOVED BY THE RFC EDITOR.]</t>

<t>v04-v05</t>

<t><list style="symbols">
  <t>Tweaks to text</t>
  <t>Added text which was morphed from that provided by Meiling</t>
</list></t>

<t>v03-v04</t>

<t><list style="symbols">
  <t>YANG model updated in concert with draft-voit-rats-attestation-results as Trustworthiness Claim values are added.</t>
</list></t>

<t>v03-v04</t>

<t><list style="symbols">
  <t>Moved in concert with draft-voit-rats-attestation-results as Trustworthiness Claims became 8 bit signed integers.</t>
</list></t>

<t>v02-v03</t>

<t><list style="symbols">
  <t>Integrated <xref target="attestation-results"/> as prerequisite context.</t>
  <t>Totally rearranged content.  But there were not meaningful process changes.</t>
  <t>Redid YANG model, and highlighted CDDL needs.</t>
</list></t>

<t>v01-v02</t>

<t><list style="symbols">
  <t>Minor tweaks such as renaming and removal of a few trustworthiness-claims</t>
</list></t>

<t>v00-v01</t>

<t><list style="symbols">
  <t>Minor tweaks</t>
</list></t>

<t>v02-v00 of draft-voit-rats-trustworthy-path-routing-00</t>

<t><list style="symbols">
  <t>file rename was due to an IETF tool submission glitch</t>
  <t>The Attester's AIK is included within the Stamped Passport.  This eliminates the need to provision to AIK certificate on the Relying Party.</t>
  <t>Removed Centralized variant</t>
  <t>Added timing diagram, and moved content around to match</t>
</list></t>

<t>v01-v02 of draft-voit-rats-trusted-path-routing</t>

<t><list style="symbols">
  <t>Extracted the attestation stream, and placed into draft-birkholz-rats-network-device-subscription</t>
  <t>Introduced the Trustworthiness Vector</t>
</list></t>

<t>v00-v01 of draft-voit-rats-trusted-path-routing</t>

<t><list style="symbols">
  <t>Move all FlexAlgo terminology to allow passport definition to be more generic.</t>
  <t>Edited Figure 1 so that (4) points to the egress router.</t>
  <t>Added text freshness mechanisms, and articulated configured subscription support.</t>
  <t>Minor YANG model clarifications.</t>
  <t>Added a few open questions which Frank thinks interesting to work.</t>
</list></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>


  </back>

<!-- ##markdown-source:
H4sIAFu3H2IAA+19a3fbRpLod5/j/9CrfJCVJShRsp2EyTihJdnRxA+NpCST
s9mTAwFNEiMS4ACgZI3t/Jb7W+4vu/XqFwBSkp1kM/esdmbHBNDd1dXV9eqq
6iiK7t+rs3qmh+qsXFa1TtVxXE/VSbGss3xy/158fl7qy6Gq8W20gHf376VF
ksdzaJKW8biOLousjsq4riL66Koo6+k1fRqV3E208+j+vaqO8/SXeFbkmrrT
9+9li1J63t3Z+WJnF4YrdTxUpzpZlll9ff/e1WSoTkZnp+rHoryAntRz6HJx
/97F1VAd5bUuc11HBwjG/XtJXA9VVaf37y2y4f17StVFMlTXupJ/p3pRT4dq
D39WAGSpx5V9X13Pvd8AyLKeFiV0E6ksh8eHffUDzBM/5bkfllliHxUlwLmf
VUmhTq8Bi/OqB+AlfXxnMEiv8YGex9lsqDTi7ZsEn/aTYk5AAEwaJvH5YO+R
ehkvZlq9iK9y9XR2meL7BHAyVM+Ws7rI6XeRAiSbuzufPfpiEx+UepIV+RDa
ltczQDd/tMzrEtp9fzqy09nvq+dxmsZzN6H9qc7z+EJX8WWsTnSaXnuffMgE
k+mE2nfPcV9XVR6rp8sqy+GfQHblRU99F6fLcw0w5PE0ns0yN+uncT4B4im1
N/FHj3cGO3vBzL+Lyzyu44s4mPpRnmaxnfzzvnqmUyCo4spN//nyGrHiv6BJ
/3WZZwtdqlcaKfui8mcs77w5T8bS/pt/8Ls+EKg/7cGOOtPJNC9mxeSaJq0O
yuxSu4n+qKt6XJSpN8+dweefP24scFXFyXRZ6bquVq7yt331NCsvpsXsX26i
3+r8InhM03xWxst8WoxhpqdHZ/4k229krkAvF/1z6eibKqv7Y/tpP9X+rE+m
GgCqS4Baq88eeVN7/HD3i0ebbvYHcTkHTpHWwaSe63Ie59d2Yi/7RK5uUi91
NkP2YJ4yvU4zoLCXxXk20wGhNp7LfIBgdT7njr5J8Js5fcKUi/+XFwBGDatF
7OXk2f7jnd0B9FfM50Wufhq9eg7w17E6u14wF4Ex6xrWExoVeVTqCrYugK/w
DfCkuJwgdqZ1vaiG29sptAUcJReAv0zX4z7MYhuY7TbzWXzEfDYuH1bZtnTC
3Htj5AaC3UsDKSAjAC7PdQJAA3o3uAmMAy12AfZosBsh22WIkvJ6URdRjdB/
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
XVUB/0PkPn/wAMsnBdkzkQC19bVTEODb4QNmiB09RkmazrbU2zqOh/TRe6/p
OzPS+uZBAwtdc3qevuR9a4cwamXgnzcPV7ZqqYfYvPVwZXNPaXPjeg9XNgxy
j0zT4OEKpBAikWMDt2Vfz6fqvxri6r9XDtv4EN+ZOZZ6vLKZlRmf2klCT0N4
3A2lL1DVqj/gE3HZQq2gB+XkypbytwSl+/HD7g4C6bqug73dlR34svjuHaDM
vmkGWGUArO8Vax0Lh468lASSSR3rRH+4Js1vo451le6NqIqspF7VMdaCHKJy
G8WYuJC1QeAurRwNBW045zUE1+jFSfsOzK2hHtuBjwxM4EAJ2YUQ83czAg0z
HOzeghkOdn1mqLxNuKZ58wDqdszQzuZOzLDR6q7MsNH89syw0fAuzNBHSgdb
av8FTCpAKS2DVX67+2iSWbuDgJm2/zqp3e8FdfbdiPzkXRuR/26zEf1Ob8E6
wo5vpvyg+3Ws48Mg/nDW0dnLXVhHZwc3s47wbzUCg8Ngs9NJ1xa3SZc1cAbv
jdfE+pn3uCyJcuf7FZ7vmoNbfCz1dse2woNN64oVxQ+gN+lwUcCzb2FBZro7
YGzLHr/Zox9WXK/iaxtzhQoxnq5extnMuJTbJ28KT6HR1GffjwG918qZ5QMJ
LFQSg52bX0hxgEZWmDkxpbNiZ/+yGWQTp9cl94pC71VIMn2SCabfLEy1Pkla
ppM0ycBNSi2FJ6qOYDM+ILLr9ZBCuG2Q48KG13nTM2O7w4G9XleSsX8KJ146
tj+7MN557kuz80M9rXXILq+HaHO7I7QOzxkfdiieJXy/u6VegSHDzmdzTAqU
cC1e6dbRmk2Qjb3CIu6EDQjaHs6Z8yJx83ulUJwrguslSfJoSEweOjmVLJMA
adoEvTWdEhm6rC8XSN/I/vUiUjtICY9i6XR2b0UYtZzCeya6GKM9/9gpLPKA
RI52IJnsnhdCTEeJOgZomXyNdUvWOud1oEXLJepq4B0uQtN8imkb1obFGiU2
eZfsXNgDpkhc4NfwC9RYR1ylQ78BaB5Y+pXNWWaj/4lRTWKUVIyiaCEosowW
GXPRZczaL96Zj27Qkt55n95OQ/Jb3FE78pveWjPyG91BK3IIuJt5+K7V9EbT
0G9yC7PQfvshJqFDxQeYg7bxh5iCfuM7m4G28QeZgO9Cil+nw727g/7mul2j
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
U8o1pFslPSYna+sceP8PoFXwf9zSAAA=

-->

</rfc>

