<?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 RFC8322 SYSTEM
  "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8322.xml">
]>
<?xml-stylesheet type="text/css" href="../rfc7749.css"?>
<rfc ipr="trust200902" category="info"
    docName="draft-ietf-sacm-rolie-softwaredescriptor-01">
    <?rfc compact="yes"?>
    <?rfc subcompact="no"?>
    <?rfc toc="yes"?>
    <?rfc symrefs="yes"?>
    <front>
        <title abbrev="ROLIE SWD EXT">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 year="2018"/>
        <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) <xref target="RFC8322"/> 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 style="symbols">
                <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="Additional Requirements for 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="Additonal Requirements for the Atom Syndication Format"
            anchor="ext-synd">
            <t>This document does not specify any additional requirements
                on the Atom Syndication Format.</t>
        </section>
        <section title="Information-type Extensions" anchor="infotype">
            <t>This document defines the following information
                type[s]:</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 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 :ISO/IEC
                        19770-2 <xref target="SWID"/></t>
                </section>
                <section anchor="the-concise-swid-format"
                    title="The Concise SWID format">

                    <t>The Concise SWID (COSWID) 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>
        <section title="rolie:property Extensions">
            <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="atom:link Extensions"
            anchor="ext-synd-entries-link">
            <t>This section defines the requirements around the
                implementation of link relationships in the atom:link
                element in Entries. Each relationship is 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="Other Registered Extensions" anchor="ext-other">
            <t>There are no additional extensions to define.</t>
        </section>
        <section title="IANA Considerations">
            <section title="software-descriptor 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 title="Privacy Considerations">
            <t>This extension does not introduce any privacy
                considerations above or beyond that of the core ROLIE
                document. Any implementations using this extension should
                understand the privacy considerations of ROLIE and the
                Atom Publishing Protocol.</t>
        </section>
    </middle>
    <back>
        <references title="Normative References"> &RFC2119; &RFC5070;
            &RFC4949; &RFC8322;</references>
        <references title="Informative References">
            <reference anchor="SWID">
                <front>
                    <title>ISO/IEC 19770-2:2015</title>
                    <author>
                        <organization>ISO</organization>
                    </author>
                    <date/>
                </front>
            </reference>
        </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 repository'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>
