<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC5209 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5209.xml">
<!ENTITY RFC5793 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5793.xml">
<!ENTITY RFC6876 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6876.xml">
<!ENTITY I-D.ietf-sacm-information-model SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-sacm-information-model.xml">
<!ENTITY I-D.ietf-sacm-use-cases SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-sacm-use-cases.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.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="yes" ?>
<!-- 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="info" docName="draft-fitzgeraldmckay-sacm-endpointcompliance-00" 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 Compliance Standard">Endpoint Compliance Standard</title>

    <!-- Another author who claims to be an editor -->

    <author fullname="Jessica Fitzgerald-McKay" initials="J.M." role="editor"
            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="May" year="2015" />

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>SACM</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>sacm</keyword>

    <abstract>
		<t>This document describes how published standards can be used to meet SACM endpoint compliance use cases.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
		<t>This document proposes leveraging the Network Enterprise Assessment (NEA) architecture <xref target="RFC5209"/>, work from the Trusted Computing Group's (TCG) Trusted Network Connect (TNC) Work Group, and the ISO Software Identification (SWID) Tag Standard <xref target="ISO.19770-2"/> as a starting place for building an endpoint compliance solution.</t>
		<t>The SACM Information Model <xref target="I-D.ietf-sacm-information-model"/> defines an internal collector to gather posture attributes from an endpoint. These posture attributes must be communicated to a server that can store the attributes in a data repository. This repository of endpoint identities and attributes is where work can take place to validate the attributes.</t>
		<t>The NEA architecture was originally designed for access control use cases. Using the TLS-based Posture Transport Protocol (PT-TLS) <xref target="RFC6876"/>, the same architecture can be reused to collect large amounts of compliance data. Work from the TCG's TNC work group expands on this, enabling standardized communication of SWID Tags to a NEA server. Based on these standards, SACM can define actions that can be performed on endpoint posture attributes to ensure compliance, including:
			<list style="numbers">
                    <t>ensuring that all network-connected endpoints are known, and authorized to access network resources;</t>
			  <t>confirming that only authorized applications are running on the endpoint;</t>
                    <t>knowing that all applications are patched and up-to-date; and,</t>
                    <t>ensuring that applications with known vulnerabilities can be located and patched.</t>
            </list></t> 
	</section>

  	
	<section title="Focus on a Way Forward">
		<t>In light of SACM's new focus and the need for quick wins that get SACM closer to its goals, we would like to open discussion on standardizing the collection, communication and evaluation of endpoint software load reports. This meets a number of SACM use cases <xref target="I-D.ietf-sacm-use-cases"/>. Many of these standards already exist and are captured in the TCG's Endpoint Compliance Profile <xref target="Endpoint-Compliance-Profile"/>. Implementations are also publically available, such as the strongSwan TNC implementation <xref target="strongSwan"/>.</t>
	</section>
	
	<section title="Existing Protocols and Schema for Internal Data Collection">
		<t>The Trusted Computing Group's TNC Work Group has additional standards that could be incorporated into the NEA architecture to specify how internal data collection can be used for security automation. The Integrity Measurement Collector Interface (IF-IMC) <xref target="IF-IMC"/> could be used to describe a standardized interface between a posture collector and a NEA client on an endpoint. Likewise, the Integrity Measurement Verifier Interface (IF-IMV) <xref target="IF-IMV"/> could provide an interface between a posture validator and a NEA Server. Both of these standards are critical additions to the NEA architecture that improve the security and interoperability of the messaging between components.</t>
		<t>The SACM Information Model calls out a number of components that tie directly to the existing NEA architecture. The Posture Collector described by NEA <xref target="RFC5209"/> is a SACM Internal Collector, and the Posture Validator is a SACM evaluator. The PT-TLS protocol standardized by NEA addresses the SACM Information Model's security considerations by providing an authenticated, confidential channel through which posture attribute-value pairs can be communicated, with assurance that the communicated data has not been modified.</t>
		<t>In recent years, TNC has worked to specify SWID Message and Attributes for IF-M <xref target="SWID-Messages"/>. This standard uses NEA and TCG architectural elements to collect and validate software identities using the ISO Software Identification Tag Standard. It also enables a NEA server to automate the storage of SWID tags for later evaluation, separating collection and evaluation roles. Server Discovery and Validation <xref target="Server-Discovery"/> ensures that the endpoint only communicates with trusted servers.</t>
	</section>
	
	<section title="An Architecture for Internal Data Collection">
		<t>Using these standards, we can begin to build an architecture for internal data collection that addresses SACM's use cases. An endpoint is connected to the network, and using the Server Discovery and Validation protocol, locates a trusted server, and connects to it over PT-TLS. A SWID Collector gathers SWID tags from a directory on the endpoint, and communicates them over IF-IMC to the Posture Broker (PB) Client. The Posture Broker Client then communicates this data to the Posture Transport Server via the Posture Broker Protocol <xref target="RFC5793"/>.</t>
	      <t>While NEA included validation capabilities on its server, SACM requires the separation of collection and evaluation. Certain features of Posture Attribute validators, such as the evaluation of collected data against network policy or guidance, will be best performed at the data repository. Other features, such as the ability to request data from an endpoint, should remain on the server. SACM will have to decide how to best separate these function. For now, a SACM Server will work as a place holder for the PB Server plus any functionality from the NEA Posture Validator that the group chooses to retain on the server. The SACM Server will also be responsible for storing collected data in a data repository, where it will be made available to evaluators.</t>
	
	
	<figure align="center" anchor="Internal-Collection-Architecture">

        <artwork align="left"><![CDATA[
      Endpoint                          Server
+------------------+             +------------------+
|                  |             |                  |                      
| +--------------+ |             |                  |                                           Evaluators
| |SWID Collector| |             |                  |                                     +------------------+
| +--------------+ |             |                  |            Data Repository          | +------------------+
|        |         |             |                  |          +-----------------+        | | +------------------+
|        | IF-IMC  |             |                  |          |                 |        | | |                  |
|        |         |             |                  |          |                 |        | | |                  |
| +--------------+ |             | +--------------+ |          |                 |        | | |                  |
| |   PB Client  | |             | | SACM Server  +------------+                 +------------+                  |
| +--------------+ |             | +--------------+ |          |                 |        | | |                  |
|        |         |             |         |        |          |                 |        | | |                  |
|        | PB      |             |         | PB     |          |                 |        +-+-|                  |
|        |         |             |         |        |          +-----------------+            +------------------+
| +--------------+ |             | +--------------+ |
| |   PT Client  +-----------------+   PT Server  | |
| +--------------+ |   PT-TLS    | +--------------+ |
|                  |             |                  |
+------------------+             +------------------+
            ]]></artwork>

	</figure>
	</section>
	
	<section title="Future Work">
		<t>This collection of standards provides a reasonable basis upon which we can build a SACM solution that focuses on the applications that are running on different types of endpoints, and the work that can be performed on this data when it is collected securely by an authorized server and stored in an data repository. We intend, in the coming months, to ask the TNC to submit these standards to SACM for inclusion in our first version solution, as they meet our newly scoped goals of collecting state information from a subset of endpoint types.</t>
		<t>More work is needed to build out the capabilities in this set of standards. Agreeing to use them as a starting point will clarify our work and help scope out future efforts.</t>
	</section>
			
    	
    <!--
      <section title="Requirements Language">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in <xref target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>
-->	
    <!-- Possibly a 'Contributors' section ... -->

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes no request to IANA.</t>

    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Each of the standards referenced in this internet draft contains its own security considerations section. This internet draft does not itself propose any new security considerations.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <!--<references title="Normative References">
    ?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?
    
	  &RFC2119;

      <reference anchor="min_ref">
    

        <front>
          <title>Minimal Reference</title>

          <author initials="J.M" surname="Fitzgerald-McKay">
            <organization></organization>
          </author>

          <date year="2015" />
        </front>
      </reference>
    </references>-->

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->

      <!--&RFC2629;-->

      &RFC3552;
	  
	  &RFC5209;
	  
	  &RFC5793;
	  
	  &RFC6876;

      &I-D.narten-iana-considerations-rfc2434bis;
	  
	  &I-D.ietf-sacm-information-model;
	  
	  &I-D.ietf-sacm-use-cases;

      <!-- A reference written by by an organization not a person. -->

      <reference anchor="ISO.19770-2">
                <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="19770-2"/>
            </reference>
	
			<reference anchor="Endpoint-Compliance-Profile">
                <front>
                    <title abbrev="Endpoint Compliance Profile">TNC Endpoint Compliance Profile Specification</title>
                    <author>
						<organization abbrev="TCG">Trusted Computing Group</organization>
					</author>
                    <date month="December" year="2014"/>
                </front>
            </reference>
			
			<reference anchor="IF-IMC">
                <front>
                    <title abbrev="IF-IMC">TCG Trusted Network Connect TNC IF-IMC, Verion 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="SWID-Messages">
                <front>
                    <title abbrev="SWID Messages">DRAFT: TCG Trusted Network Connect SWID Message and Attributes for IF-M, Version 1.0</title>
                    <author>
						<organization abbrev="TCG">Trusted Computing Group</organization>
					</author>
                    <date month="March" year="2015"/>
                </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="August" year="2013"/>
                </front>
            </reference>
			
			<reference anchor="strongSwan" target="https://wiki.strongswan.org/projects/strongswan/wiki/TrustedNetworkConnect">
                <front>
                    <title abbrev="strongSwan">Trusted Network Connect (TNC) HOWTO</title>
                    <author>
						<organization abbrev="strongSwan">strongSwan</organization>
					</author>
                    <date month="April" year="2015"/>
                </front>
            </reference>

			
    </references>

  </back>
  
</rfc>
