<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "../rfc2629.dtd"[
  <!ENTITY xml-names SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml4/reference.W3C.REC-xml-names-20091208.xml">
  <!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
  <!ENTITY RFC5070 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5070.xml">
    <!ENTITY RFC4949 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4949.xml">
  <!ENTITY I-D.ietf-mile-rolie SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-mile-rolie-04.xml">
]>
<?xml-stylesheet type="text/css" href="../rfc7749.css"?>
<rfc ipr="trust200902" category="info"
    docName="draft-banghart-sacm-rolie-softwaredescriptor-01">
    <?rfc compact="yes"?>
    <?rfc subcompact="no"?>
    <?rfc toc="yes"?>
    <?rfc symrefs="yes"?>
    <front>
        <title abbrev="ROLIE">Definition of the ROLIE Software Descriptor
            Extension</title>
        <author fullname="David Waltermire" initials="D.W."
            surname="Waltermire">
            <organization>National Institute of Standards and
                Technology</organization>
            <address>
        <postal>
          <street>100 Bureau Drive</street>
          <city>Gaithersburg</city>
          <region>Maryland</region>
          <code>20877</code>
          <country>USA</country>
        </postal>
        <email>david.waltermire@nist.gov</email>
      </address>
        </author>
        <author fullname="Stephen Banghart" initials="S.B."
            surname="Banghart">
            <organization>National Institute of Standards and
                Technology</organization>
            <address>
        <postal>
          <street>100 Bureau Drive</street>
          <city>Gaithersburg</city>
          <region>Maryland</region>
          <code>20877</code>
          <country>USA</country>
        </postal>
        <email>stephen.banghart@nist.gov</email>
      </address>
        </author>
        <date month="May" day="3" year="2017"/>
        <area>Security</area>
        <workgroup>SACM Working Group</workgroup>
        <abstract>
            <t>This document extends the Resource-Oriented Lightweight
                Information Exchange (ROLIE) core to add the information
                type category and related requirements needed to support
                Software Record and Software Inventory use cases. The
                'software-descriptor' information type is defined as a
                ROLIE extension. Additional supporting requirements are
                also defined that describe the use of specific formats
                and link relations pertaining to the new information
                type.</t>
        </abstract>
    </front>
    <middle>
        <section title="Introduction" anchor="starting-intro">
            <t>This document defines an extension to the
                Resource-Oriented Lightweight Information Exchange
                (ROLIE) protocol to support the publication of software
                descriptor information. Software descriptor information
                is information that characterizes:<list>
                <t>an installable software package, or</t>
                <t>information about static software components that may
                    be installed by a software package or patch.</t>
                </list></t>
            <t>Software descriptor information includes identifying,
                versioning, software creation and publication, and file
                artifact information. Software descriptor information
                provides data about what might be installed, but doesn't
                describe where or how a specific software installation is
                installed, configured, or executed.</t>
            <t>Some possible use cases for Software descriptor
                information include:<list>
                <t>Software providers can publish software descriptor
                    information so that software researchers and users of
                    software can understand the collection of software
                    produced by a that software provider.</t>
                <t>Organizations can aggregate and syndicate collections
                    of software descriptor information provided by
                    multiple software providers to support
                    software-related analysis processes (e.g.,
                    vulnerability analysis) and value added information
                    (e.g., software configuration checklist repositories)
                    using identification and characterization information
                    derived from software descriptor information.</t>
                <t>End user organizations can consume sources of software
                    descriptor information, and other related software
                    vulnerability and configuration information to
                    provide the data needed to automate software asset,
                    patch, and configuration management practices.</t>
                <t>Organizations can use software descriptors to support
                    verification of other entities, thru mechanisms such
                    as RIM or other integrity measurements. </t>
                </list></t>
            <t>This document supports these use cases by describing the
                content requirements for Collections of software
                descriptor information that are to be published to or
                retrieved from a ROLIE repository. This document also
                discusses requirements around the use of link
                relationships and describing the data model formats used
                in a ROLIE Entry describing a software descriptor
                information resource.</t>
        </section>
        <section title="Terminology" anchor="ext-terminology">
            <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"/>. </t>
            <t>Definitions for some of the common computer
                security-related terminology used in this document can be
                found in Section 2 of <xref target="RFC5070"/>.</t>
        </section>
        <section title="New information-types" anchor="infotypes">
            <t>This document defines the following information type:</t>
            <section
                title="The &quot;software-descriptor&quot; information type"
                anchor="infotype-software-descriptor">
                <t>The &quot;software-descriptor&quot; information type
                    represents any information that describes a piece of
                    software. This document uses the definition of
                    software provided by <xref target="RFC4949"/>. Note
                    that as per this definition, this information type
                    pertains to static software, that is, code on the
                    disc. The software-descriptor information type is
                    intended to provide a category for information that
                    does one or more of the following:<list
                    style="hanging">
                    <t hangText="identifies and characterizes software">
                        This software identification and characterization
                        information can be provided by a large variety of
                        data, but always describes software in a
                        pre-installed state.</t>
                    <t hangText="provides software installer metadata"
                        >This represents information about software used
                        to install other software. This metadata
                        identifies, and characterizes a software
                        installation package or media.</t>
                    <t
                        hangText="describes stateless installation metadata"
                        > Information that describes the software
                        post-deployment, such as files that may be
                        deployed during an installation. It is expected
                        that this metadata is produced generally for a
                        given installation, and may not exactly match the
                        actual installed files on a given endpoint.</t>
                    </list></t>
                <t> Provided below is a non-exhaustive list of
                    information that may be considered to be of a
                    software-descriptor information type. <list
                    style="symbols">
                    <t>Naming information: IDs and names that aid in the
                        identification of a piece of software </t>
                    <t>Version and patching information: Version numbers,
                        patch identifiers, or other information that </t>
                    <t>Vendor and source information: Includes where the
                        software was developed or distributed from, as
                        well as where the software installation media may
                        be located.</t>
                    <t>Payload and file information: information that
                        describes or enumerates the files and folders
                        that make up the piece of software, and
                        information about those files.</t>
                    <t>Descriptive information and data: Any information
                        that otherwise characterizes a piece of software,
                        such as libraries, runtime environments, target
                        OSes, intended purpose or audience, etc.</t>
                    </list> </t>
                <t>Note again that this list is not exhaustive, any
                    information that in is the abstract realm of an
                    incident should be classified under this
                    information-type.</t>
                <t>This information type does not include descriptions of
                    running software, or state and configuration
                    information that is associated with a software
                    installation.</t>
            </section>
        </section>
        <section
            title="Usage of CSIRT Information Types in the Atom
        Publishing Protocol"
            anchor="ext-APP">
            <t>This document does not specify any additional requirements
                for use of the Atom Publishing Protocol.</t>
        </section>
        <section
            title="Usage of the software-descriptor Information Type in the atom:feed element"
            anchor="ext-synd">
            <t>This document does not specify any additional requirements
                for use of the atom:feed element.</t>
        </section>
        <section
            title="Usage of the software-descriptor Information Type in an atom:entry"
            anchor="ext-synd-entries">
            <t>This document specifies the following requirements for use
                of the software-descriptor information type with regards
                to Atom Entries.</t>
            <section title="Use of the atom:link element"
                anchor="ext-synd-entries-link">
                <t>This section defines the requirements around the use
                    of atom:links in Entries. Each relationship should be
                    named,described, and given a requirement level.</t>
                <texttable anchor="links-software-descriptor-table"
                    title="Link Relations for Resource-Oriented Lightweight Indicator Exchange">
                    <ttcol align="left">Name</ttcol>
                    <ttcol align="left">Description</ttcol>
                    <ttcol align="left">Conformance</ttcol>
                    <c>ancestor</c>
                    <c>Links to a software descriptor resource that
                        defines an ancestor of the software being
                        described by this Entry.</c>
                    <c>MAY</c>
                    <c>patches</c>
                    <c>Links to a software descriptor resource that
                        defines the software being patched by this
                        software</c>
                    <c>MAY</c>
                    <c>requires</c>
                    <c>Links to a software descriptor resource that
                        defines a piece of software required for this
                        software to function properly. </c>
                    <c>MAY</c>
                    <c>installs</c>
                    <c>Links to a software descriptor resource that
                        defines the software being installed by this
                        software.</c>
                    <c>MAY</c>
                    <c>installationrecord</c>
                    <c>Provides a link to a resource that describes an
                        installation of this software.</c>
                    <c>MAY</c>
                </texttable>
            </section>
            <section title="Use of the rolie:format element"
                anchor="ext-synd-format">
                <t>This document does not contain any additional
                    requirements for the rolie:format element, the
                    formats that follow are provided as examples of
                    formats that describe the software descriptor
                    information type.</t>
                <section title="The ISO SWID 2016 format"
                    anchor="ext-synd-format-iso2016">
                    <t>The ISO SWID Tag 2016 format is a software
                        descriptor and software record data format. It
                        provides several tags: primary, which provides
                        descriptive and naming information about
                        software, patch, which describes non-standalone
                        software meant to patch existing software, and
                        corpus, which describes the software installation
                        media that installs a given piece of
                        software.</t>
                    <t>For a more complete overview as well as normative
                        requirements, refer to TODO(ref?):ISO/IEC
                        19770-2</t>
                </section>
                <section anchor="the-concise-swid-format"
                    title="The Concise SWID format">

                    <t>The Consise SWID format is an alternative
                        representation of the ISO SWID Tag 2016 format
                        using a CBOR encoding defined by a CDDL
                        specification. It provides the same features and
                        attributes as are specified in ISO 19770-2, plus:
                        <list style="symbols">
                        <t>a straight forward method to sign and encrypt
                            SWID Tags using COSE, and</t>
                        <t>additional attributes that provide an improved
                            structure to include file hashes intended to
                            be used as Reference Integrity Measurements
                            (RIM).</t>
                        </list></t>
                </section>
            </section>
            <section title="Use of the rolie:property element">
                <t>This document registers new valid rolie:property names
                    as follows:</t>
                <section title="urn:ietf:params:rolie:property:swd:id"
                    anchor="prop-swd-id">
                    <t>This property provides an exposure point for an
                        identification field from the associated software
                        descriptor. The value of this property SHOULD be
                        uniquely identifying information generated from
                        the software descriptor linked to by the entry's
                        atom:content element. swd:id property values
                        SHOULD have a one-to-one mapping to individual
                        pieces of SWD content.</t>
                </section>
                <section
                    title="urn:ietf:params:rolie:property:swd:swname"
                    anchor="prop-swd-swname">
                    <t>This property provides an exposure point for the
                        plain text name of the software being described.
                        Due to the great variance in naming schemes, this
                        property should be considered informative.</t>
                </section>
            </section>
            <section title="IANA Considerations">
                <section title="incident information-type"
                    anchor="iana-software-descriptor">
                    <t>IANA has added an entry to the "ROLIE Security
                        Resource Information Type Sub-Registry" registry
                        located at <eref
                        target="https://www.iana.org/assignments/rolie/category/information-type"
                        /> . </t>
                    <t>The entry is as follows:<list>
                        <t>name: software-descriptor</t>
                        <t>index: TBD</t>
                        <t>reference: This document, <xref
                            target="infotype-software-descriptor"/></t>
                        </list></t>
                </section>
                <section title="swd:id property">
                    <t>IANA has added an entry to the "ROLIE URN
                        Parameters" registry located in <eref
                        target="https://www.iana.org/assignments/rolie/"
                        />.</t>
                    <t>The entry is as follows:<list>
                        <t>name: property:swd:id</t>
                        <t>Extension IRI:
                            urn:ietf:params:rolie:property:swd:id</t>
                        <t>Reference: This document, <xref
                            target="prop-swd-id"/></t>
                        <t>Subregistry: None</t>
                        </list></t>
                </section>
                <section title="swd:swname property">
                    <t>IANA has added an entry to the "ROLIE URN
                        Parameters" registry located in <eref
                        target="https://www.iana.org/assignments/rolie/"
                        />.</t>
                    <t>The entry is as follows:<list>
                        <t>name: property:swd:swname</t>
                        <t>Extension IRI:
                            urn:ietf:params:rolie:property:swd:swname</t>
                        <t>Reference: This document, <xref
                            target="prop-swd-swname"/></t>
                        <t>Subregistry: None</t>
                        </list></t>
                </section>
            </section>
            <section title="Security Considerations">
                <t>Use of this extension implies dealing with the
                    security implications of both ROLIE and of software
                    descriptors in general. As with any SWD information,
                    care should be taken to verify the trustworthiness
                    and veracity of the descriptor information to the
                    fullest extent possible. </t>
                <t>Ideally, software descriptors should have been signed
                    by the software manufacturer, or signed by whichever
                    agent processed the source code. SWD documents from
                    these sources are more likely to be accurate than
                    those generated by scraping installed software. </t>
                <t>These "authoritative" sources of SWD content should
                    consider additional security for their ROLIE
                    repository beyond the typical recommendations, as the
                    central importance of the repository is likely to
                    make it a target.</t>
                <t>Version information is often represented differently
                    across manufacturers and even across product
                    releases. If using SWD version information for low
                    fault tolerance comparisons and searches, care should
                    be taken that the correct version scheme is being
                    utilized.</t>
            </section>
        </section>
    </middle>
    <back>
        <references title="Normative References"> &RFC2119; &RFC5070;
            &RFC4949; </references>
        <section title="Schema" anchor="appendix-schema">
            <t>This document does not require any schema extensions.</t>
        </section>
        <section title="Examples of Use">
            <t>Use of this extension in a ROLIE repository will not
                typically change that repo's operation. As such, the
                general examples provided by the ROLIE core document
                would serve as examples. Provided below is a sample SWD
                ROLIE entry: </t>
            <figure height="" suppress-title="false" width="" alt=""
                title="" align="left">
                <artwork height="" name="" width="" type="" alt="" align="left" xml:space="preserve"><![CDATA[
  <?xml version="1.0" encoding="UTF-8"?>
  <entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:rolie="urn:ietf:params:xml:ns:rolie-1.0">
    <id>dd786dba-88e6-440b-9158-b8fae67ef67c</id>
    <title>Sample Software Descriptor</title>
    <published>2015-08-04T18:13:51.0Z</published>
    <updated>2015-08-05T18:13:51.0Z</updated>
    <summary>A descriptor for a piece of software published by this
    organization. </summary>
    <link rel="self" href="http://www.example.org/provider/SWD/123456"/>
    <category
        scheme="urn:ietf:params:rolie:category:information-type"
        term="software-descriptor"/>
    <rolie:format ns="urn:example:COSWID"/>
    <content type="application/xml" 
      src="http://www.example.org/provider/SWD/123456/data"/>
  </entry>]]></artwork>
            </figure>
        </section>
    </back>
</rfc>
