﻿<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2234 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2234.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3282 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3282.xml">
<!ENTITY RFC5209 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5209.xml">
<!ENTITY RFC5792 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5792.xml">
<!ENTITY RFC5793 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5793.xml">
<!ENTITY RFC6241 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml">
<!ENTITY RFC6242 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6242.xml">
<!ENTITY RFC6876 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6876.xml">
<!ENTITY RFC7317 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7317.xml">
<!ENTITY RFC7589 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7589.xml">
<!ENTITY RFC7950 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml">
<!ENTITY RFC8040 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml">
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8412 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8412.xml">
<!ENTITY RFC8639 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8639.xml">
<!ENTITY RFC8640 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8640.xml">
<!ENTITY RFC8641 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8641.xml">
<!ENTITY I-D.ietf-sacm-coswid SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sacm-coswid-12.xml">
<!ENTITY I-D.ietf-sacm-terminology SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-sacm-terminology-05.xml">
<!ENTITY I-D.ietf-mile-xmpp-grid SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-mile-xmpp-grid-04.xml">
<!ENTITY I-D.ietf-netconf-restconf-notif SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-netconf-restconf-notif-15.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e., [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="no" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-sacm-epcp-01"
  ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->
  <front>
    <title abbrev="Endpoint Posture Collection Profile">Endpoint Posture
      Collection Profile</title>
    <author fullname="Danny Haynes" initials="D.H."
      surname="Haynes">
      <organization>The MITRE Corporation</organization>
      <address>
        <postal>
          <street>202 Burlington Road</street>
          <city>Bedford</city>
          <region>MA</region>
          <code>01730</code>
          <country>USA</country>
        </postal>
        <phone/>
        <email>dhaynes@mitre.org</email>
      </address>
    </author>
    <author fullname="Jessica Fitzgerald-McKay" initials="J.M." surname="Fitzgerald-McKay">
      <organization>Department of Defense</organization>
      <address>
        <postal>
          <street>9800 Savage Road</street>
          <city>Ft. Meade</city>
          <region>Maryland</region>
          <country>USA</country>
        </postal>
        <email>jmfitz2@nsa.gov</email>
      </address>
    </author>  
    <date month="February" year="2020"/>
    <area>General</area>
    <workgroup>SACM</workgroup>
    <abstract>
      <t>This document specifies the Endpoint Posture Collection 
        Profile, which describes the requirements for the 
        application of IETF, TNC, and ISO/IEC data models, protocols, and 
        interfaces to support the on-going collection and communication 
        of endpoint posture to a centralized server where it can be 
        stored and made available to other tools.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="Introduction" title="Introduction">
      <t>The Endpoint Posture Collection Profile (EPCP) describes the
      requirements for the collection and communication of posture 
      information from network-connected endpoints to a centralized 
      server leveraging prior work from the IETF NEA WG, the IETF NETCONF 
      WG, IETF NETMOD WG, the Trusted Computing Group (TCG) Trusted Network 
      Communications <xref target="TNC"/> Work Group, and the International 
      Organization for Standardization/International Electrotechnical 
      Commission Joint Technical Committee (JTC) 1, Subcommittee (SC) 7, 
      WG 21 (ISO/IEC JTC 1, SC7, WG21).</t>      

      <t>This document focuses on reducing the security exposure 
      of a network by enabling: <list style="symbols">
        <t>event-driven posture collection;</t> 
        <t>standardized querying of additional posture information as needed;</t> 
        <t>and the communication of that data to a centralized server where 
        it can be made available to other components.</t>
      </list></t> 
      <t>Thus, eliminating the need for multiple collection tools on an endpoint 
      collecting the same data for different purposes. Future revisions of this 
      document may include support for the collection of posture information from 
      other endpoint types as well as a standardized interface for storing and 
      querying data in repositories among other capabilities. Additional information 
      about this future work can be found in <xref target="Future-Work"/> 
      of this document.</t>

      <t>To support the collection of posture information from new 
        endpoint types, this document is organized such that it first 
        provides a high-level overview of EPCP as well as the abstract  
        components and transactions that will be realized by implementations 
        (<xref target="EPCP"/>). This is followed by individual sections that 
        discuss the requirements for specific implementations of the EPCP 
        for a given endpoint type (e.g., traditional workstations and servers, 
        network devices, mobile devices, etc.) along with any extensions for 
        supported use cases (software asset management, vulnerability management, 
        etc.). Over time, the requirements may be expanded to address issues that 
        arise, support new capabilities, or support new implementations
        beyond IETF NEA and IETF NETCONF.</t>
    
    <section title="Conventions Used in This Document">
        <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
        BCP14 <xref target="RFC2119"/><xref target="RFC8174"/> when, and only 
        when, they appear in all capitals, as shown here.</t>
         
        <t>This specification does not distinguish blocks of informative
        comments and normative requirements. Therefore, for the sake of clarity, 
        note that lower case instances of must, should, etc. do not indicate
        normative requirements.</t>
    </section>
    <section title="Terminology">
      <t>This document uses terms as defined in <xref target="I-D.ietf-sacm-terminology"/> 
      unless otherwise specified.</t>
    </section>
   </section>
    
	<section title="Endpoint Posture Collection Profile" anchor="EPCP">
	  <t>The EPCP describes how IETF, TCG, and ISO/IEC data models, protocols,
	    and interfaces can be used to support the posture assessment of 
	    endpoints on a network.  This profile does not generate new data 
	    models, protocols, or interfaces; rather, it offers requirements 
	    for a full end-to-end solution for posture assessment, as well as a 
	    fresh perspective on how existing standards can be leveraged against 
	    vulnerabilities. Rationale for the EPCP solution as well as the 
	    supported and non-supported use cases is available in 
	    <xref target="Rationale-for-an-EPCP-Solution"/> and 
	    <xref target="EPCP-Supported-Use-Cases-and-Non-Supported-Use-Cases"/> 
	    respectively.</t>

	    <t>The EPCP makes it possible to perform posture assessments against all
   network-connected endpoints by:<list style="numbers">
	      <t>uniquely identifying the endpoint;</t>
	      <t>collecting and evaluating posture based on data from the endpoint 
	        (asset management, software asset management, vulnerability management,
	        and configuration management);</t>
	      <t>creating a secure, authenticated, confidential channel between
	        the endpoint and the posture manager;</t>
	      <t>enabling the endpoint to notify the posture manager about changes to its
	        configuration;</t>
	      <t>enabling the posture manager to request information about the
	        configuration of the endpoint; and</t>
	      <t>storing the posture information in a repository linked to the
	        identifier for the endpoint.</t>
        </list>
      </t>
      
      <t>Furthermore, the EPCP aims to support data storage and data sharing
      capabilities to make the collected posture information available to authorized
      parties and components in support of other post-processes (analytic, access control,
      remediation, reporting, etc.).</t>

	  <section title="Components" anchor="Components">
	    <t>To support posture assessment, data storage, and data sharing capabilities, 
      the EPCP defines several components.  Some of these components reside on the 
      target endpoint.  Others reside on the posture manager that manages communications 
      with the target endpoint and stores the target endpoint's posture information 
      in a repository.</t>
	    
	    <t>The primary focus of this document is on the communication between the posture 
      manager and endpoints through the posture collection manager and posture collection 
      engine components. While the orchestrator, evaluator, repository, and API will be 
      discussed in the context of the EPCP, these components are for illustrative purposes
      only and are not strictly defined nor are requirements provided for them. As a result, 
      vendors are free to implement these components and interfaces in a way that makes the 
      most sense for their products.</t>

      <figure title="EPCP Components" anchor="EPCP-Components">
        <artwork>  
Orchestrator
+--------+
|        |
|        |
|        |&lt;---+
|        |    |
|        |    |   ************Posture Collection Profile*************
|        |    |   *                                                 *
+--------+    |   * Posture Manager              Endpoint           *
              |   * +----------------+           +----------------+ *
    publish/  |   * |                |           |                | *
    subscribe |   * |                |           |                | *
              +----&gt;|                |           |                | *
Repository        * |                | report/   |                | *
+--------+        * | +------------+ | publish   | +------------+ | *
|        |  store * | |            | |&lt;----------| |            | | *
|        |&lt;--------&gt;| | Posture    | |           | | Posture    | | *
|        |        * | | Collection | |           | | Collection | | *
|        |        * | | Manager    | | query/    | | Engine     | | *
|        |&lt;---+   * | |            | | subscribe | |            | | *
|        |    |   * | |            | |----------&gt;| |            | | *
+--------+    |   * | +------------+ |           | +------------+ | *
              |   * |                |           |                | *
     request/ |   * |                |           |                | *
     response |   * |                |           |                | *
              |   * |                |           |                | *
Evaluator     |   * +----------------+           +----------------+ *
+--------+    |   *       ^    ^                                    *
|        |    |   ********|****|*************************************
|        |    |           |    +-------------+
|        |&lt;---+           |                  |
|        |                |      +-------------------------+
|        |                |      | Application Programming |
|        |                |      | Interface (API)         |
+--------+                |      +-------------------------+
    ^                     |    
    |    query/response   |    
    +---------------------+                                                                
        </artwork>
      </figure>
	    <section title="Endpoint" anchor="Endpoint">
	      <t>An endpoint is defined in <xref target="RFC6876"/>. In the 
	        EPCP, the endpoint is monitored by the enterprise and is 
	        the target of posture assessments. To support these 
	        posture assessments, posture information is collected via 
	        a posture collection engine.</t>
	      <section title="Posture Collection Engine" anchor="Posture-Collection-Engine">
	        <t>The posture collection engine is located on the target endpoint and can 
            either push data to the posture collection manager 
            (see <xref target="Event-Driven-Collection"/>) or receive queries for data 
            from the posture collection manager (see <xref target="Querying-the-Endpoint"/>). 
            The posture collection engine sends collected posture information to the 
            posture manager where it can be sanity checked and stored in the repository. 
            The posture collection engine also contains a capability that sets up 
            exchanges between the target endpoint and posture manager. This capability 
            makes the posture collection engine responsible for performing the 
            client-side portion of encryption handshakes, and for locating authorized 
            posture managers with which to communicate.</t>
	      </section>
	    </section>
	    <section title="Posture Manager" anchor="Posture-Manager">
	      <t>The posture manager is an endpoint that collects and validates posture 
	        information received about a target endpoint. It also stores the posture information 
	        it receives in the repository where it can be retrieved and used in evaluations. 
          The posture manager does not evaluate the posture information.</t>
	      <section title="Posture Collection Manager" anchor="Posture-Collection-Manager">
	        <t>The posture collection manager is a lightweight and extensible component that 
	          facilitates the coordination and execution of posture collection requests using 
	          collection mechanisms deployed across the enterprise. The posture collection manager 
	          may query and retrieve guidance from the repository to guide the collection of 
	          posture information from the target endpoint.</t>
	        <t>The posture collection manager also contains a capability that sets up exchanges 
	          between the target endpoint and the posture manager, and manages data sent to and 
	          from the posture collection engine. It is also responsible for performing the 
            server-side portion of encryption handshakes.</t>
          <t>If the posture manager wants to register for the continuous collection of endpoint posture 
            changes with the endpoint, then it must do so in a secure and scalable way.  Specifically, it 
            will need to create subscriptions with endpoints in a way which allows the posture data 
            to be pushed. Effectively, this means that the target endpoint must be able to establish 
            secure transport connectivity to the posture collection manager as needed, and the posture
            collection manager must be able to periodically collect the current state of the endpoint
            and assess its posture.</t>   
	      </section>
	    </section>
	    <section title="Repository" anchor="Repository-1">
	      <t>The repository hosts guidance, endpoint identification information, and 
	        posture information reported by target endpoints where it is made available to 
	        authorized components and persisted over a period of time set by the administrator. 
	        Information stored in the repository will be accessible to authorized parties via a 
	        standardized API. The repository may be a standalone component or may be located on 
          the posture manager. Furthermore, an implementation is not restricted to a single 
          repository and may leverage several repositories to provide this functionality.</t>
	    </section>
	    <section title="Evaluator" anchor="Evaluator">
	      <t>The evaluator assesses the posture status of a target endpoint by comparing 
	        collected posture information against the desired state of the target endpoint 
	        specified in guidance. The evaluator queries and retrieves the appropriate 
	        guidance from the repository as well as queries and retrieves the posture 
	        information required for the assessment from the repository. If the required 
	        posture information is not available in the repository, the evaluator may 
	        request the posture information from the posture collection manager, which will 
	        result in the collection of additional posture information from the target 
	        endpoint. This information is subsequently stored in the repository where it 
	        is made available to the evaluator and other components. The results of the 
	        assessment are stored in the repository where they are available to tools and 
	        administrators for post-processes including follow-up actions, further evaluation, 
          and historical purposes. The evaluator may also be triggered by events on an
          endpoint or the network.</t>
	    </section>
	    <section title="Orchestrator" anchor="Orchestrator">
	      <t>The orchestrator provides a publish/subscribe interface for the repository 
	        so that infrastructure endpoints can subscribe to and receive published posture 
	        assessment results from the repository regarding endpoint posture changes.</t>
	    </section>
	    <section title="Application Programming Interface"
	      anchor="API">
	      <t>The API allows authorized users, infrastructure endpoints, and software to query 
        the repository as well as manage endpoints and other components used in EPCP via 
        the posture manager.</t>
	    </section>
	  </section>
	  
	  <section title="Transactions" anchor="Transactions">
	    <t>The following sections describe the transactions associated with EPCP components 
	      and may be provided in an implementation. The transactions span the deployment of 
        an endpoint, integration into the EPCP, data collection, and the storage and 
        dissemination of that information for different use cases.</t>
	    <section title="Provisioning" anchor="Provisioning">
	      <t>An endpoint is provisioned with one or more attributes that will serve as its 
          unique identifier on the network as well as the components (e.g., posture collection
          engine, etc.) and data models (e.g., SWID) necessary to interact with the posture 
          manager. Examples of such attributes include serial numbers, hardware certificates 
          compliant with <xref target="IEEE-802-1ar"/>, and the identities of hardware 
          cryptographic modules among others. An endpoint should also have a MAC address which 
          should change over time. Once provisioning is complete, the endpoint is deployed on the 
          network. Over time, components and data models may need to be added to the endpoint 
          or updated to support the collection needs of an enterprise.</t>
	    </section>
	    <section title="Discovery and Validation" anchor="Discovery-and-Validation">
	      <t>If necessary, the target endpoint finds and validates the posture manager.
	        The posture collection engine on the target endpoint and posture collection 
	        manager on the posture manager complete an encryption handshake, during which endpoint 
	        identity information is exchanged.</t>
	    </section>
	    <section title="Event-Driven Collection" anchor="Event-Driven-Collection">
	      <t>The posture assessment is initiated when the posture collector engine on the target 
	        endpoint notices that relevant posture information on the endpoint has changed.  
	        Then, the posture collection engine initiates a posture assessment information 
	        exchange with the posture collection manager.</t>
	    </section>
	    <section title="Querying the Endpoint" anchor="Querying-the-Endpoint">
	      <t>The posture assessment is initiated by the posture collection manager.  This can occur 
	        because: <list style="numbers">
	          <t>policy states that a previous assessment has become invalid, or</t>
	          <t>the posture collection manager is triggered by a sensor or an administrator (via the 
	            posture manager's API) that an assessment must be completed.</t>  
	        </list>
	      </t>
	    </section>
	    <section title="Data Storage" anchor="Data-Storage-2">
	      <t>Once posture information is received by the posture manager, it is
	        forwarded to the repository.  The repository could be co-located with
	        the posture manager, or standalone where the repository and posture manager 
          directly communicate with each other or the communication is brokered through
          the orchestrator. The posture information is stored in the repository along 
          with past posture information collected about the target endpoint.</t>
	    </section>
	    <section title="Data Sharing" anchor="Data-Sharing-2">
	      <t>Because the target endpoint posture information was sent in standards-based 
	        data models over secure, standardized protocols, and then stored in a
	        centralized repository linked to unique endpoint identifiers,
	        authorized parties are able to access the posture information.  Such
	        authorized parties may include, but are not limited to,
	        administrators or endpoint owners (via the posture manager's API), evaluators 
          that access the repository directly, and orchestrators that rely on 
          publish/subscribe communications with the repository.</t> 
	    </section>
	  </section>
	</section>
	
  <section title="IETF NEA EPCP Implementation for Traditional Endpoints" anchor="IETF-NEA-EPCP-Implementation">
	    <t>When EPCP is used, posture collectors running on the 
	      target endpoint gather posture information as changes 
	      occur on the endpoint. The posture information is aggregated 
        by the posture broker client and forwarded to a posture manager, 
        over a secure channel, via the posture transport client. Once 
        received by the posture transport server on the posture manager, 
        the posture information is directed by the posture broker server 
        to the appropriate posture validators where it can be processed 
	      and stored in a repository. There the posture information can 
	      be used to carry out assessments or other post-processing tasks. 
        Posture collectors can also be queried by posture validators to 
	      refresh posture information about the target endpoint or 
	      to ask a specific question about posture information.  
	      This is shown in <xref target="NEA-Components"/>.</t>
      <figure title="NEA Components" anchor="NEA-Components">
        <artwork>
Posture                  Posture
Collection               Collection
Manager                  Engine
+---------------+        +---------------+
|               |        |               |
| +-----------+ | PA-TNC | +-----------+ |
| | Posture   | |--------| | Posture   | |
| | Validator | |        | | Collector | |
| +-----------+ |        | +-----------+ |
|      |        |        |      |        |
|      | IF-IMV |        |      | IF-IMC |     
|      |        |        |      |        |     
| +-----------+ | PB-TNC | +-----------+ |     
| | PB Server | |--------| | PB Client | |
| +-----------+ |        | +-----------+ |
|      |        |        |      |        |
|      |        |        |      |        |
|      |        |        |      |        |
| +-----------+ |        | +-----------+ |
| | PT Server | |&lt;------&gt;| | PT Client | |
| +-----------+ | PT-TLS | +-----------+ |
|               |        |               |
+---------------+        +---------------+
        </artwork>
      </figure>
	
	    <t>These requirements are written with a view to performing a posture
	      assessment on an endpoint and refer to defined components of the NEA 
        architecture <xref target="RFC5209"/> as well as the <xref target="IF-IMV">
        IF-IMV</xref> and <xref target="IF-IMC">IF-IMC</xref> interfaces defined
        in the Trusted Computing Group's TNC Work Group.  As with the NEA architecture, 
        vendors have discretion as to how these NEA components map to separate 
        pieces of software or endpoints.</t>
	    <t>It should be noted that the posture broker client and 
	      posture transport client components of the posture collection engine 
	      and the posture broker server and posture transport server 
	      components of the posture collection manager would likely need to
	      be implemented by a single vendor because there are no 
	      standardized interfaces between the respective components
	      and would not be interoperable. </t>
    <t>Examples of the EPCP as implemented using the components from 
      the NEA architecture are provided in 
      <xref target="Endpoint-Posture-Collection-Profile-Examples"/>.</t>
      <section title="Endpoint Provisioning"
        anchor="Endpoint-Provisioning">
        <t>An endpoint SHOULD be provisioned with a machine certificate that will serve 
          as its unique identifier on the network as well as the components 
          necessary to interact with the posture manager. This includes a posture 
          collection engine to manage requests from the posture manager and the 
          posture collectors necessary to collect the posture information of 
          importance to the enterprise. The endpoint is deployed on the network.</t>
          <t>The target endpoint SHOULD authenticate to the posture manager using a machine
            certificate during the establishment of the outer tunnel achieved with the 
            posture transport protocol defined in <xref target="RFC6876"/>.  
            <xref target="IF-IMV"/> specifies how to pull an endpoint identifier out of a
            machine certificate.  An endpoint identifier SHOULD be created in conformance
            with <xref target="IF-IMV"/> from a machine certificate sent via <xref
              target="RFC6876"/>.</t>
          <t>Other authenticators are possible. The target endpoint MAY authenticate to the 
             posture manager using a combination of the machine account and password; however, 
             this is less secure and not recommended. A more secure approach would leverage a
             hardware certificate compliant with <xref target="IEEE-802-1ar"/>; this 
             identifier SHOULD be associated with the identity of a hardware cryptographic 
             module, in accordance with <xref target="IEEE-802-1ar"/>, if present on the endpoint.  
             The enterprise SHOULD establish a certificate root authority; install its root 
             certificate on endpoints and on the posture manager; and provision the endpoints 
             and the posture manager with machine certificates.  </t>
      </section>
	    <section title="Endpoint" anchor="Endpoint-2">
	      <t>The endpoint MUST conform to <xref target="RFC5793"/>, which levies 
	        several requirements against the endpoint. An endpoint that complies with these 
	        requirements will be able to: <list style="numbers">
	          <t>attempt to initiate a session with the posture manager if the posture makes a 
	            request to send an update to the posture manager;</t>
	          <t>notify the posture collector if no PT-TLS session with the posture manager 
	            can be created;</t>
	          <t>notify the posture collector when a PT-TLS session is established; and</t>
	          <t>receive information from the posture collectors, forward this information to the
	            posture manager via the posture collection engine.</t>
	        </list></t>
	      <section title="Posture Collector" anchor="Posture-Collector-2">
	        <t>Any posture collector used in an EPCP solution MUST be
	          conformant with the TCG TNC Integrity Measurement Collector 
	          interface <xref target="IF-IMC"/>.</t>
	      </section>
	      <section title="Posture Broker Client" anchor="Posture-Broker-Client">
	        <t>The posture broker client MUST conform to <xref target="IF-IMC"/> to 
	          enable communications between the posture broker client and the posture collectors
	          on the endpoint.</t>
	      </section>
	      <section title="Posture Transport Client" anchor="Posture-Transport-Client">
	        <t>The posture transport client MUST implement PT-TLS.</t> 
	        <t>The posture transport client MUST support the use of machine certificates 
	          for TLS at each endpoint consistent with the requirements stipulated in 
	          <xref target="RFC6876"/> and <xref target="Server-Discovery"/>.</t>
	        <t>The posture transport client MUST be able to locate an authorized posture manager,
	          and switch to a new posture manager when required by the network, in conformance 
	          with <xref target="Server-Discovery"/>.</t>
	      </section>
	    </section>
	    <section title="Posture Manager" anchor="Posture-Manager-2">
	      <t>The posture manager MUST conform to all requirements in <xref target="RFC5793"/>.</t>
	      <section title="Posture Validator" anchor="Posture-Validator-2">
	        <t>Any posture validator used in an EPCP solution MUST be 
	          conformant with the TCG TNC Integrity Measurement Verifier 
	          interface <xref target="IF-IMV"/>.</t>
	      </section>
	      <section title="Posture Broker Server" anchor="Posture-Broker-Server">
	        <t>The posture broker server MUST conform to <xref target="IF-IMV"/>. Conformance to 
	          <xref target="IF-IMV"/> enables the posture broker server to obtain endpoint identity 
	          information from the posture transport server, and pass this information to 
	          any posture validators on the posture manager.</t>
	      </section>
	      <section title="Posture Transport Server" anchor="Posture-Transport-Server">
	        <t>The posture transport server MUST implement PT-TLS.</t>
	        <t>The posture transport server MUST support the use of machine certificates 
	          for TLS at each endpoint consistent with the requirements stipulated in 
	          <xref target="RFC6876"/> and <xref target="Server-Discovery"/>.</t>	          
	      </section>
	    </section>	    
	    
      <section title="Repository" anchor="Repository-2">
        <t>EPCP requires a simple interface for the repository.  Posture 
          validators on the posture manager receive the target endpoint posture information 
          via PA-TNC <xref target="RFC5792"/> messages sent from corresponding posture 
          collectors on the target endpoint. The posture validators store this information 
          in the repository linked to the identity of the target endpoint where the 
          posture collectors are located.</t>
      </section> 

		  <section title="IETF SACM Software Asset Management Extension to the IETF NEA EPCP Implementation" 
		    anchor="IETF-SACM-SWAM-Extension-to-the-IETF-NEA-EPCP-Implementation">
		    <t>This section defines the requirements associated with the Software Inventory Message 
        and Attributes (SWIMA) extension for PA-TNC <xref target="RFC8412"/> in support of the 
        software asset management use case with the IETF NEA EPCP implementation.</t>
		    <section title="Endpoint Pre-Provisioning" anchor="Endpoint-Pre-Provisioning-2">
		      <t>The following requirements assume that the platform or OS vendor
		        supports the use of <xref target="SWID"/> and/or <xref target="I-D.ietf-sacm-coswid"/> 
            tags and the standard directory locations for the SWID and CoSWID tags 
            as specified by the <xref target="SWID"/> specification.</t>
		    </section>
		    <section title="SWID Tags" anchor="SWID-Tags">
		      <t>The primary content for the EPCP is the information 
		        conveyed in the elements of a SWID or CoSWID tag. The SWID specification
            defines an XML-based software identification tag and the CoSWID specification
            defines a Concise Binary Object Representation (CBOR) that is compatible with
            the SWID specification. CoSWID tags require significantly less memory and 
            bandwidth to store and transmit as compared to the traditional XML-based SWID 
            tags.</t>
          <t>For readability, since CoSWID is a concise representation of SWID, only 
            SWID is used throughout the remainder of this document although CoSWID 
            may be used in addition to, or in place of, SWID.</t>
		      <t>The endpoint MUST have SWID tags stored in a directory specified in
		        <xref target="SWID"/>. The tags SHOULD be provided by the software vendor; they MAY
		        also be generated by:<list style="symbols">
		          <t>the software installer; or</t>
		          <t>third-party software that creates tags based on the applications
		            it sees installed on the endpoint.</t>
		        </list>
		      </t>
		      <t>The elements in the SWID tag MUST be populated as specified in <xref target="SWID"/>.  
		        These tags, and the directory in which they are stored, MUST be updated as software 
		        is added, removed, or updated.</t>
		    </section>
		    <section title="SWID Posture Collectors and Posture Validators"
		      anchor="SWID-Posture-Collectors-and-Posture-Validators">
          <t>The following sections outline the requirements for SWID Posture Collectors
          and Posture Validators.</t>
		      <section title="The SWID Posture Collector"
		        anchor="The-SWID-Posture-Collector">
		        <t>For the EPCP, the SWID posture collector MUST
		          be conformant with <xref target="RFC8412"/>, which includes
		          requirements for:<list
		            style="numbers">
		            <t>Collecting SWID tags from the SWID
		              directory;</t>
		            <t>Monitoring the SWID directory for
		              changes;</t>
		            <t>Initiating a session with the posture manager to
		              report changes to the directory;</t>
		            <t>Maintaining a list of changes to the SWID
		              directory when updates take place and no
		              PT-TLS connection can be created with
		              the posture manager;</t>
		            <t>Responding to a request for SWID tags
		              from the SWID Posture Validator on the posture manager; and</t>
		            <t>Responding to a query from the SWID
		              posture validator as to whether all updates have
		              been sent.</t>
		          </list>The SWID posture collector is not responsible for detecting that the
		          SWID directory was not updated when an application was either
		          installed or uninstalled.</t>
		      </section>
		      <section title="The SWID Posture Validator"
		        anchor="The-SWID-Posture-Validator">
		        <t>Conformance to <xref target="RFC8412"/>
		          enables the SWID posture validator to: <list style="numbers">
		            <t>Send messages to the SWID posture collector (at
		              the behest of the administrator at the posture manager
		              console) requesting updates for SWID tags
		              located on endpoint;</t>
		            <t>Ask the SWID posture collector whether all
		              updates to the SWID directory located at
		              the posture manager have been sent; and</t>
		            <t>Perform any validation and processing on the collected 
		              SWID posture information prior to storage.</t>
		          </list> In addition to these requirements, a
		          SWID posture validator used in conformance with this
		          profile MUST be capable of passing this SWID posture 
		          information as well as the associated endpoint identity 
		          to the repository for storage.</t>
		      </section>
		    </section>
		    <section title="Repository" anchor="Repository-3">
		      <t>The interface SHOULD enable an administrator to:<list style="numbers">
		        <t>Query which endpoints have reported SWID tags for a particular
		          application</t>
		        <t>Query which SWID tags are installed on an endpoint; and</t>
		        <t>Query tags based on characteristics, such as vendor, publisher, etc.</t>
		      </list></t>
		    </section>
		  </section>
	  </section>
    
	  <section title="IETF NETCONF EPCP Implementation for Network Device Endpoints" anchor="IETF-NETCONF-EPCP-Implementation">
	    <t>When EPCP is used, a NETCONF client that implements the 
	      posture collection manager sends a query to target network
	      device endpoint requesting posture information over a 
	      secure channel. Once the NETCONF server on the endpoint 
	      receives the request, it queries one or more datastores
	      for the posture information. The NETCONF server then reports
	      the information back to the NETCONF client where it can be
	      stored in a repository for use by other tools. This is 
	      shown in <xref target="NETCONF-Components"/>.</t>
      <figure title="NETCONF Components" anchor="NETCONF-Components">
        <artwork>
Posture                   Posture
Collection                Collection
Manager                   Engine
+---------------+         +---------------+
|               |         |               |
|               |         | +-----------+ |     
|               |         | | Data      | |     
|               |         | | Store(s)  | |
|               |         | +-----------+ |
|               |         |       |       |
|               |         |       |       |
| +-----------+ |         | +-----------+ |
| | NETCONF   | |         | | NETCONF   | |
| | Client    | |&lt;-------&gt;| | Server    | |
| +-----------+ | NETCONF | +-----------+ |
|               |         |               |
+---------------+         +---------------+
        </artwork>
      </figure>
	    <t>These requirements are written with a view to performing a posture
	      assessment on network device endpoints (routers, switches, etc.) and 
        refer to defined components of the NETCONF architecture and map back 
        to EPCP.  As with the NETCONF architecture, vendors have discretion 
        as to how these NETCONF components map to separate pieces of software 
        or endpoints.</t>
	    <section title="Endpoint Provisioning"
	      anchor="Endpoint-Provisioning-Netconf">
	      <t>For the posture manager to be able to query the datastores 
	        on the endpoint, the endpoint MUST be configured to grant 
	        the posture manager access to its datastores as described 
	        in <xref target="RFC6241"/>. The posture manager is 
	        identified by its NETCONF username. The endpoint is deployed
	        on the network.</t>
	    </section>
	    
	    <section title="Posture Manager Provisioning"
	      anchor="Posture-Manager-Provisioning-Netconf">
	      <t>For the posture manager to be able to query the 
	        datastores on the endpoint, the posture manager MUST be 
	        provisioned with a NETCONF username that will be used to 
	        authenticate the posture manager to the endpoint as 
	        described in <xref target="RFC6241"/>. The username 
	        generated will be determined by the selected transport 
	        protocol. The posture manager is deployed on the network.</t>
	    </section>
	    
	    <section title="Endpoint"
	      anchor="Endpoint-Netconf">
	      <t>An endpoint MUST conform to the requirements outlined 
	        for servers in the NETCONF protocol as defined in 
	        <xref target="RFC6241"/>. This requires the implementation 
	        of NETCONF over SSH <xref target="RFC6242"/>. An endpoint 
	        MAY support the NETCONF protocol over other transports 
	        such as TLS <xref target="RFC7589"/> as well as the 
	        RESTCONF protocol as defined in <xref target="RFC8040"/>.</t>
	      <section title="Datastore"
	        anchor="Datastore-Netconf">
	        <t>A NETCONF datastore on an endpoint MUST support the 
	          operations outlined in <xref target="RFC6241"/>, but, 
	          the actual implementation of the datastore is left to 
	          the endpoint vendor.</t>
	        <t> Datastores MUST support the YANG 
	          data modeling language <xref target="RFC7950"/> for 
	          expressing endpoint posture information in a structured 
	          format. In addition, datastores MAY support other data 
	          models such as XML (via YIN) for representing posture 
	          information.</t>
	        <t>Datastores MUST support the compliance posture
	          information specified in <xref target="RFC7317"/>. 
	          Datastores MAY support other models standardized or 
	          proprietary as deemed appropriate by the endpoint vendor.</t>
	      </section>
	    </section> 
	    
	    <section title="Posture Manager"
	      anchor="Posture-Manager-Netconf">
	      <t>A posture manager MUST conform to the requirements 
	        specified for clients in the NETCONF protocol as defined in 
	        <xref target="RFC6241"/>. This requires the implementation 
	        of NETCONF over SSH <xref target="RFC6242"/>. A posture 
	        manager MAY also support the NETCONF protocol over other 
	        transports such as TLS <xref target="RFC7589"/>. In 
	        addition, a posture manager MAY support the RESTCONF 
	        protocol as defined in <xref target="RFC8040"/>.</t>
	    </section>
	    
	    <section title="Repository" anchor="Repository-4">
	      <t>EPCP requires a simple interface for the repository.  
	        The posture collection manager on the posture manager receives the target endpoint 
	        posture information via NETCONF <xref target="RFC6241"/> messages sent 
	        from posture collection engine on the target endpoint. The posture collection
	        manager stores this information in the repository linked to the identity of 
	        the target endpoint from which it was collected.</t>
	    </section> 
	  </section>    
    
    <section title="Future Work" anchor="Future-Work">
      <t>This section captures ideas for future work related to EPCP that
        might be of interest to the IETF SACM WG. These ideas are listed in no 
        particular order.<list style="symbols">
        <t><xref target="RFC8639"/>, <xref target="RFC8640"/>, and <xref target="RFC8641"/> 
        could be leveraged for an HTTP-based subscription for EPCP. Specifically, it could 
        be used for the posture collection manager to continuously receive posture changes 
        as they happen from the posture collection engine. At this point, it seems like 
        <xref target="I-D.ietf-netconf-restconf-notif"/> would be a good match to these 
        requirements. However, further investigation into the applicability of supporting a 
        RESTCONF server capability to handle subscription requests needs to be made. 
        Specific questions which should be examined include:
          <list>
            <t>Number of endpoints which can be continuously tracked by a single posture collection 
            manager.  Scalability questions to be considered include elements from the number of 
            transport connections maintained as well as the volume and churn of posture evidence which 
            will be continuously pushed to the posture collection manager.</t>
            <t>Ability of the posture collection manager to establish and maintain a continuous state 
            of endpoint posture during failures. This includes failures/reboots on either side of the 
            interface.</t>
            <t>Ability to support the full set of functions described for NETCONF within 
            <xref target="IETF-NETCONF-EPCP-Implementation"/>.</t>
          </list>
        </t>
        <t>Add support endpoint types beyond workstations, servers, and network infrastructure devices.</t>
        <t>Examine the integration of <xref target="I-D.ietf-mile-xmpp-grid"/>.</t>
        <t>Define a standard interface and API for interacting with the repository. Requirements to consider
        include: creating a secure channel between a publisher and the repository, creating a secure channel
        between a subscriber and the repository, and the types of interactions that must be supported 
        between publishers and subscribers to a repository.</t>
        <t>Define a standard interface for communications between the posture broker client and posture
        transport client(s) as well as the posture broker server and posture
        transport server(s).</t>
        <t>Retention of posture information on the target endpoint.</t>
        <t>Define an orchestrator component as well as publish/subscribe interface for it.</t>
        <t>Define an evaluator component as well as an interface for it.</t>       
        <t>Reassess the use of MAC addresses as a device identifier among network tools, based on technical 
        research into current security best practices in IoT, automotive, mobile, and other privacy-sensitive 
        market domains.</t>
        </list>  
      </t>
    </section>
    <section anchor="Contributors"
      title="Contributors">
      <t>The authors wish to thank all of those in the TCG TNC work
        group who contributed to development of the <xref target="ECP">TNC ECP
        specification</xref> upon which this document is based.</t>
      <t>The authors also wish to give a special thanks to Henk Birkholz, 
      Dan Ehrlich, Ira McDonald, Kathleen Moriarty, David Oliva, and Eric Voit for their 
      thoughtful comments and edits to this document.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document does not define any new IANA registries. 
        However, this document does reference other documents that do
        define IANA registries. As a result, the
      IANA Considerations section of the referenced documents should be consulted.</t>
    </section>

    <section anchor="Security-Considerations"
      title="Security Considerations">
      <t>This Security Considerations section includes an analysis of the 
        attacks that may be mounted against systems that implement the
        EPCP (<xref target="Threat-Model"/>) and the countermeasures that
        may be used to prevent or mitigate these attacks
        (<xref target="Countermeasures"/>). Overall, a substantial reduction in
        cyber risk can be achieved.</t>
      
      <section title="Threat Model" anchor="Threat-Model">
        <t>This section lists the attacks that can be
          mounted on a NEA implementation of an EPCP
          environment. The following section (<xref
            target="Countermeasures"/>) describes
          countermeasures.</t>
        <t>Because the EPCP describes
          a specific use case for NEA components, many
          security considerations for these components are
          addressed in more detail in the technical
          specifications: <xref target="RFC8412"/>,
          <xref target="IF-IMC"/>, <xref target="RFC5793"/>, 
          <xref target="Server-Discovery"/>, 
          <xref target="RFC6876"/>, 
          <xref target="IF-IMV"/>.</t>
        <section title="Endpoint Attacks"
          anchor="Endpoint-Attacks">
        <t>While the EPCP provides 
        substantial improvements in endpoint security, endpoints 
        can still be compromised. For this reason, all parties 
        must regard data coming from endpoints as potentially 
        unreliable or even malicious. An analogy can be drawn 
        with human testimony in an investigation or trial. Human 
        testimony is essential but must be regarded with suspicion.
          <list style="symbols">
            <t>Compromise of endpoint: A compromised endpoint 
              may report false information to confuse or even 
              provide maliciously crafted information with a 
              goal of infecting others.</t>
            <t>Putting bad information in SWID directory: Even 
              if an endpoint is not completely compromised, some 
              of the software running on it may be unreliable or 
              even malicious. This software, potentially 
              including the SWID generation or discovery tool, 
              or malicious software pretending to be a SWID 
              generation or discovery tool, can place incorrect 
              or maliciously crafted information into the SWID 
              directory. Endpoint users may even place such 
              information in the directory, whether motivated 
              by curiosity or confusion or a desire to bypass 
              restrictions on their use of the endpoint.</t>
            <t>Identity spoofing (impersonation): A compromised 
              endpoint may attempt to impersonate another 
              endpoint to gain its privileges or to besmirch the 
              reputation of that other endpoint.  This is of 
              particular concern when using MAC addresses to 
              identify endpoints, which while widely used in 
              endpoint behavior monitoring and threat assessment 
              tools, are easy to spoof.</t>
          </list>
        </t>
        </section>
        
        <section title="Network Attacks" anchor="Network-Attacks">
          <t>
            Generally, the network cannot be trusted. A variety of attacks can be mounted 
            using the network, including:
            <list style="symbols">
              <t>Eavesdropping, modification, injection, replay, 
                deletion;</t>
              <t>Traffic analysis; and</t>
              <t>Denial of service and blocking traffic.</t>
            </list>
          </t>
        </section>
        <section title="Posture Manager Attacks" anchor="Posture-Manager-Attacks">
          <t>
            The posture manager is a critical security element and therefore merits
            considerable scrutiny. A variety of attacks can be leveraged against 
            the Posture Manager.
            <list style="symbols">
              <t>Compromised trusted posture manager: A compromised posture manager or a malicious
                party that is able to impersonate a posture manager can incorrectly grant
                or deny access to endpoints, place incorrect information into the
                repository, or send malicious messages to endpoints.</t>
              <t>Misconfiguration of posture manager: Accidental or purposeful
                misconfiguration of a trusted posture manager can cause effects that are
                similar to those listed for "Compromised trusted posture manager".</t>
              <t>Malicious untrusted posture manager: An untrusted posture manager cannot mount any
                significant attacks because all properly implemented endpoints
                will refuse to engage in any meaningful dialog with such a posture manager.</t>
            </list>
          </t>
        </section>
        <section title="Repository Attacks" anchor="Repository-Attacks">
          <t>
            The repository is also an important security element 
            and therefore merits careful scrutiny.
            <list style="symbols">
              <t>Putting bad information into trusted 
                repository: An authorized repository client such 
                as a server may be able to put incorrect 
                information into a trusted repository or delete 
                or modify historical information, causing 
                incorrect decisions about endpoint security. 
                Placing maliciously crafted data in the 
                repository could even lead to the compromise of 
                repository clients, if they fail to carefully 
                check such data.</t>
              <t>Compromised trusted repository: A compromised 
                trusted repository or a malicious untrusted 
                repository that is able to impersonate a trusted 
                repository can lead to effects similar to those 
                listed for “Putting bad information into trusted 
                repository”. Further, a compromised trusted 
                repository can report different results to 
                different repository clients or deny access to 
                the repository for selected repository clients.</t>
              <t>Misconfiguration of trusted repository: 
                Accidental or purposeful misconfiguration of a 
                trusted repository can deny access to the 
                repository or result in loss of historical data.</t>
              <t>Malicious untrusted repository: An untrusted 
                repository cannot mount any significant attacks 
                because all properly implemented repository 
                clients will refuse to engage in any meaningful 
                dialog with such a repository.</t>
            </list>
          </t>
        </section>        
      </section>
  
      <section title="Countermeasures"
        anchor="Countermeasures">
        <t>This section lists the countermeasures that can
          be used in a NEA implementation of an EPCP
          environment.</t>
       <section title="Countermeasures for Endpoint Attacks"
         anchor="Countermeasures-for-Endpoint-Attacks">
       <t>This profile is in and of itself a countermeasure for 
         a compromised endpoint. A primary defense for an 
         endpoint is to run up to date software configured to be 
         run as safely as possible.</t>
         <t>Ensuring that anti-virus signatures are up to date 
           and that a firewall is configured are also protections 
           for an endpoint that are supported by the current NEA 
           specifications.</t>
         <t>For secure device identification and to correlate device 
           identifiers if the MAC address is randomized, MAC addresses 
           should be collected along with other, more secure endpoint 
           identifiers. Endpoints that have hardware cryptographic 
           modules that are provisioned by the enterprise, in 
           accordance with <xref target="IEEE-802-1ar"/>, can protect 
           the private keys used for authentication and help 
           prevent adversaries from stealing credentials that 
           can be used for impersonation. Future versions of the 
           EPCP may want to discuss in 
           greater detail how to use a hardware cryptographic
           module, in accordance with <xref target="IEEE-802-1ar"/>, 
           to protect credentials and to protect the 
           integrity of the code that executes during the 
           bootstrap process by hashing or recording indicators 
           of compromise.</t>
       </section>
        
        <section title="Countermeasures for Network Attacks"
          anchor="Countermeasures-for-Network-Attacks">
          <t>To address network attacks, <xref target="RFC6876"/> includes 
            required encryption, authentication, integrity 
            protection, and replay protection. <xref
              target="Server-Discovery"/> also includes 
            authorization checks to ensure that only authorized 
            servers are trusted by endpoints. Any unspecified or not 
            yet specified network protocols employed in the EPCP 
            (e.g., the protocol used to interface 
            with the repository) should include similar protections.</t>
          <t>These protections reduce the scope of the network 
            threat to traffic analysis and denial of service. 
            Countermeasures for traffic analysis (e.g., masking) 
            are usually impractical but may be employed. 
            Countermeasures for denial of service (e.g., detecting 
            and blocking particular sources) SHOULD be used when 
            appropriate to detect and block denial of service 
            attacks. These are routine practices in network 
            security.</t>
        </section>       
        
        <section title="Countermeasures for Posture Manager Attacks"
          anchor="Countermeasures-for-Posture-Manager-Attacks">
          <t>Because of the serious consequences of posture manager compromise, posture managers
            SHOULD be especially well-hardened against attack and minimized to
            reduce their attack surface.  They SHOULD be monitored using the NEA
            protocols to ensure the integrity of the behavior and analysis data
            stored on the posture manager and SHOULD utilize an
            <xref target="IEEE-802-1ar"/>-compliant
            hardware cryptographic module for identity and/or integrity
            measurements of the posture manager.  They should be well-managed to minimize
            vulnerabilities in the underlying platform and in systems upon which
            the posture manager depends.  Network security measures such as firewalls or
            intrusion detection systems may be used to monitor and limit traffic
            to and from the posture manager.  Personnel with administrative access to the
            posture manager should be carefully screened and monitored to detect problems
            as soon as possible.  Posture manager administrators should not use password-based 
            authentication but should instead use non-reusable credentials
            and multi-factor authentication (where available).  Physical security
            measures should be employed to prevent physical attacks on posture managers.</t>
          <t>   To ease detection of posture manager compromise, should it occur, posture manager
            behavior should be monitored to detect unusual behavior (such as a
            server reboot, unusual traffic patterns, or other odd behavior).
            Endpoints should log and/or notify users and/or administrators when
            peculiar posture manager behavior is detected.  To aid forensic investigation,
            permanent read-only audit logs of security-relevant information
            pertaining to posture manager (especially administrative actions) should be
            maintained.  If posture manager compromise is detected, the posture manager's
            certificate should be revoked and careful analysis should be
            performed of the source and impact of this compromise.  Any reusable
            credentials that may have been compromised should be reissued.</t>
          <t>Endpoints can reduce the threat of server compromise by minimizing
            the number of trusted posture managers, using the mechanisms described in
            <xref target="Server-Discovery"/>.</t>
        </section>
        
        <section title="Countermeasures for Repository Attacks"
          anchor="Countermeasures-for-Repository-Attacks">
          <t>If the host for the repository is located on its own 
            endpoint, it should be protected with the same measures 
            taken to protect the posture manager. In this circumstance, all 
            messages between the posture manager and repository should be 
            protected with a mature security protocol such as TLS 
            or IPsec.</t>
          <t>The repository can aid in the detection of 
            compromised endpoints if an adversary cannot tamper 
            with its contents. For instance, if an endpoint reports 
            that it does not have an application with a known 
            vulnerability installed, an administrator can check whether 
            the endpoint might be lying by querying the repository 
            for the history of what applications were installed on 
            the endpoint.</t>
          <t>To help prevent tampering with the information in 
            the repository:
            <list style="numbers">
              <t>Only authorized parties should have privilege to 
                run code on the endpoint and to change the 
                repository.</t>
              <t>If a separate endpoint hosts the repository, 
                then the functionality of that endpoint should be 
                limited to hosting the repository. The firewall 
                on the repository should only allow access to the 
                posture manager and to any endpoint authorized for 
                administration.</t>
              <t>The repository should ideally use “write-once” 
                media to archive the history of what was placed 
                in the repository, to include a snapshot of the 
                current status of applications on endpoints.</t>
            </list>
          </t>
        </section>
      </section>
    </section>
    <section anchor="Privacy-Considerations"
      title="Privacy Considerations">
      <t>The EPCP specifically
        addresses the collection of posture data from
        enterprise endpoints by an enterprise network. As
        such, privacy is a fundamental concern for those deploying
        this EPCP solution, given EU GDPR, California CCPA, and many 
        other privacy regulations. The enterprise SHOULD implement 
        and enforce their duty of care.</t>
      <t>A possible exception may be the concerns a user may
        have when attempting to connect a personal endpoint
        (such as a phone or mobile endpoint) to an enterprise
        network. The user may not want to share certain
        details, such as an endpoint identifier or SWID tags,
        with the enterprise. The user can configure their
        NEA client to reject requests for this information;
        however, it is possible that the enterprise
        policy will not allow the user’s endpoint to connect
        to the network without providing the requested
        data.</t>
        <t>An enterprise network SHOULD limit access to 
        endpoint posture and identification information 
        to authorized users and SHOULD enforce policies
        that prevent the export of endpoint posture metadata
        to unauthorized third parties.</t>
    </section>
  </middle>
  <back>
    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->
      <!--&RFC2629;-->&RFC5209; 
      <reference anchor="ECP">
        <front>
          <title abbrev="IF-IMV">TCG Trusted Network Connect
            Endpoint Compliance Profile, Version 1.10</title>
          <author>
            <organization abbrev="TCG">Trusted Computing
              Group</organization>
          </author>
          <date month="December" year="2014"/>
        </front>
      </reference>      
      <reference anchor="IEEE-802-1ar">
        <front>
          <title abbrev="IEEE 802.1ar">IEEE 802.1ar</title>
          <author>
            <organization abbrev="IEEE">Institute of
              Electrical and Electronics
              Engineers</organization>
          </author>
          <date month="December" year="2009"/>
        </front>
      </reference>
      <reference anchor="DSD">
        <front>
          <title abbrev="Top 4 Mitigation Strategies">Top 4
            Mitigation Strategies to Protect Your ICT
            System</title>
          <author>
            <organization
              abbrev="Australian Government
              Department of Defense"
              >http://www.dsd.gov.au/publications/csocprotect/top_4_mitigations.htm</organization>
          </author>
          <date month="November" year="2012"/>
        </front>
      </reference>
      <reference anchor="CIS">
        <front>
          <title abbrev="Critical Security Controls">CIS
            Critical Security Controls</title>
          <author>
            <organization abbrev="The Center for Internet Security"
              >http://www.cisecurity.org/controls/</organization>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="TNC">
        <front>
          <title abbrev="TNC">TCG Trusted Network Connect TNC Architecture for Interoperability,
            Version 1.5</title>
          <author>
            <organization abbrev="TCG">Trusted Computing Group</organization>
          </author>
          <date month="February" year="2012"/>
        </front>
      </reference>
    </references>
    <references title="Normative References"> &RFC2119; &RFC5792; 
      &RFC5793; &RFC6241; &RFC6242; &RFC6876; &RFC7317; &RFC7589; 
      &RFC7950; &RFC8040; &RFC8174; &RFC8412; &RFC8639; &RFC8640; 
      &RFC8641; &I-D.ietf-netconf-restconf-notif; &I-D.ietf-sacm-coswid; 
      &I-D.ietf-sacm-terminology; &I-D.ietf-mile-xmpp-grid;
      <reference anchor="IF-IMC">
        <front>
          <title abbrev="IF-IMC">TCG Trusted Network Connect TNC IF-IMC, Version 1.3</title>
          <author>
            <organization abbrev="TCG">Trusted Computing Group</organization>
          </author>
          <date month="February" year="2013"/>
        </front>
      </reference>
      <reference anchor="IF-IMV">
        <front>
          <title abbrev="IF-IMV">TCG Trusted Network Connect
            TNC IF-IMV, Version 1.4</title>
          <author>
            <organization abbrev="TCG">Trusted Computing
              Group</organization>
          </author>
          <date month="December" year="2014"/>
        </front>
      </reference>
      <reference anchor="Server-Discovery">
        <front>
          <title abbrev="Server Discovery">DRAFT: TCG
            Trusted Network Connect PDP Discovery and
            Validation, Version 1.0</title>
          <author>
            <organization abbrev="TCG">Trusted Computing
              Group</organization>
          </author>
          <date month="October" year="2015"/>
        </front>
      </reference>
      <reference anchor="SWID">
        <front>
          <title abbrev="ISO/IEC 19770-2:2009">Information 
            technology—Software asset management—Part 2: 
            Software identification tag</title>
          <author/>
          <date year="2009"/>
        </front>
        <seriesInfo name="ISO/IEC" value="9899:1999"/>
      </reference>
    </references>
    
    <section title="Rationale for an EPCP Solution"
      anchor="Rationale-for-an-EPCP-Solution">
      <section title="Preventative Posture Assessments"
        anchor="Preventative-Posture-Assessments">
        <t>The value of continuous endpoint posture assessment is well
          established.  Security experts have identified asset 
          management and vulnerability remediation as a critical step for 
          preventing intrusions. Application whitelisting, patching 
          applications and operating systems, and using the latest versions 
          of applications top the Defense Signals Directorate's "Top 4 
          Mitigations to Protect Your ICT System". <xref target="DSD"/> 
          "Inventory of Authorized and Unauthorized Endpoints", "Inventory of 
          Authorized and Unauthorized Software", and "Continuous Vulnerability 
          Assessment and Remediation" are Controls 1, 2, and 3,
          respectively, of the CIS Controls <xref target="CIS"/>. While there 
          are commercially available solutions that attempt to address 
          these security controls, these solutions do not: <list style="symbols"> 
          <t>run on all types of endpoints;</t> 
          <t>consistently interoperate with other tools that could make use of the 
          data collected;</t> 
          <t>collect posture information from all types of endpoints in a consistent, 
          standardized schema;</t> 
          <t>require vetted, standardized protocols that have been 
          evaluated by the international community for cryptographic soundness.</t>
          </list></t>
        <t>As is true of most solutions offered today, the solution found in the
          EPCP does not attempt to solve the lying endpoint problem, or detect 
          infected endpoints; rather, it focuses on ensuring that healthy endpoints
          remain healthy by keeping software up-to-date and patched.</t>
      </section>
      
      <section title="All Network-Connected Endpoints are Endpoints"
        anchor="All-Network-Connected-Endpoints-are-Endpoints">
        <t>As defined by <xref target="I-D.ietf-sacm-terminology"/>, an endpoint 
          is any physical or virtual computing endpoint that can be connected 
          to a network. Posture assessment against policy is equally, if not 
          more, important for continuously-connected endpoints, such as enterprise
          workstations and infrastructure endpoints, as it is for sporadically 
          connected endpoints.  Continuously-connected endpoints are just as 
          likely to fall out of compliance with policy, and a standardized 
          posture assessment method is necessary to ensure they can be 
          properly handled.</t>
      </section>
      
      <section title="All Endpoints on the Network Must be Uniquely Identified"
        anchor="All-Endpoints-on-the-Network-Must-be-Uniquely-Identified">
        <t>Many administrators struggle to identify what endpoints are connected 
          to the network at any given time.  By requiring a standardized method 
          of endpoint identity, the EPCP will enable administrators to answer 
          the basic question, "What is on my network?" In 
          <xref target="I-D.ietf-sacm-terminology"/>, SACM defines this set of 
          endpoints on the network as the SACM domain. Unique endpoint 
          identification also enables the comparison of current and past endpoint 
          posture assessments, by allowing administrators to correlate assessments 
          from the same endpoint.  This makes it easier to flag suspicious changes 
          in endpoint posture for manual or automatic review, and helps to swiftly 
          identify malicious changes to endpoint applications.</t>
      </section>
      
      <section title="Standardized Data Models"
        anchor="Standardized-Data-Models">
        <t>EPCP requirements prescribe the use of standardized data models 
          for the exchange of posture information.  This helps to ensure that 
          the posture information sent from endpoints to the repository can be 
          easily stored, due to their known format, and shared with authorized
          endpoints and users.</t>
        <t>Posture information must be sent over standardized protocols
          to ensure the confidentiality and authenticity of this data while in
          transit.  Implementations of the EPCP include 
          <xref target="RFC6876"/> and <xref target="RFC6241"/>
          for communication between the target endpoint and the posture manager.  
          These protocols allow networks that implement this solution to collect 
          large amounts of posture information from an endpoint to make decisions
          about that endpoint's compliance with some policy.  The EPCP offers
          a solution for all endpoints already connected to the network.
          Periodic assessments and automated reporting of changes to endpoint
          posture allow for instantaneous identification of connected endpoints
          that are no longer compliant with some policy.</t>
      </section>
      
      <section title="Posture Information Must Be Stored"
        anchor="Posture-Information-Must-Be-Stored">
        <t>Posture information must be stored by the repository and must be
          exposed to an interface at the posture manager. Standardized data models 
          enable standardized queries from an interface exposed to an administrator at
          the posture manager.  A repository must retain any current posture
          information retrieved from the target endpoint and store it indexed by
          the unique identifier for the endpoint.  Any posture collection manager 
          specified by this profile must be able to ascertain from its corresponding 
          posture collection engine whether the posture information is up to date.  An 
          interface on the posture manager must support a request to obtain 
          up-to-date information when an endpoint is connected.  
          This interface must also support the ability to make a standard set of 
          queries about the posture information stored by the repository.  In 
          the future, some forms of posture information might be retained at 
          the endpoint.  The interface on the posture manager must accommodate the ability 
          to make a request to the corresponding posture collection engine 
          about the posture of the target endpoint.  Standardized 
          data models and protocols also enable the security of posture 
          assessment results.  By storing these results indexed under the 
          endpoint's unique identifier, secure storage itself enables endpoint 
          posture information correlation, and ensures that the enterprise's
          repositories always offer the freshest, most up-to-date view of
          the enterprise's endpoint posture information possible.</t>
      </section>
      
      <section title="Posture Information Can Be Shared"
        anchor="Posture-Information-Can-Be-Shared">
        <t>By exposing posture information using a standardized interface and API, other 
          security and operational components have a high level of insight into the 
          enterprise's endpoints and the software installed on them.  This will support
          innovation in the areas of asset management, vulnerability scanning, and 
          interfaces, as any authorized infrastructure endpoint can 
          interact with the posture information.</t>
      </section>
      
      <section title="Enterprise Asset Posture Information Belongs to the Enterprise"
        anchor="Enterprise-Asset-Posture-Information-Belongs-to-the-Enterprise">
        <t>Owners and administrators must have complete control of posture
          information, policy, and endpoint mitigation. Standardized
          data models, protocols and interfaces help to ensure that this posture
          information is not locked in proprietary databases, but is made
          available to its owners.  This enables administrators to develop
          as nuanced a policy as necessary to keep their networks secure.
          Of course, there may be exceptions to this such as the case with 
          privacy-related information (e.g., personally identifiable 
          information). </t>
      </section>
    </section>
    
    <section title="EPCP Supported Use Cases and Non-Supported Use Cases"
      anchor="EPCP-Supported-Use-Cases-and-Non-Supported-Use-Cases">
      
      <section title="Supported Use Cases" anchor="Supported-Use-Cases">
        <t>The following sections describe the different use cases supported by the 
          EPCP.</t>
        <section title="Hardware Asset Management"
          anchor="Asset-Management">
          <t>Using the API on the posture manager, an authorized 
            user can learn:<list style="symbols">
              <t>what endpoints are connected to the network at any given time; and</t>
              <t>what SWID tags were reported for the
                endpoints.</t>
            </list>The ability to answer these questions offers a standards-based
            approach to asset management, which is a vital part of enterprise
            processes such as compliance report generation for the Federal
            Information Security Modernization Act (FISMA), Payment Card Industry
            Data Security Standard (PCI DSS), Health Insurance Portability and
            Accountability Act (HIPAA), etc.</t>
        </section>
        <section title="Software Asset Management" anchor="Software-Asset-Management">
          <t>The API on the posture manager provides the ability for authorized users 
             and infrastructure to know which software is installed on which endpoints 
             on the enterprise's network. This allows the enterprise to answer 
             questions about what software is installed to determine if it is licensed 
             or prohibited. This information can also drive other use cases such 
             as: <list style="symbols">
              <t>vulnerability management: knowing what software is installed 
                supports the ability to determine which endpoints contain vulnerable 
                software and need to be patched.</t>
              <t>configuration management: knowing which security controls need to be 
                applied to harden installed software and better protect endpoints.</t>
            </list></t>
        </section>
        <section title="Vulnerability Management"
          anchor="Vulnerability-Management">
          <t>The API also provides the ability for authorized
            users or infrastructure to locate endpoints running software for
            which vulnerabilities have been announced.  Because of
            <list style="numbers">
              <t>the unique IDs assigned to each endpoint; and</t>
              <t>the rich application data provided in the endpoints' 
                posture information,
              </t>
            </list> the repository can be queried to find all endpoints running a
            vulnerable application.  Endpoints suspected of being vulnerable can
            be addressed by the administrator or flagged for further scrutiny.</t>
        </section>
        <section title="Threat Detection and Analysis"
          anchor="Threat-Detection-and-Analysis">
          <t>The repository's standardized API allows authorized infrastructure
            endpoints and software to search endpoint posture assessment
            information for evidence that an endpoint's software inventory has
            changed, and can make endpoint software inventory data available to
            other endpoints.  This automates security data sharing in a way that
            expedites the correlation of relevant network data, allowing
            administrators and infrastructure endpoints to identify odd endpoint
            behavior and configuration using secure, standardized data models and
            protocols.</t>
        </section>
      </section>
      <section title="Non-Supported Use Cases"
        anchor="Non-Supported-Use-Cases">
        <t>Several use cases, including but not limited to these, are not
          covered by the EPCP: <list style="symbols">
            <t>Gathering non-standardized types of posture information: The
              EPCP does not prevent administrators from
              collecting posture information in proprietary formats from the
              endpoint; however, it does not set requirements for doing so.</t>
            <t>Solving the lying endpoint problem: The EPCP does not address 
              the lying endpoint problem; the profile makes no assertions 
              that it can catch an endpoint that is, either maliciously or 
              accidentally, reporting false posture information
              to the posture manager.  However, other solutions may be able to use the
              posture information collected using the capabilities described in
              this profile to catch an endpoint in a lie.  For example, a sensor
              may be able to compare the posture information it has collected on
              an endpoint's activity on the network to what the endpoint
              reported to the posture manager and flag discrepancies.  However, these
              capabilities are not described in this profile.</t>
          </list>
        </t>
      </section>
    </section>
    
    
    <section title="Endpoint Posture Collection Profile Examples"
      anchor="Endpoint-Posture-Collection-Profile-Examples">
      <t>The following subsections provide examples of the EPCP 
        as implemented using components from the NEA architecture.</t>
      <section title="Continuous Posture Assessment of an Endpoint"
        anchor="Continuous-Posture-Assessment-of-an-Endpoint">
        <figure title="Continuous Posture Assessment of an Endpoint"
          anchor="Continuous-Posture-Assessment-of-an-Endpoint-Figure">
          <artwork>
Endpoint                 Posture Manager
+---------------+        +---------------+
|               |        |               |
| +-----------+ |        | +-----------+ |
| | SWID      | |        | | SWID      | |
| | Posture   | |        | | Posture   | |
| | Collector | |        | | Validator | |
| +-----------+ |        | +-----------+ |
|      |        |        |      |        |
|      | IF-IMC |        |      | IF-IMV |
|      |        |        |      |        |
| +-----------+ |        | +-----------+ |
| | PB Client | |        | | PB Server | |
| +-----------+ |        | +-----------+ |
|      |        |        |      |        |
|      |        |        |      |        |
|      |        |        |      |        |
| +-----------+ |        | +-----------+ |
| | PT Client | |&lt;------&gt;| | PT Server | |
| +-----------+ | PT-TLS | +-----------+ |
|               |        |               |
+---------------+        +---------------+
          </artwork>
        </figure>
        <section
          title="Change on Endpoint Triggers Posture Assessment"
          anchor="Change-on-Endpoint-Triggers-Posture-Assessment">
          <t>A new application is installed on the endpoint, and the SWID
            directory is updated.  This triggers an update from the SWID posture
            collector to the SWID posture validator.  The message is sent down
            the NEA stack, encapsulated by NEA protocols until it is sent by the
            posture transport client to the posture transport server.  The 
            posture transport server then forwards it up through the stack, where
            the layers of encapsulation are removed until the SWID message 
            arrives at the SWID posture validator.</t>
          <figure
            title="Compliance Protocol Encapsulation"
            anchor="Compliance-Protocol-Ecapsulation-Figure">
            <artwork>
Endpoint                         Posture Manager
+---------------+                +---------------+
|               |                |               |
| +-----------+ |                | +-----------+ |
| | SWID      | |                | | SWID      | |
| | Posture   | |                | | Posture   | |
| | Collector | |                | | Validator | |
| +-----------+ |                | +-----------+ |
|      |        | SWID Message   |      |        |
|      | IF-IMC | for PA-TNC     |      | IF-IMV |
|      |        |                |      |        |
| +-----------+ |                | +-----------+ |
| | PB Client | |                | | PB Server | |
| +-----------+ |                | +-----------+ |
|      |        |                |      |        |
|      |        | PB-TNC {SWID   |      |        |
|      |        | Message for    |      |        |
|      |        | PA-TNC}        |      |        |
| +-----------+ |                | +-----------+ |
| | PT Client | |&lt;--------------&gt;| | PT Server | |
| +-----------+ | PT-TLS {PB-TNC | +-----------+ |
|               | {SWID Message  |               |
+---------------+ for PA-TNC}}   +---------------+
            </artwork>
          </figure>
          <t>The SWID posture validator stores the new tag information in the
            repository.  If the tag indicates that the endpoint is compliant with
            the policy, then the process is complete until the next time an
            update is needed (either because policy states that the endpoint must
            submit posture assessment results periodically or because an
            install/uninstall/update event on the endpoint triggers a posture
            assessment).</t>
          <figure title="Storing SWIDs in the Repository"
            anchor="Storing-SWIDs-in-the-Repository-Figure">
            <artwork>
Endpoint                 Posture Manager
+---------------+        +---------------+
|               |        |               |
| +-----------+ |        | +-----------+ |
| | SWID      | |        | | SWID      |-|-+
| | Posture   | |        | | Posture   | | |
| | Collector | |        | | Validator | | |
| +-----------+ |        | +-----------+ | |
|      |        |        |      |        | |     Repository
|      | IF-IMC |        |      | IF-IMV | |     +--------+
|      |        |        |      |        | |     |        |
| +-----------+ |        | +-----------+ | |     |        |
| | PB Client | |        | | PB Server | | +---->|        |
| +-----------+ |        | +-----------+ |       |        |
|      |        |        |      |        |       +--------+
|      |        |        |      |        |
|      |        |        |      |        |
| +-----------+ |        | +-----------+ |
| | PT Client | |&lt;------&gt;| | PT Server | |
| +-----------+ | PT-TLS | +-----------+ |
|               |        |               |
+---------------+        +---------------+
            </artwork>
          </figure>
          <t>If the endpoint has fallen out of compliance with a policy, the
            posture manager can alert the administrator via the posture manager's API.  
            The administrator can then take steps to address the problem.  If the 
            administrator has already established a policy for automatically addressing 
            this problem, that policy will be followed.</t>
          <figure title="Server Alerts Network Admin"
            anchor="Server-Alerts-Network-Admin">
            <artwork>              
                                               (")
                                              __|__
                                           +--> |
Endpoint                 Posture Manager   |   / \
+---------------+        +---------------+ |
|               |        |               | |
| +-----------+ |        | +-----------+ | |
| | SWID      | |        | | SWID      |-|-+
| | Posture   | |        | | Posture   | |
| | Collector | |        | | Validator | |
| +-----------+ |        | +-----------+ |
|      |        |        |      |        |       Repository
|      | IF-IMC |        |      | IF-IMV |       +--------+
|      |        |        |      |        |       |        |
| +-----------+ |        | +-----------+ |       |        |
| | PB Client | |        | | PB Server | |       |        |
| +-----------+ |        | +-----------+ |       |        |
|      |        |        |      |        |       +--------+
|      |        |        |      |        |
|      |        |        |      |        |
| +-----------+ |        | +-----------+ |
| | PT Client | |&lt;------&gt;| | PT Server | |
| +-----------+ | PT-TLS | +-----------+ |
|               |        |               |
+---------------+        +---------------+
            </artwork>
          </figure>
        </section>
      </section>
      <section
        title="Administrator Searches for Vulnerable Endpoints"
        anchor="Administrator-Searches-for-Vulnerable-Endpoints">
        <t>An announcement is made that a particular version of a piece of
          software has a vulnerability.  The administrator uses the
          API on the posture manager to search the repository for
          endpoints that reported the SWID tag for the vulnerable software.</t>
        <figure
          title="Admin Searches for Vulnerable Endpoints"
          anchor="Admin-Searches-for-Vulnerable-Endpoints">
          <artwork>
                                               (")
                                              __|__
                                            +-->|
Endpoint                 Posture Manager   |   / \
+---------------+        +---------------+ |
|               |        |               | |
| +-----------+ |        | +-----------+ | |
| | SWID      | |        | | SWID      |-|-+
| | Posture   | |        | | Posture   | |
| | Collector | |        | | Validator | |
| +-----------+ |        | +-----------+ |
|      |        |        |      |        |       Repository
|      | IF-IMC |        |      | IF-IMV |       +--------+
|      |        |        |      |        |       |        |
| +-----------+ |        | +-----------+ |       |        |
| | PB Client | |        | | PB Server | |------>|        |
| +-----------+ |        | +-----------+ |       |        |
|      |        |        |      |        |       +--------+
|      |        |        |      |        |
|      |        |        |      |        |
| +-----------+ |        | +-----------+ |
| | PT Client | |&lt;------&gt;| | PT Server | |
| +-----------+ | PT-TLS | +-----------+ |
|               |        |               |
+---------------+        +---------------+
            
          </artwork>
        </figure>
        <t>The repository returns a list of entries matching the
          administrator's search.  The administrator can then address the
          vulnerable endpoints by taking some follow-up action such as removing
          it from the network, quarantining it, or updating the vulnerable
          software.</t>
      </section>
    </section>
    <section anchor="ChangeLog" title="Change Log">
    <section title="-00 to -01">
        <t>Changed the status of the draft from "Best Current Practices" to "Standards Track".</t>
    </section>
    <section title="-05 to -00">
        <t>Changed the title of the draft to draft-ietf-sacm-epcp.</t>
        <t>Updated the diagram so the Endpoint and Posture Manager are the primary
        focus of EPCP.</t>
        <t>Added a reference to CoSWID in the Software Asset Management extension of the IETF
        NEA EPCP implementation.</t>
        <t>Further clarified the use of MAC addresses in EPCP.</t>
        <t>Included a requirement in the Privacy Considerations that the enterprise should
        exercise due diligence with respect to the privacy of certain data given privacy
        regulations.</t>
        <t>Added a requirement around an endpoint being provisioned with a machine certificate.</t>
        <t>Clarified that other protocols and interfaces may be supported beyond IETF NEA and NETCONF.</t>
        <t>Made various typographical and editorial changes.</t>
     </section>
     <section title="-04 to -05">
        <t>Updated the diagram so the Evaluator and Repository are "current work".</t>
        <t>Clarified how the Posture Collection Engine can push data, respond to 
          queries, and establish secure transport connectivity for fulfilling 
          subscriptions.</t>
        <t>Expanded on the future work around leveraging NETCONF, RESTCONF, and 
          YANG Push for network devices.</t>
        <t>Documented the need to reassess MAC addresses as a device identifier.</t>
        <t>Made various typographical and editorial changes.</t>
      </section>
      <section title="-03 to -04">
        <t>Addressed various comments from the SACM WG.</t>
        <t>Refactored the document to better focus it on the 
          communications between endpoints and the posture manager 
          and the best practices for EPCP implementations.</t>
        <t>Made other editorial changes and improved consistency 
          throughout the document.</t>
      </section>
      <section title="-02 to -03">
        <t>Addressed various comments from the SACM WG.</t>
        <t>Added a reference to TCG ECP 1.0.</t>
        <t>Removed text in the "SWID Posture Validator" section that
        states it performs evaluation. This was removed because it
        contradicts the posture manager not performing any evaluations.</t>
        <t>Expanded the "Provisioning" section of the "EPCP Transactions" 
        section to include examples of endpoint identifiers and 
        the need to provision endpoints with components and data models.</t>
        <t>Combined text for the capabilities of the Administrative Interface and API.</t>
        <t>Removed superfluous and introductory text from the 
          "Security Considerations" section.</t>
        <t>Renamed section "Vulnerability Searches" to 
          Vulnerability Management".</t>
        <t>Changed I-D category to BCP.</t>
        <t>Changed references to the NETMOD architecture to the 
          NETCONF architecture because NETCONF represents the
          management protocol whereas NETMOD is focused on the
          definition of data models.</t>
        <t>Addressed various editorial suggestions.</t>
      </section>
      <section title="-01 to -02">
        <t>Addressed various comments from the SACM WG.</t>
        <t>Added a section for the collection of posture 
          information from network devices using standards from
          the NETMOD WG.</t>
        <t>Updated EPCP component diagrams so they were not
          specific to a NEA-based implementation.</t>
        <t>Updated EPCP NEA example diagrams to reflect all the 
          components in the NEA architecture.</t>
      </section>
      <section title="-00 to -01">
        <t>There are no textual changes associated with this revision.
          This revision simply reflects a resubmission of the document
          so that it remains in active status.</t>
      </section>
      <section title="-01 to -02">
        <t>Added references to the Software Inventory Message and
          Attributes (SWIMA) for PA-TNC I-D.</t>
        <t>Replaced references to PC-TNC with IF-IMC.</t>
        <t>Removed erroneous hyphens from a couple of section titles.</t>
        <t>Made a few minor editorial changes.</t>
      </section>    
    <section title="-02 to -00">
      <t>Draft adopted by IETF SACM WG.</t>
    </section>
	  <section title="-00 to -01">
	    <t>Significant edits to up-level the draft to describe SACM collection over multiple different protocols.</t>
	    <t>Replaced references to SANS with CIS.</t>
	    <t>Made other minor editorial changes.</t>  
	  </section>
    </section>
  </back>
</rfc>
