draft-ietf-sacm-coswid-10.txt   draft-ietf-sacm-coswid-11.txt 
SACM Working Group H. Birkholz SACM Working Group H. Birkholz
Internet-Draft Fraunhofer SIT Internet-Draft Fraunhofer SIT
Intended status: Standards Track J. Fitzgerald-McKay Intended status: Standards Track J. Fitzgerald-McKay
Expires: December 26, 2019 Department of Defense Expires: December 29, 2019 Department of Defense
C. Schmidt C. Schmidt
The MITRE Corporation The MITRE Corporation
D. Waltermire D. Waltermire
NIST NIST
June 24, 2019 June 27, 2019
Concise Software Identification Tags Concise Software Identification Tags
draft-ietf-sacm-coswid-10 draft-ietf-sacm-coswid-11
Abstract Abstract
This document defines a concise representation of ISO/IEC ISO/IEC 19770-2:2015 Software Identification (SWID) tags provide an
19770-2:2015 Software Identification (SWID) tags that are extensible XML-based structure to identify and describe individual
interoperable with the XML schema definition of ISO/IEC 19770-2:2015. software components, patches, and installation bundles. SWID tag
Next to the inherent capability of SWID tags to express arbitrary representations can be too large for devices with network and storage
context information, Concise SWID (CoSWID) tags support the constraints. This document defines a concise representation of SWID
definition of additional semantics via well-defined data definitions tags: Concise SWID (CoSWID) tags. CoSWID supports the same features
incorporated by extension points. as SWID tags, as well as additional semantics that allow CoSWIDs to
describe additional types of information, all in a more memory
efficient format.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 26, 2019. This Internet-Draft will expire on December 29, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 20 skipping to change at page 2, line 23
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. The SWID and CoSWID Tag Lifecycle . . . . . . . . . . . . 4 1.1. The SWID and CoSWID Tag Lifecycle . . . . . . . . . . . . 4
1.2. Concise SWID Format . . . . . . . . . . . . . . . . . . . 6 1.2. Concise SWID Format . . . . . . . . . . . . . . . . . . . 6
1.3. Requirements Notation . . . . . . . . . . . . . . . . . . 7 1.3. Requirements Notation . . . . . . . . . . . . . . . . . . 7
2. Concise SWID Data Definition . . . . . . . . . . . . . . . . 7 2. Concise SWID Data Definition . . . . . . . . . . . . . . . . 7
2.1. Concise SWID Extensions . . . . . . . . . . . . . . . . . 8 2.1. Concise SWID Extensions . . . . . . . . . . . . . . . . . 8
2.2. The concise-swid-tag Group . . . . . . . . . . . . . . . 9 2.2. The concise-swid-tag Group . . . . . . . . . . . . . . . 10
2.3. concise-swid-tag Co-constraints . . . . . . . . . . . . . 13 2.3. concise-swid-tag Co-constraints . . . . . . . . . . . . . 14
2.4. The global-attributes Group . . . . . . . . . . . . . . . 14 2.4. The global-attributes Group . . . . . . . . . . . . . . . 15
2.5. The entity-entry Group . . . . . . . . . . . . . . . . . 15 2.5. The entity-entry Group . . . . . . . . . . . . . . . . . 16
2.6. The link-entry Map . . . . . . . . . . . . . . . . . . . 17 2.6. The link-entry Map . . . . . . . . . . . . . . . . . . . 18
2.7. The software-meta-entry Map . . . . . . . . . . . . . . . 21 2.7. The software-meta-entry Map . . . . . . . . . . . . . . . 22
2.8. The Resource Collection Definition . . . . . . . . . . . 24 2.8. The Resource Collection Definition . . . . . . . . . . . 25
2.8.1. The hash-entry Array . . . . . . . . . . . . . . . . 24 2.8.1. The hash-entry Array . . . . . . . . . . . . . . . . 25
2.8.2. The resource-collection Group . . . . . . . . . . . . 24 2.8.2. The resource-collection Group . . . . . . . . . . . . 25
2.8.3. The payload-entry Group . . . . . . . . . . . . . . . 27 2.8.3. The payload-entry Group . . . . . . . . . . . . . . . 29
2.8.4. The evidence-entry Group . . . . . . . . . . . . . . 28 2.8.4. The evidence-entry Group . . . . . . . . . . . . . . 29
2.9. Full CDDL Definition . . . . . . . . . . . . . . . . . . 28 2.9. Full CDDL Definition . . . . . . . . . . . . . . . . . . 30
3. Determining the Type of CoSWID . . . . . . . . . . . . . . . 34 3. Determining the Type of CoSWID . . . . . . . . . . . . . . . 35
4. CoSWID Indexed Label Values . . . . . . . . . . . . . . . . . 34 4. CoSWID Indexed Label Values . . . . . . . . . . . . . . . . . 36
4.1. Version Scheme . . . . . . . . . . . . . . . . . . . . . 34 4.1. Version Scheme . . . . . . . . . . . . . . . . . . . . . 36
4.2. Entity Role Values . . . . . . . . . . . . . . . . . . . 35 4.2. Entity Role Values . . . . . . . . . . . . . . . . . . . 37
4.3. Link Ownership Values . . . . . . . . . . . . . . . . . . 36 4.3. Link Ownership Values . . . . . . . . . . . . . . . . . . 38
4.4. Link Rel Values . . . . . . . . . . . . . . . . . . . . . 37 4.4. Link Rel Values . . . . . . . . . . . . . . . . . . . . . 39
4.5. Link Use Values . . . . . . . . . . . . . . . . . . . . . 39 4.5. Link Use Values . . . . . . . . . . . . . . . . . . . . . 41
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42
5.1. CoSWID Items Registry . . . . . . . . . . . . . . . . . . 39 5.1. CoSWID Items Registry . . . . . . . . . . . . . . . . . . 42
5.2. SWID/CoSWID Value Registries . . . . . . . . . . . . . . 42 5.2. SWID/CoSWID Value Registries . . . . . . . . . . . . . . 45
5.2.1. SWID/CoSWID Version Scheme Value Registry . . . . . . 43 5.2.1. SWID/CoSWID Version Scheme Value Registry . . . . . . 45
5.2.2. SWID/CoSWID Entity Role Value Registry . . . . . . . 44 5.2.2. SWID/CoSWID Entity Role Value Registry . . . . . . . 46
5.2.3. SWID/CoSWID Link Ownership Value Registry . . . . . . 45 5.2.3. SWID/CoSWID Link Ownership Value Registry . . . . . . 48
5.2.4. SWID/CoSWID Link Relationship Value Registry . . . . 46 5.2.4. SWID/CoSWID Link Relationship Value Registry . . . . 49
5.2.5. SWID/CoSWID Link Use Value Registry . . . . . . . . . 47 5.2.5. SWID/CoSWID Link Use Value Registry . . . . . . . . . 52
5.3. swid+cbor Media Type Registration . . . . . . . . . . . . 48 5.3. swid+cbor Media Type Registration . . . . . . . . . . . . 53
5.4. CoAP Content-Format Registration . . . . . . . . . . . . 49 5.4. CoAP Content-Format Registration . . . . . . . . . . . . 54
5.5. CBOR Tag Registration . . . . . . . . . . . . . . . . . . 50 5.5. CBOR Tag Registration . . . . . . . . . . . . . . . . . . 54
6. Security Considerations . . . . . . . . . . . . . . . . . . . 50
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 52 6. Security Considerations . . . . . . . . . . . . . . . . . . . 55
8. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 52 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 56
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 55 8. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . 56
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 60
10.1. Normative References . . . . . . . . . . . . . . . . . . 56 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 60
10.2. Informative References . . . . . . . . . . . . . . . . . 57 10.1. Normative References . . . . . . . . . . . . . . . . . . 60
Appendix A. Signed Concise SWID Tags using COSE . . . . . . . . 58 10.2. Informative References . . . . . . . . . . . . . . . . . 62
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59 Appendix A. Signed Concise SWID Tags using COSE . . . . . . . . 63
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 64
1. Introduction 1. Introduction
SWID tags have several use-applications including but not limited to: SWID tags, as defined in ISO-19770-2:2015 [SWID], provide a
standardized XML-based record format that identifies and describes a
specific release of software, a patch, or an installation bundle,
which are referred to as software components in this document.
Different software components, and even different releases of a
particular software component, each have a different SWID tag record
associated with them. SWID tags are meant to be flexible and able to
express a broad set of metadata about a software component.
SWID tags are used to support a number of processes including but not
limited to:
o Software Inventory Management, a part of a Software Asset o Software Inventory Management, a part of a Software Asset
Management [SAM] process, which requires an accurate list of Management [SAM] process, which requires an accurate list of
discernible deployed software components. discernible deployed software components.
o Vulnerability Assessment, which requires a semantic link between o Vulnerability Assessment, which requires a semantic link between
standardized vulnerability descriptions and software components standardized vulnerability descriptions and software components
installed on IT-assets [X.1520]. installed on IT-assets [X.1520].
o Remote Attestation, which requires a link between reference o Remote Attestation, which requires a link between reference
integrity measurements (RIM) and security logs of measured integrity measurements (RIM) and security logs of measured
software components [I-D.birkholz-rats-tuda]. software components [I-D.birkholz-rats-tuda].
SWID tags, as defined in ISO-19770-2:2015 [SWID], provide a
standardized XML-based record format that identifies and describes a
specific release of a software component. Different software
components, and even different releases of a particular software
component, each have a different SWID tag record associated with
them. SWID tags are meant to be flexible and able to express a broad
set of metadata about a software component.
While there are very few required fields in SWID tags, there are many While there are very few required fields in SWID tags, there are many
optional fields that support different use scenarios. A SWID tag optional fields that support different uses. A SWID tag consisting
consisting of only required fields might be a few hundred bytes in of only required fields might be a few hundred bytes in size;
size; however, a tag containing many of the optional fields can be however, a tag containing many of the optional fields can be many
many orders of magnitude larger. Thus, real-world instances of SWID orders of magnitude larger. Thus, real-world instances of SWID tags
tags can be fairly large, and the communication of SWID tags in use- can be fairly large, and the communication of SWID tags in usage
applications, such as those described earlier, can cause a large scenarios, such as those described earlier, can cause a large amount
amount of data to be transported. This can be larger than acceptable of data to be transported. This can be larger than acceptable for
for constrained devices and networks. Concise SWID (CoSWID) tags constrained devices and networks. Concise SWID (CoSWID) tags
significantly reduce the amount of data transported as compared to a significantly reduce the amount of data transported as compared to a
typical SWID tag. This reduction is enabled through the use of CBOR, typical SWID tag. This reduction is enabled through the use of CBOR,
which maps the human-readable labels of SWID data items to more which maps the human-readable labels of SWID data items to more
concise integer labels (indices). The use of CBOR to express SWID concise integer labels (indices). The use of CBOR to express SWID
information in CoSWID tags allows both CoSWID and SWID tags to be information in CoSWID tags allows both CoSWID and SWID tags to be
part of an enterprise security solution for a wider range of part of an enterprise security solution for a wider range of
endpoints and environments. endpoints and environments.
1.1. The SWID and CoSWID Tag Lifecycle 1.1. The SWID and CoSWID Tag Lifecycle
skipping to change at page 4, line 19 skipping to change at page 4, line 23
Specifically, when a software component is installed on an endpoint, Specifically, when a software component is installed on an endpoint,
that software component's SWID tag is also installed. Likewise, when that software component's SWID tag is also installed. Likewise, when
the software component is uninstalled or replaced, the SWID tag is the software component is uninstalled or replaced, the SWID tag is
deleted or replaced, as appropriate. As a result, ISO/IEC deleted or replaced, as appropriate. As a result, ISO/IEC
19770-2:2015 describes a system wherein there is a correspondence 19770-2:2015 describes a system wherein there is a correspondence
between the set of installed software components on an endpoint, and between the set of installed software components on an endpoint, and
the presence of the corresponding SWID tags for these components on the presence of the corresponding SWID tags for these components on
that endpoint. CoSWIDs share the same lifecycle requirements as a that endpoint. CoSWIDs share the same lifecycle requirements as a
SWID tag. SWID tag.
The SWID specification and supporting guidance provided in NIST The SWID specification and supporting guidance provided in NIST
Internal Report (NISTIR) 8060: Guidelines for the Creation of Internal Report (NISTIR) 8060: Guidelines for the Creation of
Interoperable SWID Tags [SWID-GUIDANCE] defines four types of SWID Interoperable SWID Tags [SWID-GUIDANCE] defines four types of SWID
tags: primary, patch, corpus, and supplemental. tags: primary, patch, corpus, and supplemental. The following text
is paraphrased from these sources.
1. Primary Tag - A SWID or CoSWID tag that identifies and describes 1. Primary Tag - A SWID or CoSWID tag that identifies and describes
a software component is installed on a computing device. A an installed software component on an endpoint. A primary tag is
primary tag is intended to be installed on an endpoint along with intended to be installed on an endpoint along with the
the corresponding software component. corresponding software component.
2. Patch Tag - A SWID or CoSWID tag that identifies and describes an 2. Patch Tag - A SWID or CoSWID tag that identifies and describes an
installed patch which has made incremental changes to a software installed patch that has made incremental changes to a software
component installed on an endpoint. A patch tag is intended to component installed on an endpoint. A patch tag is intended to
be installed on an endpoint along with the corresponding software be installed on an endpoint along with the corresponding software
component patch. component patch.
3. Corpus Tag - A SWID or CoSWID tag that identifies and describes 3. Corpus Tag - A SWID or CoSWID tag that identifies and describes
an installable software component in its pre-installation state. an installable software component in its pre-installation state.
A corpus tag can be used to represent metadata about an A corpus tag can be used to represent metadata about an
installation package or installer for a software component, a installation package or installer for a software component, a
software update, or a patch. software update, or a patch.
4. Supplemental Tag - A SWID or CoSWID tag that allows additional 4. Supplemental Tag - A SWID or CoSWID tag that allows additional
information to be associated with a referenced SWID tag. This information to be associated with a referenced SWID tag. This
helps to ensure that SWID Primary and Patch Tags provided by a allows tools and users to record their own metadata about a
software provider are not modified by software management tools, software component without modifying SWID primary or patch tags
while allowing these tools to provide their own software created by a software provider.
metadata.
The type of a tag is determined by specific data elements, which is The type of a tag is determined by specific data elements, which are
discussed in Section 3. discussed in Section 3.
Corpus, primary, and patch tags have similar functions in that Corpus, primary, and patch tags have similar functions in that
they describe the existence and/or presence of different types of they describe the existence and/or presence of different types of
software (e.g., software installers, software installations, software components (e.g., software installers, software
software patches), and, potentially, different states of software installations, software patches), and, potentially, different
components. In contrast, supplemental tags furnish additional states of these software components. Supplemental tags have the
information not contained in corpus, primary, or patch tags. All same structure as other tags, but are used to provide information
four tag types come into play at various points in the software not contained in the referenced corpus, primary, and patch tags.
lifecycle, and support software management processes that depend All four tag types come into play at various points in the
on the ability to accurately determine where each software software lifecycle and support software management processes that
depend on the ability to accurately determine where each software
component is in its lifecycle. component is in its lifecycle.
+------------+ +------------+
v | v |
Installation Product Product Product Product Software Software Software Software Software
Media -> Installed -> Patched -> Upgraded -> Removed Deployment -> Installation -> Patching -> Upgrading -> Removal
Deployed
Corpus Primary Primary xPrimary xPrimary Corpus Primary Primary xPrimary xPrimary
Supplemental Supplemental xSupplemental xSuplemental Supplemental Supplemental Supplemental xSupplemental xSuplemental
Patch xPatch Patch xPatch
Primary Primary
Supplemental Supplemental
Figure 1: Use of Tag Types in the Software Lifecycle Figure 1: Use of Tag Types in the Software Lifecycle
Figure 1 illustrates the steps in the software lifecycle and the Figure 1 illustrates the steps in the software lifecycle and the
relationships among those lifecycle events supported by the four relationships among those lifecycle events supported by the four
types of SWID and CoSWID tags, as follows: types of SWID and CoSWID tags, as follows:
skipping to change at page 5, line 47 skipping to change at page 6, line 6
* Software Installation. A primary tag will be installed with * Software Installation. A primary tag will be installed with
the software component (or subsequently created) to uniquely the software component (or subsequently created) to uniquely
identify and describe the software component. Supplemental identify and describe the software component. Supplemental
tags are created to augment primary tags with additional site- tags are created to augment primary tags with additional site-
specific or extended information. While not illustrated in the specific or extended information. While not illustrated in the
figure, patch tags can also be installed during software figure, patch tags can also be installed during software
installation to provide information about software fixes installation to provide information about software fixes
deployed along with the base software installation. deployed along with the base software installation.
* Software Patching. When a new patch is applied to the software * Software Patching. When a new patch is applied to the software
component, a new patch tag is provided, supplying details about component a new patch tag is provided, supplying details about
the patch and its dependencies. While not illustrated in the the patch and its dependencies. While not illustrated in the
figure, a corpus tag can also provide information about the figure, a corpus tag can also provide information about the
patch installer, and patching dependencies that need to be patch installer and patching dependencies that need to be
installed before the patch. installed before the patch.
* Software Upgrading. As a software component is upgraded to a * Software Upgrading. As a software component is upgraded to a
new version, new primary and supplemental tags replace existing new version, new primary and supplemental tags replace existing
tags, enabling timely and accurate tracking of updates to tags, enabling timely and accurate tracking of updates to
software inventory. While not illustrated in the figure, a software inventory. While not illustrated in the figure, a
corpus tag can also provide information about the upgrade corpus tag can also provide information about the upgrade
installer, and dependencies that need to be installed before installer and dependencies that need to be installed before the
the upgrade. upgrade.
* Software Removal. Upon removal of the software component, * Software Removal. Upon removal of the software component,
relevant SWID tags are removed. This removal event can trigger relevant SWID tags are removed. This removal event can trigger
timely updates to software inventory reflecting the removal of timely updates to software inventory reflecting the removal of
the product and any associated patch or supplemental tags. the product and any associated patch or supplemental tags.
Note: While not fully illustrated in the figure, supplemental tags As illustrated in the figure, supplemental tags can be associated
can be associated with any corpus, primary, or patch tag to provide with any corpus, primary, or patch tag to provide additional metadata
additional metadata about an installer, installed software, or about an installer, installed software, or installed patch
installed patch respectively. respectively.
Understanding the use of CoSWIDs in the software lifecycle provides a Understanding the use of CoSWIDs in the software lifecycle provides a
basis for understanding the information provided in a CoSWID and the basis for understanding the information provided in a CoSWID and the
associated semantics of this information. Each of the different SWID associated semantics of this information. Each of the different SWID
and CoSWID tag types provide different sets of information. For and CoSWID tag types provide different sets of information. For
example, a "corpus tag" is used to describe a software component's example, a "corpus tag" is used to describe a software component's
installation image on an installation media, while a "patch tag" is installation image on an installation media, while a "patch tag" is
meant to describe a patch that modifies some other software meant to describe a patch that modifies some other software
component. component.
1.2. Concise SWID Format 1.2. Concise SWID Format
This document defines the CoSWID tag format, a more concise This document defines the CoSWID tag format, which is based on the
representation of SWID information in the Concise Binary Object Concise Binary Object Representation (CBOR) [RFC7049]. CBOR-based
Representation (CBOR) [RFC7049]. The structure of a CoSWID is CoSWID tags offer a more concise representation of SWID information
described via the Concise Data Definition Language (CDDL) [RFC8610]. as compared to the XML-based SWID tag representation in ISO-
The resulting CoSWID data definition is aligned to the information 19770-2:2015. The structure of a CoSWID is described via the Concise
able to be expressed with the XML schema definition of ISO- Data Definition Language (CDDL) [RFC8610]. The resulting CoSWID data
19770-2:2015 [SWID]. This alignment allows both SWID and CoSWID tags definition is aligned to the information able to be expressed with
to represent a common set of SWID information and to support all SWID the XML schema definition of ISO-19770-2:2015 [SWID]. This alignment
tag use cases. To achieve this end, the CDDL representation includes allows both SWID and CoSWID tags to represent a common set of
every SWID tag field and attribute. software component information and allows CoSWID tags to support the
same uses as a SWID tag. To achieve this end, the CDDL
representation includes every SWID tag field and attribute.
The vocabulary, i.e., the CDDL names of the types and members used in The vocabulary, i.e., the CDDL names of the types and members used in
the CoSWID data definition, are mapped to more concise labels the CoSWID data definition, are mapped to more concise labels
represented as small integer values. The names used in the CDDL data represented as small integer values. The names used in the CDDL data
definition and the mapping to the CBOR representation using integer definition and the mapping to the CBOR representation using integer
labels is based on the vocabulary of the XML attribute and element labels is based on the vocabulary of the XML attribute and element
names defined in ISO/IEC 19770-2:2015. names defined in ISO/IEC 19770-2:2015.
1.3. Requirements Notation 1.3. Requirements Notation
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. Concise SWID Data Definition 2. Concise SWID Data Definition
The following is a CDDL representation for a CoSWID tag. The The following describes the general rules and processes for encoding
CamelCase [CamelCase] notation used in the XML schema definition is data using CDDL representation. Prior familiarity with CBOR and CDDL
changed to a hyphen-separated notation [KebabCase] (e.g. concepts will be helpful in understanding this CoSWID data
ResourceCollection is named resource-collection) in the CoSWID data definition.
definition. In essence, [KebabCase] "looks-like-this". This
deviation from the original notation used in the XML representation
reduces ambiguity when referencing certain attributes in
corresponding textual descriptions. An attribute referred to by its
name in CamelCase notation explicitly relates to XML SWID tags; an
attribute referred to by its name in KebabCase notation explicitly
relates to CoSWID tags. This approach simplifies the composition of
further work that reference both XML SWID and CoSWID documents.
Human-readable labels of members in CDDL map data definitions are This section describes the rules by which SWID tag XML is represented
mapped to integer indices via a block of rules at the bottom of the in the CoSWID CDDL structure. The CamelCase [CamelCase] notation
definition. The 57 character strings of the SWID vocabulary are used in the XML schema definition is changed to a hyphen-separated
replacesm which would have to be stored or transported in full if notation [KebabCase] (e.g. ResourceCollection is named resource-
using the original vocabulary. collection) in the CoSWID data definition. This deviation from the
original notation used in the XML representation reduces ambiguity
when referencing certain attributes in corresponding textual
descriptions. An attribute referred to by its name in CamelCase
notation explicitly relates to XML SWID tags; an attribute referred
to by its name in KebabCase notation explicitly relates to CBOR
CoSWID tags. This approach simplifies the composition of further
work that reference both XML SWID and CBOR CoSWID documents.
Note that sometimes CoSWID CDDL attribute names show greater
variation than the described notation change relative to their
corresponding SWID XML Schema attributes. This is done when the
change improves clarity in the specification. For example the "name"
and "version" SWID fields corresponds to the "software-name" and
"software-version" CoSWID fields, respectively. As such, it is not
always possible to mechanically translate between corresponding
attribute names in the two formats.
The 57 human-readable text labels of the CDDL-based CoSWID vocabulary
are mapped to integer indices via a block of rules at the bottom of
the definition. This allows a more concise integer-based form to be
stored or transported, as compared to the less efficient text-based
form of the original vocabulary.
In CBOR, an array is encoded using bytes that identify the array, and In CBOR, an array is encoded using bytes that identify the array, and
the array's length or stop point (see [RFC7049]). To make items that the array's length or stop point (see [RFC7049]). To make items that
support 1 or more values, the following CDDL notion is used. support 1 or more values, the following CDDL notion is used.
_name_ = (_label_: _data_ / [ 2* _data_ ]) _name_ = (_label_: _data_ / [ 2* _data_ ])
The CDDL rule above allows for a more efficient CBOR encoding of the The CDDL rule above allows either a single data item or an array of 2
data when a single value is used. This is accomplished by avoiding or more data values to be provided. When a singleton data value is
the need to first encode the array. Conversely, hen two or more provided, the CBOR markers for the array, array length, and stop
values are encoded, the bytes identifing the array are used. This point are not needed saving bytes. When two or more data values are
modeling pattern is used frequently in the CoSWID CDDL data provided, these values are encoded as an array. This modeling
definition to allow for more effecient encoding of single values. pattern is used frequently in the CoSWID CDDL data definition to
allow for more efficient encoding of singleton values.
The following subsections describe the different parts of the CoSWID The following subsections describe the different parts of the CoSWID
model. model.
2.1. Concise SWID Extensions 2.1. Concise SWID Extensions
The corresponding CoSWID data definition includes two kinds of The CoSWID data definition contains two features that are not
augmentation. included in the SWID data definition on which it is based. These
features are:
o The explicit definition of types for attributes that are typically o The explicit definition of types for attributes that are typically
stored in the "any attribute" of an ISO-19770-2:2015 in XML stored in the "any attribute" of an ISO-19770-2:2015 in XML
representation. These are covered in Section 2.4. representation. These are covered in Section 2.4.
o The inclusion of extension points in the CoSWID data definition o The inclusion of extension points in the CoSWID data definition
using CDDL sockets (see [RFC8610] section 3.9). The use of CDDL using CDDL sockets (see [RFC8610] section 3.9). The use of CDDL
sockets allow for well-formed extensions to be defined in sockets allow for well-formed extensions to be defined in
supplementary CDDL descriptions that support additional uses of supplementary CDDL descriptions that support additional uses of
CoSWID tags that go beyond the original scope of ISO-19770-2:2015 CoSWID tags that go beyond the original scope of ISO-19770-2:2015
skipping to change at page 8, line 50 skipping to change at page 9, line 29
| | | | | | | |
| process-entry | $$process-extension | Section 2.8.2 | | process-entry | $$process-extension | Section 2.8.2 |
| | | | | | | |
| resource-entry | $$resource-extension | Section 2.8.2 | | resource-entry | $$resource-extension | Section 2.8.2 |
| | | | | | | |
| payload-entry | $$payload-extension | Section 2.8.3 | | payload-entry | $$payload-extension | Section 2.8.3 |
| | | | | | | |
| evidence-entry | $$evidence-extension | Section 2.8.4 | | evidence-entry | $$evidence-extension | Section 2.8.4 |
+---------------------+-----------------------+---------------+ +---------------------+-----------------------+---------------+
Table 1: CoSWID CDDL Group Extension Points
The CoSWID Items Registry defined in Section 5.1 provides a The CoSWID Items Registry defined in Section 5.1 provides a
registration mechanism allowing new items, and their associated index registration mechanism allowing new items, and their associated index
values, to be added to the CoSWID model through the use of the CDDL values, to be added to the CoSWID model through the use of the CDDL
sockets described above. This registration mechanism provides for sockets described in the table above. This registration mechanism
well-known index values for data items in CoSWID extensions, allowing provides for well-known index values for data items in CoSWID
these index values to be recognized by implementations supporting a extensions, allowing these index values to be recognized by
given extension. implementations supporting a given extension.
The following CDDL sockets defined in this document allow for adding The following additional CDDL sockets are defined in this document to
new values to corresponding type-choices (i.e. to represent allow for adding new values to corresponding type-choices (i.e. to
enumerations) via custom CDDL data definitions. represent enumerations) via custom CDDL data definitions.
+------------------+-----------------+-------------+ +------------------+-----------------+-------------+
| Enumeration Name | CDDL Socket | Defined in | | Enumeration Name | CDDL Socket | Defined in |
+------------------+-----------------+-------------+ +------------------+-----------------+-------------+
| version-scheme | $version-scheme | Section 4.1 | | version-scheme | $version-scheme | Section 4.1 |
| | | | | | | |
| role | $role | Section 4.2 | | role | $role | Section 4.2 |
| | | | | | | |
| ownership | $ownership | Section 4.3 | | ownership | $ownership | Section 4.3 |
| | | | | | | |
| rel | $rel | Section 4.4 | | rel | $rel | Section 4.4 |
| | | | | | | |
| use | $use | Section 4.5 | | use | $use | Section 4.5 |
+------------------+-----------------+-------------+ +------------------+-----------------+-------------+
Table 2: CoSWID CDDL Enumeration Extension Points
A number of SWID/CoSWID value registries are also defined in A number of SWID/CoSWID value registries are also defined in
Section 5.2 that allow new valid values to be registered with IANA Section 5.2 that allow new values to be registered with IANA for the
for the enumerations above. This registration mechanism supports the enumerations above. This registration mechanism supports the
definition of new well-known index values and names for new definition of new well-known index values and names for new
enumeration values used by SWID and CoSWID. This registration enumeration values used by both SWID and CoSWID. This registration
mechanism allows new standardized enumerated values to be shared mechanism allows new standardized enumerated values to be shared
between both specifications (and implementations) over time. between both specifications (and implementations) over time, and
references to the IANA registries will be added to the next revision
of [SWID].
2.2. The concise-swid-tag Group 2.2. The concise-swid-tag Group
The CDDL data definition for the root concise-swid-tag map is as The CDDL data definition for the root concise-swid-tag map is as
follows and this rule and its constraints MUST be followed when follows and this rule and its constraints MUST be followed when
creating or validating a CoSWID tag: creating or validating a CoSWID tag:
concise-swid-tag = { concise-swid-tag = {
global-attributes, global-attributes,
tag-id => text, tag-id => text,
skipping to change at page 11, line 10 skipping to change at page 12, line 10
decimal = 4 decimal = 4
semver = 16384 semver = 16384
The following describes each member of the concise-swid-tag root map. The following describes each member of the concise-swid-tag root map.
o global-attributes: A list of items including an optional language o global-attributes: A list of items including an optional language
definition to support the processing of text-string values and an definition to support the processing of text-string values and an
unbounded set of any-attribute items. Described in Section 2.4. unbounded set of any-attribute items. Described in Section 2.4.
o tag-id (index 0): A textual identifier uniquely referencing a o tag-id (index 0): A textual identifier uniquely referencing a
(composite) software component. The tag identifier MUST be software component. The tag identifier MUST be globally unique.
globally unique. There are no strict guidelines on how this There are no strict guidelines on how this identifier is
identifier is structured, but examples include a 16 byte GUID structured, but examples include a 16 byte GUID (e.g. class 4
(e.g. class 4 UUID) [RFC4122], or a text string appended to a DNS UUID) [RFC4122], or a text string appended to a DNS domain name to
domain name to ensure uniqueness across organizations. ensure uniqueness across organizations.
o tag-version (index 12): An integer value that indicate the o tag-version (index 12): An integer value that indicate the
specific release revision of the tag. Typically, the initial specific release revision of the tag. Typically, the initial
value of this field is set to 0, and the value is monotonically value of this field is set to 0 and the value is monotonically
increased for subsequent tags produced for the same software increased for subsequent tags produced for the same software
component release. This value allows a CoSWID tag producer to component release. This value allows a CoSWID tag producer to
correct an incorrect tag previously released, without indicating a correct an incorrect tag previously released without indicating a
change to the underlying software component the tag represents. change to the underlying software component the tag represents.
For example, the tag version would be changed to add new metadata, For example, the tag version could be changed to add new metadata,
to correct a broken link, to add a missing payload entry, etc. to correct a broken link, to add a missing payload entry, etc.
When producing a revised tag, the new tag-version value MUST be When producing a revised tag, the new tag-version value MUST be
greater than the old tag-version value. greater than the old tag-version value.
o corpus (index 8): A boolean value that indicates if the tag o corpus (index 8): A boolean value that indicates if the tag
identifies and describes an installable software component in its identifies and describes an installable software component in its
pre-installation state. Installable software includes a pre-installation state. Installable software includes a
installation package or installer for a software component, a installation package or installer for a software component, a
software update, or a patch. If the CoSWID tag represents software update, or a patch. If the CoSWID tag represents
installable software, the corpus item MUST be set to "true". If installable software, the corpus item MUST be set to "true". If
not provided the default value MUST be considered "false". not provided, the default value MUST be considered "false".
o patch (index 9): A boolean value that indicates if the tag o patch (index 9): A boolean value that indicates if the tag
identifies and describes an installed patch which has made identifies and describes an installed patch that has made
incremental changes to a software component installed on a incremental changes to a software component installed on an
computing device. Typically, an installed patch has made a set of endpoint. Typically, an installed patch has made a set of file
file modifications to pre-installed software, and does not alter modifications to pre-installed software and does not alter the
the version number or the descriptive metadata of an installed version number or the descriptive metadata of an installed
software component. If a CoSWID tag is for a patch, the patch software component. If a CoSWID tag is for a patch, the patch
item MUST be set to "true". If not provided the default value item MUST be set to "true". If not provided, the default value
MUST be considered "false". MUST be considered "false".
Note: If the software component's version number is modified, then
the correct course of action would be to replace the previous
primary tag for the component with a new primary tag that
reflected this new version. In such a case, the new tag would
have a patch item value of "false" or would omit this item
completely.
o supplemental (index 11): A boolean value that indicates if the tag o supplemental (index 11): A boolean value that indicates if the tag
is providing additional information to be associated with another is providing additional information to be associated with another
referenced SWID or CoSWID tag. Tags using this item help to referenced SWID or CoSWID tag. This allows tools and users to
ensure that primary and patch tags provided by a software provider record their own metadata about a software component without
are not modified by software management tools, while allowing modifying SWID primary or patch tags created by a software
these tools to provide their own software metadata for a software provider. If a CoSWID tag is a supplemental tag, the supplemental
component. If a CoSWID tag is a supplemental tag, the item MUST be set to "true". If not provided, the default value
supplemental item MUST be set to "true". If not provided the MUST be considered "false".
default value MUST be considered "false".
o software-name (index 1): This textual item provides the software o software-name (index 1): This textual item provides the software
component's name. This name is likely the same name that would component's name. This name is likely the same name that would
appear in a package management tool. appear in a package management tool.
o software-version (index 13): A textual value representing the o software-version (index 13): A textual value representing the
specific release or development version of the software component. specific release or development version of the software component.
o version-scheme (index 14): An 8-bit integer or textual value o version-scheme (index 14): An 8-bit integer or textual value
representing the versioning scheme used for the software-version representing the versioning scheme used for the software-version
item. If an integer value is used it MUST be a value from the item. If an integer value is used it MUST be a value from the
SWID/CoSWID Version Scheme Value Registry (see section SWID/CoSWID Version Scheme Value Registry (see section
Section 5.2.1 or a value in the private use range: 32768-65535. Section 5.2.1 or a value in the private use range: 32768-65535.
An initial set of pre-defined version-scheme index and text values An initial set of version-scheme index and text values are defined in
are defined in Section 4.1 that are based on the version-scheme Section 4.1, and are based on the version-scheme values defined in
values defined in [SWID]. These pre-defined version-scheme values [SWID]. These pre-defined version-scheme values are registered with
are registered with IANA in the "SWID/CoSWID Version Scheme Value" IANA in the "SWID/CoSWID Version Scheme Value" registry
registry Section 5.2.1, and MAY be expanded in the future. Section 5.2.1. The values in this registry will likely be expanded
in the future.
The value of an ownership item MUST be one of the following: The value of an version-scheme item MUST be one of the following:
* The index (preferred) or string value of a role from the IANA o The index (preferred) or string value of a role from the IANA in
in the "SWID/CoSWID Version Scheme Value" registry. the "SWID/CoSWID Version Scheme Value" registry.
* An index value in the range 32768 through 65535, to indicate o An index value in the range 32768 through 65535, to indicate that
that a private use index value is used. a private use index value is used.
* A string value prefixed with "x_", to indicate that a private o A string value prefixed with "x_", to indicate that a private use
use string value is used. string value is used.
o media (index 10): This text value is a hint to the tag consumer to o media (index 10): This text value is a hint to the tag consumer to
understand what this tag applies to. This item represents a query understand what target platform this tag applies to. This item
as defined by the W3C Media Queries Recommendation (see represents a query as defined by the W3C Media Queries
[W3C.REC-css3-mediaqueries-20120619]). Recommendation (see [W3C.REC-css3-mediaqueries-20120619]).
o software-meta (index 5): An open-ended map of key/value data o software-meta (index 5): An open-ended map of key/value data
pairs. A number of predefined keys can be used within this item pairs. A number of predefined keys can be used within this item
providing for common usage and semantics across the industry. Use providing for common usage and semantics across the industry. Use
of this map allows any additional attribute to be included in the of this map allows any additional attribute to be included in the
tag. It is expected that industry groups will use a common set of tag. It is expected that industry groups will use a common set of
attribute names to allow for interoperability within their attribute names to allow for interoperability within their
communities. Described in Section 2.7. communities. Described in Section 2.7.
o entity (index 2): Provides information about one or more o entity (index 2): Provides information about one or more
skipping to change at page 13, line 15 skipping to change at page 14, line 22
CoSWID tag. Described in Section 2.5. CoSWID tag. Described in Section 2.5.
o link (index 4): Provides a means to establish relationship arcs o link (index 4): Provides a means to establish relationship arcs
between the tag and another items. A given link can be used to between the tag and another items. A given link can be used to
establish the relationship between tags or to reference another establish the relationship between tags or to reference another
resource that is related to the CoSWID tag, e.g. vulnerability resource that is related to the CoSWID tag, e.g. vulnerability
database association, ROLIE feed [RFC8322], MUD resource database association, ROLIE feed [RFC8322], MUD resource
[RFC8520], software download location, etc). This is modeled [RFC8520], software download location, etc). This is modeled
after the HTML "link" element. Described in Section 2.6. after the HTML "link" element. Described in Section 2.6.
o payload (index 6): This item represents the software artifacts o payload (index 6): This item represents a collection of software
that compose the target software. For example, the files included artifacts (described by child items) that compose the target
with an installer for a corpus tag or installed on an endpoint software. For example, these artifacts could be the files
when the software component is installed for a primary or patch included with an installer for a corpus tag or installed on an
tag. The artifacts listed in a payload may be a superset of the endpoint when the software component is installed for a primary or
software artifacts that are actually installed. Based on user patch tag. The artifacts listed in a payload may be a superset of
the software artifacts that are actually installed. Based on user
selections at install time, an installation might not include selections at install time, an installation might not include
every artifact that could be created or executed on the endpoint every artifact that could be created or executed on the endpoint
when the software component is installed or run. Described in when the software component is installed or run. Described in
Section 2.8.3. Section 2.8.3.
o evidence-entry (index 3): This item records the results of a o evidence-entry (index 3): This item can be used to record the
software discovery process used to identify untagged software on results of a software discovery process used to identify untagged
an endpoint. This item provides a means to represent indicators software on an endpoint or to represent indicators for why
for why software is believed to be installed on the endpoint. In software is believed to be installed on the endpoint. In either
such a case, a CoSWID tag is created when the endpoint is scanned case, a CoSWID tag can be created by the tool performing an
by the tool performing the scan. Described in Section 2.8.4. analysis of the software components installed on the endpoint.
Described in Section 2.8.4.
o $$coswid-extension: This CDDL socket is used to add new o $$coswid-extension: This CDDL socket is used to add new
information structures to the concise-swid-tag root map. See information structures to the concise-swid-tag root map. See
Section 2.1. Section 2.1.
2.3. concise-swid-tag Co-constraints 2.3. concise-swid-tag Co-constraints
The following co-constraints apply to the information provided by in The following co-constraints apply to the information provided in the
the concise-swid-tag group. concise-swid-tag group.
o The patch and supplemental items MUST NOT both be set to "true". o The patch and supplemental items MUST NOT both be set to "true".
o If the patch item is set to "true", the tag SHOULD contain at o If the patch item is set to "true", the tag SHOULD contain at
least one link item with the rel(ation) item value of "patches" least one link item with both the rel(ation) item value of
and an href item specifying an association with the software that "patches" and an href item specifying an association with the
was patched. software that was patched.
o If the supplemental item is set to "true", the tag SHOULD contain o If the supplemental item is set to "true", the tag SHOULD contain
at least one link item with the rel(ation) item value of at least one link item with both the rel(ation) item value of
"supplements" and an href item specifying an association with the "supplements" and an href item specifying an association with the
software that is supplemented. software that is supplemented.
o If all of the corpus, patch, and supplemental items are "false", o If all of the corpus, patch, and supplemental items are "false",
or if the corpus item is set to "true", then a software-version or if the corpus item is set to "true", then a software-version
item MUST be included with a value set to the version of the item MUST be included with a value set to the version of the
software component. This ensures that primary and corpus tags software component. This ensures that primary and corpus tags
have an identifiable software version. have an identifiable software version.
2.4. The global-attributes Group 2.4. The global-attributes Group
The global-attributes group provides a list of items including an The global-attributes group provides a list of items, including an
optional language definition to support the processing of text-string optional language definition to support the processing of text-string
values and an unbounded set of any-attribute items allowing for values, and an unbounded set of any-attribute items allowing for
additional items to be provided as a general point of extension in additional items to be provided as a general point of extension in
the model. the model.
The CDDL for the global-attributes follows: The CDDL for the global-attributes follows:
global-attributes = ( global-attributes = (
? lang, ? lang,
* any-attribute, * any-attribute,
) )
skipping to change at page 14, line 47 skipping to change at page 16, line 7
"Language Subtag Registry" [RFC5646]. The context of the "Language Subtag Registry" [RFC5646]. The context of the
specified language applies to all sibling and descendant textual specified language applies to all sibling and descendant textual
values, unless a descendant object has defined a different values, unless a descendant object has defined a different
language tag. Thus, a new context is established when a language tag. Thus, a new context is established when a
descendant object redefines a new language tag. All textual descendant object redefines a new language tag. All textual
values within a given context MUST be considered expressed in the values within a given context MUST be considered expressed in the
specified language. specified language.
o any-attribute: This sub-group provides a means to include o any-attribute: This sub-group provides a means to include
arbitrary information via label ("key") value pairs. Labels can arbitrary information via label ("key") value pairs. Labels can
be either a single integer or text string. Values can be either a be either a single integer or text string. Values can be a single
single integer or text string, or an array of integers or text integer, a text string, or an array of integers or text strings.
strings.
2.5. The entity-entry Group 2.5. The entity-entry Group
The CDDL for the entity-entry group follows: The CDDL for the entity-entry group follows:
entity-entry = { entity-entry = {
global-attributes, global-attributes,
entity-name => text, entity-name => text,
? reg-id => any-uri, ? reg-id => any-uri,
role => $role / [ 2* $role ], role => $role / [ 2* $role ],
skipping to change at page 16, line 7 skipping to change at page 17, line 12
etc.) for the referenced entity. The value of an registration ID etc.) for the referenced entity. The value of an registration ID
MUST be a RFC 3986 URI. The scope SHOULD be the scope of an MUST be a RFC 3986 URI. The scope SHOULD be the scope of an
organization. In a given scope, the registration id MUST be used organization. In a given scope, the registration id MUST be used
consistently for CoSWID tag production. consistently for CoSWID tag production.
o role (index 33): The relationship(s) between the entity, and this o role (index 33): The relationship(s) between the entity, and this
tag or the referenced software component. Use of index values tag or the referenced software component. Use of index values
instead of text for these pre-defined roles allows a CoSWID to be instead of text for these pre-defined roles allows a CoSWID to be
more concise. more concise.
An initial set of pre-defined role index and text values are An initial set of role index and text values are defined in
defined in Section 4.2 that are based on the roles defined in Section 4.2, and are based on the roles defined in [SWID]. These
[SWID]. These pre-defined roles are registered with IANA in the pre-defined roles are registered with IANA in the "SWID/CoSWID
"SWID/CoSWID Entity Role Value" registry Section 5.2.2, and MAY be Entity Role Value" registry Section 5.2.2. The values in this
expanded in the future. registry will likely be expanded in the future.
The value of a role item MUST be one of the following: The value of a role item MUST be one of the following:
* The index (preferred) or string value of a role from the IANA * The index (preferred) or string value of a role from the IANA
in the "SWID/CoSWID Entity Role Value" registry. in the "SWID/CoSWID Entity Role Value" registry.
* An index value in the range 128 through 255, to indicate that a * An index value in the range 128 through 255, to indicate that a
private use index value is used. private use index value is used.
* A string value prefixed with "x_", to indicate that a private * A string value prefixed with "x_", to indicate that a private
skipping to change at page 18, line 25 skipping to change at page 19, line 28
optional=1 optional=1
required=2 required=2
recommended=3 recommended=3
The following describes each member of this map. The following describes each member of this map.
o global-attributes: The global-attributes group described in o global-attributes: The global-attributes group described in
Section 2.4. Section 2.4.
o artifact (index: 37): To be used with rel="installation-media", o artifact (index: 37): To be used with rel="installation-media",
this item value can provide the path to the installer executable this item's value provides the path to the installer executable or
or script that can be run to launch the referenced installation. script that can be run to launch the referenced installation.
Links with the same artifact name MUST be considered mirrors of Links with the same artifact name MUST be considered mirrors of
each other, allowing the installation media to be acquired from each other, allowing the installation media to be acquired from
any of the described sources. any of the described sources.
o href (index 38): A URI for the referenced resource. The "href" o href (index 38): A URI for the referenced resource. The "href"
item's value can be, but is not limited to, the following (which item's value can be, but is not limited to, the following (which
is a slightly modified excerpt from [SWID]): is a slightly modified excerpt from [SWID]):
* If no URI scheme is provided, then the URI is to be interpreted * If no URI scheme is provided, then the URI is to be interpreted
as being relative to the URI of the CoSWID tag. For example, as being relative to the URI of the CoSWID tag. For example,
"./folder/supplemental.coswid". "./folder/supplemental.coswid".
* a physical resource location with any acceptable URI scheme * a physical resource location with any acceptable URI scheme
(e.g., file:// http:// https:// ftp://) (e.g., file:// http:// https:// ftp://)
* a URI with "coswid:" as the scheme, which refers to another * a URI with "swid:" as the scheme, which refers to another SWID
CoSWID by tag-id. This URI would need to be resolved in the or CoSWID by tag-id. This URI would need to be resolved in the
context of the endpoint by software that can lookup other context of the endpoint by software that can lookup other SWID
CoSWID tags. For example, "coswid:2df9de35-0aff- or CoSWID tags. For example, "swid:2df9de35-0aff-
4a86-ace6-f7dddd1ade4c" references the tag with the tag-id 4a86-ace6-f7dddd1ade4c" references the tag with the tag-id
value "2df9de35-0aff-4a86-ace6-f7dddd1ade4c". value "2df9de35-0aff-4a86-ace6-f7dddd1ade4c".
* a URI with "swidpath:" as the scheme, which refers to another * a URI with "swidpath:" as the scheme, which refers to another
CoSIWD via an XPATH query. This URI would need to be resolved CoSIWD via an XPATH query. This URI would need to be resolved
in the context of the system entity via software components in the context of the system entity via software components
that can lookup other CoSWID tags and select the appropriate that can lookup other CoSWID tags and select the appropriate
tag based on an XPATH query [W3C.REC-xpath20-20101214]. tag based on an XPATH query [W3C.REC-xpath20-20101214].
Examples include: Examples include:
* swidpath://SoftwareIdentity[Entity/@regid='http://contoso.com'] + swidpath://SoftwareIdentity[Entity/@regid='http://contoso.co
would retrieve all CoSWID tags that include an entity where the m'] would retrieve all SWID or CoSWID tags that include an
regid is "Contoso" or swidpath://SoftwareIdentity[Meta/@persist entity where the regid is "Contoso"
entId='b0c55172-38e9-4e36-be86-92206ad8eddb'] would match
CoSWID tags with the persistent-id value
"b0c55172-38e9-4e36-be86-92206ad8eddb".
o media (index 10): A hint to the consumer of the link to what the + swidpath://SoftwareIdentity[Meta/@persistentId='b0c55172-38e
target item is applicable for. This item represents a query as 9-4e36-be86-92206ad8eddb'] would match all SWID or CoSWID
defined by the W3C Media Queries Recommendation (see tags with the persistent-id value
"b0c55172-38e9-4e36-be86-92206ad8eddb"
o media (index 10): A hint to the consumer of the link to what
target platform the link is applicable to. This item represents a
query as defined by the W3C Media Queries Recommendation (see
[W3C.REC-css3-mediaqueries-20120619]). See also media defined in [W3C.REC-css3-mediaqueries-20120619]). See also media defined in
Section 2.2. Section 2.2.
o ownership (index 39): Used when the "href" item references another o ownership (index 39): Used when the "href" item references another
software component to indicate the degree of ownership between the software component to indicate the degree of ownership between the
software component referenced by the COSWID tag and the software software component referenced by the COSWID tag and the software
component referenced by the link. component referenced by the link.
An initial set of pre-defined ownership index and text values are An initial set of ownership index and text values are defined in
defined in Section 4.3 that are based on the ownership values Section 4.3, and are based on the ownership values defined in
defined in [SWID]. These pre-defined ownership values are [SWID]. These pre-defined ownership values are registered with
registered with IANA in the "SWID/CoSWID Link Ownership Value" IANA in the "SWID/CoSWID Link Ownership Value" registry
registry Section 5.2.3, and MAY be expanded in the future. Section 5.2.3. The values in this registry will likely be
expanded in the future.
The value of an ownership item MUST be one of the following: The value of an ownership item MUST be one of the following:
* The index (preferred) or string value of a role from the IANA * The index (preferred) or string value of a role from the IANA
in the "SWID/CoSWID Link Ownership Value" registry. in the "SWID/CoSWID Link Ownership Value" registry.
* An index value in the range 128 through 255, to indicate that a * An index value in the range 128 through 255, to indicate that a
private use index value is used. private use index value is used.
* A string value prefixed with "x_", to indicate that a private * A string value prefixed with "x_", to indicate that a private
use string value is used. use string value is used.
o rel (index 40): Identifies the relationship between this CoSWID o rel (index 40): Identifies the relationship between this CoSWID
and the target resource indicated by the "href" item. and the target resource indicated by the "href" item.
An initial set of pre-defined rel index and text values are An initial set of rel index and text values are defined in
defined in Section 4.4 that are based on the rel values defined in Section 4.4, and are based on the rel values defined in [SWID].
[SWID]. These pre-defined rel values are registered with IANA in These pre-defined rel values are registered with IANA in the
the "SWID/CoSWID Link Relationship Value" registry Section 5.2.4, "SWID/CoSWID Link Relationship Value" registry Section 5.2.4. The
and MAY be expanded in the future. values in this registry will likely be expanded in the future.
The value of a rel item MUST be one of the following: The value of a rel item MUST be one of the following:
* The index (preferred) or string value of a role from the IANA * The index (preferred) or string value of a role from the IANA
in the "SWID/CoSWID Link Relationship Value" registry. in the "SWID/CoSWID Link Relationship Value" registry.
* An index value in the range 128 through 255, to indicate that a * An index value in the range 128 through 255, to indicate that a
private use index value is used. private use index value is used.
* A string value prefixed with "x_", to indicate that a private * A string value prefixed with "x_", to indicate that a private
skipping to change at page 20, line 26 skipping to change at page 21, line 32
* A string value, as defined by [RFC8288], corresponding to a * A string value, as defined by [RFC8288], corresponding to a
"Relation Name" from the IANA "Link Relation Types" registry: "Relation Name" from the IANA "Link Relation Types" registry:
https://www.iana.org/assignments/link-relations/link- https://www.iana.org/assignments/link-relations/link-
relations.xhtml. When a string value defined in the IANA relations.xhtml. When a string value defined in the IANA
"SWID/CoSWID Link Relationship Value" registry matches a "SWID/CoSWID Link Relationship Value" registry matches a
Relation Name defined in the IANA "Link Relation Types" Relation Name defined in the IANA "Link Relation Types"
registry, the value in the IANA "SWID/CoSWID Link Relationship registry, the value in the IANA "SWID/CoSWID Link Relationship
Value" registry MUST be used instead, as this relationship has Value" registry MUST be used instead, as this relationship has
a specialized meaning in the context of a SWID/CoSWID tag. a specialized meaning in the context of a SWID/CoSWID tag.
o media-type (index 41): The media type for the target resource, o media-type (index 41): A link can point to arbitrary resources on
providing a resource consumer with a hint of what type of resource the endpoint, local network, or Internet using the href item. Use
to expect. Media types are identified by referencing a "Name" of this item supplies the resource consumer with a hint of what
from the IANA "Media Types" registry: type of resource to expect. Media types are identified by
referencing a "Name" from the IANA "Media Types" registry:
http://www.iana.org/assignments/media-types/media-types.xhtml. http://www.iana.org/assignments/media-types/media-types.xhtml.
o use (index 42): Determines if the referenced software component o use (index 42): Determines if the referenced software component
has to be installed before installing the tagged software has to be installed before installing the software component
component. identified by the tag.
An initial set of pre-defined use index and text values are An initial set of use index and text values are defined in
defined in Section 4.5 that are based on the use values defined in Section 4.5, and are based on the use values defined in [SWID].
[SWID]. These pre-defined use values are registered with IANA in These pre-defined use values are registered with IANA in the
the "SWID/CoSWID Link Use Value" registry Section 5.2.5, and MAY "SWID/CoSWID Link Use Value" registry Section 5.2.5. The values
be expanded in the future. in this registry will likely be expanded in the future.
The value of an ownership item MUST be one of the following: The value of an ownership item MUST be one of the following:
* The index (preferred) or string value of a role from the IANA * The index (preferred) or string value of a role from the IANA
in the "SWID/CoSWID Link Use Value" registry. in the "SWID/CoSWID Link Use Value" registry.
* An index value in the range 128 through 255, to indicate that a * An index value in the range 128 through 255, to indicate that a
private use index value is used. private use index value is used.
* A string value prefixed with "x_", to indicate that a private * A string value prefixed with "x_", to indicate that a private
skipping to change at page 22, line 29 skipping to change at page 23, line 33
o colloquial-version (index 45): A textual value for the software o colloquial-version (index 45): A textual value for the software
component's informal or colloquial version. Examples may include component's informal or colloquial version. Examples may include
a year value, a major version number, or similar value that are a year value, a major version number, or similar value that are
used to identify a group of specific software component releases used to identify a group of specific software component releases
that are part of the same release/support cycle. This version can that are part of the same release/support cycle. This version can
be the same through multiple releases of a software component, be the same through multiple releases of a software component,
while the software-version specified in the concise-swid-tag group while the software-version specified in the concise-swid-tag group
is much more specific and will change for each software component is much more specific and will change for each software component
release. This version is intended to be used for string release. This version is intended to be used for string
comparison only, and is not intended to be used to determine if a comparison only and is not intended to be used to determine if a
specific value is earlier or later in a sequence. specific value is earlier or later in a sequence.
o description (index 46): A textual value that provides a detailed o description (index 46): A textual value that provides a detailed
description of the software component, which can be multiple description of the software component. This value MAY be multiple
sentences. sentences.
o edition (index 47): A textual value indicating that the software o edition (index 47): A textual value indicating that the software
component represents a functional variation of the code base used component represents a functional variation of the code base used
to support multiple software components. For examplem, this item to support multiple software components. For examplem, this item
can be used to differentiate enterprise, standard, or professional can be used to differentiate enterprise, standard, or professional
variants of a software component. variants of a software component.
o entitlement-data-required (index 48): A boolean value that proof o entitlement-data-required (index 48): A boolean value that can be
of indicator to determine if accompanying proof of entitlement is used to determine if accompanying proof of entitlement is needed
needed when a software license reconciliation process is when a software license reconciliation process is performed.
performed.
o entitlement-key (index 49): A vendor-specific textual key that can o entitlement-key (index 49): A vendor-specific textual key that can
be used to identify and establish a relationship to an be used to identify and establish a relationship to an
entitlement. Examples of an entitlement-key might include a entitlement. Examples of an entitlement-key might include a
serial number, product key, or license key). For values that serial number, product key, or license key. For values that
relate to a given software component install (i.e., license key), relate to a given software component install (i.e., license key),
a supplemental tag will typically contain this information. In a supplemental tag will typically contain this information. In
other cases where a general-purpose key can be provided that other cases, where a general-purpose key can be provided that
applies to all possible installs of the software component on applies to all possible installs of the software component on
different endpoints, a primary tag will typically contain this different endpoints, a primary tag will typically contain this
information. information.
o generator (index 50): The name (or tag-id) of the software o generator (index 50): The name (or tag-id) of the software
component that created the CoSWID tag. If the generating software component that created the CoSWID tag. If the generating software
component has a SWID or CoSWID tag, then the tag-id for the component has a SWID or CoSWID tag, then the tag-id for the
generating software component SHOULD be provided. generating software component SHOULD be provided.
o persistent-id (index 51): A GUID used to identify a related set of o persistent-id (index 51): A globally unique identifier used to
software components. Software components sharing the same identify a set of software components that are related. Software
persistent-id can be different versions. components sharing the same persistent-id can be different
versions. This item can be used to relate software components,
released at different points in time or through different release
channels, that may not be able to be related through use of the
link item.
o product (index 52): A basic name for the software component that o product (index 52): A basic name for the software component that
can be common across multiple tagged software components (e.g., can be common across multiple tagged software components (e.g.,
Apache HTTPD). Apache HTTPD).
o product-family (index 53): A textual value indicating the software o product-family (index 53): A textual value indicating the software
components overall product family. This should be used when components overall product family. This should be used when
multiple related software components form a larger capability that multiple related software components form a larger capability that
is installed on multiple different endpoints. For example, some is installed on multiple different endpoints. For example, some
software families may consist of server, client, and shared software families may consist of server, client, and shared
service components that are part of a larger capability. Email service components that are part of a larger capability. Email
systems, enterprise applications, backup services, web systems, enterprise applications, backup services, web
conferencing, and similar capabilities are examples of families. conferencing, and similar capabilities are examples of families.
Use of this item is not intended to represent groups of software
that are bundled or installed together. The persistent-id or link
items SHOULD be used to relate bundled software components.
o revision (index 54): A string value indicating an informal or o revision (index 54): A string value indicating an informal or
colloquial release version of the software. This value can colloquial release version of the software. This value can
provide a different version value as compared to the software- provide a different version value as compared to the software-
version specified in the concise-swid-tag group. This is useful version specified in the concise-swid-tag group. This is useful
when one or more releases need to have an informal version label when one or more releases need to have an informal version label
that differs from the specific exact version value specified by that differs from the specific exact version value specified by
software-version. Examples can include SP1, RC1, Beta, etc. software-version. Examples can include SP1, RC1, Beta, etc.
o summary (index 55): A short description of the software component. o summary (index 55): A short description of the software component.
skipping to change at page 25, line 47 skipping to change at page 27, line 13
fs-name = 24 fs-name = 24
root = 25 root = 25
path-elements = 26 path-elements = 26
process-name = 27 process-name = 27
pid = 28 pid = 28
type = 29 type = 29
The following describes each member of the groups and maps The following describes each member of the groups and maps
illustrated above. illustrated above.
o filesystem-item: A list of items both used in representing the o filesystem-item: A list of common items used for representing the
nodes of a file-system hierarchy (i.e., directory items that allow filesystem root, relative location, name, and significance of a
one or more directories to be defined in the file structure), and file or directory item.
file items that allow one or more files to be specified for a
given location.
o global-attributes: The global-attributes group described in o global-attributes: The global-attributes group described in
Section 2.4. Section 2.4.
o directory (index 16): A directory item allows child directory and o directory (index 16): A directory item allows child directory and
file items to be defined within a directory hierarchy for the file items to be defined within a directory hierarchy for the
software component. software component.
o file (index 17): A file item allows details about a file to be o file (index 17): A file item allows details about a file to be
provided for the software component. provided for the software component.
o process (index 18): A process item allows details to be provided o process (index 18): A process item allows details to be provided
about the runtime behavior of the software component, such as about the runtime behavior of the software component, such as
information that will appear in a process listing on a device. information that will appear in a process listing on an endpoint.
o resource (index 19): A resource item can be used to provide o resource (index 19): A resource item can be used to provide
details about a resource expected to be found on an endpoint, or details about an artifact or capability expected to be found on an
evidence collected related to the software component. endpoint or evidence collected related to the software component.
This can be used to represent concepts not addressed directly by
the directory, file, or process items. Examples include: registry
keys, bound ports, etc. The equivalent construct in [SWID] is
currently under specified. As a result, this item might be
further defined through extension in the future.
o size (index 20): The file's size in bytes. o size (index 20): The file's size in bytes.
o file-version (index 21): The file's version as reported by o file-version (index 21): The file's version as reported by
querying information on the file from the operating system. querying information on the file from the operating system.
o key (index 22): A boolean value indicating if a file or directory o key (index 22): A boolean value indicating if a file or directory
is significant or required for the software component to execute is significant or required for the software component to execute
or function properly. These are files or directories that can be or function properly. These are files or directories that can be
used to affirmatively determine if the software component is used to affirmatively determine if the software component is
installed on an endpoint. installed on an endpoint.
o location (index 23): The filesystem path where a file is expected o location (index 23): The filesystem path where a file is expected
to be located when installed or copied. This path SHOULD be to be located when installed or copied. The location MUST be
relative to the location of the parent directory item, or if no either relative to the location of the parent directory item
parent is defined, the location MUST be relative to the location (preferred) or relative to the location of the CoSWID tag if no
of the CoSWID tag. The location MUST not include a file's name, parent is defined. The location MUST NOT include a file's name,
which is provided by the fs-name item. which is provided by the fs-name item.
o fs-name (index 24): The name of the directory or file without any o fs-name (index 24): The name of the directory or file without any
path information. path information.
o root (index 25): A filesystem-specific name for the root of the o root (index 25): A filesystem-specific name for the root of the
filesystem. The location item is considered relative to this filesystem. The location item is considered relative to this
location if specified. If not provided, the value provided by the location if specified. If not provided, the value provided by the
location item is expected to be relative to its parent or the location item is expected to be relative to its parent or the
location of the CoSWID tag if no parent is provided. location of the CoSWID tag if no parent is provided.
o path-elements (index 26): This group provides the ability to o path-elements (index 26): This group allows a heirarchy of
define a directory structure for files defined in payload or directory and file items to be defined in payload or evidence
evidence items. items.
o process-name (index 27): The software component's process name as o process-name (index 27): The software component's process name as
it will appear in an endpoint's process list. it will appear in an endpoint's process list.
o pid (index 28): The process ID identified for a running instance o pid (index 28): The process ID identified for a running instance
of the software component in the endpoint's process list. This is of the software component in the endpoint's process list. This is
used as part of the evidence item. used as part of the evidence item.
o type (index 29): A string indicating the type of resource. o type (index 29): A string indicating the type of resource.
skipping to change at page 29, line 31 skipping to change at page 30, line 52
any-attribute = ( any-attribute = (
label => text / int / [ 2* text ] / [ 2* int ] label => text / int / [ 2* text ] / [ 2* int ]
) )
global-attributes = ( global-attributes = (
? lang => text, ? lang => text,
* any-attribute, * any-attribute,
) )
hash-entry = [ hash-alg-id: int, hash-entry = [ hash-alg-id: int,
hash-value: bytes, hash-value: bytes ]
]
entity-entry = { entity-entry = {
global-attributes, global-attributes,
entity-name => text, entity-name => text,
? reg-id => any-uri, ? reg-id => any-uri,
role => $role / [ 2* $role ], role => $role / [ 2* $role ],
? thumbprint => hash-entry, ? thumbprint => hash-entry,
* $$entity-extension, * $$entity-extension,
} }
skipping to change at page 34, line 43 skipping to change at page 36, line 14
2. Supplemental Tag: A CoSWID tag MUST be considered a supplemental 2. Supplemental Tag: A CoSWID tag MUST be considered a supplemental
tag if the supplemental item is set to "true". tag if the supplemental item is set to "true".
3. Corpus Tag: A CoSWID tag MUST be considered a corpus tag if the 3. Corpus Tag: A CoSWID tag MUST be considered a corpus tag if the
corpus item is "true". corpus item is "true".
4. Patch Tag: A CoSWID tag MUST be considered a patch tag if the 4. Patch Tag: A CoSWID tag MUST be considered a patch tag if the
patch item is "true". patch item is "true".
Note: Multiple of the corpus, patch, and supplemental items can have
values set as "true". The rules above provide a means to determine
the tag's type in such a case. For example, a SWID or CoSWID tag for
a patch installer might have both corpus and patch items set to
"true". In such a case, the tag is a "Corpus Tag". The tag
installed by this installer would have only the patch item set to
"true", making the installed tag type a "Patch Tag".
4. CoSWID Indexed Label Values 4. CoSWID Indexed Label Values
4.1. Version Scheme 4.1. Version Scheme
The following table contains a set of values for use in the concise- The following table contains a set of values for use in the concise-
swid-tag group's version-scheme item. These values match the version swid-tag group's version-scheme item. These values match the version
schemes defined in the ISO/IEC 19770-2:2015 [SWID] specification. schemes defined in the ISO/IEC 19770-2:2015 [SWID] specification.
Index value indicates the value to use as the version-scheme item's Index value indicates the value to use as the version-scheme item's
value. The Version Scheme Name provides human-readable text for the value. The Version Scheme Name provides human-readable text for the
value. The Definition describes the syntax of allowed values for value. The Definition describes the syntax of allowed values for
skipping to change at page 35, line 32 skipping to change at page 37, line 30
| 3 | alphanumeric | Strictly a string, sorting is | | 3 | alphanumeric | Strictly a string, sorting is |
| | | done alphanumerically | | | | done alphanumerically |
| | | | | | | |
| 4 | decimal | A floating point number (e.g., | | 4 | decimal | A floating point number (e.g., |
| | | 1.25 is less than 1.3) | | | | 1.25 is less than 1.3) |
| | | | | | | |
| 16384 | semver | Follows the [SEMVER] | | 16384 | semver | Follows the [SEMVER] |
| | | specification | | | | specification |
+-------+-------------------------+---------------------------------+ +-------+-------------------------+---------------------------------+
Table 3: Version Scheme Values
The values above are registered in the IANA "SWID/CoSWID Version The values above are registered in the IANA "SWID/CoSWID Version
Scheme Value" registry defined in section Section 5.2.1. Additional Scheme Value" registry defined in section Section 5.2.1. Additional
entires will likely be registered over time in this registry. values will likely be registered over time in this registry.
Additionally, the index values 32768 through 65535 have been reserved Additionally, the index values 32768 through 65535 and the name
for private use. prefix "x_" have been reserved for private use.
4.2. Entity Role Values 4.2. Entity Role Values
The following table indicates the index value to use for the entity- The following table indicates the index value to use for the entity-
entry group's role item (see Section 2.5). These values match the entry group's role item (see Section 2.5). These values match the
entity roles defined in the ISO/IEC 19770-2:2015 [SWID] entity roles defined in the ISO/IEC 19770-2:2015 [SWID]
specification. The "Index" value indicates the value to use as the specification. The "Index" value indicates the value to use as the
role item's value. The "Role Name" provides human-readable text for role item's value. The "Role Name" provides human-readable text for
the value. The "Definition" describes the semantic meaning of each the value. The "Definition" describes the semantic meaning of each
entry. entry.
+-------+-----------------+-----------------------------------------+ +-------+-----------------+-----------------------------------------+
| Index | Role Name | Definition | | Index | Role Name | Definition |
+-------+-----------------+-----------------------------------------+ +-------+-----------------+-----------------------------------------+
| 1 | tagCreator | The person or organization that created | | 1 | tagCreator | The person or organization that created |
| | | the containing SWID or CoSWID tag | | | | the containing SWID or CoSWID tag |
| | | | | | | |
| 2 | softwareCreator | From [SAM], "person or organization | | 2 | softwareCreator | The person or organization entity that |
| | | that creates a software product (3.46) | | | | created the software component. |
| | | or package" |
| | | | | | | |
| 3 | aggregator | From {{SWID}, "An organization or | | 3 | aggregator | From [SWID], "An organization or system |
| | | system that encapsulates software from | | | | that encapsulates software from their |
| | | their own and/or other organizations | | | | own and/or other organizations into a |
| | | into a different distribution process | | | | different distribution process (as in |
| | | (as in the case of virtualization), or | | | | the case of virtualization), or as a |
| | | as a completed system to accomplish a | | | | completed system to accomplish a |
| | | specific task (as in the case of a | | | | specific task (as in the case of a |
| | | value added reseller)." | | | | value added reseller)." |
| | | | | | | |
| 4 | distributor | From [SWID], "An entity that furthers | | 4 | distributor | From [SWID], "An entity that furthers |
| | | the marketing, selling and/or | | | | the marketing, selling and/or |
| | | distribution of software from the | | | | distribution of software from the |
| | | original place of manufacture to the | | | | original place of manufacture to the |
| | | ultimate user without modifying the | | | | ultimate user without modifying the |
| | | software, its packaging or its | | | | software, its packaging or its |
| | | labelling." | | | | labelling." |
| | | | | | | |
| 5 | licensor | From [SAM] as "software licensor", a | | 5 | licensor | From [SAM] as "software licensor", a |
| | | "person or organization who owns or | | | | "person or organization who owns or |
| | | holds the rights to issue a software | | | | holds the rights to issue a software |
| | | license for a specific software | | | | license for a specific software |
| | | package" | | | | [component]" |
+-------+-----------------+-----------------------------------------+ +-------+-----------------+-----------------------------------------+
Table 4: Entity Role Values
The values above are registered in the IANA "SWID/CoSWID Entity Role The values above are registered in the IANA "SWID/CoSWID Entity Role
Value" registry defined in section Section 5.2.2. Additional valid Value" registry defined in section Section 5.2.2. Additional values
values will likely be registered over time. Additionally, the index will likely be registered over time. Additionally, the index values
values 128 through 255 have been reserved for private use. 128 through 255 and the name prefix "x_" have been reserved for
private use.
4.3. Link Ownership Values 4.3. Link Ownership Values
The following table indicates the index value to use for the link- The following table indicates the index value to use for the link-
entry group's ownership item (see Section 2.6). These values match entry group's ownership item (see Section 2.6). These values match
the link ownership values defined in the ISO/IEC 19770-2:2015 [SWID] the link ownership values defined in the ISO/IEC 19770-2:2015 [SWID]
specification. The "Index" value indicates the value to use as the specification. The "Index" value indicates the value to use as the
link-entry group ownership item's value. The "Ownership Type" link-entry group ownership item's value. The "Ownership Type"
provides human-readable text for the value. The "Definition" provides human-readable text for the value. The "Definition"
describes the semantic meaning of each entry. describes the semantic meaning of each entry.
skipping to change at page 37, line 24 skipping to change at page 39, line 26
| | | CoSWID tag is uninstalled, then the | | | | CoSWID tag is uninstalled, then the |
| | | referenced software SHOULD be uninstalled as | | | | referenced software SHOULD be uninstalled as |
| | | well. | | | | well. |
| | | | | | | |
| 3 | shared | If the software component referenced by the | | 3 | shared | If the software component referenced by the |
| | | CoSWID tag is uninstalled, then the | | | | CoSWID tag is uninstalled, then the |
| | | referenced software SHOULD be uninstalled if | | | | referenced software SHOULD be uninstalled if |
| | | no other components sharing the software. | | | | no other components sharing the software. |
+-------+-----------+-----------------------------------------------+ +-------+-----------+-----------------------------------------------+
Table 5: Link Ownership Values
The values above are registered in the IANA "SWID/CoSWID Link The values above are registered in the IANA "SWID/CoSWID Link
Ownership Value" registry defined in section Section 5.2.3. Ownership Value" registry defined in section Section 5.2.3.
Additional valid values will likely be registered over time. Additional values will likely be registered over time. Additionally,
Additionally, the index values 128 through 255 have been reserved for the index values 128 through 255 and the name prefix "x_" have been
private use. reserved for private use.
4.4. Link Rel Values 4.4. Link Rel Values
The following table indicates the index value to use for the link- The following table indicates the index value to use for the link-
entry group's rel item (see Section 2.6). These values match the entry group's rel item (see Section 2.6). These values match the
link rel values defined in the ISO/IEC 19770-2:2015 [SWID] link rel values defined in the ISO/IEC 19770-2:2015 [SWID]
specification. The "Index" value indicates the value to use as the specification. The "Index" value indicates the value to use as the
link-entry group ownership item's value. The "Relationship Type" link-entry group ownership item's value. The "Relationship Type"
provides human-readable text for the value. The "Definition" provides human-readable text for the value. The "Definition"
describes the semantic meaning of each entry. describes the semantic meaning of each entry.
+-------+-------------------+---------------------------------------+ +-------+-------------------+---------------------------------------+
| Index | Relationship Type | Definition | | Index | Relationship Type | Definition |
+-------+-------------------+---------------------------------------+ +-------+-------------------+---------------------------------------+
| 1 | ancestor | The link references a SWID/CoSWID tag | | 1 | ancestor | The link references a SWID/CoSWID tag |
| | | for an ancestor of this software. | | | | for a previous release of this |
| | | This can be useful to define an | | | | software. This can be useful to |
| | | upgrade path. | | | | define an upgrade path. |
| | | | | | | |
| 2 | component | The link references a SWID/CoSWID tag | | 2 | component | The link references a SWID/CoSWID tag |
| | | for a separate component of this | | | | for a separate component of this |
| | | software. | | | | software. |
| | | | | | | |
| 3 | feature | The link references a configurable | | 3 | feature | The link references a configurable |
| | | feature of this software, that can be | | | | feature of this software that can be |
| | | enabled or disabled without changing | | | | enabled or disabled without changing |
| | | the installed files. | | | | the installed files. |
| | | | | | | |
| 4 | installationmedia | The link references the installation | | 4 | installationmedia | The link references the installation |
| | | package that can be used to install | | | | package that can be used to install |
| | | this software. | | | | this software. |
| | | | | | | |
| 5 | packageinstaller | The link references the installation | | 5 | packageinstaller | The link references the installation |
| | | software needed to install this | | | | software needed to install this |
| | | software. | | | | software. |
| | | | | | | |
| 6 | parent | The link references a SWID/CoSWID tag | | 6 | parent | The link references a SWID/CoSWID tag |
| | | that is the parent of this | | | | that is the parent of this |
| | | SWID/CoSWID tag. | | | | SWID/CoSWID tag. This relationship |
| | | can be used when multiple software |
| | | components are part of a software |
| | | bundle, where the "parent" is the |
| | | SWID/CoSWID tag for the bundle, and |
| | | each child is a "component". In such |
| | | a case, each child component can |
| | | provide a "parent" link relationship |
| | | to the bundle's SWID/CoSWID tag, and |
| | | the bundle can provide a "component" |
| | | link relationship to each child |
| | | software component. |
| | | | | | | |
| 7 | patches | The link references a SWID/CoSWID tag | | 7 | patches | The link references a SWID/CoSWID tag |
| | | that this software patches. Typically | | | | that this software patches. Typically |
| | | only used for patch SWID/CoSWID tags | | | | only used for patch SWID/CoSWID tags |
| | | (see Section 1.1). | | | | (see Section 1.1). |
| | | | | | | |
| 8 | requires | The link references a prerequisite | | 8 | requires | The link references a prerequisite |
| | | for installing this software. A patch | | | | for installing this software. A patch |
| | | SWID/CoSWID tag (see Section 1.1) can | | | | SWID/CoSWID tag (see Section 1.1) can |
| | | use this to represent base software | | | | use this to represent base software |
skipping to change at page 38, line 49 skipping to change at page 41, line 17
| | | use this to represent another patch | | | | use this to represent another patch |
| | | that this patch incorporates or | | | | that this patch incorporates or |
| | | replaces. | | | | replaces. |
| | | | | | | |
| 11 | supplemental | The link references a SWID/CoSWID tag | | 11 | supplemental | The link references a SWID/CoSWID tag |
| | | that this tag supplements. Used on | | | | that this tag supplements. Used on |
| | | supplemental SWID/CoSWID tags (see | | | | supplemental SWID/CoSWID tags (see |
| | | Section 1.1). | | | | Section 1.1). |
+-------+-------------------+---------------------------------------+ +-------+-------------------+---------------------------------------+
Table 6: Link Relationship Values
The values above are registered in the IANA "SWID/CoSWID Link The values above are registered in the IANA "SWID/CoSWID Link
Relationship Value" registry defined in section Section 5.2.4. Relationship Value" registry defined in section Section 5.2.4.
Additional valid values will likely be registered over time. Additional values will likely be registered over time. Additionally,
the index values 32768 through 65535 and the name prefix "x_" have
Additionally, the index values 32768 through 65535 have been reserved been reserved for private use.
for private use.
4.5. Link Use Values 4.5. Link Use Values
The following table indicates the index value to use for the link- The following table indicates the index value to use for the link-
entry group's use item (see Section 2.6). These values match the entry group's use item (see Section 2.6). These values match the
link use values defined in the ISO/IEC 19770-2:2015 [SWID] link use values defined in the ISO/IEC 19770-2:2015 [SWID]
specification. The "Index" value indicates the value to use as the specification. The "Index" value indicates the value to use as the
link-entry group use item's value. The "Use Type" provides human- link-entry group use item's value. The "Use Type" provides human-
readable text for the value. The "Definition" describes the semantic readable text for the value. The "Definition" describes the semantic
meaning of each entry. meaning of each entry.
skipping to change at page 39, line 34 skipping to change at page 41, line 51
| | | | | | | |
| 2 | required | From [SWID], "The [Link]'d software is | | 2 | required | From [SWID], "The [Link]'d software is |
| | | absolutely required for an operation | | | | absolutely required for an operation |
| | | software installation." | | | | software installation." |
| | | | | | | |
| 3 | recommended | From [SWID], "Not absolutely required; the | | 3 | recommended | From [SWID], "Not absolutely required; the |
| | | [Link]'d software is installed unless | | | | [Link]'d software is installed unless |
| | | specified otherwise." | | | | specified otherwise." |
+-------+-------------+---------------------------------------------+ +-------+-------------+---------------------------------------------+
Table 7: Link Use Values
The values above are registered in the IANA "SWID/CoSWID Link Use The values above are registered in the IANA "SWID/CoSWID Link Use
Value" registry defined in section Section 5.2.5. Additional valid Value" registry defined in section Section 5.2.5. Additional values
values will likely be registered over time. Additionally, the index will likely be registered over time. Additionally, the index values
values 128 through 255 have been reserved for private use. 128 through 255 and the name prefix "x_" have been reserved for
private use.
5. IANA Considerations 5. IANA Considerations
This document has a number of IANA considerations, as described in This document has a number of IANA considerations, as described in
the following subsections. the following subsections.
5.1. CoSWID Items Registry 5.1. CoSWID Items Registry
This document uses integer values as index values in CBOR maps. This document uses integer values as index values in CBOR maps.
skipping to change at page 40, line 13 skipping to change at page 42, line 32
[RFC8126] as follows: [RFC8126] as follows:
+------------------+-------------------------+ +------------------+-------------------------+
| Range | Registration Procedures | | Range | Registration Procedures |
+------------------+-------------------------+ +------------------+-------------------------+
| 0-32767 | Standards Action | | 0-32767 | Standards Action |
| | | | | |
| 32768-4294967295 | Specification Required | | 32768-4294967295 | Specification Required |
+------------------+-------------------------+ +------------------+-------------------------+
Table 8: CoSWID Items Registration Proceedures
All negative values are reserved for Private Use. All negative values are reserved for Private Use.
Initial registrations for the "CoSWID Items" registry are provided Initial registrations for the "CoSWID Items" registry are provided
below. Assignments consist of an integer index value, the item name, below. Assignments consist of an integer index value, the item name,
and a reference to the defining specification. and a reference to the defining specification.
+---------------+---------------------------+---------------+ +---------------+---------------------------+---------------+
| Index | Item Name | Specification | | Index | Item Name | Specification |
+---------------+---------------------------+---------------+ +---------------+---------------------------+---------------+
| 0 | tag-id | RFC-AAAA | | 0 | tag-id | RFC-AAAA |
skipping to change at page 42, line 42 skipping to change at page 45, line 15
| | | | | | | |
| 55 | summary | RFC-AAAA | | 55 | summary | RFC-AAAA |
| | | | | | | |
| 56 | unspsc-code | RFC-AAAA | | 56 | unspsc-code | RFC-AAAA |
| | | | | | | |
| 57 | unspsc-version | RFC-AAAA | | 57 | unspsc-version | RFC-AAAA |
| | | | | | | |
| 58-4294967295 | Unassigned | | | 58-4294967295 | Unassigned | |
+---------------+---------------------------+---------------+ +---------------+---------------------------+---------------+
Table 9: CoSWID Items Inital Registrations
5.2. SWID/CoSWID Value Registries 5.2. SWID/CoSWID Value Registries
The following IANA registries provide a mechanism for new valid The following IANA registries provide a mechanism for new values to
values to be added over time to common enumerations used by SWID and be added over time to common enumerations used by SWID and CoSWID.
CoSWID.
5.2.1. SWID/CoSWID Version Scheme Value Registry 5.2.1. SWID/CoSWID Version Scheme Value Registry
This document uses unsigned 16-bit index values to represent version- This document uses unsigned 16-bit index values to represent version-
scheme item values. The initial set of version-scheme values are scheme item values. The initial set of version-scheme values are
derived from the textual version scheme names defined in the ISO/IEC derived from the textual version scheme names defined in the ISO/IEC
19770-2:2015 specification [SWID]. 19770-2:2015 specification [SWID].
This document defines a new a new registry titled "SWID/CoSWID This document defines a new a new registry titled "SWID/CoSWID
Version Scheme Values". Future registrations for this registry are Version Scheme Values". Future registrations for this registry are
skipping to change at page 43, line 29 skipping to change at page 45, line 46
+-------------+--------------------------+ +-------------+--------------------------+
| Range | Registration Procedures | | Range | Registration Procedures |
+-------------+--------------------------+ +-------------+--------------------------+
| 0-16383 | Standards Action | | 0-16383 | Standards Action |
| | | | | |
| 16384-32767 | Specification Required | | 16384-32767 | Specification Required |
| | | | | |
| 32768-65535 | Reserved for Private Use | | 32768-65535 | Reserved for Private Use |
+-------------+--------------------------+ +-------------+--------------------------+
Table 10: CoSWID Version Scheme Registration Proceedures
Initial registrations for the "SWID/CoSWID Version Scheme Value" Initial registrations for the "SWID/CoSWID Version Scheme Value"
registry are provided below. Assignments consist of an integer Index registry are provided below. Assignments consist of an integer Index
value, the Version Scheme Name, and a reference to the defining value, the Version Scheme Name, and a reference to the defining
specification. specification.
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
| Index | Version Scheme Name | Specification | | Index | Version Scheme Name | Specification |
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
| 0 | Reserved | | | 0 | Reserved | |
| | | | | | | |
skipping to change at page 44, line 27 skipping to change at page 46, line 27
| | | | | | | |
| 5-16383 | Unassigned | | | 5-16383 | Unassigned | |
| | | | | | | |
| 16384 | semver | [SEMVER] | | 16384 | semver | [SEMVER] |
| | | | | | | |
| 16385-32767 | Unassigned | | | 16385-32767 | Unassigned | |
| | | | | | | |
| 32768-65535 | Reserved for Private Use | | | 32768-65535 | Reserved for Private Use | |
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
Table 11: CoSWID Version Scheme Inital Registrations
Additional syntax requirements for registrations:
o All registered names MUST be valid according to the XML Schema
NMTOKEN data type (see [W3C.REC-xmlschema-2-20041028] section
3.3.4).
o The name prefix "x_" has been reserved for private use and NUST
NOT be used in a registered name.
5.2.2. SWID/CoSWID Entity Role Value Registry 5.2.2. SWID/CoSWID Entity Role Value Registry
This document uses unsigned 8-bit index values to represent entity- This document uses unsigned 8-bit index values to represent entity-
entry role item values. The initial set of Entity roles are derived entry role item values. The initial set of Entity roles are derived
from the textual role names defined in the ISO/IEC 19770-2:2015 from the textual role names defined in the ISO/IEC 19770-2:2015
specification [SWID]. specification [SWID].
This document defines a new a new registry titled "SWID/CoSWID Entity This document defines a new a new registry titled "SWID/CoSWID Entity
Role Values". Future registrations for this registry are to be made Role Values". Future registrations for this registry are to be made
based on [RFC8126] as follows: based on [RFC8126] as follows:
skipping to change at page 45, line 5 skipping to change at page 47, line 14
+---------+--------------------------+ +---------+--------------------------+
| Range | Registration Procedures | | Range | Registration Procedures |
+---------+--------------------------+ +---------+--------------------------+
| 0-31 | Standards Action | | 0-31 | Standards Action |
| | | | | |
| 32-127 | Specification Required | | 32-127 | Specification Required |
| | | | | |
| 128-255 | Reserved for Private Use | | 128-255 | Reserved for Private Use |
+---------+--------------------------+ +---------+--------------------------+
Table 12: CoSWID Entity Role Registration Proceedures
Initial registrations for the "SWID/CoSWID Entity Role Value" Initial registrations for the "SWID/CoSWID Entity Role Value"
registry are provided below. Assignments consist of an integer Index registry are provided below. Assignments consist of an integer Index
value, a Role Name, and a reference to the defining specification. value, a Role Name, and a reference to the defining specification.
+---------+--------------------------+-----------------+ +---------+--------------------------+-----------------+
| Index | Role Name | Specification | | Index | Role Name | Specification |
+---------+--------------------------+-----------------+ +---------+--------------------------+-----------------+
| 0 | Reserved | | | 0 | Reserved | |
| | | | | | | |
| 1 | tagCreator | See Section 4.2 | | 1 | tagCreator | See Section 4.2 |
skipping to change at page 45, line 29 skipping to change at page 47, line 40
| | | | | | | |
| 4 | distributor | See Section 4.2 | | 4 | distributor | See Section 4.2 |
| | | | | | | |
| 5 | licensor | See Section 4.2 | | 5 | licensor | See Section 4.2 |
| | | | | | | |
| 6-127 | Unassigned | | | 6-127 | Unassigned | |
| | | | | | | |
| 128-255 | Reserved for Private Use | | | 128-255 | Reserved for Private Use | |
+---------+--------------------------+-----------------+ +---------+--------------------------+-----------------+
Table 13: CoSWID Entity Role Inital Registrations
Additional syntax requirements for registrations:
o All registered names MUST be valid according to the XML Schema
NMTOKEN data type (see [W3C.REC-xmlschema-2-20041028] section
3.3.4).
o The name prefix "x_" has been reserved for private use and NUST
NOT be used in a registered name.
5.2.3. SWID/CoSWID Link Ownership Value Registry 5.2.3. SWID/CoSWID Link Ownership Value Registry
This document uses unsigned 8-bit index values to represent link- This document uses unsigned 8-bit index values to represent link-
entry ownership item values. The initial set of Link ownership entry ownership item values. The initial set of Link ownership
values are derived from the textual ownership names defined in the values are derived from the textual ownership names defined in the
ISO/IEC 19770-2:2015 specification [SWID]. ISO/IEC 19770-2:2015 specification [SWID].
This document defines a new a new registry titled "SWID/CoSWID Link This document defines a new a new registry titled "SWID/CoSWID Link
Ownership Values". Future registrations for this registry are to be Ownership Values". Future registrations for this registry are to be
made based on [RFC8126] as follows: made based on [RFC8126] as follows:
skipping to change at page 46, line 5 skipping to change at page 48, line 29
+---------+--------------------------+ +---------+--------------------------+
| Range | Registration Procedures | | Range | Registration Procedures |
+---------+--------------------------+ +---------+--------------------------+
| 0-31 | Standards Action | | 0-31 | Standards Action |
| | | | | |
| 32-127 | Specification Required | | 32-127 | Specification Required |
| | | | | |
| 128-255 | Reserved for Private Use | | 128-255 | Reserved for Private Use |
+---------+--------------------------+ +---------+--------------------------+
Table 14: CoSWID Link Ownership Registration Proceedures
Initial registrations for the "SWID/CoSWID Link Ownership Value" Initial registrations for the "SWID/CoSWID Link Ownership Value"
registry are provided below. Assignments consist of an integer Index registry are provided below. Assignments consist of an integer Index
value, an Ownership Type Name, and a reference to the defining value, an Ownership Type Name, and a reference to the defining
specification. specification.
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
| Index | Ownership Type Name | Definition | | Index | Ownership Type Name | Definition |
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
| 0 | Reserved | | | 0 | Reserved | |
| | | | | | | |
skipping to change at page 46, line 28 skipping to change at page 49, line 23
| | | | | | | |
| 3 | shared | See Section 4.3 | | 3 | shared | See Section 4.3 |
| | | | | | | |
| 4-16384 | Unassigned | | | 4-16384 | Unassigned | |
| | | | | | | |
| 16385-32767 | Unassigned | | | 16385-32767 | Unassigned | |
| | | | | | | |
| 32768-65535 | Reserved for Private Use | | | 32768-65535 | Reserved for Private Use | |
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
Table 15: CoSWID Link Ownership Inital Registrations
Additional syntax requirements for registrations:
o All registered names MUST be valid according to the XML Schema
NMTOKEN data type (see [W3C.REC-xmlschema-2-20041028] section
3.3.4).
o The name prefix "x_" has been reserved for private use and NUST
NOT be used in a registered name.
5.2.4. SWID/CoSWID Link Relationship Value Registry 5.2.4. SWID/CoSWID Link Relationship Value Registry
This document uses unsigned 16-bit index values to represent link- This document uses unsigned 16-bit index values to represent link-
entry rel item values. The initial set of rel values are derived entry rel item values. The initial set of rel values are derived
from the textual rel names defined in the ISO/IEC 19770-2:2015 from the textual rel names defined in the ISO/IEC 19770-2:2015
specification [SWID]. specification [SWID].
This document defines a new a new registry titled "SWID/CoSWID Link This document defines a new a new registry titled "SWID/CoSWID Link
Relationship Values". Future registrations for this registry are to Relationship Values". Future registrations for this registry are to
be made based on [RFC8126] as follows: be made based on [RFC8126] as follows:
skipping to change at page 47, line 5 skipping to change at page 50, line 14
+-------------+--------------------------+ +-------------+--------------------------+
| Range | Registration Procedures | | Range | Registration Procedures |
+-------------+--------------------------+ +-------------+--------------------------+
| 0-16383 | Standards Action | | 0-16383 | Standards Action |
| | | | | |
| 16384-32767 | Specification Required | | 16384-32767 | Specification Required |
| | | | | |
| 32768-65535 | Reserved for Private Use | | 32768-65535 | Reserved for Private Use |
+-------------+--------------------------+ +-------------+--------------------------+
Table 16: CoSWID Link Relationship Registration Proceedures
Initial registrations for the "SWID/CoSWID Link Relationship Value" Initial registrations for the "SWID/CoSWID Link Relationship Value"
registry are provided below. Assignments consist of an integer Index registry are provided below. Assignments consist of an integer Index
value, the Relationship Type Name, and a reference to the defining value, the Relationship Type Name, and a reference to the defining
specification. specification.
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
| Index | Relationship Type Name | Specification | | Index | Relationship Type Name | Specification |
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
| 0 | Reserved | | | 0 | Reserved | |
| | | | | | | |
skipping to change at page 47, line 44 skipping to change at page 51, line 39
| | | | | | | |
| 11 | supplemental | See Section 4.4 | | 11 | supplemental | See Section 4.4 |
| | | | | | | |
| 12-16384 | Unassigned | | | 12-16384 | Unassigned | |
| | | | | | | |
| 16385-32767 | Unassigned | | | 16385-32767 | Unassigned | |
| | | | | | | |
| 32768-65535 | Reserved for Private Use | | | 32768-65535 | Reserved for Private Use | |
+-------------+--------------------------+-----------------+ +-------------+--------------------------+-----------------+
Table 17: CoSWID Link Relationship Inital Registrations
Additional syntax requirements for registrations:
o All registered names MUST be valid according to the XML Schema
NMTOKEN data type (see [W3C.REC-xmlschema-2-20041028] section
3.3.4).
o The name prefix "x_" has been reserved for private use and NUST
NOT be used in a registered name.
5.2.5. SWID/CoSWID Link Use Value Registry 5.2.5. SWID/CoSWID Link Use Value Registry
This document uses unsigned 8-bit index values to represent link- This document uses unsigned 8-bit index values to represent link-
entry use item values. The initial set of Link use values are entry use item values. The initial set of Link use values are
derived from the textual names defined in the ISO/IEC 19770-2:2015 derived from the textual names defined in the ISO/IEC 19770-2:2015
specification [SWID]. specification [SWID].
This document defines a new a new registry titled "SWID/CoSWID Link This document defines a new a new registry titled "SWID/CoSWID Link
Use Values". Future registrations for this registry are to be made Use Values". Future registrations for this registry are to be made
based on [RFC8126] as follows: based on [RFC8126] as follows:
skipping to change at page 48, line 22 skipping to change at page 52, line 29
+---------+--------------------------+ +---------+--------------------------+
| Range | Registration Procedures | | Range | Registration Procedures |
+---------+--------------------------+ +---------+--------------------------+
| 0-31 | Standards Action | | 0-31 | Standards Action |
| | | | | |
| 32-127 | Specification Required | | 32-127 | Specification Required |
| | | | | |
| 128-255 | Reserved for Private Use | | 128-255 | Reserved for Private Use |
+---------+--------------------------+ +---------+--------------------------+
Table 18: CoSWID Link Use Registration Proceedures
Initial registrations for the "SWID/CoSWID Entity Role Value" Initial registrations for the "SWID/CoSWID Entity Role Value"
registry are provided below. Assignments consist of an integer Index registry are provided below. Assignments consist of an integer Index
value, the Link Use Type Name, and a reference to the defining value, the Link Use Type Name, and a reference to the defining
specification. specification.
+---------+--------------------------+-----------------+ +---------+--------------------------+-----------------+
| Index | Link Use Type Name | Specification | | Index | Link Use Type Name | Specification |
+---------+--------------------------+-----------------+ +---------+--------------------------+-----------------+
| 0 | Reserved | | | 0 | Reserved | |
| | | | | | | |
skipping to change at page 48, line 43 skipping to change at page 52, line 52
| | | | | | | |
| 2 | required | See Section 4.5 | | 2 | required | See Section 4.5 |
| | | | | | | |
| 3 | recommended | See Section 4.5 | | 3 | recommended | See Section 4.5 |
| | | | | | | |
| 4-127 | Unassigned | | | 4-127 | Unassigned | |
| | | | | | | |
| 128-255 | Reserved for Private Use | | | 128-255 | Reserved for Private Use | |
+---------+--------------------------+-----------------+ +---------+--------------------------+-----------------+
Table 19: CoSWID Link Use Inital Registrations
Additional syntax requirements for registrations:
o All registered names MUST be valid according to the XML Schema
NMTOKEN data type (see [W3C.REC-xmlschema-2-20041028] section
3.3.4).
o The name prefix "x_" has been reserved for private use and NUST
NOT be used in a registered name.
5.3. swid+cbor Media Type Registration 5.3. swid+cbor Media Type Registration
IANA is requested add the following to the IANA "Media Types" IANA is requested to add the following to the IANA "Media Types"
registry. registry.
Type name: application Type name: application
Subtype name: swid+cbor Subtype name: swid+cbor
Required parameters: none Required parameters: none
Optional parameters: none Optional parameters: none
Encoding considerations: Must be encoded as using [RFC7049]. See Encoding considerations: Must be encoded as using [RFC7049]. See
RFC-AAAA for details. RFC-AAAA for details.
Security considerations: See Section 6 of RFC-AAAA. Security considerations: See Section 6 of RFC-AAAA.
Interoperability considerations: Applications MAY ignore any key Interoperability considerations: Applications MAY ignore any key
value pairs that they do not understand. This allows backwards value pairs that they do not understand. This allows backwards
compatible extensions to this specification. compatible extensions to this specification.
skipping to change at page 49, line 17 skipping to change at page 53, line 38
RFC-AAAA for details. RFC-AAAA for details.
Security considerations: See Section 6 of RFC-AAAA. Security considerations: See Section 6 of RFC-AAAA.
Interoperability considerations: Applications MAY ignore any key Interoperability considerations: Applications MAY ignore any key
value pairs that they do not understand. This allows backwards value pairs that they do not understand. This allows backwards
compatible extensions to this specification. compatible extensions to this specification.
Published specification: RFC-AAAA Published specification: RFC-AAAA
Applications that use this media type: The type is used by Software Applications that use this media type: The type is used by software
asset management systems, Vulnerability assessment systems, and in asset management systems, vulnerability assessment systems, and in
applications that use remote integrity verification. applications that use remote integrity verification.
Fragment identifier considerations: Fragment identification for Fragment identifier considerations: Fragment identification for
application/swid+cbor is supported by using fragment identifiers as application/swid+cbor is supported by using fragment identifiers as
specified by RFC-AAAA. [Section to be defined] specified by RFC-7049 section 7.5.
Additional information: Additional information:
Magic number(s): first five bytes in hex: da 53 57 49 44 Magic number(s): first five bytes in hex: da 53 57 49 44
File extension(s): coswid File extension(s): coswid
Macintosh file type code(s): none Macintosh file type code(s): none
Macintosh Universal Type Identifier code: org.ietf.coswid conforms to Macintosh Universal Type Identifier code: org.ietf.coswid conforms to
public.data public.data
Person & email address to contact for further information: Henk Person & email address to contact for further information: Henk
Birkholz <henk.birkholz@sit.fraunhofer.de> Birkholz <henk.birkholz@sit.fraunhofer.de>
Intended usage: COMMON Intended usage: COMMON
Restrictions on usage: None Restrictions on usage: None
skipping to change at page 50, line 13 skipping to change at page 54, line 31
media type in the "CoAP Content-Formats" sub-registry, from the "IETF media type in the "CoAP Content-Formats" sub-registry, from the "IETF
Review or IESG Approval" space (256..999), within the "CoRE Review or IESG Approval" space (256..999), within the "CoRE
Parameters" registry [RFC7252]: Parameters" registry [RFC7252]:
+-----------------------+----------+------+-----------+ +-----------------------+----------+------+-----------+
| Media type | Encoding | ID | Reference | | Media type | Encoding | ID | Reference |
+-----------------------+----------+------+-----------+ +-----------------------+----------+------+-----------+
| application/swid+cbor | - | TBD1 | RFC-AAAA | | application/swid+cbor | - | TBD1 | RFC-AAAA |
+-----------------------+----------+------+-----------+ +-----------------------+----------+------+-----------+
Table 1: CoAP Content-Format IDs Table 20: CoAP Content-Format IDs
5.5. CBOR Tag Registration 5.5. CBOR Tag Registration
IANA is requested to allocate a tag in the "CBOR Tags" registry", IANA is requested to allocate a tag in the "CBOR Tags" registry,
preferably with the specific value requested: preferably with the specific value requested:
+------------+----------+-------------------------------------------+ +------------+----------+-------------------------------------------+
| Tag | Data | Semantics | | Tag | Data | Semantics |
| | Item | | | | Item | |
+------------+----------+-------------------------------------------+ +------------+----------+-------------------------------------------+
| 1398229316 | map | Concise Software Identifier (CoSWID) | | 1398229316 | map | Concise Software Identifier (CoSWID) |
| | | [RFC-AAAA] | | | | [RFC-AAAA] |
+------------+----------+-------------------------------------------+ +------------+----------+-------------------------------------------+
Table 21: CoSWID CBOR Tag
6. Security Considerations 6. Security Considerations
SWID and CoSWID tags contain public information about software SWID and CoSWID tags contain public information about software
components and, as such, do not need to be protected against components and, as such, do not need to be protected against
disclosure on an endpoint. Similarly, SWID tags are intended to be disclosure on an endpoint. Similarly, SWID/CoSWID tags are intended
easily discoverable by applications and users on an endpoint in order to be easily discoverable by applications and users on an endpoint in
to make it easy to identify and collect all of an endpoint's SWID order to make it easy to identify and collect all of an endpoint's
tags. As such, any security considerations regarding SWID tags focus SWID tags. As such, any security considerations regarding SWID/
on the application of SWID tags to address security challenges, and CoSWID tags focus on the application of SWID/CoSWID tags to address
the possible disclosure of the results of those applications. security challenges, and the possible disclosure of the results of
those applications.
A signed SWID tag whose signature has been validated can be relied A signed SWID/CoSWID tag whose signature has been validated can be
upon to be unchanged since it was signed. If the SWID tag was relied upon to be unchanged since it was signed. If the SWID/CoSWID
created by the software provider, is signed, and the software tag was created by the software provider, is signed, and the software
provider can be authenticated as the originator of the signature, provider can be authenticated as the originator of the signature,
then the tag can be considered authoritative. In this way, an then the tag can be considered authoritative. In this way, an
authoritative SWID tag contains information about a software product authoritative SWID/CoSWID tag contains information about a software
provided by the maintainer of the product, who is expected to be an component provided by the maintainer of the software component, who
expert in their own product. Thus, authoritative SWID tags can be is expected to be an expert in their own software. Thus,
trusted to represent authoritative information about the software authoritative SWID/CoSWID tags can be trusted to represent
product. Having an authoritative SWID tag can be useful when the authoritative information about the software component. Having an
information in the tag needs to be trusted, such as when the tag is authoritative SWID/CoSWID tag can be useful when the information in
being used to convey reference integrity measurements for software the tag needs to be trusted, such as when the tag is being used to
components. By contrast, the data contained in unsigned tags cannot convey reference integrity measurements for software components. By
be trusted to be unmodified. contrast, the data contained in unsigned tags cannot be trusted to be
unmodified.
SWID tags are designed to be easily added and removed from an SWID/CoSWID tags are designed to be easily added and removed from an
endpoint along with the installation or removal of software endpoint along with the installation or removal of software
components. On endpoints where addition or removal of software components. On endpoints where addition or removal of software
components is tightly controlled, the addition or removal of SWID components is tightly controlled, the addition or removal of SWID
tags can be similarly controlled. On more open systems, where many tags can be similarly controlled. On more open systems, where many
users can manage the software inventory, SWID tags can be easier to users can manage the software inventory, SWID/CoSWID tags can be
add or remove. On such systems, it can be possible to add or remove easier to add or remove. On such systems, it can be possible to add
SWID tags in a way that does not reflect the actual presence or or remove SWID/CoSWID tags in a way that does not reflect the actual
absence of corresponding software components. Similarly, not all presence or absence of corresponding software components. Similarly,
software products automatically install SWID tags, so products can be not all software products automatically install SWID/CoSWID tags, so
present on an endpoint without providing a corresponding SWID tag. products can be present on an endpoint without providing a
As such, any collection of SWID tags cannot automatically be assumed corresponding SWID tag. As such, any collection of SWID/CoSWID tags
to represent either a complete or fully accurate representation of cannot automatically be assumed to represent either a complete or
the software inventory of the endpoint. However, especially on fully accurate representation of the software inventory of the
devices that more strictly control the ability to add or remove endpoint. However, especially on endpoint devices that more strictly
applications, SWID tags are an easy way to provide an preliminary control the ability to add or remove applications, SWID/CoSWID tags
understanding of that endpoint's software inventory. are an easy way to provide an preliminary understanding of that
endpoint's software inventory.
Any report of an endpoint's SWID tag collection provides information Any report of an endpoint's SWID/CoSWID tag collection provides
about the software inventory of that endpoint. If such a report is information about the software inventory of that endpoint. If such a
exposed to an attacker, this can tell them which software products report is exposed to an attacker, this can tell them which software
and versions thereof are present on the endpoint. By examining this products and versions thereof are present on the endpoint. By
list, the attacker might learn of the presence of applications that examining this list, the attacker might learn of the presence of
are vulnerable to certain types of attacks. As noted earlier, SWID applications that are vulnerable to certain types of attacks. As
tags are designed to be easily discoverable by an endpoint, but this noted earlier, SWID/CoSWID tags are designed to be easily
does not present a significant risk since an attacker would already discoverable by an endpoint, but this does not present a significant
need to have access to the endpoint to view that information. risk since an attacker would already need to have access to the
However, when the endpoint transmits its software inventory to endpoint to view that information. However, when the endpoint
another party, or that inventory is stored on a server for later transmits its software inventory to another party, or that inventory
analysis, this can potentially expose this information to attackers is stored on a server for later analysis, this can potentially expose
who do not yet have access to the endpoint. For this reason, it is this information to attackers who do not yet have access to the
important to protect the confidentiality of SWID tag information that endpoint. For this reason, it is important to protect the
has been collected from an endpoint, not because those tags confidentiality of SWID/CoSWID tag information that has been
individually contain sensitive information, but because the collected from an endpoint, not because those tags individually
collection of SWID tags and their association with an endpoint contain sensitive information, but because the collection of SWID/
reveals information about that endpoint's attack surface. CoSWID tags and their association with an endpoint reveals
information about that endpoint's attack surface.
Finally, both the ISO-19770-2:2015 XML schema definition and the Finally, both the ISO-19770-2:2015 XML schema SWID definition and the
Concise SWID data definition allow for the construction of "infinite" CoSWID data definition allow for the construction of "infinite" tags
SWID tags or SWID tags that contain malicious content with the intent with link item loops or tags that contain malicious content with the
if creating non-deterministic states during validation or processing intent of creating non-deterministic states during validation or
of SWID tags. While software product vendors are unlikely to do processing of those tags. While software providers are unlikely to
this, SWID tags can be created by any party and the SWID tags do this, SWID/CoSWID tags can be created by any party and the SWID/
collected from an endpoint could contain a mixture of vendor and non- CoSWID tags collected from an endpoint could contain a mixture of
vendor created tags. For this reason, tools that consume SWID tags vendor and non-vendor created tags. For this reason, tools that
ought to treat the tag contents as potentially malicious and employ consume SWID/CoSWID tags ought to treat the tag contents as
input sanitizing on the tags they ingest. potentially malicious and employ input sanitizing and loop detection
on the tags they ingest.
7. Acknowledgments 7. Acknowledgments
TBD TBD
8. Change Log 8. Change Log
Changes from version 03 to version 09: Changes from version 03 to version 11:
o Reduced representation complexity of the media-entry type and o Reduced representation complexity of the media-entry type and
removed the section describing the older data structure. removed the section describing the older data structure.
o Added more signature schemes from COSE o Added more signature schemes from COSE
o Included a minimal required set of normative language o Included a minimal required set of normative language
o Reordering of attribute name to integer label by priority o Reordering of attribute name to integer label by priority
according to semantics. according to semantics.
o Added an IANA registry for CoSWID items supporting future o Added an IANA registry for CoSWID items supporting future
extension. extension.
o Cleaned up IANA registrations, fixing some inconsistencies in the o Cleaned up IANA registrations, fixing some inconsistencies in the
table labels. table labels.
o Added additional CDDL sockets for resource collection entries o Added additional CDDL sockets for resource collection entries
skipping to change at page 57, line 12 skipping to change at page 61, line 39
5: Overview and vocabulary", ISO/IEC 19770-5:2015, 5: Overview and vocabulary", ISO/IEC 19770-5:2015,
November 2013. November 2013.
[SEMVER] Preston-Werner, T., "Semantic Versioning 2.0.0", n.d., [SEMVER] Preston-Werner, T., "Semantic Versioning 2.0.0", n.d.,
<https://semver.org/spec/v2.0.0.html>. <https://semver.org/spec/v2.0.0.html>.
[SWID] "Information technology - Software asset management - Part [SWID] "Information technology - Software asset management - Part
2: Software identification tag", ISO/IEC 19770-2:2015, 2: Software identification tag", ISO/IEC 19770-2:2015,
October 2015. October 2015.
[SWID-GUIDANCE]
Waltermire, D., Cheikes, B., Feldman, L., and G. Witte,
"Guidelines for the Creation of Interoperable Software
Identification (SWID) Tags", NISTIR 8060, April 2016,
<https://doi.org/10.6028/NIST.IR.8060>.
[W3C.REC-css3-mediaqueries-20120619] [W3C.REC-css3-mediaqueries-20120619]
Rivoal, F., "Media Queries", World Wide Web Consortium Rivoal, F., "Media Queries", World Wide Web Consortium
Recommendation REC-css3-mediaqueries-20120619, June 2012, Recommendation REC-css3-mediaqueries-20120619, June 2012,
<http://www.w3.org/TR/2012/ <http://www.w3.org/TR/2012/
REC-css3-mediaqueries-20120619>. REC-css3-mediaqueries-20120619>.
[W3C.REC-xmlschema-2-20041028]
Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes
Second Edition", World Wide Web Consortium Recommendation
REC-xmlschema-2-20041028, October 2004,
<http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.
[W3C.REC-xpath20-20101214] [W3C.REC-xpath20-20101214]
Berglund, A., Boag, S., Chamberlin, D., Fernandez, M., Berglund, A., Boag, S., Chamberlin, D., Fernandez, M.,
Kay, M., Robie, J., and J. Simeon, "XML Path Language Kay, M., Robie, J., and J. Simeon, "XML Path Language
(XPath) 2.0 (Second Edition)", World Wide Web Consortium (XPath) 2.0 (Second Edition)", World Wide Web Consortium
Recommendation REC-xpath20-20101214, December 2010, Recommendation REC-xpath20-20101214, December 2010,
<http://www.w3.org/TR/2010/REC-xpath20-20101214>. <http://www.w3.org/TR/2010/REC-xpath20-20101214>.
[X.1520] "Recommendation ITU-T X.1520 (2014), Common [X.1520] "Recommendation ITU-T X.1520 (2014), Common
vulnerabilities and exposures", April 2011. vulnerabilities and exposures", April 2011.
skipping to change at page 58, line 15 skipping to change at page 62, line 45
[RFC8322] Field, J., Banghart, S., and D. Waltermire, "Resource- [RFC8322] Field, J., Banghart, S., and D. Waltermire, "Resource-
Oriented Lightweight Information Exchange (ROLIE)", Oriented Lightweight Information Exchange (ROLIE)",
RFC 8322, DOI 10.17487/RFC8322, February 2018, RFC 8322, DOI 10.17487/RFC8322, February 2018,
<https://www.rfc-editor.org/info/rfc8322>. <https://www.rfc-editor.org/info/rfc8322>.
[RFC8520] Lear, E., Droms, R., and D. Romascanu, "Manufacturer Usage [RFC8520] Lear, E., Droms, R., and D. Romascanu, "Manufacturer Usage
Description Specification", RFC 8520, Description Specification", RFC 8520,
DOI 10.17487/RFC8520, March 2019, DOI 10.17487/RFC8520, March 2019,
<https://www.rfc-editor.org/info/rfc8520>. <https://www.rfc-editor.org/info/rfc8520>.
[SWID-GUIDANCE]
Waltermire, D., Cheikes, B., Feldman, L., and G. Witte,
"Guidelines for the Creation of Interoperable Software
Identification (SWID) Tags", NISTIR 8060, April 2016,
<https://doi.org/10.6028/NIST.IR.8060>.
Appendix A. Signed Concise SWID Tags using COSE Appendix A. Signed Concise SWID Tags using COSE
SWID tags, as defined in the ISO-19770-2:2015 XML schema, can include SWID tags, as defined in the ISO-19770-2:2015 XML schema, can include
cryptographic signatures to protect the integrity of the SWID tag. cryptographic signatures to protect the integrity of the SWID tag.
In general, tags are signed by the tag creator (typically, although In general, tags are signed by the tag creator (typically, although
not exclusively, the vendor of the software component that the SWID not exclusively, the vendor of the software component that the SWID
tag identifies). Cryptographic signatures can make any modification tag identifies). Cryptographic signatures can make any modification
of the tag detectable, which is especially important if the integrity of the tag detectable, which is especially important if the integrity
of the tag is important, such as when the tag is providing reference of the tag is important, such as when the tag is providing reference
integrity measurements for files. integrity measurements for files.
 End of changes. 130 change blocks. 
385 lines changed or deleted 544 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/