<?xml version="1.0" encoding="US-ASCII"?>
<!-- this is version 5 of this xml2rfc template -->
<!--
    DOCTYPE processing

To use this XML template, the rfc2629.dtd from the xml2rfc distribution should 
be in the local directory. The xml2rfc distribution is available from 
http://xml.resource.org/

 The ENTITY clauses create an include of the named XML files, which
contains references written in xml2rfc format.

 XML2RFC offers an include feature described in the XML2RFC README
  file.  That syntax, however, contradicts the DTD requirements to
  have <reference> elements within the <references> element, so an 
  XML parser is likely to find your XML file invalid.  It may be
  possible that XML2RFC will change their DTD so that the XML file
  remains valid when their style of include is used.

Some editors, such as XXE, resolve the ENTITY clauses before displaying the 
document to be edited.
-->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc2223 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2223.xml">
<!ENTITY rfc2578 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2578.xml">
<!ENTITY rfc2579 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2579.xml">
<!ENTITY rfc2580 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2580.xml">
<!ENTITY rfc2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY rfc3410 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3410.xml">
<!ENTITY rfc4181 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4181.xml">
]>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc strict="no"?>
<?rfc rfcedstyle="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc category="std" docName="draft-moriarty-attestationsets-06"
     ipr="trust200902">
  <front>
    <title abbrev="draft-moriarty-attestationsets-05">Scalable Remote
    Attestation for Systems, Containers, and Applications</title>

    <author fullname="Kathleen M. Moriarty" initials="K" surname="Moriarty">
      <organization>Center for Internet Security (CIS)</organization>

      <address>
        <postal>
          <street>31 Tech Valley Drive</street>

          <city>East Greenbush, NY</city>

          <country>US</country>
        </postal>

        <email>Kathleen.Moriarty.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Antonio Fontes" initials="A" surname="Fontes">
      <organization>Dell Technologies</organization>

      <address>
        <postal>
          <street>176 South Street</street>

          <city>Hopkinton, MA</city>

          <country>US</country>
        </postal>

        <email>Antonio.Fontes@dell.com</email>
      </address>
    </author>

    <date year="2023"/>

    <area>Security</area>

    <workgroup>IETF</workgroup>

    <keyword>RATS</keyword>

    <keyword>Attestation</keyword>

    <keyword>Controls</keyword>

    <keyword>Benchmarks</keyword>

    <abstract>
      <t>This document establishes an architectural pattern whereby a remote
      attestation could be issued for a complete set of benchmarks or controls
      that are defined and grouped by an external entity, preventing the need
      to send over individual attestations for each item within a benchmark or
      control framework. This document establishes a pattern to list sets of
      benchmarks and controls within CWT and JWT formats for use as an Entity
      Attestation Token (EAT).</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>Posture assessment has long been desired, but has been difficult to
      achieve due to complexities of customization requirements at each
      organization. By using policy and measurement sets that may be offered
      at various assurance levels defined in an <xref
      target="I-D.ietf-rats-eat">Entity Attestation Token (EAT)
      profile</xref>, automating posture assessment through attestation
      becomes achievable for organizations of all sizes. The measurement and
      policy groupings in an EAT profile may be provided by the vendor or by a
      neutral third party to enable ease of use and consistent
      implementations. This provides simpler options to enable posture
      assessment at selected levels by organizations without the need to have
      in-house expertise. The measurement and policy sets may also be
      customized, but not necessary to achieve posture assessment to
      predefined options. This document describes a method to use existing
      attestation formats and protocols while allowing for defined profiles of
      policies, benchmarks, and measurements for specific assurance levels
      that scale to provide transparency to posture assessment results
      summarized with remote attestation.</t>

      <t>By way of example, the Center for Internet Security (CIS) hosts
      recommended configuration settings to secure operating systems,
      applications, and devices in CIS Benchmarks developed with industry
      experts. Attestations aligned to the CIS Benchmarks or other
      configuration guide such as a DISA STIG could be used to assert the
      configuration meets expectations. This has already been done for
      multiple platforms to demonstrate assurance for firmware according to
      NIST SP 800-193, Firmware Resiliency Guidelines. In order to scale
      remote attestation, a single attestation for a set of Benchmarks or
      policies being met may be sent to the remote atteststaion management
      system.</t>

      <t>On traditional servers, assurance to NIST SP 800-193 is provable
      through attestation from a root of trust (RoT), using the Trusted
      Computing Group (TCG) Trusted Platform Module (TPM) chip and attestation
      formats. At boot, policy and measurement expectations are verified
      against a set of "golden policies" from collected and attested evidence.
      Device identity and measurements can also be attestated at runtime. The
      attestations on evidence (e.g. hash of boot element) and verification of
      attestations are typically contained within a system and are limited to
      the control plane for management. The policy and measurement sets for
      comparison are protected to assure the result in the attestation
      verification process for boot element. Event logs and PCR values may be
      exposed to provide transparency into the verified attestations. Remote
      attestation provides a summary of a local assessment of posture for
      managed systems and across various layers (operating system,
      application, containers) in each of these systems in a managed
      environment.</t>

      <t>There is a balance of exposure and evidence needed to assess posture
      when providing assurance of controls and system state. Currently, logs
      and TPM PCR values may be passed to provide assurance of verification of
      attestation evidence meeting set requirements. Providing the assurance
      can be accomplished with a remote attestation format such as the <xref
      target="I-D.ietf-rats-eat">Entity Attestation Token (EAT) </xref> and a
      RESTful interface such as ROLIE or RedFish. Policy definition blocks may
      be scoped to control measurement sets, where the EAT profile asserts
      compliance to the policy or measurement block specified and may include
      claims with the log and PCR value evidence. Measurement and Policy sets
      in an EAT profile may be published and maintained by separate entities
      (e.g. CIS Benchmarks, DISA STIGs). The policy and measurement sets
      should be maintained separately even if associated with the same
      benchmark or control set. This avoids the need to transition the
      verifying entity to a remote system for individual policy and
      measurements which are performed locally for more immediate remediation
      as well as other functions.</t>

      <t/>

      <t>Examples of measurement and policy sets that could be defined in EAT
      profiles include, but are not limited to:</t>

      <t><list style="symbols">
          <t>Hardware attribute certificates, TCG</t>

          <t>Hardware Attribute Certificate Comparison Results, TCG</t>

          <t>Reference Integrity Measurements for firmware, TCG</t>

          <t>Operating system benchmarks at Specified Assurance Levels,
          CIS</t>

          <t>Application hardening Benchmarks at Specified Assurance Levels,
          CIS, DISA STIG</t>

          <t>Container security benchmarks at Specified Assurance Levels,
          CIS</t>
        </list></t>

      <t>Scale, ease of use, full automation, and consistency for customer
      consumption of a remote attestation function or service are essential
      toward the goal of consistently securing systems against known threats
      and vulnerabilities. Mitigations may be baked into policy. Claim sets of
      measurements and policy verified to meet or not meet &lt;xref
      target="I-D.ietf-rats-eat"&gt; Endorsed values &lt;/xref&gt; are
      conveyed in an Entity Attestation Token made available to a RESTful
      interface in aggregate for the systems managed.</t>

      <t>The trusted boot process already in use by vendors, chains
      attestation sets from the expected hardware as a pre-requisit for
      firmware and then BIOS assurance. In container environments, the host
      operating system is attested following the assessment of the hardware,
      then firmware. These assessments are perfomed with local attestation as
      it would not scale to use remote attestation. The result with a link to
      logs for transparency of the full set of validated assessments is
      communicated with a remote attestation for a management system to
      maintain state of assurance for managed assets. Hence, to provide
      interopable results, a format is defined to enable that process in this
      document.</t>
    </section>

    <section title="Policy and Measurement Set Definitions">
      <t>This document defines EAT claims in the JWT <xref target="RFC7519"/>
      and CWT <xref target="RFC8392"/> registries to provide attestation to a
      set of verified claims within a defined grouping. The trustworthiness
      will be conveyed on original verified evidence as well as the
      attestation on the grouping.</t>

      <figure>
        <artwork><![CDATA[
   {
      +------------------------------------+---------------------------------+---------------+
      | Claim | Long Name                  | Description                     | Format        |
      +-------+----------------------------+---------------------------------+---------------+
      | MPS   | Measurement or Policy Set  | Name for the MPS                |               |
      | LEM   | Log Evidence of MPS        | Log File or URI                 |               | 
      | PCR   | TPM PCR Values             | URI                             |               |
      | FMA   | Format of MPS Attestations | Format of included attestations |               |
      | HSH   | Hash Value/Message Digest  | Hash value of claim-set         |               |
      +-------+----------------------------+---------------------------------+---------------+
         }
    ]]></artwork>
      </figure>
    </section>

    <section title="Supportability and Re-Attestation">
      <t>The remote attestation framework shall include provisions within the
      system and attestation authority to allow for Product modification.</t>

      <t>Over its lifecycle, the Product may experience modification due to:
      maintenance, failures, upgrades, expansion, moves, etc..</t>

      <t>The customer can chose to:</t>

      <t><list style="symbols">
          <t>Run remote attestation after product modification, or</t>

          <t>Not take action and remain un-protected</t>
        </list></t>

      <t>In the case of Re-Attestation:</t>

      <t><list style="symbols">
          <t>framework needs to invalidate previous TPM PCR values and
          tokens,</t>

          <t>framework needs to collect new measurements,</t>

          <t>framework needs to maintain history or allow for history to be
          logged to enable change traceability attestation, and</t>

          <t>framework needs to notify that the previous attestation has been
          invalidated</t>
        </list></t>
    </section>

    <section title="Configuration Sets">
      <t>In some cases, it may be difficult to attest to configuration
      settings for the initial or subsequent attestation and verification
      processes. The use of an expected hash value for configuration settings
      can be used to compare the attested configuration set. In this case, the
      creator of the attestation verification measurements would define a set
      of values for which a message digest would be created and then signed by
      the attestor. The expected measurements would include the expected hash
      value for comparison. The configuration set could be the full
      attestation set to a Benchmark or a defined subset.</t>
    </section>

    <section title="Remediation">
      <t>If policy and configration settings or measurements attestated do not
      meet expected values, remediation is desireable. Automated remediation
      performed with alignment to zero trust architecture principles would
      require that the remeidation be performed prior to any relying component
      executing. The relying component would verifiy before continuing in a
      zero trust architecture.</t>

      <t>Ideally, remediation would occur on system as part of the process to
      attest to a set of attestations, similar to how attestation is performed
      for firmware in the boot process. If automated remediation is not
      possible, an alert should be generated to allow for notification of the
      variance from expected values.</t>
    </section>

    <section title="Security Considerations">
      <t>This document establishes a pattern to list sets of benchmarks and
      controls within CWT and JWT formats. The contents of the benchmarks and
      controls are out of scope for this document. This establishes an
      architectural pattern whereby a remote attestation could be issued for a
      complete set of benchmarks or controls as defined and grouped by
      external entities, preventing the need to send over individual
      attestations for each item within a benchmark or control framework. This
      document does not add security consideration over what has been
      described in the EAT, JWT, or CWT specifications.</t>
    </section>

    <section title="IANA Considerations">
      <t>This memo includes no request to IANA, yet. This will list the
      initial registration sets to the JWT and CWT registries if adopted. The
      registry will contain the names of the Benchmarks, Policy sets, DISA
      STIGS, controls, or other groupings of policy and measurements to map
      the standards document to a claim set for verification.</t>
    </section>

    <!-- The Author's Addresses section will be generated automatically by XML2RFC 
    from the front information. -->

    <section title="Contributors">
      <t>Thank you to reviewers and contributors who helped to improve this
      document. Thank you to Nick Grobelney, Dell Technologies, for your
      review and contribution to separate out the policy and measurement sets.
      Thank you, Samant Kakarla and Huijun Xie from Dell Technologies, for
      your detailed review and corrections on boot process details. Section 3
      has been contributed by Rudy Bauer from Dell as well and an author will
      be added on the next reveision.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.8392'?>

      <?rfc include='reference.RFC.7519'?>

      <!--
      <?rfc include='reference.RFC.7030'?>
      -->
    </references>

    <references title="Informative References">
      <?rfc include='reference.I-D.ietf-rats-eat'?>
    </references>

    <section title="Change Log ">
      <t>Note to RFC Editor: if this document does not obsolete an existing
      RFC, please remove this appendix before publication as an RFC.</t>

      <t/>
    </section>

    <section title="Open Issues">
      <t>Note to RFC Editor: please remove this appendix before publication as
      an RFC.</t>

      <!--
		 <t><list style="numbers">
          <t>Contributor addresses need to be updated</t>
        </list></t>
        -->
    </section>
  </back>
</rfc>
