<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.36 -->

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

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

<rfc ipr="trust200902" docName="draft-birkholz-attestation-terminology-00" category="info">

  <front>
    <title abbrev="term-attestation">Reference Terminology for Attestation Procedures</title>

    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>
    <author initials="M." surname="Wiseman" fullname="Monty Wiseman">
      <organization abbrev="GE Global Research">GE Global Research</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>monty.wiseman@ge.com</email>
      </address>
    </author>
    <author initials="H." surname="Tschofenig" fullname="Hannes Tschofenig">
      <organization abbrev="ARM Ltd.">ARM Ltd.</organization>
      <address>
        <postal>
          <street>110 Fulbourn Rd</street>
          <city>Cambridge</city>
          <code>CB1 9NJ</code>
          <country>UK</country>
        </postal>
        <email>hannes.tschofenig@gmx.net</email>
      </address>
    </author>

    <date year="2017" month="July" day="04"/>

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

    <abstract>


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



    </abstract>


  </front>

  <middle>


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

<t>Over the years, the term attestation has been used in multiple contexts and multiple scopes and
therefore accumulated various connotations with slightly different semantic meaning.</t>

<t>In order to better understand and grasp the intend and meaning of specific attestation procedures in
the security area - including the requirements that are addressed by them - this document provides
an overview of existing work, its background, and common terminology. As the contribution, from that
state-of-the-art a set of terms that provides a stable basis for future work on attestation
procedures in the IETF is derived.</t>

<t>The primary application of attestation procedures is to increase the trust and confidence in the
integrity of the characteristics and properties of an entity that intends to provide data to other
entities remotely. How an objects’s characteristics are attested and which characteristics are
actually chosen to be attested varies with the requirements of the use case, or-–in essence–-depends
on the risk that is intended to be mitigated via an attestation procedure. It is important to note
that the activity of attestation itself in principle only provides the evidence that proves
integrity as a basis for further activities. The resulting attestation procedure defines the greater
semantic context about how the evidence is used and what an attestation procedures actually
accomplishes; and what it cannot accomplish, correspondingly. Hence, this document is also intended
to provide a map of terms, concepts and applications that illustrate the ecosystem of current
applications of attestation procedures.</t>

<t>Before an adequate set of terms and definitions for the domain of attestation procedures can be
defined, a general understanding and the global definitions of the “what” and the “how” have to be
established. In consequence, [enter final structure here].</t>

<t>Please note that the time before the I-D deadline did not suffice to fill in all the references. Most references are therefore still under construction. The majority of definitions is still only originating from IETF work. Future iterations will pull in more complementary definitions from other SDO (e.g. Global Platform, TCG, etc.) and a general structure template to highlight semantic relationships and capable of resolving potential discrepancies will be introduced. A section of context awareness will provide further insight on how attestation procedures are vital to ongoing work in the IETF (e.g. I2NSF &amp; tokbind). The definitions in the section about Remote Attestation are basically self-describing in this version. Additional explanatory text will be added to provide more context and coherence.</t>

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

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”,
“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and
“OPTIONAL” in this document are to be interpreted as described in RFC
2119, BCP 14 <xref target="RFC2119"/>.</t>

</section>
</section>
<section anchor="basic-attestation-roles" title="Basic Attestation Roles">

<t>The use of the term remote attestation always implies the involvement of at least two parties that
each take on a specific role in corresponding procedures – the attestee role and the verifier role.
Depending on the characteristics attested and the nature of the parties, information is exchanged
via specific types of interconnects between them. The type of interconnect ranges from GIO pins, to
a bus, to the Internet, or from a direct physical connection, to a wireless association, to a world
wide mesh of peers. In other words, virtually every kind communication path can be used by the two
roles. In fact, a single party can take on both roles at the same time, but there is only a limited
use to this architecture.</t>

<t><list style="hanging">
  <t hangText='Attestee:'>
  The role that designates the subject of the attestation. The provider of evidence.</t>
  <t hangText='Verfifier:'>
  The role that designates the appraiser of the attestee’s attestation. The consumer of evidence.</t>
  <t hangText='Interconnect:'>
  A channel of communication between attestee and verifier that enables the appraisal of evidence
created by the attestee.</t>
</list></t>

</section>
<section anchor="computing-context" title="Computing Context">

<t>This section introduces the term computing context in order to simplify the definition of
attestation terminology.</t>

<t>The number of approaches and solutions to create things that provide the same capabilities as a
“simple physical device” continuously increases. Examples include but are not limited to: the
compartmentalization of physical resources, the separation of software instances with different
dependencies in dedicated containers, and the nesting of virtual components via hardware-based and
software-based solutions.</t>

<t>In essence, every physical or logical system is a composite. Every component in that composite is a
potential computing context capable of taking on the roles of attestee or verifier. The scope and
application of these roles can range from continuous mutual attestation procedure, in which every
component in a hierarchically structured composite that constitutes a single distinguishable
endpoint on the management plane, to sporadic attestation of the integrity of an experiment in earth
orbit.</t>

<t>Analogously, the increasing number of features and functions start to blur the lines that are required to categorize each solution and approach precisely. To address that increasingly difficult categorization, the term computing context defines the characteristics of the entities that can take on the role of an attestee – and in consequence the role of a verifier. This approach is intended to provide a stable basis of definitions for future solutions that continuous to remain viable long-term.</t>

<t><list style="hanging">
  <t hangText='Computing context :'>
  An umbrella term that combines the scope of the definitions of endpoint [ref NEA], device [ref 1ar], and thing [ref t2trg], including hardware-based and software-based sub-contexts that constitute independent and distinguishable slices of a computing context created by compartmentalization mechanisms, such as trusted execution environments or virtual network security function contexts.</t>
</list></t>

<section anchor="formal-semantic-relationships" title="Formal Semantic Relationships">

<t>The formal semantic relationship of a computing context and the definitions provided by RFC 4949 is a as follows.</t>

<t>The scope of the term computing context encompasses</t>

<t><list style="symbols">
  <t>an information system,</t>
  <t>an object and in consequence a system component or a composite of system sub-components, and</t>
  <t>a system entity or a composite of system entities.</t>
</list></t>

<t>Analogously, a sub-context is a subsystem and as with system components, computing contexts can be
nested and therefore be physical system components or logical (“virtual”) system (sub-)components.</t>

<t>The formal semantic relationship is based on the following definitions from RFC 4949.</t>

<t><list style="hanging">
  <t hangText='(Information) System:'>
  An organized assembly of computing and communication resources and procedures – i.e., equipment and services, together with their supporting infrastructure, facilities, and personnel – that create, collect, record, process, store, transport, retrieve, display, disseminate, control, or dispose of information to accomplish a specified set of functions.</t>
  <t hangText='Object:'>
  A system component that contains or receives information.</t>
  <t hangText='Subsystem:'>
  A collection of related system components that together perform a system function or deliver a system service.</t>
  <t hangText='System Component:'>
  A collection of system resources that (a) forms a physical or logical part of the system, (b) has specified functions and interfaces, and (c) is treated (e.g., by policies or specifications) as existing independently of other parts of the system. (See: subsystem.)</t>
  <t>An identifiable and self-contained part of a Target of Evaluation.</t>
  <t hangText='System Entity:'>
  An active part of a system – […] (see: subsystem) – that has a specific set of capabilities.</t>
</list></t>

</section>
<section anchor="characteristics-of-a-computing-context" title="Characteristics of a computing context">

<t>While the semantic relationships highlighted above constitute the fundamental basis to define the context of computing context, the following list of characteristics is intended to improve the intuitive understanding of the term and provide a better understanding of its meaning:</t>

<t>A computing context:</t>

<t><list style="symbols">
  <t>creates its own independent environment in regard to executing and running software,</t>
  <t>creates its own separate control plane state (by potentially interacting with other computing contexts) and can provide a dedicated management interface by which control plane behavior can be effected,</t>
  <t>can be identified uniquely and therefore reliably differentiated in a given scope, and</t>
  <t>does not necessarily has to include a network interface with associated network addresses (as required, e.g. by the definition of an endpoint) – although it is very likely to have (access to) one.</t>
</list></t>

<t>In contrast, a docker [ref docker, find a more general term here] context is not a distinguishable slice of a computing system and therefore is not an independent computing context.</t>

<t>Examples include: a smart phone, a nested virtual machine, a virtualized firewall function running distributed on a cluster of physical and virtual nodes, or a trust-zone.</t>

</section>
</section>
<section anchor="computing-context-identity" title="Computing Context Identity">

<t>The identity of a computing context provides a basis for data origin authentication. Confidence in
the identity assurance level [NIST SP-800-63-3] or the assurance levels for identity authentication
<xref target="RFC4949"/> impacts the confidence in the evidence an attestee provides.</t>

<t>If a secret key is used to sign a public key</t>

</section>
<section anchor="attestation-workflow" title="Attestation Workflow">

<t>This section introduces terms and definitions that are required to illustrate the scope and the granularity of attestation workflows in the context of security automation. Terms defined in the following sections will be based on this workflow-related definitions.</t>

<t>In general, attestation is an iterative procedure that is conducted over and over again in a computing context under specific conditions. It is neither a generic set of actions nor simply a task, because the actual actions to be undertaken in order to conduct an attestation procedure can vary significantly depending on the protocols employed and types of computing contexts involved.</t>

<t><list style="hanging">
  <t hangText='Activity:'>
  The condition in which things are happening or being done. In the scope of attestation, an activity is a sequence of actions that is intended to produce a specifically defined result. The actual composition of actions can vary, depending on the characteristics of the computing context they are conducted by/in and the protocols used. A single activity provides a only a minimal required amount of semantic context, e.g. by the activity’s requirements imposed on the computing context, or via set of actions it is composed of.
Example: The conveyance of cryptographic evidence or the acquisition of an trusted time stamp token are activities.</t>
  <t hangText='Task:'>
  A piece of work to be done or undertaken. In the scope of attestation, a task is a procedure to be conducted.
Example: A Verifier can be tasked with the appraisal of evidence originating from a specific type of computing contexts.</t>
  <t hangText='Action:'>
  The accomplishment of a thing usually over a period of time, in stages, or with the possibility of repetition. In the scope of attestation, an action is the execution of an operation or function in the scope of an activity conducted by a single computing context. A single action provides no semantic context by itself, although it can limit potential semantic contexts of attestation procedures to a smaller subset.
Example: Signing an existing public key via a specific openssl library, transmitting data, or receiving data are actions.</t>
  <t hangText='Procedure:'>
  A series of actions that are done in a certain way or order. In the scope of attestation, a procedure is a composition of activities (sequences of actions) that is intended to create a well specified result with a well established semantic context.
Example: The activities of attestation, conveyance and verification compose a remote attestation procedure.</t>
</list></t>

</section>
<section anchor="reference-use-cases" title="Reference Use Cases">

<t>This document provides NNN prominent examples of use cases attestation procedures are intended to address:</t>

<t><list style="symbols">
  <t>Verification of the source integrity of a computing context via data integrity proofing of installed software instances that are executed, and</t>
  <t>Verification of the identity proofing of a computing context.</t>
</list></t>

<t>These use case summary highlighted above is based in the following terms defined in RFC4949 and
complementary sources of terminology:</t>

<t><list style="hanging">
  <t hangText='Assurance:'>
  An attribute of an information system that provides grounds for having confidence that the system
operates such that the system’s security policy is enforced <xref target="RFC4949"></xref> (see Trusted System below).</t>
  <t>In common criteria, assurance is the basis for the metric level of assurance, which represents the
“confidence that a system’s principal security features are reliably implemented”.</t>
  <t>The NIST Handbook [get ref from 4949] notes that the levels of assurance defined in Common Criteria
represent “a degree of confidence, not a true measure of how secure the system actually is. This
distinction is necessary because it is extremely difficult–and in many cases, virtually
impossible–to know exactly how secure a system is.”</t>
  <t>Historically, assurance was well-defined in the Orange Book
[http://csrc.nist.gov/publications/history/dod85.pdf] as “guaranteeing or providing
confidence that the security policy has been implemented correctly and that the protection-relevant
elements of the system do, indeed, accurately mediate and enforce the intent of that policy.  By
extension, assurance must include a guarantee that the trusted portion of the system works only as
intended.”</t>
  <t hangText='Confidence:'>
  The definition of correctness integrity in <xref target="RFC4949"></xref> notes that “source integrity refers to
confidence in data values”.
Hence, confidence in an attestation procedure is referring to the degree of trustworthiness of an
attestation activity that produces evidence (attestee), of an conveyance activity that transfers
evidence (interconnect), and of a verification activity that appraises evidence (verifier), in respect to correctness integrity.</t>
  <t hangText='Identity:'>
  [pull relevant rfc4949 parts here]</t>
  <t hangText='Identity Proofing:'>
  A process that vets and verifies the information that is used to establish the identity of a system entity.</t>
  <t hangText='Source Integrity:'>
  The property that data is trustworthy (i.e., worthy of reliance or trust), based on the trustworthiness of its sources and the trustworthiness of any procedures used for handling data in the system.</t>
  <t hangText='Data Integrity:'>
  (a) The property that data has not been changed, destroyed, or lost in an unauthorized or accidental manner. (See: data integrity service. Compare: correctness integrity, source integrity.)</t>
  <t>(b) The property that information has not been modified or destroyed in an unauthorized manner.</t>
  <t hangText='Correctness:'>
  The property of a system that is guaranteed as the result of formal verification activities.</t>
  <t hangText='Correctness integrity:'>
  The property that the information represented by data is accurate and consistent.</t>
  <t hangText='Verification:'>
  (a) The process of examining information to establish the truth of a claimed fact or value.</t>
  <t>(b) The process of comparing two levels of system specification for proper correspondence, such as comparing a security model with a top-level specification, a top-level specification with source code, or source code with object code.</t>
</list></t>

<section anchor="the-lying-endpoint-problem" title="The Lying Endpoint Problem">

<t>A very prominent goal of attestation procedures – and therefore a suitable example used as reference in this document - is to address the “lying endpoint problem”.</t>

<t>Information created, relayed, or, in essence, emitted by a computing context does not have to be correct. There can be multiple reasons why that is the case and the “lying endpoint problem” represents a scenario, in which the reason is the compromization of computing contexts with malicious intend. A compromised computing context could try to “pretend” to be integer, while actually feeding manipulated information into a security domain, therefore compromising the effectiveness of automated security functions. Attestation – and remote attestation procedures specifically – is an approach intended to identify compromised software instances in computing contexts.</t>

<t>Per definition, a “lying endpoint” cannot be “trusted system”.</t>

<t><list style="hanging">
  <t hangText='Trusted System:'>
  A system that operates as expected, according to design and policy, doing what is required – despite environmental disruption, human user and operator errors, and attacks by hostile parties – and not doing other things.</t>
</list></t>

<t>Remote attestation procedures are intended to enable the consumer of information emitted by an computing context to assess the validity and integrity of the information transferred. The approach is based on the assumption that if evidence can be provided in order to prove the integrity of every software instance installed involved in the activity of creating the emitted information in question, the emitted information can be considered valid and integer.</t>

<t>In contrast, such evidence has to be impossible to create if the software instances used in a computing context are compromised. Attestation activities that are intended to create this evidence therefore also to also provide guarantees about the validity of the evidence they can create.</t>

</section>
<section anchor="who-am-i-a-talking-to" title="Who am I a talking to?">

<t>[working title, write up use case here, ref teep requirements]</t>

</section>
</section>
<section anchor="trustworthiness" title="Trustworthiness">

<t>A “lying endpoint” is not trustworthy.</t>

<t><list style="hanging">
  <t hangText='Trusted System:'>
  A system that operates as expected, according to design and policy, doing what is required – despite environmental disruption, human user and operator errors, and attacks by hostile parties – and not doing other things.</t>
  <t hangText='Trustworthy:'>
  pull in text here</t>
</list></t>

</section>
<section anchor="remote-attestation" title="Remote Attestation">

<t><list style="hanging">
  <t hangText='Attestation:'>
  An object integrity authentication facilitated via the creation of a claim about the properties of an attestee, such that the claim can be used as evidence.</t>
  <t hangText='Conveyance:'>
  The transfer of evidence from the attestee to the verifier.</t>
  <t hangText='Verification:'>
  The appraisal of evidence by evaluating it against declarative guidance.</t>
  <t hangText='Remote Attestation:'>
  A procedure composed of the activities attestation, conveyance and verification.</t>
</list></t>

<section anchor="building-block-terms" title="Building Block Terms">

<t>[working title, pulled from various sources, vital]</t>

<t><list style="hanging">
  <t hangText='Attestation Identity Key (AIK):'>
  A special purpose signature (therefore asymmetric) key that supports identity related operations. The private portion of the key pair is maintained confidential to the computing context via appropriate measures (that have a direct impact on the level of confidence). The public portion of the key pair may be included in AIK credentials that provide a claim about the computing context.</t>
  <t hangText='Claim:'>
  A piece of information asserted about a subject. A claim is represented as a name/value pair consisting of a Claim Name and a Claim Value <xref target="RFC7519"/></t>
  <t>In the context of SACM, a claim is also specialized as an attribute/value pair that is intended to be related to a statement <xref target="I-D.ietf-sacm-terminology"/>.</t>
  <t hangText='Computing Context Characteristics:'>
  The composition, configuration and state of a computing context.</t>
  <t hangText='Evidence:'>
  A trustworthy set of claims about an computing context’s characteristics.</t>
  <t hangText='Identity:'>
  A set of claims that is intended to be related to an entity. [merge with RFC4949 defintion above]</t>
  <t hangText='Integrity Measurements:'>
  Metrics of computing context characteristics (i.e. composition, configuration and state) that affect the confidence in the trustworthiness of a computing context. Digests of integrity measurements can be stored in shielded locations (e.g. a PCR of a TPM).</t>
  <t hangText='Reference Integrity Measurements:'>
  Signed measurements about a computing context’s characteristics that are provided by a vendor or manufacturer and are intended to be used as declarative guidannce <xref target="I-D.ietf-sacm-terminology"/> (e.g. a signed CoSWID).</t>
  <t hangText='Trustworthiness:'>
  The qualities of computing context characteristics that guarantee a specific behavior specified by declarative guidance. Trustworthiness is not an absolute property but defined with respect to a computing context, corresponding declarative guidance, and has a scope of confidence. A trusted system is trustworthy. [refactor defintion with RFC4949 terms]</t>
  <t>Trustworthy Computing Context: a computing context that guarantees trustworthy behavior and/or composition (with respect to certain declarative guidance and a scope of confideence). A trustworthy computing context is a trusted system.</t>
  <t>Trustworthy Statement: evidence that trustworthy conveyed by a computing context that is not necessarily trustworthy. [update with tamper related terms]</t>
</list></t>

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

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

<t><list style="symbols">
  <t>first item</t>
  <t>second item</t>
</list></t>

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

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

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

<t>Maybe.</t>

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

<t>No changes yet.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC2119' target='http://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor='RFC4949' target='http://www.rfc-editor.org/info/rfc4949'>
<front>
<title>Internet Security Glossary, Version 2</title>
<author initials='R.' surname='Shirey' fullname='R. Shirey'><organization /></author>
<date year='2007' month='August' />
<abstract><t>This Glossary provides definitions, abbreviations, and explanations of terminology for information system security. The 334 pages of entries offer recommendations to improve the comprehensibility of written material that is generated in the Internet Standards Process (RFC 2026). The recommendations follow the principles that such writing should (a) use the same term or definition whenever the same concept is mentioned; (b) use terms in their plainest, dictionary sense; (c) use terms that are already well-established in open publications; and (d) avoid terms that either favor a particular vendor or favor a particular technology or mechanism over other, competing techniques that already exist or could be developed.  This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='FYI' value='36'/>
<seriesInfo name='RFC' value='4949'/>
<seriesInfo name='DOI' value='10.17487/RFC4949'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='I-D.ietf-sacm-terminology'>
<front>
<title>Security Automation and Continuous Monitoring (SACM) Terminology</title>

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

<author initials='J' surname='Lu' fullname='Jarrett Lu'>
    <organization />
</author>

<author initials='J' surname='Strassner' fullname='John Strassner'>
    <organization />
</author>

<author initials='N' surname='Cam-Winget' fullname='Nancy Cam-Winget'>
    <organization />
</author>

<date month='March' day='13' year='2017' />

<abstract><t>This memo documents terminology used in the documents produced by SACM (Security Automation and Continuous Monitoring).</t></abstract>

</front>

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



<reference  anchor='RFC7519' target='http://www.rfc-editor.org/info/rfc7519'>
<front>
<title>JSON Web Token (JWT)</title>
<author initials='M.' surname='Jones' fullname='M. Jones'><organization /></author>
<author initials='J.' surname='Bradley' fullname='J. Bradley'><organization /></author>
<author initials='N.' surname='Sakimura' fullname='N. Sakimura'><organization /></author>
<date year='2015' month='May' />
<abstract><t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties.  The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t></abstract>
</front>
<seriesInfo name='RFC' value='7519'/>
<seriesInfo name='DOI' value='10.17487/RFC7519'/>
</reference>




    </references>



  </back>
</rfc>

