<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 2.5.1) -->
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-rats-network-device-subscription-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 2.46.0 -->
  <front>
    <title abbrev="RATS Subscription">Attestation Event Stream Subscription</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-rats-network-device-subscription-05"/>
    <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>
        <email>evoit@cisco.com</email>
      </address>
    </author>
    <author initials="W." surname="Pan" fullname="Wei Pan">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>101 Software Avenue, Yuhuatai District</street>
          <city>Nanjing, Jiangsu</city>
          <region/>
          <code>210012</code>
          <country>China</country>
        </postal>
        <phone/>
        <email>william.panwei@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="July" day="07"/>
    <area>Security</area>
    <workgroup>RATS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 67?>

<t>This document defines how to subscribe to YANG Event Streams for Remote Attestation Procedures (RATS).
In RATS, the Conceptional Messages defined can potentially be subscribed to.
Specifically, the YANG module defined in this document augments the YANG module for TPM-based Challenge-Response based Remote Attestation (CHARRA) to allow for subscription to the Conceptual Message type Evidence.
Additionally, this memo provides the methods and means to define additional Event Streams for other Conceptual Messages than Evidence as illustrated in the RATS Architecture, e.g., Attestation Results, Reference Values, or Endorsements.
The module defined requires at least one TPM 1.2, TPM 2.0, or equivalent hardware implementation providing the same protected capabilities as TPMs to be available in the Attester the YANG server is running on.</t>
    </abstract>
  </front>
  <middle>
    <?line 75?>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.ietf-rats-tpm-based-network-device-attest"/> and <xref target="I-D.ietf-rats-yang-tpm-charra"/> define the operational prerequisites and a YANG Model for the acquisition of Evidence and other Conceptional Messages from a network device containing at least one TPM 1.2 or TPM 2.0 or equivalent hardware implementations that include the protected capabilities as provided by TPMs.
However, there are limitations inherent in the challenge-response based conceptual interaction model (CHARRA <xref target="I-D.ietf-rats-reference-interaction-models"/>) upon which these documents are based. One of these limitation is that it is up to a Verifier to request signed Evidence as provided by <xref target="I-D.ietf-rats-yang-tpm-charra"/>, from a separate Attester which contains a TPM. The result is that the interval between the occurrence of a security-relevant change event, and the event's visibility within the interested RATS entity, such as a Verifier or a Relying Party, can be unacceptably long. It is common to convey Conceptual Messages ad-hoc or periodically via requests. As new technologies emerge, some of these solutions require Conceptual Messages to be conveyed from one RATS entity to another without the need of continuous polling. Subscription to YANG Notifications <xref target="RFC8639"/> provides a set of standardized tools to facilitate these emerging requirements. This memo specifies a YANG augment to subscribe to YANG modeled remote attestation Evidence as defined in <xref target="I-D.ietf-rats-yang-tpm-charra"/>. Additionally, this memo provides the means to define further Event Streams to convey Conceptional Messages other than Evidence, such as Attestation Results, Endorsements, or Event Logs.</t>
      <t>In essence, the limitation of poll-based interactions results in two adverse effects:</t>
      <ol spacing="normal" type="1">
        <li>Conceptual Messages are not streamed to an interested consumer of information, e.g., Verifiers or Relying Parties, as soon as they are generated.</li>
        <li>If they were to be streamed, Conceptual Messages are not appraisable for their freshness in every scenario. This becomes more important with Conceptional Messages that have a strong dependency on freshness, such as Evidence and corresponding Attestation Results.</li>
      </ol>
      <t>This specification addresses the first adverse effect by enabling a consumer of Conceptual Messages (the subscriber) to request a continuous stream of new or updated Conceptual Messages via an <xref target="RFC8639"/> subscription to an &lt;attestation&gt; Event Stream. This new Event Stream is defined in this document and exists upon the producer of Conceptual Messages (the publisher). In the case of a Verifier's subscription to an Attester's Evidence, the Attester will continuously stream a requested set of freshly generated Evidence to the subscribing Verifier. For example, when a network device's Evidence changes after the occurrence of events, such as booting, updating, control unit fall-over, plugging in or out forwarding units, being attacked, or certificate lifetime change, the network device will generate fresh Evidence available to the subscribing Verifier.</t>
      <t>The second adverse effect results from the use of nonces in the challenge-response interaction model <xref target="I-D.ietf-rats-reference-interaction-models"/> realized in <xref target="I-D.ietf-rats-yang-tpm-charra"/>. In <xref target="I-D.ietf-rats-yang-tpm-charra"/>, an Attester must wait for a new nonce from a Verifier before it generates a new TPM Quote. To address delays resulting from such a wait, this specification enables freshness to be asserted asynchronously via the streaming attestation interaction model <xref target="I-D.ietf-rats-reference-interaction-models"/>. To convey a RATS Conceptual Message, an initial nonce is provided during the subscription to an Event Stream.</t>
      <t>There are several options to refresh a nonce provided by the initial subscription or its freshness characteristics. All of these methods are out-of-band of an established subscription to YANG Notifications. Two complementary methods are taken into account by this memo:</t>
      <ol spacing="normal" type="1">
        <li>a central provider supplies new fresh nonces, e.g. via a Handle Provider that distributes Epoch IDs to all entities in a domain as described in <xref target="I-D.ietf-rats-architecture"/> and as facilitated by the Uni-Directional Remote Attestation described in <xref target="I-D.ietf-rats-reference-interaction-models"/> or</li>
        <li>the freshness characteristics of a received nonce are updated by -- potentially periodic or ad-hoc -- out-of-band TPM Quote requests as facilitated by <xref target="I-D.ietf-rats-yang-tpm-charra"/>.</li>
      </ol>
      <t>Both approaches to update the freshness characteristics of the Conceptual Messages conveyed via subscription to YANG Notification that are taken into account by this memo assume that clock drift between involved entities can occur. In consequence, in some usage scenarios the timing considerations for freshness <xref target="I-D.ietf-rats-architecture"/> might have to be updated in some regular interval. Analogously, there are can be additional methods that are not describe by but nevertheless supported by this memo.</t>
      <t>This memo enables to remove the two adverse effects described by using the YANG augment specified. The YANG augment supports, for example, a RATS Verifier to maintain a continuous appraisal procedure of verifiably fresh Attester Evidence without relying on continuous polling.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The following terms are imported from <xref target="I-D.ietf-rats-architecture"/>: Attester, Conceptual Message, Evidence, Relying Party, and Verifier.  Also imported are the time definitions time(VG), time(NS), time(EG), time(RG), and time(RA) from that document's Appendix A.  The following terms are imported from <xref target="RFC8639"/>: Event Stream, Subscription, Publisher, Event Stream Filter, Dynamic Subscription.</t>
      <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="operational-model">
      <name>Operational Model</name>
      <t><xref target="I-D.ietf-rats-tpm-based-network-device-attest"/> describes the conveyance of TPM-based Evidence from a Verifier to an Attester using the CHARRA interaction model <xref target="I-D.ietf-rats-reference-interaction-models"/>. The operational model and corresponding sequence diagram described in this section is based on <xref target="I-D.ietf-rats-yang-tpm-charra"/>. The basis for interoperability required for additional types of Event Streams is covered in <xref target="otherstreams"/>. The following sub-section focuses on subscription to YANG Notifications to the &lt;attestation&gt; Event Stream.</t>
      <section anchor="sequence-diagram">
        <name>Sequence Diagram</name>
        <t><xref target="sequence"/> below is a sequence diagram which updates Figure 5 of <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>. This sequence diagram adapts <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/> by replacing the TPM-specific challenge-response interaction model with a <xref target="RFC8639"/> Dynamic Subscription to an &lt;attestation&gt; Event Stream. The contents of the &lt;attestation&gt; Event Stream are defined below within <xref target="attestationstream"/>.</t>
        <figure anchor="sequence">
          <name>YANG Subscription Model for Remote Attestation</name>
          <artwork><![CDATA[
.----------.                            .--------------------------.
| Attester |                            | Relying Party / Verifier |
'----------'                            '--------------------------'
   time(VG)                                                    |
generateClaims(targetEnvironment)                              |
     | => claims, eventLogs                                    |
     |                                                         |
     |<---------establish-subscription(<attestation>)------time(NS)
     |                                                         |
   time(EG)                                                    |
generateEvidence(nonce, PcrSelection, collectedClaims)         |
     | => SignedPcrEvidence(nonce, PcrSelection)               |
     | => LogEvidence(collectedClaims)                         |
     |                                                         |
     |--filter(<pcr-extend>)---------------------------------->|
     |--<tpm12-attestation> or <tpm20-attestation>------------>|
     |                                                         |
     |                                                  time(RG,RA)
     |     appraiseEvidence(SignedPcrEvidence, eventLog, refClaims)
     |                                    attestationResult <= |
     |                                                         |
     ~                                                         ~
   time(VG')                                                   |
generateClaimes(targetEnvironment)                             |
     | => claims                                               |
     |                                                         |
   time(EG')                                                   |
generateEvidence(handle, PcrSelection, collectedClaims)        |
     | => SignedPcrEvidence(nonce, PcrSelection)               |
     | => LogEvidence(collectedClaims)                         |
     |                                                         |
     |--filter(<pcr-extend>)---------------------------------->|
     |--<tpm12-attestation> or <tpm20-attestation>------------>|
     |                                                         |
     |                                                 time(RG',RA')
     |    appraiseEvidence(SignedPcrEvidence, eventLog, refClaims)
     |                                    attestationResult <= |
     |                                                         |
]]></artwork>
        </figure>
        <ul spacing="normal">
          <li>time(VG,RG,RA) are identical to the corresponding time definitions from <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>.</li>
          <li>time(VG',RG',RA') are subsequent instances of the corresponding times from Figure 5 in <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>.</li>
          <li>
            <t>time(NS) - the subscriber generates a nonce and makes an <xref target="RFC8639"/> &lt;establish-subscription&gt; request based on a nonce. This request also includes the augmentations defined in this document's YANG model. Key subscription RPC parameters include:
            </t>
            <ul spacing="normal">
              <li>the nonce,</li>
              <li>a set of PCRs of interest which the  wants to appraise, and</li>
              <li>an optional filter which can reduce the logged events on the &lt;attestation&gt; stream pushed to the Verifier.</li>
            </ul>
          </li>
          <li>
            <t>time(EG) - an initial response of Evidence is returned to the Verifier. This includes:
            </t>
            <ul spacing="normal">
              <li>a replay of filtered log entries which have extended into a PCR of interest since boot are sent in the &lt;pcr-extend&gt; notification, and</li>
              <li>a signed TPM quote that contains at least the PCRs from the &lt;establish-subscription&gt; RPC are included in a &lt;tpm12-attestation&gt; or &lt;tpm20-attestation&gt;). This quote must have included the nonce provided at time(NS).</li>
            </ul>
          </li>
          <li>
            <t>time(VG',EG') - this occurs when a PCR is extended subsequent to time(EG). Immediately after the extension, the following information needs to be pushed to the Verifier:
            </t>
            <ul spacing="normal">
              <li>any values extended into a PCR of interest,</li>
              <li>a signed TPM Quote showing the result the PCR extension, and</li>
              <li>and a handle (see Section 6. in <xref target="I-D.ietf-rats-reference-interaction-models"/>, which is either the initially received nonce or a more recently received Epoch ID (see Section 10.3. in <xref target="I-D.ietf-rats-architecture"/> that contains a new nonce or equivalent qualified data.</li>
            </ul>
          </li>
        </ul>
        <t>One way to acquire a new time synchronisation that allows for the reuse of the initially received nonce as a fresh handle is elaborated on in the follow section <xref target="freshness-handles"/>.</t>
      </section>
      <section anchor="freshness-handles">
        <name>Continuously Verifying Freshness</name>
        <t>As there is no new Verifier nonce provided at time(EG'), it is important to validate the freshness of TPM Quotes which are delivered at that time.  The method of doing this verification will vary based on the capabilities of the TPM cryptoprocessor used.</t>
        <section anchor="tpm-12-quote">
          <name>TPM 1.2 Quote</name>
          <t>The <xref target="RFC8639"/> notification format includes the &lt;eventTime&gt; object.  This can be used to determine the amount of time subsequent to the initial subscription each notification was sent.  However this time is not part of the signed results which are returned from the Quote, and therefore is not trustworthy as objects returned in the Quote.  Therefore a Verifier <bcp14>MUST</bcp14> periodically issue a new nonce, and receive this nonce within a TPM quote response in order to ensure the freshness of the results.  This can be done using the &lt;tpm12-challenge-response-attestation&gt; RPC from <xref target="I-D.ietf-rats-yang-tpm-charra"/>.</t>
        </section>
        <section anchor="tpm-2-quote">
          <name>TPM 2 Quote</name>
          <t>When the Attester includes a TPM2 compliant cryptoprocessor, internal time-related counters are included within the signed TPM Quote.  By including a initial nonce in the <xref target="RFC8639"/> subscription request, fresh values for these counters are pushed as part of the first TPM Quote returned to the Verifier. And then as shown by <xref target="I-D.birkholz-rats-tuda"/>, subsequent TPM Quotes delivered to the Verifier can the be appraised for freshness based on the predictable incrementing of these time-related countersr.</t>
          <t>The relevant internal time-related counters defined within <xref target="TPM2.0"/> can be seen within &lt;tpms-clock-info&gt;.   These counters include the &lt;clock&gt;, &lt;reset-counter&gt;, and &lt;restart-counter&gt; objects.  The rules for appraising these objects are as follows:</t>
          <ul spacing="normal">
            <li>If the &lt;clock&gt; has incremented for no more than the same duration as both the &lt;eventTime&gt; and the Verifier's internal time since the initial time(EG) and any previous time(EG'), then the TPM Quote may be considered fresh. Note that <xref target="TPM2.0"/> allows for +/- 15% clock drift.  However many chips significantly improve on this maximum drift.  If available, chip specific maximum drifts <bcp14>SHOULD</bcp14> be considered during the appraisal process.</li>
            <li>If the &lt;reset-counter&gt;, &lt;restart-counter&gt; has incremented.  The existing subscription <bcp14>MUST</bcp14> be terminated, and a new &lt;establish-subscription&gt; <bcp14>SHOULD</bcp14> be generated.</li>
            <li>If a TPM Quote on any subscribed PCR has not been pushed to the Verifier for a duration of an Attester defined heartbeat interval, then a new TPM Quote notification should be sent to the Verifier.  This may often be the case, as certain PCRs might be infrequently updated.</li>
          </ul>
          <artwork><![CDATA[
.----------.                        .--------------------------.
| Attester |                        | Relying Party / Verifier |
'----------'                        '--------------------------'
   time(VG',EG')                                         |
     |-<tpm20-attestation>------------------------------>|
     |                                    :              |
     ~                           Heartbeat interval      ~
     |                                    :              |
   time(EG')                              :              |
     |-<tpm20-attestation>------------------------------>|
     |                                                   |
]]></artwork>
        </section>
      </section>
    </section>
    <section anchor="attestationstream">
      <name>Remote Attestation Event Stream</name>
      <t>The &lt;attestation&gt; Event Stream is an <xref target="RFC8639"/> compliant Event Stream which is defined within this section and within the YANG Module of <xref target="I-D.ietf-rats-yang-tpm-charra"/>. This Event Stream contains YANG notifications which carry Evidence to assists a Verifier in appraising the Trustworthiness Level of an Attester. Data Nodes within <xref target="configuring"/> allow the configuration of this Event Stream's contents on an Attester.</t>
      <t>This &lt;attestation&gt; Event Stream may only be exposed on Attesters supporting <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>. As with <xref target="I-D.ietf-rats-tpm-based-network-device-attest"/>, it is up to the Verifier to understand which types of cryptoprocessors and keys are acceptable.</t>
      <section anchor="subscription-to-the-attestation-event-stream">
        <name>Subscription to the &lt;attestation&gt; Event Stream</name>
        <t>To establish a subscription to an Attester in a way which provides provably fresh Evidence, initial randomness must be provided to the Attester. This is done via the augmentation of a &lt;nonce-value&gt; into <xref target="RFC8639"/> the &lt;establish-subscription&gt; RPC. Additionally, a Verifier must ask for PCRs of interest from a platform.</t>
        <artwork><![CDATA[
  augment /sn:establish-subscription/sn:input:
    +---w nonce-value    binary
    +---w pcr-index*     tpm:pcr
]]></artwork>
        <t>The result of the subscription will be that passing of the following information:</t>
        <ol spacing="normal" type="1">
          <li>&lt;tpm12-attestation&gt; and &lt;tpm20-attestation&gt; notifications which include the provided &lt;nonce-value&gt;.  These attestation notifications <bcp14>MUST</bcp14> at least include all the &lt;pcr-indicies&gt; requested in the RPC.</li>
          <li>a series of &lt;pcr-extend&gt; notifications which reference the requested PCRs on all TPM based cryptoprocessors on the Attester.</li>
          <li>&lt;tpm12-attestation&gt; and &lt;tpm20-attestation&gt; notifications generated within a few seconds of the &lt;pcr-extend&gt; notifications.  These attestation notifications <bcp14>MUST</bcp14> at least include any PCRs extended.</li>
        </ol>
        <t>If the Verifier does not want to see the logged extend operations for all PCRs available from an Attester, an Event Stream Filter should be applied.  This filter will remove Evidence from any PCRs which are not interesting to the Verifier.</t>
      </section>
      <section anchor="replaying-a-history-of-previous-tpm-extend-operations">
        <name>Replaying a history of previous TPM extend operations</name>
        <t>Unless it is relying on Known Good Values, a Verifier will need to acquire a history of PCR extensions since the Attester has been booted.  This history may be requested from the Attester as part of the &lt;establish-subscription&gt; RPC.  This request is accomplished by placing a very old &lt;replay-start-time&gt; within the original RPC request.  As the very old &lt;replay-start-time&gt; will pre-date the time of Attester boot, a &lt;replay-start-time-revision&gt; will be returned in the &lt;establish-subscription&gt; RPC response, indicating when the Attester booted.  Immediately following the response (and before the notifications above)  one or more &lt;pcr-extend&gt; notifications which document all extend operations which have occurred for the requested PCRs since boot will be sent.  Many extend operations to a single PCR index on a single TPM <bcp14>SHOULD</bcp14> be included within a single notification.</t>
        <t>Note that if a Verifier has a partial history of extensions, the &lt;replay-start-time&gt; can be adjusted so that known extensions are not forwarded.</t>
        <t>The end of this history replay will be indicated with the <xref target="RFC8639"/> &lt;replay-completed&gt; notification.  For more on this sequence, see Section 2.4.2.1 of <xref target="RFC8639"/>.</t>
        <t>After the &lt;replay-complete&gt; notification is provided, a TPM Quote will be requested and the result passed to the Verifier via a &lt;tpm12-attestation&gt; and &lt;tpm20-attestation&gt; notification.  If there have been any additional extend operations which have changed a subscribed PCR value in this quote, these <bcp14>MUST</bcp14> be pushed to the Verifier before the &lt;tpm12-attestation&gt; and &lt;tpm20-attestation&gt; notification.</t>
        <t>At this point the Verifier has sufficient Evidence appraise the reported extend operations for each PCR, as well compare the expected value of the PCR value against that signed by the TPM.</t>
        <section anchor="tpm2-heartbeat">
          <name>TPM2 Heartbeat</name>
          <t>For TPM2, make sure that every requested PCR is sent within an &lt;tpm20-attestation&gt; no less frequently than once per heartbeat interval.   This <bcp14>MAY</bcp14> be done with a single &lt;tpm20-attestation&gt; notification that includes all requested PCRs every heartbeat interval.  This <bcp14>MAY</bcp14> be done with several &lt;tpm20-attestation&gt; notifications at different times during that heartbeat interval.</t>
        </section>
      </section>
      <section anchor="yang-notifications-placed-on-the-attestation-event-stream">
        <name>YANG notifications placed on the &lt;attestation&gt; Event Stream</name>
        <section anchor="pcr-extend">
          <name>pcr-extend</name>
          <t>This notification documents when a subscribed PCR is extended within a single TPM cryptoprocessor.  It <bcp14>SHOULD</bcp14> be emmitted no less than the &lt;marshalling-period&gt; after an the PCR is first extended.  (The reason for the marshalling is that it is quite possible that multiple extensions to the same PCR have been made in quick succession, and these should be reflected in the same notification.)  This notification <bcp14>MUST</bcp14> be emmitted prior to a &lt;tpm12-attestation&gt; or &lt;tpm20-attestation&gt; notification which has included and signed the results of any specific PCR extension.   If pcr extending events occur during the generation of the &lt;tpm12-attestation&gt; or &lt;tpm20-attestation&gt; notification, the marshalling period <bcp14>MUST</bcp14> be extended so that a new &lt;pcr-extend&gt; is not sent until the corresponding notifications have been sent.</t>
          <artwork><![CDATA[
+---n pcr-extend
   +--ro certificate-name     certificate-name-ref
   +--ro pcr-index-changed*   tpm:pcr
   +--ro attested-event* []
      +--ro attested-event
         +--ro extended-with             binary
         +--ro (event-details)?
            +--:(bios-event-log) {tpm:bios}?
            |  +--ro bios-event-entry* [event-number]
            |     +--ro event-number    uint32
            |     +--ro event-type?     uint32
            |     +--ro pcr-index?      pcr
            |     +--ro digest-list* []
            |     |  +--ro hash-algo?   identityref
            |     |  +--ro digest*      binary
            |     +--ro event-size?     uint32
            |     +--ro event-data*     uint8
            +--:(ima-event-log) {tpm:ima}?
            |  +--ro ima-event-entry* [event-number]
            |     +--ro event-number               uint64
            |     +--ro ima-template?              string
            |     +--ro filename-hint?             string
            |     +--ro filedata-hash?             binary
            |     +--ro filedata-hash-algorithm?   string
            |     +--ro template-hash-algorithm?   string
            |     +--ro template-hash?             binary
            |     +--ro pcr-index?                 pcr
            |     +--ro signature?                 binary
            +--:(netequip-boot-event-log) {tpm:netequip_boot}?
               +--ro boot-event-entry* [event-number]
                  +--ro event-number               uint64
                  +--ro ima-template?              string
                  +--ro filename-hint?             string
                  +--ro filedata-hash?             binary
                  +--ro filedata-hash-algorithm?   string
                  +--ro template-hash-algorithm?   string
                  +--ro template-hash?             binary
                  +--ro pcr-index?                 pcr
                  +--ro signature?                 binary
]]></artwork>
          <t>Each &lt;pcr-extend&gt; <bcp14>MUST</bcp14> include one or more values being extended into the PCR.   These are passed within the &lt;extended-with&gt; object.  For each extension, details of the event <bcp14>SHOULD</bcp14> be provided within the &lt;event-details&gt; object.
The format of any included &lt;event-details&gt; is identified by the &lt;event-type&gt;.  This document includes two YANG structures which may be inserted into the &lt;event-details&gt;.  These two structures are: &lt;ima-event-log&gt; and &lt;bios-event-log&gt;.  Implementations wanting to provide additional documentation of a type of PCR extension may choose to define additional YANG structures which can be placed into &lt;event-details&gt;.</t>
        </section>
        <section anchor="tpm12-attestation">
          <name>tpm12-attestation</name>
          <t>This notification contains an instance of a TPM1.2 style signed cryptoprocessor measurement. It is supplemented by Attester information which is not signed. This notification is generated and emitted from an Attester when at least one PCR identified within the subscribed &lt;pcr-indices&gt; has changed from the previous &lt;tpm12-attestation&gt; notification.  This notification <bcp14>MUST NOT</bcp14> include the results of any PCR extensions not previously reported by a &lt;pcr-extend&gt;.  This notification <bcp14>SHOULD</bcp14> be emitted as soon as a TPM Quote can extract the latest PCR hashed values.  This notification <bcp14>MUST</bcp14> be emitted prior to a subsequent &lt;pcr-extend&gt;.</t>
          <artwork><![CDATA[
    +---n tpm12-attestation {taa:TPM12}?
       +--ro certificate-name       tpm:certificate-name-ref
       +--ro up-time?               uint32
       +--ro TPM_QUOTE2?            binary
       +--ro TPM12-hash-algo?       identityref
       +--ro unsigned-pcr-values* []
          +--ro pcr-index*   tpm:pcr
          +--ro pcr-value*   binary
]]></artwork>
          <t>All YANG objects above are defined within <xref target="I-D.ietf-rats-yang-tpm-charra"/>.  The &lt;tpm12-attestation&gt; is not replayable.</t>
        </section>
        <section anchor="tpm20-attestation">
          <name>tpm20-attestation</name>
          <t>This notification contains an instance of TPM2 style signed cryptoprocessor measurements. It is supplemented by Attester information which is not signed. This notification is generated at two points in time:</t>
          <ul spacing="normal">
            <li>every time at least one PCR has changed from a previous tpm20-attestation. In this case, the notification <bcp14>SHOULD</bcp14> be emitted within 10 seconds of the corresponding &lt;pcr-extend&gt; being sent:</li>
            <li>after a locally configurable minimum heartbeat period since a previous tpm20-attestation was sent.</li>
          </ul>
          <artwork><![CDATA[
    +---n tpm20-attestation {taa:TPM20}?
       +--ro certificate-name       tpm:certificate-name-ref
       +--ro TPMS_QUOTE_INFO        binary
       +--ro quote-signature?       binary
       +--ro up-time?               uint32
       +--ro unsigned-pcr-values* []
          +--ro TPM20-hash-algo?   identityref
          +--ro pcr-values* [pcr-index]
             +--ro pcr-index    pcr
             +--ro pcr-value?   binary
]]></artwork>
          <t>All YANG objects above are defined within <xref target="I-D.ietf-rats-yang-tpm-charra"/>.  The &lt;tpm20-attestation&gt; is not replayable.</t>
        </section>
      </section>
      <section anchor="filtering-evidence-at-the-attester">
        <name>Filtering Evidence at the Attester</name>
        <t>It can be useful <em>not</em> to receive all Evidence related to a PCR.  An example of this is would be a when a Verifier maintains known good values of a PCR.  In this case, it is not necessary to send each extend operation.</t>
        <t>To accomplish this reduction, when an RFC8639 &lt;establish-subscription&gt; RPC is sent, a &lt;stream-filter&gt; as per RFC8639, Section 2.2 can be set to discard a &lt;pcr-extend&gt;  notification when the &lt;pcr-index-changed&gt; is uninteresting to the verifier.</t>
      </section>
      <section anchor="replaying-previous-pcr-extend-events">
        <name>Replaying previous PCR Extend events</name>
        <t>To verify the value of a PCR, a Verifier must either know that the value is a known good value <xref target="KGV"/> or be able to reconstruct the hash value by viewing all the PCR-Extends since the Attester rebooted. Wherever a hash reconstruction might be needed, the &lt;attestation&gt; Event Stream <bcp14>MUST</bcp14> support the RFC8639 &lt;replay&gt; feature. Through the &lt;replay&gt; feature, it is possible for a Verifier to retrieve and sequentially hash all of the PCR extending events since an Attester booted. And thus, the Verifier has access to all the evidence needed to verify a PCR's current value.</t>
      </section>
      <section anchor="configuring">
        <name>Configuring the &lt;attestation&gt; Event Stream</name>
        <t><xref target="attestationconfig"/> is tree diagram which exposes the operator configurable elements of the &lt;attestation&gt; Event Stream. This allows an Attester to select what information should be available on the stream. A fetch operation also allows an external device such as a Verifier to understand the current configuration of stream.</t>
        <t>Almost all YANG objects below are defined via reference from <xref target="I-D.ietf-rats-yang-tpm-charra"/>. There is one object which is new with this model however. &lt;tpm2-heartbeat&gt; defines the maximum amount of time which should pass before a subscriber to the Event Stream should get a &lt;tpm20-attestation&gt; notification from devices which contain a TPM2.</t>
        <figure anchor="attestationconfig">
          <name>Configuring the \&lt;attestation\&gt; Event Stream</name>
          <artwork><![CDATA[
  augment /tpm:rats-support-structures:
    +--rw tras:marshalling-period?                  uint8
    +--rw tras:tpm12-subscribed-signature-scheme?
    |   -> ../tpm:attester-supported-algos/tpm12-asymmetric-signing
    |      {taa:TPM12}?
    +--rw tras:tpm20-subscribed-signature-scheme?
    |   -> ../tpm:attester-supported-algos/tpm20-asymmetric-signing
    |      {taa:TPM20}?
    +--rw tras:tpm20-subscription-heartbeat?        uint16
           {taa:TPM20}?
  
  augment /tpm:rats-support-structures/tpm:tpms:
     +--rw tras:subscription-aik?        tpm:certificate-name-ref
     +--rw (tras:subscribable)?
        +--:(tras:tpm12-stream) {taa:tpm12}?
        |  +--rw tras:tpm12-hash-algo?   identityref
        |  +--rw tras:tpm12-pcr-index*   tpm:pcr
        +--:(tras:tpm20-stream) {taa:tpm20}?
           +--rw tras:tpm20-hash-algo?   identityref
           +--rw tras:tpm20-pcr-index*   tpm:pcr
]]></artwork>
        </figure>
      </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"/> and <xref target="RFC8639"/>.  It is also work-in-progress.</t>
      <sourcecode type="YANG">
&lt;CODE BEGINS&gt; ietf-rats-attestation-stream@2024-07-06.yang
module ietf-tpm-remote-attestation-stream {
  yang-version 1.1;
  namespace 
     "urn:ietf:params:xml:ns:yang:ietf-tpm-remote-attestation-stream";
  prefix tras;

  import ietf-subscribed-notifications { 
    prefix sn;
    reference
      "RFC 8639: Subscription to YANG Notifications";    
  }
  import ietf-tpm-remote-attestation { 
    prefix tpm; 
    reference  
      "draft-ietf-rats-yang-tpm-charra";  
  } 
  import ietf-tcg-algs {
    prefix taa;
  }
   
  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 YANG specification for subscribing
     to attestation streams which contain events that have
     been generated by TPM chips or equivalent hardware
     implementations that include the protected capabilities
     as provided by TPMs.
    
     Copyright (c) 2024 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
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC
     itself for full legal notices.";
  
  revision 2024-07-06 {
    description
      "Initial version.";    
    reference 
      "draft-ietf-rats-network-device-subscription";
  }
   
  /*
   * IDENTITIES
   */
   
  identity pcr-unsubscribable {
    base sn:establish-subscription-error;
    description
      "Requested PCR is unsubscribable by the Attester.";
  }
  
  
  /*
   * Groupings
   */ 

  grouping heartbeat {
    description
      "Allows an Attester to push verifiable, current TPM PCR values 
      even when there have been no recent changes to PCRs.";    
    leaf tpm20-subscription-heartbeat {
      type uint16;
      units "seconds";
      description
        "Number of seconds before the Attestation stream should send
        a new notification with a fresh quote.  This allows
        confirmation that the PCR values haven't changed since the
        last tpm20-attestation.";
    }
  }
  
  
  /*
   * RPCs
   */ 
  
  augment "/sn:establish-subscription/sn:input" {
    when 'derived-from-or-self(sn:stream, "attestation")';
    description
      "This augmentation adds a nonce to as a subscription parameters
       that apply specifically to datastore updates to RPC input.";
    uses tpm:nonce;
    leaf-list pcr-index {
      type tpm:pcr;
      min-elements 1;
      description
        "The numbers/indexes of the PCRs. This will act as a filter
        for the subscription so that 'tpm-extend' notifications
        related to non-requested PCRs will not be sent to a
        subscriber.";
    }
  }
  
  /*
   * NOTIFICATIONS
   */  

  notification pcr-extend {
    description
      "This notification indicates that one or more PCRs have been
      extended within a TPM based cryptoprocessor.  In less than the 
      'marshalling-period', it MUST be followed with either a 
      corresponding tpm12-attestation or tpm20-attestation
      notification which exposes the result of the PCRs updated.";
    uses tpm:certificate-name-ref;
    leaf-list pcr-index-changed {
      type tpm:pcr;
      min-elements 1;
      description
        "The number of each PCR extended.  This list MUST contain the
        set of PCRs descibed within the event log details.  This leaf
        can be derived from the list of attested events, but exposing
        it here allows for easy filtering of the notifications of 
        interest to a verifier.";
    }
    list attested-event {
      description
        "A set of events which extended an Attester PCR.  The
        sequence of elements represented in list must match the
        sequence of events placed into the TPM's PCR.";
      container attested-event {
        description
          "An instance of an event which extended an Attester PCR";
        leaf extended-with {
          type binary;
          mandatory true;
          description
            "Information extending the PCR.";
        }
        choice event-details {
          description
            "Contains the event happened the Attester thought  
            was worthy of recording in a PCR.
            
            choices are of types defined by the identityref 
            base tpm:attested_event_log_type";      
          case bios-event-log {
            if-feature "tpm:bios";
            description
              "BIOS/UEFI event log format";
            uses tpm:bios-event-log;
          }
          case ima-event-log {
            if-feature "tpm:ima";
            description
              "IMA event log format";
            uses tpm:ima-event-log;
          }
          case netequip-boot-event-log {
            if-feature "tpm:netequip_boot";
            description
              "IMA event log format";
            uses tpm:network-equipment-boot-event-log;
          }
        }       
      }
    }
  }  

  notification tpm12-attestation {
    if-feature "taa:tpm12";
    description
      "Contains an instance of TPM1.2 style signed cryptoprocessor 
      measurements.  It is supplemented by unsigned Attester 
      information.";   
    leaf certificate-name {
      type tpm:certificate-name-ref;
      mandatory true;
      description
        "Allows a TPM quote to be associated with a certificate.";
    } 
    uses tpm:tpm12-attestation;
    uses tpm:tpm12-hash-algo;
    list unsigned-pcr-values {
      description  
        "Allows notifications to be filtered by PCR number or
        PCR value based on via YANG related mechanisms such as PATH.
        This is done without requiring the filtering structure to be
        applied against TCG structured data.";  
      leaf-list pcr-index {
        type tpm:pcr;
        min-elements 1;
        description
          "PCR index number.";
      }
      leaf-list pcr-value {
        type binary;
        description
          "PCR value in a sequence which matches to the
          'pcr-index'.";
      }
    }
  }

  notification tpm20-attestation {
    if-feature "taa:tpm20";
    description
      "Contains an instance of TPM2 style signed cryptoprocessor 
      measurements.  It is supplemented by unsigned Attester 
      information.";      
    leaf certificate-name {
      type tpm:certificate-name-ref;
      mandatory true;
      description
        "Allows a TPM quote to be associated with a certificate.";
    }            
    uses tpm:tpm20-attestation {
      description  
        "Provides the attestation info.  Also ensures PCRs can be
        XPATH filtered by refining the unsigned data so that it
        appears.";
      refine unsigned-pcr-values {
        min-elements 1;
      }
      refine unsigned-pcr-values/pcr-values {
        min-elements 1;
      }
    }
  }  


  /*
   * DATA NODES
   */  

  augment "/tpm:rats-support-structures" {
    description
      "Defines platform wide 'attestation' stream subscription 
      parameters.";   
    leaf marshalling-period { 
      type uint8;
      default 5;
      description
        "The maximum number of seconds between the time an event  
        extends a PCR, and the 'tpm-extend' notification which
        reports it to a subscribed Verifier.  This period allows 
        multiple extend operations bundled together and handled as a
        group.";  
    }
    leaf tpm12-subscribed-signature-scheme {
      if-feature "taa:tpm12";
      type leafref {
        path "../tpm:attester-supported-algos" +
               "/tpm:tpm12-asymmetric-signing"; 
      }
      description
        "A single signature-scheme which will be used to sign the  
        evidence from a TPM 1.2. which is then placed onto the 
        'attestation' event stream.";
    }
    leaf tpm20-subscribed-signature-scheme {
      if-feature "taa:tpm20";
      type leafref {
        path "../tpm:attester-supported-algos" +
               "/tpm:tpm20-asymmetric-signing"; 
      }
      description
        "A single signature-scheme which will be used to sign the  
        evidence from a TPM 2.0. which is then placed onto the 
        'attestation' event stream.";
    }    
    uses heartbeat{
      if-feature "taa:tpm20";
    }
  }
  
  augment "/tpm:rats-support-structures/tpm:tpms" {
    description
      "Allows the configuration 'attestation' stream parameters for a 
      TPM.";  
    leaf subscription-aik {
      type tpm:certificate-name-ref;
      description 
        "Identifies the certificate-name associated with the 
        notifications in the 'attestation' stream.";
    }
    choice subscribable {
      config true;
      description
        "Indicates that the set of notifications which comprise the  
        'attestation' event stream can be modified or tuned by a 
        network administrator.";
      case tpm12-stream {
        if-feature "taa:tpm12";
        description
          "Configuration elements for a TPM1.2 event stream.";
        uses tpm:tpm12-hash-algo;
        leaf-list tpm12-pcr-index {
          type tpm:pcr;
          description
            "The numbers/indexes of the PCRs which can be
            subscribed.";
        }
      }
      case tpm20-stream {
        if-feature "taa:tpm20";
        description
          "Configuration elements for a TPM2.0 event stream.";
        uses tpm:tpm20-hash-algo;
        leaf-list tpm20-pcr-index {
          type tpm:pcr;
          description
            "The numbers/indexes of the PCRs which can be
            subscribed.";
        }
      }
    }
  }  
}
&lt;CODE ENDS&gt;
</sourcecode>
    </section>
    <section anchor="otherstreams">
      <name>Event Streams for Conceptual Messages</name>
      <t>Analogous to the <xref target="RFC8639"/> compliant &lt;attestation&gt; Event Stream for the conveyance of remote attestation Evidence as defined in Section <xref target="attestationstream"/>, additional Event Streams can be defined for this YANG augment. Additional Event Streams require separate YANG augment specifications that provide the Event Stream definition and optionally a content format definition either via subscriptions to YANG datastores or dedicated YANG Notifications. It is possible to use either YANG subscription methods to other YANG modules for RATS Conceptual Messages or to define Event Streams for other none-YANG-modeled data. In the context of RATS Conceptual Messages, both options <bcp14>MUST</bcp14> be a specified via YANG augments to this specification.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>To be written.</t>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <t>To be written.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="I-D.ietf-rats-architecture">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-architecture-22"/>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Dave Thaler" initials="D." surname="Thaler">
              <organization>Microsoft</organization>
            </author>
            <author fullname="Michael Richardson" initials="M." surname="Richardson">
              <organization>Sandelman Software Works</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel Corporation</organization>
            </author>
            <author fullname="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <date day="28" month="September" year="2022"/>
            <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-tpm-based-network-device-attest">
          <front>
            <title>TPM-based Network Device Remote Integrity Verification</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-tpm-based-network-device-attest-14"/>
            <author fullname="Guy Fedorkow" initials="G." surname="Fedorkow">
              <organization>Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <author fullname="Jessica Fitzgerald-McKay" initials="J." surname="Fitzgerald-McKay">
              <organization>National Security Agency</organization>
            </author>
            <date day="22" month="March" year="2022"/>
            <abstract>
              <t>   This document describes a workflow for remote attestation of the
   integrity of firmware and software installed on network devices that
   contain Trusted Platform Modules [TPM1.2], [TPM2.0], as defined by
   the Trusted Computing Group (TCG)), or equivalent hardware
   implementations that include the protected capabilities, as provided
   by TPMs.

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

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="I-D.ietf-rats-reference-interaction-models">
          <front>
            <title>Reference Interaction Models for Remote Attestation Procedures</title>
            <seriesInfo name="Internet-Draft" value="draft-ietf-rats-reference-interaction-models-10"/>
            <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="Wei Pan" initials="W." surname="Pan">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Eric Voit" initials="E." surname="Voit">
              <organization>Cisco Systems</organization>
            </author>
            <date day="7" month="July" year="2024"/>
            <abstract>
              <t>   This document describes interaction models for remote attestation
   procedures (RATS).  Three conveying mechanisms -- Challenge/Response,
   Uni-Directional, and Streaming Remote Attestation -- are illustrated
   and defined.  Analogously, a general overview about the information
   elements typically used by corresponding conveyance protocols are
   highlighted.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8639">
          <front>
            <title>Subscription to YANG Notifications</title>
            <seriesInfo name="DOI" value="10.17487/RFC8639"/>
            <seriesInfo name="RFC" value="8639"/>
            <author fullname="E. Voit" initials="E." surname="Voit"/>
            <author fullname="A. Clemm" initials="A." surname="Clemm"/>
            <author fullname="A. Gonzalez Prieto" initials="A." surname="Gonzalez Prieto"/>
            <author fullname="E. Nilsen-Nygaard" initials="E." surname="Nilsen-Nygaard"/>
            <author fullname="A. Tripathy" initials="A." surname="Tripathy"/>
            <date month="September" year="2019"/>
            <abstract>
              <t>This document defines a YANG data model and associated mechanisms enabling subscriber-specific subscriptions to a publisher's event streams. Applying these elements allows a subscriber to request and receive a continuous, customized feed of publisher-generated information.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="TPM2.0" target="https://trustedcomputinggroup.org/resource/tpm-library-specification/">
          <front>
            <title>TPM 2.0 Library Specification</title>
            <author>
              <organization>TCG</organization>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="BCP" value="14"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.birkholz-rats-tuda">
          <front>
            <title>Time-Based Uni-Directional Attestation</title>
            <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-tuda-07"/>
            <author fullname="Andreas Fuchs" initials="A." surname="Fuchs">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer Institute for Secure Information Technology</organization>
            </author>
            <author fullname="Ira McDonald" initials="I." surname="McDonald">
              <organization>High North Inc</organization>
            </author>
            <author fullname="Carsten Bormann" initials="C." surname="Bormann">
              <organization>Universität Bremen TZI</organization>
            </author>
            <date day="10" month="July" year="2022"/>
            <abstract>
              <t>   This document defines the method and bindings used to convey Evidence
   via Time-based Uni-Directional Attestation (TUDA) in Remote
   ATtestation procedureS (RATS).  TUDA does not require a challenge-
   response handshake and thereby does not rely on the conveyance of a
   nonce to prove freshness of remote attestation Evidence.  TUDA
   enables the creation of Secure Audit Logs that can constitute
   believable Evidence about both current and past operational states of
   an Attester.  In TUDA, RATS entities require access to a Handle
   Distributor to which a trustable and synchronized time-source is
   available.  The Handle Distributor takes on the role of a Time Stamp
   Authority (TSA) to distribute Handles incorporating Time Stamp Tokens
   (TST) to the RATS entities.  RATS require an Attesting Environment
   that generates believable Evidence.  While a TPM is used as the
   corresponding root of trust in this specification, any other type of
   root of trust can be used with TUDA.

              </t>
            </abstract>
          </front>
        </reference>
        <reference anchor="KGV" target="https://trustedcomputinggroup.org/wp-content/uploads/TCG-NetEq-Attestation-Workflow-Outline_v1r9b_pubrev.pdf">
          <front>
            <title>KGV</title>
            <author>
              <organization>TCG</organization>
            </author>
            <date year="2003" month="October"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 756?>

<section anchor="change-log">
      <name>Change Log</name>
      <t>v00-v05</t>
      <ul spacing="normal">
        <li>minor updates as Charra goes through IESG.</li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to ...</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
3BY94Mg4rmoPnE2RPwyhw4+Upg9lltigrKZpkf+D57SDV+ASVElrZVxzsPPD
U/WDvsKNY4/w2km8dRIvdaIrP/mqyekeTmzvMc8Y3v82x4tF1SO837QuSRZ+
bV9/PODXzsY5mFvYbXhLbPSx7VsXwT7eedh+E77zkbd8izDN+1IsCKTaeNNV
fAVFcN/ilcuF1WVUvS9n1baUupjU7n4fbkqlJT6exVfPyR7f/ivuuN2vvOeO
G/dedieQgc9JuVxV5Njcy+4rZG2675j3jLlaUbApDN2C5yL4rnO+tjSIeo01
3zNBvdK1H3inIVbeUpPX2l3MkMv+uYbPauCrVukJxz8ouQVeB5p93Lj0t5UB
/oKKoZxcaBv4birT8CYIe7wNfACTZFGKPTcHWwxLufmUckEc5XDYzblAqAdL
/ebiFKiX26A3PsH9dDht661/NsosEDwEdwUL3+opmOF0QQWnFF5jKER8b3r9
1FbmcYN78UWu2jOVTJz299+3UL2Uo1GMK8FqKxK/jQCl17/DpzXQzc3NqJpk
iSb2o6FwiD14hm/ff+g2lEAHQpg1eC8TPiWhAZTPaZUoUsHOHREzDlBy8aKV
VxwietqcCbx5LpvWZC0jJz5DCbhOAG64CnwnFG57D/CPB+r89OzF5fnl+dkF
fd+Tn63RQDG5pghtJ5k4bjpSa3eZJbqqyurhuiW+bhfStoaQ3KzbuuSmPogm
T/eYAwUZnrtCSpjKsyBWvBbSx73uKNZN+7sR8AABcQdRVLkCY2NRgILOhZui
Qu+ilIOe3EVR0DsW3oYonet0ojaZ2TJ9xUlbtrWtjKd7oNSOhN2d6O8uFRb7
gotA0IuVKH1QCX7ckefWwTPaSg8UdnIcTRho46pk3nn5szvjxjn7ri2Zjda1
d5GvAJ4IuGK3dqkKF6hyXczp6LVOxkLW/aGXRl6/OnHkEXkiO7fYI7kjwCf0
7o6BJkCMJ2iBJiU4W8D59+BVI1c37AST2rm/u5b6GTrhhtJ0PPZnH9Ke5vZO
WH+yoIUGl30ul3NfvkqRLoyRpnWKOzq0O4odHlIMFhdl4UVnx1MJEg770FEj
VfwFAfuI/sQxsJS2AGPaxYEONtIfRt+5EMnsUcf+YCriCSYa2qyBuV8+QYzi
w64PW/kcQcZWwO6i2cchvd24qtW1D4LvsOakVQ3Pm93oFAx3DEXq2vpwSA+9
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

-->

</rfc>
