<?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.2.9 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-birkholz-yang-basic-remote-attestation-01" category="std">

  <front>
    <title abbrev="BRAT">YANG Module for Basic Challenge-Response-based Remote Attestation Procedures</title>

    <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="Eckel" fullname="Michael Eckel">
      <organization abbrev="Huawei">Huawei Technologies</organization>
      <address>
        <postal>
          <street>Feldbergstrasse 78</street>
          <city>Darmstadt</city>
          <code>64293</code>
          <country>Germany</country>
        </postal>
        <email>michael.eckel@huawei.com</email>
      </address>
    </author>
    <author initials="S." surname="Bhandari" fullname="Shwetha Bhandari">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>shwethab@cisco.com</email>
      </address>
    </author>
    <author initials="B." surname="Sulzen" fullname="Bill Sulzen">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>bsulzen@cisco.com</email>
      </address>
    </author>
    <author initials="E." surname="Voit" fullname="Eric Voit">
      <organization abbrev="Cisco">Cisco Systems</organization>
      <address>
        <email>evoit@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>
        </postal>
        <email>gfedorkow@juniper.de</email>
      </address>
    </author>

    <date year="2018" month="October" day="24"/>

    <area>Security</area>
    <workgroup>TBD</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a YANG RPC and a minimal datastore tree required to retrieve attestation evidence about integrity measurements from a composite device with one or more roots of trust for reporting. Complementary measurement logs are also provided by the YANG RPC originating from one or more roots of trust of measurement. The module defined requires a TPM 2.0 and corresponding Trusted Software Stack included in the device components of the composite device the YANG server is running on.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>This document is based on the terminology defined in the <xref target="I-D.birkholz-attestation-terminology"/> and uses the interaction model and information elements defined in the <xref target="I-D.birkholz-reference-ra-interaction-model"/> document. The currently supported hardware security module (HWM) - sometimes also referred to as an embedded secure element(eSE) - is the Trusted Platform Module (TPM) 2.0 specified by the Trusted Computing Group (TCG). One ore more TPM 2.0 embedded in the components of a composite device - sometimes also referred to as an aggregate device - are required in order to use the YANG module defined in this document. A TPM 2.0 is used as a root of trust for reporting (RTR) in order to retrieve attestation evidence from a composite device. Additionally, it is used as a root of trust for measurement (RTM) in order to provide event logs - sometimes also referred to as measurement logs.</t>

<section anchor="requirements-notation" title="Requirements notation">

<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 RFC
2119, BCP 14 <xref target="RFC2119"/>.</t>

</section>
</section>
<section anchor="the-yang-module-for-basic-remote-attestation-procedures" title="The YANG Module for Basic Remote Attestation Procedures">

<t>One or more TPM 2.0 MUST be embedded in the composite device that is providing attestation evidence via the YANG module defined in this document. The ietf-basic-remote-attestation YANG module enables a composite device to take on the role of Claimant and Attester in accordance with the Remote Attestation Procedures (RATS) architecture <xref target="I-D.birkholz-attestation-terminology"/> and the corresponding challenge-response interaction model defined in the <xref target="I-D.birkholz-reference-ra-interaction-model"/> document. A fresh nonce with an appropriate amount of entropy MUST be supplied by the YANG client in order to enable a proof-of-freshness with respect to the attestation evidence provided by the attester running the YANG datastore. The functions of this YANG module are restricted to 0-1 TPM 2.0 per hardware component.</t>

<section anchor="tree-format" title="Tree format">

<figure><artwork type="YANG"><![CDATA[
<CODE BEGINS>
module: ietf-basic-remote-attestation
  +--ro rats-support-structures
     +--ro supported-algos*            uint16
     +--ro tpms* [tpm_name]
     |  +--ro tpm_name              string
     |  +--ro tpm-physical-index?   int32 {ietfhw:entity-mib}?
     +--ro compute-nodes* [node-name]
     |  +--ro node-name              string
     |  +--ro node-physical-index?   int32 {ietfhw:entity-mib}?
     +--ro endorsement-certificates
        +--ro certificate* [tpm_name]
           +--ro tpm_name                   string
           +--ro tpm-physical-index?        int32 {ietfhw:entity-mib}?
           +--ro endorsement-certificate    binary

  rpcs:
    +---x tpm2-challenge-response-attestation
    |  +---w input
    |  |  +---w tpm2-attestation-challenge
    |  |  |  +---w pcr-list* []
    |  |  |  |  +---w pcr
    |  |  |  |     +---w pcr-indices*                  uint8
    |  |  |  |     +---w (algo-registry-type)
    |  |  |  |        +--:(tcg)
    |  |  |  |        |  +---w tcg-hash-algo-id?       uint16
    |  |  |  |        +--:(ietf)
    |  |  |  |           +---w ietf-ni-hash-algo-id?   uint8
    |  |  |  +---w nonce-value                   binary
    |  |  |  +---w (signature-identifier-type)
    |  |  |  |  +--:(TPM_ALG_ID)
    |  |  |  |  |  +---w TPM_ALG_ID-value?       uint16
    |  |  |  |  +--:(COSE_Algorithm)
    |  |  |  |     +---w COSE_Algorithm-value?   int32
    |  |  |  +---w (key-identifier)?
    |  |  |     +--:(public-key)
    |  |  |     |  +---w pub-key-id?             binary
    |  |  |     +--:(uuid)
    |  |  |        +---w uuid-value?             binary
    |  |  +---w tpm_name?                     string
    |  |  +---w tpm-physical-index?           int32 {ietfhw:entity-mib}?
    |  +--ro output
    |     +--ro tpm2-attestation-response* [tpm_name]
    |        +--ro tpm_name               string
    |        +--ro tpm-physical-index?    int32 {ietfhw:entity-mib}?
    |        +--ro up-time?               uint32
    |        +--ro node-name?             string
    |        +--ro node-physical-index?   int32 {ietfhw:entity-mib}?
    |        +--ro tpms-attest
    |        |  +--ro pcrdigest?                   binary
    |        |  +--ro tpms-attest-result?          binary
    |        |  +--ro tpms-attest-result-length?   uint32
    |        +--ro tpmt-signature?        binary
    +---x basic-trust-establishment
    |  +---w input
    |  |  +---w nonce-value                   binary
    |  |  +---w (signature-identifier-type)
    |  |  |  +--:(TPM_ALG_ID)
    |  |  |  |  +---w TPM_ALG_ID-value?       uint16
    |  |  |  +--:(COSE_Algorithm)
    |  |  |     +---w COSE_Algorithm-value?   int32
    |  |  +---w tpm_name?                     string
    |  |  +---w tpm-physical-index?           int32 {ietfhw:entity-mib}?
    |  |  +---w certificate-name?             string
    |  +--ro output
    |     +--ro attestation-certificates* [tpm_name]
    |        +--ro tpm_name                   string
    |        +--ro tpm-physical-index?        int32 {ietfhw:entity-mib}?
    |        +--ro up-time?                   uint32
    |        +--ro node-name?                 string
    |        +--ro node-physical-index?       int32 {ietfhw:entity-mib}?
    |        +--ro certificate-name?          string
    |        +--ro attestation-certificate?   ietfct:end-entity-cert-cms
    |        +--ro (key-identifier)?
    |           +--:(public-key)
    |           |  +--ro pub-key-id?          binary
    |           +--:(uuid)
    |              +--ro uuid-value?          binary
    +---x log-retrieval
       +---w input
       |  +---w log-selector* [node-name]
       |  |  +---w node-name                 string
       |  |  +---w node-physical-index?      int32 {ietfhw:entity-mib}?
       |  |  +---w (index-type)?
       |  |     +--:(last-entry)
       |  |     |  +---w last-entry-value?   binary
       |  |     +--:(index)
       |  |     |  +---w index-number?       uint64
       |  |     +--:(timestamp)
       |  |        +---w timestamp?          yang:date-and-time
       |  +---w log-type              identityref
       |  +---w pcr-list* []
       |  |  +---w pcr
       |  |     +---w pcr-indices*                  uint8
       |  |     +---w (algo-registry-type)
       |  |        +--:(tcg)
       |  |        |  +---w tcg-hash-algo-id?       uint16
       |  |        +--:(ietf)
       |  |           +---w ietf-ni-hash-algo-id?   uint8
       |  +---w log-entry-quantity?   uint16
       +--ro output
          +--ro system-event-logs
             +--ro node-data* [node-name]
                +--ro node-name              string
                +--ro node-physical-index?   int32 {ietfhw:entity-mib}?
                +--ro up-time?               uint32
                +--ro tpm-updated* [tpm_name]
                |  +--ro tpm_name              string
                |  +--ro tpm-physical-index?   int32 {ietfhw:entity-mib}?
                +--ro log-result
                   +--ro (log-type)
                      +--:(bios)
                      |  +--ro bios-event-logs
                      |     +--ro bios-event-entry* [event-number]
                      |        +--ro event-number    uint32
                      |        +--ro event-type?     uint32
                      |        +--ro pcr-index?      uint16
                      |        +--ro digest-list* []
                      |        |  +--ro (algo-registry-type)
                      |        |  |  +--:(tcg)
                      |        |  |  |  +--ro tcg-hash-algo-id?       uint16
                      |        |  |  +--:(ietf)
                      |        |  |     +--ro ietf-ni-hash-algo-id?   uint8
                      |        |  +--ro digest*                       binary
                      |        +--ro event-size?     uint32
                      |        +--ro event-data*     uint8
                      +--:(ima)
                         +--ro ima-event-logs
                            +--ro ima-event-entry* [event-number]
                               +--ro event-number               uint64
                               +--ro ima-template?              string
                               +--ro filename-hint?             string
                               +--ro filedata-hash?             binary
                               +--ro template-hash-algorithm?   string
                               +--ro template-hash?             binary
                               +--ro pcr-index?                 uint16
                               +--ro signature?                 binary
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="raw-format" title="Raw Format">

<figure><artwork type="YANG"><![CDATA[
<CODE BEGINS>
module ietf-basic-remote-attestation {
  namespace "urn:ietf:params:xml:ns:yang:ietf-basic-remote-attestation";
  prefix "yang-brat";
  
  import ietf-yang-types {
    prefix yang;
  }
  import ietf-hardware {
      prefix ietfhw;
  }
  import ietf-crypto-types {
      prefix ietfct;
  }
  
  organization
   "Fraunhofer SIT";
  contact
   "Henk Birkholz
    Fraunhofer Institute for Secure Information Technology
    Email: henk.birkholz@sit.fraunhofer.de";
  description
    "A YANG module to enable a TPM 2.0 based remote attestation
     procedure.
     Copyright (C) Fraunhofer SIT (2018).";
  revision "2018-06-15" {
  description
    "Initial version";
  reference
    "draft-birkholz-yang-basic-remote-attestation";
  }
  
  grouping hash-algo {
    description
      "A selector for the hashing algorithm";
    choice algo-registry-type {
      mandatory true;
      description
        "Unfortunately, both IETF and TCG have registries here.
        Choose your weapon wisely.";
      case tcg {
        description
          "you chose the east door, the tcg space opens up to
          you.";
        leaf tcg-hash-algo-id {
          type uint16;
          description
            "This is an index referencing the TCG Algorithm
            Registry based on TPM_ALG_ID.";
        }
      }
      case ietf {
        description
          "you chose the west door, the ietf space opens up to
          you.";
        leaf ietf-ni-hash-algo-id {
          type uint8;
          description
            "This is an index referencing the Named Information
             Hash Algorithm Registry.";
        }
      }
    }
  }
  
  grouping hash {
    description
      "The hash value including hash-algo identifer";
    list hash-digests {
      description
        "The list of hashes.";
      container hash-digest {
        description
          "A hash value based on a hash algorithm registered by an
          SDO.";
        uses hash-algo;
        leaf hash-value {
          type binary;
          description
            "The binary representaion of the hash value.";
        }
      }
    }
  }
  
  grouping nonce {
    description
      "A nonce to show freshness and counter replays.";
    leaf nonce-value {
      type binary;
      mandatory true;
      description
        "This nonce SHOULD be generated via a registered
        cryptographic-strength algorithm. In consequence, the length
        of the nonce depends on the hash algorithm used. The algorithm
        used in this case is independent from the hash algorithm used to
        create the hash-value in the response of the attestor.";
    }
  }
  
  grouping pcr-selection {
    description
      "A Verifier can request one or more PCR values uses its
      individually created AC. The corresponding selection filter is
      represented in this grouping. Requesting a PCR value that is not in 
      scope of the AC used, detailed exposure via error msg should be
      avoided.";
    list pcr-list {
      description
        "For each PCR in this list an individual list of banks (hash-algo)
        can be requested. It depends on the datastore, if every bank in 
        this grouping is included per PCR (crude), or if each requested
        bank set is returned for each PCR individually (elegant).";
      container pcr {
        description
          "The composite of a PCR number and corresponding bank numbers.";
        leaf-list pcr-indices {
           type uint8;
           description
             "The number of the PCR. At the moment this is limited
             32";
        }
        uses hash-algo;
      }
    }
  }
  
  grouping pcr-selector {
    description
      "A Verifier can request the generation of an attestation
      certificate (a signed public attestation key
      (non-migratable, tpm-resident) wrt one or more PCR values.
      The corresponding creation input is represented in this grouping.
      Requesting a PCR value that is not supported results in an error,
      detailed exposure via error msg should be avoided.";
    list pcr-list {
      description
        "For each PCR in this list an individual hash-algo can be
        requested.";
      container pcr {
        description
          "The composite of a PCR number and corresponding bank numbers.";
        leaf-list pcr-index {
           type uint8;
           description
             "The numbers of the PCRs that are associated with
             the created key. At the moment the highest number is 32";
        }
        uses hash-algo;
      }
    }
  }
  
  grouping signature-scheme {
    description
      "The signature scheme used to sign the evidence.";
    choice signature-identifier-type {
      mandatory true;
      description
        "There are multiple ways to reference a signature type.
        This used to select the signature algo to sign the quote
        information response.";
      case TPM_ALG_ID {
        description
          "This references the indices of table 9 in the TPM 2.0 structure specification.";
        leaf TPM_ALG_ID-value {
          type uint16;
          description
            "The TPM Algo ID.";
        }
      }
      case COSE_Algorithm {
        description
          "This references the IANA COSE Algorithms Registry indices. Every index of this
          registry to be used must be mapable to a TPM_ALG_ID value.";
        leaf COSE_Algorithm-value {
          type int32;
          description
            "The TPM Algo ID.";
        }
      }
    }
  }
  
  grouping attestation-key-identifier {
    description
      "A selector for a suitable key identifier.";
    choice key-identifier {
      description
        "Identifier for the attestation key to use for signing
        attestation evidence.";
      case public-key {
        leaf pub-key-id {
          type binary;
          description
            "The value of the identifier for the public key.";
        }
      }
      case uuid {
        description
          "Use a YANG agent generated (and maintained) attestation
          key UUID.";
        leaf uuid-value {
          type binary;
          description
            "The UUID identifying the corresponding public key.";
        }
      }
    }
  }
  
 grouping tpm-name {
   description
     "In a system with multiple-TPMs get the data from a specific TPM
      identified by the name and physical-index.";
   leaf tpm_name {
      type string;
      description
      "Name of the TPM or All";
   }
   leaf tpm-physical-index {
       if-feature ietfhw:entity-mib;
       type int32 {
            range "1..2147483647";
       }
       config false;
       description
            "The entPhysicalIndex for the TPM.";
        reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
     }
 }
 grouping compute-node {
   description
     "In a distributed system with multiple compute nodes
      this is the node identified by name and physical-index.";
   leaf node-name {
      type string;
      description
      "Name of the compute node or All";
   }
   leaf node-physical-index {
       if-feature ietfhw:entity-mib;
       type int32 {
            range "1..2147483647";
       }
       config false;
       description
            "The entPhysicalIndex for the compute node.";
        reference
            "RFC 6933: Entity MIB (Version 4) - entPhysicalIndex";
     }
 }
 grouping node-uptime {
   description
     "Uptime in seconds of the node.";
   leaf up-time {
     type uint32;
     description
     "Uptime in seconds of this node reporting its data";
   }
 }
  identity log-type {
    description
      "The type of logs available.";
  }

  identity bios {
    base log-type;
    description
      "Measurement log created by the BIOS/UEFI.";
  }

  identity ima {
    base log-type;
    description
      "Measurement log created by IMA.";
  }

  grouping log-identifier {
    description
      "Identifier for type of log to be retrieved.";
    leaf log-type {
      type identityref {
        base log-type;
      }
      mandatory true;
      description
        "The corresponding measurement log type identity.";
    }
  }


grouping boot-event-log {
  description
    "Defines an event log corresponding to the event that extended the PCR";
  leaf event-number {
      type uint32;
      description
  "Unique event number of this event";
  }
  leaf event-type {
      type uint32;
      description
  "log event type";
  }
  leaf pcr-index {
     type uint16;
     description
 "Defines the PCR index that this event extended";
  }
  list digest-list {
    description "Hash of event data";
    uses hash-algo;
    leaf-list digest {
      type binary;
      description
      "The hash of the event data";
    }
  }
   leaf event-size {
     type uint32;
     description
     "Size of the event data";
   }
   leaf-list event-data {
     type uint8;
     description
     "the event data size determined by event-size";
   }
}

 grouping ima-event {
   description
     "Defines an hash log extend event for IMA measurements";
   leaf event-number {
       type uint64;
       description
  "Unique number for this event for sequencing";
     }
   leaf ima-template {
     type string;
     description
     "Name of the template used for event logs
     for e.g. ima, ima-ng";
   }
   leaf filename-hint {
       type string;
       description
   "File that was measured";
   }
   leaf filedata-hash {
       type binary;
       description
    "Hash of filedata";
   }
  leaf template-hash-algorithm {
    type string;
    description
     "Algorithm used for template-hash";
   }
   leaf template-hash {
  type binary;
  description
   " hash(filedata-hash, filename-hint)";
   }
   leaf pcr-index {
      type uint16;
      description
  "Defines the PCR index that this event extended";
   }
   leaf signature {
     type binary;
     description
     "The file signature";
   }
 }

  grouping bios-event-log {
    description
    "Measurement log created by the BIOS/UEFI.";
    list bios-event-entry {
      key event-number;
       description
       "Ordered list of TCG described event log
        that extended the PCRs in the order they
        were logged";
        uses boot-event-log;
     }
  }

  grouping ima-event-log {
    list ima-event-entry {
      key event-number;
      description
      "Ordered list of ima event logs by event-number";
       uses ima-event;
    }
    description
      "Measurement log created by IMA.";
  }

  grouping event-logs {
    description
      "A selector for the log and its type.";
    choice log-type {
      mandatory true;
      description
        "Event log type determines the event logs content.";

      case bios {
        description
          "BIOS/UEFI event logs";
        container bios-event-logs {
          description
            "This is an index referencing the TCG Algorithm
            Registry based on TPM_ALG_ID.";
          uses bios-event-log;
        }
      }
      case ima {
        description
          "IMA event logs";
        container ima-event-logs {
          description
            "This is an index referencing the TCG Algorithm
            Registry based on TPM_ALG_ID.";
          uses ima-event-log;
        }
      }
    }
  }


  rpc tpm2-challenge-response-attestation {
    description
      "This RPC accepts the input for TSS commands of the managed device.
      ComponentIndex from the hardware manager YANG module to refer to 
      dedicated TPM in composite devices, e.g. smart NICs, is still a 
      TODO.";
    input {
      container tpm2-attestation-challenge {
        description
          "This container includes every information element defined
           in the reference challenge-response interaction model for
           remote attestation. Corresponding values are based on
           TPM 2.0 structure definitions";
        uses pcr-selection;
        uses nonce;
        uses signature-scheme;
        uses attestation-key-identifier;
      }
      uses tpm-name;
    }
    output {
      list tpm2-attestation-response {
        key tpm_name;
        description
          "The binary output of TPM2b_Quote. An TPMS_ATTEST structure
          including a length, encapsulated in a signature";
        uses tpm-name;
        uses node-uptime;
        uses compute-node;
        container tpms-attest {
          leaf pcrdigest {
            type binary;
            description
              "split out value of TPMS_QUOTE_INFO for convenience";
          }
          leaf tpms-attest-result {
            type binary;
            description
              "The complete TPM generate structure including signature.";
          }
          leaf tpms-attest-result-length {
            type uint32;
            description
              "Length of attest result provided by the TPM structure.";
          }
          description
            "A composite of value and length and list of selected
            pcrs (original name: [type]attested)";
        }
        leaf tpmt-signature {
          type binary;
          description
             "Split out value of the signature for convenience. TODO: check for length values that complent binary value data node leafs.";
        }
      }
    }
  }
  
  rpc basic-trust-establishment {
    description
      "This RPC creates a tpm-resident, non-migratable key to be used
      in TPM_Quote commands, an attestation certificate.";
    input {
      uses nonce;
      uses signature-scheme;
      uses tpm-name;
      leaf certificate-name {
         type string;
         description
         "An arbitrary name for the identity certificate chain requested.";
      }
    }
    output {
    list attestation-certificates {
      key tpm_name;
      description
        "Attestation Certificate data from a TPM identified by the TPM name";
      uses tpm-name;
      uses node-uptime;
      uses compute-node;
      leaf certificate-name {
         type string;
         description
         "An arbitrary name for this identity certificate or certificate chain.";
      }      
      leaf attestation-certificate {
        description
          "The binary signed certificate chain data for this identity certificate.";
        type ietfct:end-entity-cert-cms;
      }
      uses attestation-key-identifier;
    }
    }
  }
  
  rpc log-retrieval {
    description
      "Logs Entries are either identified via indices or via providing
      the last line received. The number of lines returned can be limited.
      The type of log is a choice that can be
      augmented.";
    input {
      list log-selector {
        key node-name;
        description
         "Selection of log entries to be reported.";
        uses compute-node;
        choice index-type {
          description
             "Last log entry received, log index number, or timestamp.";

          case last-entry {
            description
              "The last entry of the log already retrieved.";
            leaf last-entry-value {
              description
              "Content of an log event which matches 1:1 with a 
              unique event record contained within the log.  Log 
              entries subsequent to this will be passed to the 
              requestor.  Note: if log entry values are not unique, 
              this MUST return an error.";
              type binary;
            }
          }
          case index {
            description
              "Numeric index of the last log entry retrieved, or zero.";
            leaf index-number {
              description
              "The numeric index number of a log entry.  Zero means 
              to start at the beginning of the log.   Entries
              subsequent to this will be passed to the 
              requestor.";
              type uint64;
            }
          }
          case timestamp {
            leaf timestamp {
              type yang:date-and-time;
              description
                "Timestamp from which to start the extraction.  The next
                log entry subsequent to this timestamp is to be sent.";
            }
            description
              "Timestamp from which to start the extraction.";
          }
        }
      }
      uses log-identifier;
      uses pcr-selection;
      leaf log-entry-quantity {
        type uint16;
        description
         "The number of log entries to be returned. If omitted, it 
         means all of them.";
      }
    } 
    output {
      container system-event-logs {
         description
         "The requested data of the measurement event logs";
         list node-data {
           key node-name;
           description
           "Event logs of a node in a distributed system
            identified by the node name";
           uses compute-node;
           uses node-uptime;
           list tpm-updated {
             key tpm_name;
             description
             "TPM these events may have recorded data in";
             uses tpm-name;
           }
           container log-result {
             description
             "The requested entries of the corresponding log.";
             uses event-logs;
           }
         }
       }
     }
   }
  container rats-support-structures {
    leaf-list supported-algos {
      type uint16;
      description
        "Supported TPM_ALG_ID values for the TPM in question.
        Will include ComponentIndex soon.";
    }
  list tpms {
      key tpm_name;
      uses tpm-name;
      description
        "A list of TPMs in this composite
         device that rats can be conducted with.";
    }
  list compute-nodes {
      key node-name;
      uses compute-node;
      description
        "A list names of hardware components in this composite
         device that rats can be conducted with.";
   }
   container endorsement-certificates {
      list certificate {
        key tpm_name;
        uses tpm-name;
        description
          "The TPM's endorsement-certificate.";
        leaf endorsement-certificate {
          type binary;
          mandatory true;
          description
            "The signed pulic endorsement key (EK) and corresponding claims
             (EK Certificate). In a TPM 2.0 the EK Certificate resides in a
             well-defined NVRAM location by the TPM vednor.";
        }
      }
    description
      "Basic information elements to enable RATS.";
    }
  config false;
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="iana-considerations" title="IANA considerations">

<t>This document will include requests to IANA:</t>

<t>To be defined yet.</t>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>There are always some.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Not yet.</t>

</section>
<section anchor="change-log" title="Change Log">

<t>Changes from version 00 to version 01:</t>

<t><list style="symbols">
  <t>Addressed author’s comments</t>
  <t>Extended complementary details about attestation-certificates</t>
  <t>Relabeled chunk-size to log-entry-quantity</t>
  <t>Relabeled location with compute-node or tpm-name where appropriate</t>
  <t>Added a valid entity-mib physical-index to compute-node and tpm-name to map it back to hardware inventory</t>
  <t>Relabeled name  to tpm_name</t>
  <t>Removed event-string in last-entry</t>
</list></t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<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 initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<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="I-D.ietf-netconf-crypto-types">
<front>
<title>Common YANG Data Types for Cryptography</title>

<author initials='K' surname='Watsen' fullname='Kent Watsen'>
    <organization />
</author>

<author initials='W' surname='HAIGUANG' fullname='WANG HAIGUANG'>
    <organization />
</author>

<date month='October' day='22' year='2018' />

<abstract><t>This document defines YANG identities, typedefs, the groupings useful for cryptographic applications.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-netconf-crypto-types-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-netconf-crypto-types-02.txt' />
</reference>



<reference anchor="I-D.birkholz-reference-ra-interaction-model">
<front>
<title>Reference Interaction Model for Challenge-Response-based Remote Attestation</title>

<author initials='H' surname='Birkholz' fullname='Henk Birkholz'>
    <organization />
</author>

<author initials='M' surname='Eckel' fullname='Michael Eckel'>
    <organization />
</author>

<date month='July' day='2' year='2018' />

<abstract><t>This document defines an interaction model for a basic remote attestation procedure.  Additionally, the required information elements are illustrated.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-birkholz-reference-ra-interaction-model-00' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-birkholz-reference-ra-interaction-model-00.txt' />
</reference>




    </references>

    <references title='Informative References'>





<reference anchor="I-D.birkholz-attestation-terminology">
<front>
<title>Reference Terminology for Remote Attestation Procedures</title>

<author initials='H' surname='Birkholz' fullname='Henk Birkholz'>
    <organization />
</author>

<author initials='M' surname='Wiseman' fullname='Monty Wiseman'>
    <organization />
</author>

<author initials='H' surname='Tschofenig' fullname='Hannes Tschofenig'>
    <organization />
</author>

<date month='July' day='2' year='2018' />

<abstract><t>This document is intended to illustrate and remediate the impedance mismatch of terms related to remote attestation procedures used in different domains today.  New terms defined by this document provide a consolidated basis to support future work on attestation procedures in the IETF and beyond.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-birkholz-attestation-terminology-02' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-birkholz-attestation-terminology-02.txt' />
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
i18fwyEG/wdSeA4XFXQAAA==

-->

</rfc>

