SACM C. Coffin Internet-Draft D. Haynes Intended status: Standards Track C. Schmidt Expires:December 10, 2016March 16, 2017 The MITRE Corporation J. Fitzgerald-McKay Department of DefenseJune 8,September 12, 2016SWIDSoftware Message and Attributes for PA-TNCdraft-coffin-sacm-nea-swid-patnc-01draft-coffin-sacm-nea-swid-patnc-02 Abstract This document specifies theSWIDSoftware Message and Attributes forPA-TNC.PA- TNC. It extends the PA-TNC specification [RFC5792] by providing specific attributes and message exchanges to allow endpoints to report their software inventory information to a NEA server (as described in[RFC5209]) using SWID tags [SWID].[RFC5209]). Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onDecember 10, 2016.March 16, 2017. Copyright Notice Copyright (c) 2016 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Scope and Audience . . . . . . . . . . . . . . . . . . . 4 1.2. Keywords . . . . . . . . . . . . . . . . . . . . . . . .76 1.3. Definitions . . . . . . . . . . . . . . . . . . . . . . .76 2. Background . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.1.Role of SWID Message and Attributes for PA-TNC . . . . . 8 2.2.Supported Use Cases . . . . . . . . . . . . . . . . . . .9 2.2.1.7 2.1.1. Use Software Inventory as a Factor in Determining Endpoint Access . . . . . . . . . . . . . . . . . . .9 2.2.2.8 2.1.2. Maintain a Central Repository Reflecting an Endpoint's Software Inventory . . . . . . . . . . . .9 2.2.3.8 2.1.3. PA-TNC Use Cases . . . . . . . . . . . . . . . . . .10 2.3.9 2.2. Non-supported Use Cases . . . . . . . . . . . . . . . . .10 2.4.9 2.3. Specification Requirements . . . . . . . . . . . . . . .11 2.5.10 2.4. Non-Requirements . . . . . . . . . . . . . . . . . . . .13 2.6.11 2.5. Assumptions . . . . . . . . . . . . . . . . . . . . . . .13 2.7.11 2.6. Non-Assumptions . . . . . . . . . . . . . . . . . . . . .13 2.8. SWID12 2.7. Software Message and Attributes for PA-TNC Diagram Conventions . . . . . . . . . . . . . . . . . . . . . . .1412 3.SWIDSoftware Message and Attributes for PA-TNC System Requirements .14 3.1. SWID Tags as Inventory Evidence . . . . . . . . . . . . . 15 3.2. Basic SWID Tag Inventory Exchange . . .. . . . . . . . .15 3.3. SWID Tag Identifiers .. . . . . . . . . . . . . . 13 3.1. Basic Inventory Exchange . . .16 3.3.1. Tag Identifier Data. . . . . . . . . . . . . 13 3.2. Software Identifiers . . . .17 3.3.2. Tag Identifier Instances. . . . . . . . . . . . . .18 3.3.3. Comparing Tag14 3.2.1. Record Identifiersand Tag Identifier Instances . . .. . . . . . . . . . . . . . . . .. . 19 3.3.3.1. Matching Tag Identifiers Indicate the Same15 3.2.2. Using SoftwareProduct . . . . . . . . . . . .and Record Identifiers in SW Attributes . . . .20 3.3.3.2. Matching Tag Identifiers DO NOT Necessarily Indicate Identical Tag Files. . . . . . . . . .20 3.3.3.3. Matching Tag Identifier Instances MIGHT Indicate Identical Tag Files. . . . . . . 16 3.3. Targeted Requests . . . . . . . .21 3.3.3.4. Differing Tag Identifiers DO NOT Necessarily Indicate Different Software Products. . . . . .21 3.3.4. Using Tag Identifiers in SWID Attributes. . . . . .2216 3.4.Targeted Requests .Monitoring Changes in an Endpoint's Software Inventory Evidence Collection . . . . . . . . . . . . . . . . . . .2217 3.5.Monitoring Changes in an Endpoint's SWID Tag Collection . 23 3.6.Reporting Change Events . . . . . . . . . . . . . . . . .25 3.6.1.19 3.5.1. Change Event Records . . . . . . . . . . . . . . . .25 3.6.2.20 3.5.2. Updating Inventory Knowledge Based on Events . . . .27 3.6.3.21 3.5.3. Using Event Records inSWIDSW Attributes . . . . . . .28 3.6.4.. 22 3.5.4. Partial and Complete Lists of Event Records inSWIDSW Attributes . . . . . . . . . . . . . . . . . . . . .28 3.6.5.22 3.5.5. Synchronizing Event Identifiers and Epochs . . . . .30 3.7. Supporting Multiple Instances of a Single Tag .24 3.6. Subscriptions . . . . .32 3.7.1. Inventory Reporting in the Presence of Multiply- Instantiated Tags. . . . . . . . . . . . . . . . . 26 3.6.1. Establishing Subscriptions .32 3.7.2. Event Reporting in the Presence of Multiply Instantiated Tags. . . . . . . . . . . .. . . . . . 32 3.8. Subscriptions . . . . . . . . . . . . . . . . . . . . . . 32 3.8.1. Establishing Subscriptions . . . . . . . . . . . . . 33 3.8.2.26 3.6.2. Managing Subscriptions . . . . . . . . . . . . . . .33 3.8.3.27 3.6.3. Terminating Subscriptions . . . . . . . . . . . . . .34 3.8.4.27 3.6.4. Subscription Status . . . . . . . . . . . . . . . . .35 3.8.5.28 3.6.5. Fulfilling Subscriptions . . . . . . . . . . . . . .35 3.8.5.1.28 3.6.5.1. Subscriptions Reporting Inventories . . . . . . .37 3.8.5.2.30 3.6.5.2. Subscriptions Reporting Events . . . . . . . . .37 3.8.5.3.30 3.6.5.3. Targeted Subscriptions . . . . . . . . . . . . .38 3.8.5.4.31 3.6.5.4. No Subscription Consolidation . . . . . . . . . .39 3.8.5.5.32 3.6.5.5. Delayed Subscription Fulfillment . . . . . . . .39 3.9.32 3.7. Multiple Sources ofSWID Tags . . . . . . . . . . . . .Software Inventory Evidence Records .40 3.10.33 3.8. Error Handling . . . . . . . . . . . . . . . . . . . . .4134 4.SWIDSoftware Message and Attributes for PA-TNC Protocol . . . . .. . 4336 4.1. PA Subtype (AKA PA-TNC Component Type) . . . . . . . . .4336 4.2. PB-TNC and PA-TNC Messages . . . . . . . . . . . . . . .4436 4.3. PA-TNC Attribute Header . . . . . . . . . . . . . . . . .4437 4.4.SWIDSW Attribute Overview . . . . . . . . . . . . . . . . .45. 38 4.5.SWIDSW Attribute Exchanges . . . . . . . . . . . . . . . .47. 40 4.6.SWIDSoftware Message and Attributes for PA-TNC Attribute Enumeration . . . . . . . . . . . . . . . . . . . . . . .4942 4.7. Normalization of Text Encoding . . . . . . . . . . . . .5043 4.8. Request IDs . . . . . . . . . . . . . . . . . . . . . . .5144 4.9.SWIDSW Request . . . . . . . . . . . . . . . . . . . . . .52. 45 4.10.SWID TagSoftware Identifier Inventory . . . . . . . . . . . . . .5648 4.11.SWID TagSoftware Identifier Events . . . . . . . . . . . . . . .5951 4.12.SWID TagSoftware Inventory . . . . . . . . . . . . . . . . . . .6456 4.13.SWID TagSoftware Events . . . . . . . . . . . . . . . . . . . . .6658 4.14. Subscription Status Request . . . . . . . . . . . . . . .7062 4.15. Subscription Status Response . . . . . . . . . . . . . .7062 4.16. PA-TNC Error as Used bySWIDSoftware Message and Attributes for PA-TNC . . . . . . . . . . . . . . . . . . . . . . .. . 7264 4.16.1.SWID_ERROR, SWID_SUBSCRIPTION_DENIED_ERRORSW_ERROR, SW_SUBSCRIPTION_DENIED_ERROR andSWID_SUBSCRIPTION_ID_REUSE_ERRORSW_SUBSCRIPTION_ID_REUSE_ERROR Information . . . . . 66 4.16.2. SW_RESPONSE_TOO_LARGE_ERROR Information . . . . . . 68 4.16.3. SW_SUBSCRIPTION_FULFILLMENT_ERROR Information . . . 69 5. Supported Data Models . . . . . .74 4.16.2. SWID_RESPONSE_TOO_LARGE_ERROR Information . .. . .75 4.16.3. SWID_SUBSCRIPTION_FULFILLMENT_ERROR Information. .77 5. Security Considerations. . . . . . . . . 71 5.1. ISO 2015 SWID Tags using XML . . . . . . . . . .78 5.1. Evidentiary Value of SWID Tags. . . . 71 5.1.1. Guidance on Normalizing Source Data to ISO 2015 SWID Tags using XML . . . . . . . . .79 5.2. Integrity of the SWID Tag Collection. . . . . . . . . .79 5.3. Sensitivity72 5.1.2. Guidance on Creation ofCollectedSoftware Identifiers from ISO 2015 SWID Tags . . . . . . . . . . . . . .80 5.4. Integrity of Endpoint Records. . . . . 72 5.2. ISO 2009 SWID Tags using XML . . . . . . . . .81 5.5. SWID-PC Access Permissions. . . . . 72 5.2.1. Guidance on Normalizing Source Data to ISO 2015 SWID Tags using XML . . . . . . . . . .82 5.6. Sanitization of Tag Fields. . . . . . . . . 72 5.2.2. Guidance on Creation of Software Identifiers from ISO 2015 SWID Tags . . . . . .82 5.7. Tag Library Poisoning. . . . . . . . . . . . . 73 6. Security Considerations . . . . .83 5.8. PA-TNC Security Threats. . . . . . . . . . . . . .. . . 83 6. Privacy Considerations . . . . . . .73 6.1. Evidentiary Value of Software Inventory Evidence Records 73 6.2. Sensitivity of Collected Records . . . . . . . . . . . .83 7. Relationship to Other Specifications74 6.3. Integrity of Endpoint Records . . . . . . . . . . . .84 8. IANA Considerations. . 75 6.4. SW-PC Access Permissions . . . . . . . . . . . . . . . . 75 6.5. Sanitization of Record Fields . . .84 8.1. Registry for PA-TNC Attribute Types. . . . . . . . . . .85 8.2. Registry for76 6.6. PA-TNCError Codes . . . . . . . . . . . . . 85 8.3. Registry for PA Subtypes . . . . . . . . . . . . . . . . 86 9. References . . . . . . . . . . . . . . . . . . . . . .Security Threats . . .86 9.1. Normative References. . . . . . . . . . . . . . 76 7. Privacy Considerations . . . .87 9.2. Informative References. . . . . . . . . . . . . . . 76 8. Relationship to Other Specifications . .87 Appendix A. Examples. . . . . . . . . . 77 9. IANA Considerations . . . . . . . . . . . .88 A.1. A Simple SWID Tag. . . . . . . . . 77 9.1. Registry for PA-TNC Attribute Types . . . . . . . . . . .88 A.2. SWID Request Attributes77 9.2. Registry for PA-TNC Error Codes . . . . . . . . . . . . . 78 9.3. Registry for PA Subtypes . . . .90 A.2.1. Simple Request. . . . . . . . . . . . 79 9.4. Registry for Software Data Models . . . . . . .90 A.2.2. Subscription Request for Events. . . . . 80 10. References . . . . . .91 A.2.3. Targeted Request. . . . . . . . . . . . . . . . . .91 A.3. SWID Response Attributes. 80 10.1. Normative References . . . . . . . . . . . . . . .93 A.3.1. SWID Tag Identifier Events Attribute. . . 80 10.2. Informative References . . . . .93 A.3.2. SWID Tag Inventory Attribute. . . . . . . . . . . .9580 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .9681 1. Introduction 1.1. Scope and Audience The Network Endpoint Assessment (NEA) Working Group defines an open solution architecture that enables network operators to collect and utilize information about endpoint configuration and state. This information can be used to enforce policies, monitor endpoint health, and for many other activities. Information about the software present on an endpoint is an important consideration for such activities.Software IdentificationSuch information can come from multiple sources, including tag files (such as ISO SWID tags(SWID tags) [SWID][SWID], reports from third party inventory tools, output from package managers, and other sources. The attributes defined in this document areformatted records (usually XML documents) that identify a specificused to communicate softwareproduct. In this case, a "software product" can beinventory evidence, collected from adistinct release of some piecerange ofsoftware, such as an operating system, web browser, etc.; a patch or plug-in for such an application; or a suite of such applications. The SWID specification describespossible sources, from theformat of these documents as well as rules governing their use on computer systems. In particular, software that supports SWID tags is expected to deposit an identifying tagposture collector on the endpointwhen the software is installed, modify or replace the tag as the software is updated, and delete the tag when the software is uninstalled. SWID tags can also be created and managed by third- party tools or by local enterprises, allowing for tags to indicate the presence of software even when that software's manufacturer has not included SWID support. As such, by collecting a list of tags on an endpoint, one receives evidence as to the software present on that endpoint. The attributes defined in this document are usedtocommunicate software inventory evidence, intheform of SWID tags, between the posture collector andposture validator on a NEA Server using the PA-TNC interface, as shown in Figure 1 below. +-------------+ +--------------+ | Posture | <--------PA--------> | Posture | | Collectors | | Validators | | (1 .. N) | | (1 .. N) | +-------------+ +--------------+ | | | | | | +-------------+ +--------------+ | Posture | | Posture | | Broker | <--------PB--------> | Broker | | Client | | Server | +-------------+ +--------------+ | | | | +-------------+ +--------------+ | Posture | | Posture | | Transport | <--------PT--------> | Transport | | Client | | Server | | (1 .. N) | | (1 .. N) | +-------------+ +--------------+ NEA CLIENT NEA SERVER Figure 1: NEA Reference ModelThe useThis specification defines a new set ofstandard protocolsPA-TNC attributes, carried over PA-TNC messages, which are used to communicate requests for software information and software events, andformatsfor conveyingevidence about endpoint state (in this case, endpoint inventory information) hasthat information back to anumberNEA Server. Possession ofbenefits. The usea list ofstandard protocolsan endpoint's installed software is very useful in understanding andformats facilitates interoperability between products developed by different vendors. This allows consumers to select the product that has features that best fit withmaintaining theneedssecurity state oftheir environment, withan enterprise. For example, if an enterprise policy requires theexpectation that it will be able to interoperate with other parts of their infrastructure (at least with regard to the aforementioned protocols and formats). In addition, because a standard is expected to be implemented by multiple independent parties, this means that the standard protocols and formats receive more review than might be expected in a proprietary solution. When the standard is managed by a group that is responsive to feedback from such implementers, as is the case with the IETF, this can lead to improvements in efficiency and security of those protocols and formats. For these reasons, a standard means of conveying endpoint inventory information such as the one described in this document provides significant value to users. Vendors benefit from utilizing SWIDs to serve as evidence of software inventory because it reduces their need to develop remote software inventory tools for the increasing variety of endpoint platforms. If those endpoints support SWID Message and Attributes for PA-TNC, vendors can use these protocols to gather software inventory information remotely. This specification defines a new set of PA-TNC attributes, carried over PA-TNC messages, which are used to communicate requests for SWID tags and events surrounding those tags, and for conveying that information back to a NEA Server. Possession of a list of an endpoint's SWID tags is very useful in understanding and maintaining the security state of an enterprise. For example, if an enterprise policy requires the presencepresence of certain pieces of software and/or prohibits the presence of other software,SWID tagsreported software inventory lists can be used to indicate compliance or non-compliance with these requirements.SWID tags indicating softwareSoftware presence and the patch level of that software can be compared to vulnerability or threat alerts to determine an endpoint's exposure to attack.SWID tags provide a great deal of information about unfamiliar software products, including the software author and potentially including where the software is installed on the endpoint and what files on the endpoint are associated with this installed software.All of these uses make an understanding of an endpoint'sSWID tagsoftware collection highly useful to NEA Servers and other enterprise security applications. Before reading this specification any further, the reader should review and understand the NEA reference architecture as described in the Network Endpoint Assessment (NEA): Overview and Requirements [RFC5209]. The reader should also understand the capabilities and requirements common to PA-TNC interfaces as defined in RFC 5792 [RFC5792]. This document is based on standards published by the Trusted Computing Group's Trusted Network Communications (TNC) workgroup. The TNC and NEA architectures are interoperable and the following components are equivalent: +---------------------------------------+-----------------------+ | TNC Component | NEA Component | +---------------------------------------+-----------------------+ | Integrity Measurement Verifier (IMV) | Posture Validator | | | | | Integrity Measurement Collector (IMC) | Posture Collector | | | | | TNC Server (TNCS) | Posture Broker Server | | | | | TNC Client (TNCC) | Posture Broker Client | +---------------------------------------+-----------------------+ Table 1: Equivalent components in TNC and NEA architectures 1.2. Keywords The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this specification are to be interpreted as described in RFC 2119 [RFC2119]. This specification does not distinguish blocks of informative comments and normative requirements. Therefore, for the sake of clarity, note that lower case instances of must, should, etc. do not indicate normative requirements. 1.3. Definitions This section defines terms with special meaning within this document.SWID-PCSW-PC - A Posture Collector (PC) that conforms to this specification. Note that such a posture collector might also support other PA-TNC exchanges beyondSWIDSoftware Message and Attributes for PA-TNC.SWID-PVSW-PV - A Posture Validator (PV) that conforms to this specification. Note that such a posture verifier might also support other PA-TNC exchanges beyondSWIDSoftware Message and Attributes for PA-TNC. SW Attribute - This is a PA-TNC attribute (as defined in RFC 5792 [RFC5792] extension for conveying software inventory information. This specification defines several new attribute types. Endpoint'sSWID TagSoftware Inventory Evidence Collection - The set ofSWID tagsinformation regarding the set of software installedand managedon an endpointfor software installed on that endpoint.and expressed using one of the Software Message and Attributes data models, as described in the Software Data Model IANA table (see Section 9.4. An endpoint'sSWID tagsoftware inventory evidence collection might includeSWID tagsinformation created by or derived from multiple sources, including but not limited to SWID tag files deposited on the file system during software installation,SWID tagsinformation generated to report output from software discovery tools, andSWID tagsinformation dynamically generated by a software or package management system on an endpoint.2. Background 2.1. RoleSoftware Inventory Evidence Record - The endpoint's Software Inventory Evidence Collection is composed ofSWID"records". Each record corresponds to one installed instance of a particular software product as reported by some data source. It is possible for a single installed instance to have multiple software inventory evidence records in an endpoint's Software Inventory Evidence Collection - this can happen if multiple sources all report the same software installation instance. Software Identifier - A string associated with a specific version of a specific software product. Each supported Software Message and Attributes for PA-TNCThe International Organizationdata model has its own rules forStandardization andhow a Software Identifier (see Section 3.2) is derived from theInternational Electrotechnical Commission (ISO/IEC) publishedrepresentation of thespecification governing SWID tag construction and use in 2009. [SWID] Sincegiven software product using thattime,data model, and different sources for this information might populate relevant information differently. As such, while each Software Identifier uniquely identifies agrowing number of vendors have integrated SWID tags into theirspecific softwareproducts. Doing so significantly simplifiesproduct, thetask of identifying these pieces of software: instead of relying on discovery processes that look for clues as tosame softwarepresence, such as the presence of particular files or registry keys, a readily available list of SWID tags provides simple and immediate evidence as to the presence of the given piece of software. SWID tags can alsoproduct might beuseful even when a piece of software does not supply the tags itself. Discovery processes are permitted to express their findings using SWID tags, place these in the endpoint's SWID tag collection,associated with multiple Software Identifiers reflecting differences between different information sources andmaintain them like vendor-created SWID tags.supported data models. 2. Background 2.1. Supported Use Cases Thismeans that an endpoint's SWID tag collection is not necessarily limited to containing SWID tagssection describes the Software Message and Attributes for PA-TNC use cases supported by this specification. The primary use of exchanging softwarewhose authors have takeninventory information over thetimePA-TNC interface is tointegrate SWID maintenance into their installation and update processes. Similarly, software and package managers on an endpoint (such as RPM and YUM) keep records of installed software, and these records can be exported asenable aseries of SWID tags, allowing these managerschallenger (e.g. NEA Server) toexpose their informationobtain inventory evidence aboutsoftware inventoriessome system in astandards-based manner. Finally, for organizationsway thatcentrally manage the distribution of software, in-house-developed SWID tags can be addedconforms toanyNEA procedures and expressed using a standard format. Collected softwareproduct that does not nativelyinformation can supportSWID tags allowing the organizationa range of security activities including determining whether an endpoint is permitted toaccurately identify anyconnect to the enterprise, determining which endpoints contain softwareit has distributed. Thethat requires patching, and similar activities. 2.1.1. Use Software Inventory as a Factor in Determining Endpoint Access Some enterprises might define security policies that require connected endpoints to have certain pieces of security software installed. By contrast, some security policies might prevent access by endpoints that have certain prohibited pieces of software installed, such as applications that pose known security risks. To support such policies, the NEA Server needsaccesstothis inventorycollect evidenceif itindicating the software inventory of an endpoint that is seeking touse this informationinitiate or continue connectivity toassess endpoint compliance with policy. The SWIDthe enterprise. Software Message and Attributes for PA-TNCspecification has been created for this purpose. Specifically, the attributes defined in this specification allow a Posture Validator to request evidence offacilitates policy decisions that consider an endpoint's software inventoryin the form of SWID tags and allowby providing thePosture Collector to respondNEA Server with software inventory information from theappropriate information. It is not necessaryendpoint. The SW-PC can provide a complete or partial inventory tounderstandthedetails of SWID tag construction and maintenanceSW-PV as required tounderstand the behaviors described in the SWID Message and Attributes for PA-TNC specification, and it is beyond the scope ofdetermine policy compliance. The SW-PV can then use thisspecification to discuss the detailsas evidence ofthe SWID standard. Implementers, however, will likely need to be familiarcompliance or non-compliance withthe SWID tag format and howenterprise policy. 2.1.2. Maintain a Central Repository Reflecting an Endpoint's Software Inventory Many tools can use information about an endpoint's software inventory tolocate tags onmonitor and enforce the security of anendpoint. The SWID specification is available from ISO/IEC at http://www.iso.org/iso/catalogue_detail.htm?csnumber=53670. The XML schema forenterprise. For example, aSWID tag file is available from ISO: http://standards.iso.org/iso/19770/-2/2009/schema.xsd. The most current workingsoftware patching service can use an endpoint's software inventory to determine whether certain endpoints have software that requires patching. A vulnerability management tool might identify endpoints with known vulnerabilities (patched or otherwise) andproduction versionsuse this to gauge enterprise exposure to attack. A license management tool might verify that all copies ofthe XML schemaa particular piece of software are accounted forSWID tags can be found inwithin thedirectory listing at http://standards.iso.org/iso/19770/-2/.enterprise. TheUS National Institutepresence ofStandards and Technology (NIST) also has published guidelines for SWID tag creation, which provide further guidance for those interested ina central repository representing a real-time understanding of each endpoint's software inventory facilitates all such activities. Using a central repository that can ensure theuse and best practices surrounding SWID tags. [NIST-SWID] 2.2. Supported Use Cases This section describesfreshness of its collected information is generally more efficient than having each tool collect theSWIDsame inventory information from each endpoint individually and leads to a more consistent understanding of enterprise state. Software Message and Attributes for PA-TNCuse cases supported bysupports thisspecification. The primary useactivity through a number ofexchanging SWID tag information over the PA-TNC interface is to enablemechanisms. As noted above, it allows achallenger (e.g. NEA Server)SW-PC toobtain inventory evidence about some system inprovide away that conforms to NEA procedures while taking advantagecomplete list of software present in an endpoint's Software Inventory Evidence Collection to thesimplicity and precision of SWID tags. Collected SWID tagsSW-PV, which cansupportthen pass this information on to arange of security activities including determining whether an endpoint is permittedcentral repository such as a Configuration Management Database (CMDB) or similar application. In addition, SW- PCs are required toconnectbe able tothe enterprise, determining which endpoints contain software that requires patching, and similar activities. 2.2.1. Usemonitor for changes to an endpoint's Software Inventoryas a FactorEvidence Collection inDetermining Endpoint Access Some enterprises might define security policies that require connected endpoints to have certain pieces of security software installed. By contrast, some security policies might prevent access by endpoints that have certain prohibited piecesnear real-time and push reports ofsoftware installed, suchchanges to the SW-PV asapplications that pose known security risks. To supportsoon as those changes are detected. Thus any central repository fed by a SW-PV receiving suchpolicies,information can be updated soon after theNEA Server needs to collect evidence indicatingchange occurs. Keeping such a central repository synchronized with thesoftware inventorystate ofan endpointeach endpoint's Software Inventory Evidence Collection allows tools thatis seeking to initiate or continue connectivityuse this information for their own security activities tothe enterprise. SWIDmake decisions in a consistent, efficient manner. 2.1.3. PA-TNC Use Cases Software Message and Attributes for PA-TNCfacilitates policy decisions that consider an endpoint's software inventory by providing the NEA Server with a list of the SWID tags inare intended to operate over theendpoint's SWID tag collection. The tags in this collection serve as evidencePA-TNC interface and, as such, are intended to meet theendpoint's installed software. The SWID-PC can provide a complete or partial list of tags touse cases set out in theSWID-PV as required to determine policy compliance. The SWID-PV can thenPA-TNC specification. 2.2. Non-supported Use Cases Some use cases not covered by thisas evidenceversion ofcompliance or non-compliance with enterprise policy. 2.2.2. Maintain a Central Repository Reflecting an Endpoint'sSoftwareInventory Many tools can use information about an endpoint's software inventory to monitorMessage andenforceAttributes for PA-TNC include: o This specification does not address how thesecurity of an enterprise. For example, a software patching service can use anendpoint'ssoftware inventorySoftware Inventory Evidence Collection is populated. In particular, NEA components are not expected todetermine whether certain endpoints haveperform softwarethat requires patching. A vulnerability management tooldiscovery activities beyond compiling information in an endpoint's Software Inventory Evidence Collection. This collection mightidentify endpoints with known vulnerabilities (patchedpotentially come from multiple sources on the endpoint (e.g., information generated dynamically by package management tools orotherwise) and use this to gaugediscovery tools, as well as SWID tag files discovered on the file system). While an enterpriseexposure to attack. A license management toolmightverify that all copies of a particular piecemake use of software discovery procedures to identify installed software such procedures areaccounted for withinoutside theenterprise. The presence of a central repository representing a real-time understandingscope ofeach endpoint's softwarethis specification. o This specification does not address converting inventoryfacilitates all such activities. Usinginformation expressed in acentral repository that can ensureproprietary format into thefreshnessstandard format used in the messages described in this specification. Instead, it focuses exclusively on defining interfaces for the transportation ofits collectedsoftware information in the expectation that this isgenerally more efficient than having each tool collectthesame inventory information from each endpoint individually and leads to a more consistent understanding of enterprise state. SWID Message and Attributesformat around which reporting tools will converge. o This specification provides no mechanisms forPA-TNC supports this activity through a number of mechanisms. As noted above, it allowsaSWID-PCposture validator toproviderequest acompletespecific list of software information based on arbitrary software properties. For example, requesting only information about software from a particular vendor is not supported. After thetags present in anendpoint'sSWID tagsoftware inventory evidence collection has been copied to some central location, such as theSWID-PV, whichCMDB, processes there canthen pass this informationperform queries based onto a central repositoryany criteria present in the collected information, but this specification does not address using suchas a Configuration Management Database (CMDB) or similar application. In addition, SWID-PCs are required to be able to monitor for changesqueries toan endpoint's SWID tagconstrain the initial collectionin near real-time and push reportsofchanges tothis information from theSWID-PV as soon as those changes are detected. Thus any central repository fed by a SWID-PV receiving suchendpoint. o This specification does not address utilization of properties of certain sources of software informationcan be updated soon afterthat might facilitate local tests (i.e., on thechange occurs. Keeping such a central repository synchronized withendpoint) of endpoint state. For example, thestateoptional package_footprint field ofeach endpoint'san ISO SWID tagcollection allows tools that use this information for their own security activities to make decisions incan contain aconsistent, efficient manner. 2.2.3. PA-TNC Use Cases SWID Messagelist of files andAttributes for PA-TNC are intended to operate overhash values associated with thePA-TNC interface and, as such, are intended to meetsoftware indicated by the tag. Tools on the endpoint can usecases set outthe values in this field to test for thePA-TNC specification. 2.3. Non-supported Use Cases Some use casespresence of the indicated files. Successful evaluation of such tests leads to greater assurance that the indicated software is present on the endpoint. Currently, most SWID tag creators do notcovered byprovide values for tag fields that support local testing. For thisversionreason, the added complexity ofSWIDsupporting endpoint testing using these fields is out of scope for this specification. Future versions of this specification might add support for such testing. 2.3. Specification Requirements Below are the requirements that the Software Message and Attributes for PA-TNCinclude: o Thisspecificationdoes not address how the endpoint's SWID tag collectionispopulated. In particular,required to meet in order to successfully play its role in the NEAcomponents arearchitecture. o Efficient The NEA architecture enables delay of network access until the endpoint is determined notexpectedtoperform software discovery activities beyond compilingpose a security threat to thetags in an endpoint's SWID tag collection. This collection might potentially come from multiple sourcesnetwork based on its asserted integrity information. To minimize user frustration, theendpoint (e.g., SWID tags generated dynamically by package management tools or discovery tools,Software Message and Attributes for PA-TNC ought to minimize overhead delays and make PA-TNC communications aswellrapid and efficient asSWID tag files discovered on the file system). While an enterprise might make use of software discovery procedures to identify installed software, especially softwarepossible. Efficiency is also important when one considers thatdoes not install or manage its own SWID tag, such proceduressome network endpoints areoutside the scope of this specification. o This specification does not address converting inventory information expressedsmall and low powered, some networks are low bandwidth and/or high latency, and some transport protocols (such as PT-EAP, Posture Transport (PT) Protocol for Extensible Authentication Protocol (EAP) Tunnel Methods [RFC7171]) or their underlying carrier protocol might allow only one packet in flight at aproprietary format into the SWID tag formattime orconverting a SWID tag into a proprietary format. Instead, it focuses exclusively on defining interfaces foronly one roundtrip. However, when thetransportationunderlying PT protocol imposes fewer constraints on communications, this protocol ought to be capable ofSWID tagstaking advantage of more robust communication channels (e.g. using larger messages or multiple roundtrips). o Scalable Software Message and Attributes for PA-TNC needs to be usable inthe expectationenterprises thatthis is the format around which reportingcontain tens of thousands of endpoints or more. As such, it needs to allow a security toolswill converge.to make decisions based on up-to-date information about an endpoint's software inventory without creating an excessive burden on the enterprise's network. o Interoperable This specificationprovides no mechanismsdefines the protocol fora posture validatorhow PCs and PVs can exchange and use software information torequestprovide aspecific list of tags based on arbitrary tag properties from the endpoint. For example, requesting only tags representingNEA Server with information about an endpoint's softwarefrominventory. Therefore aparticular vendorkey goal for this specification isnot supported. Afterensuring that all SW PCs and PVs, regardless of theendpoint's SWID tag collection has been copiedvendor who created them, are able tosome central location, such as the CMDB, processes there can perform queries based on any criteria presentinteroperate inthe collected SWID tags, but this specification does not address using such queries to constrain the initial collectiontheir performance ofthis information from the endpoint.these duties. o Support precise and complete historical reporting This specificationdoes not address utilizationoutlines capabilities that support real-time understanding ofcertain SWID tag fields designed to facilitate local tests (i.e., ontheendpoint)state of endpointstate. For example, the optional package_footprint field ofin aSWID tag can containnetwork in alistway that can be used by other tools. One means offilesfacilitating such an outcome is for a Configuration Management Database (CMDB) to be able to contain information about all endpoints connected to the enterprise for all points in time between the endpoint's first connection andhash values associated withthe present. In such a scenario, it is necessary that any PC be able to report any changes to its softwareindicated byinventory evidence collection in near real-time while connected and, upon reconnection to thetag. Tools onenterprise, be able to update theendpoint can useNEA Server (and through it thevalues in this fieldCMDB) with regard totest forthepresencestate of its software inventory evidence collection throughout theindicated files. Successful evaluation of such tests leads to greater assurance that the indicated software is present on the endpoint. Currently, most SWID tag creators doentire interval when it was notprovide values for tag fields that support local testing. For this reason, the added complexity of supporting endpoint testing using these fields is out of scope for this specification. Future versions of this specification might add support for such testing.connected. 2.4.Specification Requirements BelowNon-Requirements There arethecertain requirements that theSWIDSoftware Message and Attributes for PA-TNC specification explicitly is not required tomeet in ordermeet. This list is not exhaustive. o End tosuccessfully play its role inEnd Confidentiality This specification does not define mechanism for confidentiality, nor is this property automatically provided by PA-TNC interface use. Confidentiality is generally provided by theNEA architecture. o Efficient The NEA architecture enables delay of network access untilunderlying transport protocols, such as theendpoint is determined notPT Binding topose a security threatTLS [RFC6876] or PT-EAP Posture Transport for Tunneled EAP Methods [RFC7171] - see Section 8 for more information on related standards. Should users wish confidentiality protection of assessment instructions or results, this needs to be provided by parts of thenetwork based on its asserted integrity information. To minimize user frustration,NEA architecture other than this specification. 2.5. Assumptions Here are theSWIDassumptions that Software Message and Attributes forPA-TNC ought to minimize overhead delaysPA- TNC makes about other components in the NEA architecture. o Reliable Message Delivery The Posture Broker Client andmakePosture Broker Server are assumed to provide reliable delivery for PA-TNCcommunications as rapidmessages andefficient as possible. Efficiency is also important when one considers that some network endpoints are small and low powered, some networks are low bandwidth and/or high latency, and some transport protocols (such as PT-EAP, Posture Transport (PT) Protocol for Extensible Authentication Protocol (EAP) Tunnel Methods [RFC7171]) or their underlying carrier protocol might allow only one packet in flight at a time or only one roundtrip. However, whentherefore theunderlying PT protocol imposes fewer constraints on communications, this protocol ought to be capable of taking advantage of more robust communication channels (e.g. using larger messages or multiple roundtrips). o Loosely Coupled toAttributes sent between theSWID Specification BecauseSW PCs and theSWID specification is managed by ISO/IEC,PVs. In theIETF has no direct influence over this specificationevent that reliable delivery cannot be provided, the Posture Collector orany revisions madePosture Validator is expected toit. For this reason,terminate theSWIDconnection. 2.6. Non-Assumptions The Software Message and Attributes for PA-TNC specificationought to minimize its requirements and assumptions with regard to the structureexplicitly does not assume: o Authenticity andcontentAccuracy of theSWID tags. While some level of visibility into tag contents is required for certain features of this specification, minimization of such dependencies is necessary to improve compatibilitySoftware Inventory Evidence Collection withfuture revisions of the SWID specification. o Scalable SWID Message and Attributes for PA-TNC needs to be usable in enterprises that contain tens of thousands of endpoints or more. As such, it needsRegard toallow a security toolsEndpoint Inventory This specification makes no assumption as tomake decisions based on up-to-datewhether the software informationabout an endpoint'sthat it reports correctly reflect the softwareinventory without creating an excessive burdenstate on theenterprise's network. o Interoperableendpoint. This specificationdefinesdoes not attempt to detect when theprotocol for how PCs and PVs can exchangeendpoint is providing false information, either through malice or error, but instead focuses on correctly anduse SWID tagsreliably providing the reported Software Inventory Evidence Collection toprovide athe NEAServer with information about an endpoint's software inventory. Therefore a key goal forServer. Similarly, this specificationis ensuring that all SWID PCs and PVs, regardless of the vendor who created them, are ablemakes no assumption with regard tointeroperate in their performancethe completeness ofthese duties. o Support precise and complete historical reporting This specification is expected to outline capabilities that support real-time understandingthe Software Inventory Evidence Collection's coverage of thestatetotal set ofendpoint in a network in a waysoftware installed on the endpoint. It is possible, and even likely, thatcan be used by other tools. One means of facilitating such an outcomesome installed software isfornot represented by aConfiguration Management Database (CMDB) to be able to contain information about allrecord in an endpointsconnected to the enterpriseSoftware Inventory Evidence Collection. See Section 6 forall points in time betweenmore on this security consideration. 2.7. Software Message and Attributes for PA-TNC Diagram Conventions This specification defines theendpoint's first connectionsyntax of the Software Message and Attributes for PA-TNC using diagrams. Each diagram depicts thepresent. In such a scenario, it is necessary that any PC be able to report any changes to its SWID tag collectionformat and size of each field innear real-time while connected and, upon reconnection tobits. Implementations MUST send theenterprise, be ablebits in each diagram as they are shown from left toupdate the NEA Server (and through itright for each 32-bit quantity traversing theCMDB) with regarddiagram from top to bottom. Multi- octet fields representing numeric values MUST be sent in network (big endian) byte order. Descriptions of bit fields (e.g. flags) values refer to thestateposition ofits SWID tag collection throughouttheentire interval when it was not connected. 2.5. Non-Requirements Therebit within the field. These bit positions arecertain requirements thatnumbered from theSWIDmost significant bit through the least significant bit. As such, an octet with only bit 0 set would have a value of 0x80 (1000 0000), an octet with only bit 1 set would have a value of 0x40 (0100 0000), and an octet with only bit 7 set would have a value of 0x01 (0000 0001). 3. Software Message and Attributes for PA-TNC System Requirements The Software Message and Attributes for PA-TNC specificationexplicitly is not required to meet. This list is not exhaustive. o End to End Confidentiality SWID tags have no inherent mechanismfacilitates the exchange of software inventory and event information. Specifically, each application supporting Software Message and Attributes forconfidentiality, nor is this property automatically provided byPA-TNCinterface use. Confidentialityincludes a component known as the SW-PC that receives messages sent with the SW Attributes component type. The SW-PC isgenerally provided byalso responsible for sending appropriate SW Attributes back to theunderlying transport protocols, such asSW-PV in response. This section outlines what software inventories and events are and thePT Bindingrequirements on SW-PCs and SW-PVs in order toTLS [RFC6876] or PT-EAP Posture Transport for Tunneled EAP Methods [RFC7171] - see Section 7 for more information on related standards. Should users wish confidentiality protectionsupport the stated use cases ofassessment instructions or results,thisneeds to be provided by parts ofspecification. 3.1. Basic Inventory Exchange In theNEA architecture other thanmost basic exchange supported by thisspecification. 2.6. Assumptions Here arespecification, a SW-PV sends a request to theassumptions that SWID Message and Attributes for PA-TNC makes about other componentsSW-PC requesting all inventory information in theNEA architecture. o Reliableendpoint's Software Inventory Evidence Collection. This simple exchange is shown in Figure 2. +-------------+ +--------------+ | SW-PC | | SW-PV | Time +-------------+ +--------------+ | | | | |<--------------SW Request----------------| | | | | |---------------SW Response-------------->| | | | V Figure 2: Basic SW MessageDelivery The Posture Broker Client and Posture Broker Server are assumed to provide reliable delivery for PA-TNC messages and therefore the SWID Attributes sent between the SWID PCs and the PVs. InExchange Upon receiving such a SW Request from theevent that reliable delivery cannot be provided,SW-PV, thePosture Collector or Posture ValidatorSW-PC is expected toterminatecollect all inventory information from theconnection. 2.7. Non-Assumptions The SWID Messageendpoint's software evidence collection andAttributesplace it within its response attribute. SW-PVs MUST discard without error any SW Response attributes that they receive forPA-TNC specification explicitly doeswhich they do notassume: o Authenticity and Accuracy of SWID tags with Regardknow the SW Request parameters that led toEndpoint Inventorythis SW Response. Thisspecification makes no assumption asis due towhethertheSWID tagsfact thatit reports are authentic tags (rather than maliciously generated) orthe SW Request includes parameters thatthese tags correctly reflect software state oncontrol theendpoint. This specification does not attempt to detect whennature of theendpoint is providing false information, either through malice or error, but instead focuses on correctlyresponse (as will be described in the following sections) and without knowing those parameters the SW Response cannot be reliablyprovidinginterpreted. Most often receiving an unsolicited SW Response attribute happens when a NEA Server has multiple SW-PVs; one SW-PV sends a SW Request but, unless exclusive delivery is used by theexisting SWID tags toSW-PC in sending theNEA Server. Similarly,response, both SW-PVs receive copies of the resulting SW Response. In thisspecification makes no assumption with regard tocase, thecompleteness ofSW-PV that didn't send theSWID tag collection's coverage ofSW Request would lack thetotal set of software installed oncontext necessary to correctly interpret theendpoint. It is possible,SW Response it received andeven likely,would simply discard it. Note, however, thatsome installed software is not represented byproprietary measures might allow atag in an endpoints SWID tag collection. See Section 5 for more on this security consideration. 2.8. SWID Message and Attributes for PA-TNC Diagram Conventions This specification defines the syntax ofSW-PV to discover theSWID Message and AttributesSW Request parameters forPA-TNC using diagrams. Each diagram depicts the format and size of each field in bits. Implementations MUSTa SW Response even if that SW-PV did not send thebits in each diagram as theygiven SW Request. As such, there is no blanket requirement for a SW- PV to discard all SW Responses to SW Request the SW-PV did not generate itself, only that SW-PVs areshown from leftrequired torightdiscard SW Responses foreach 32-bit quantity traversing the diagram from topwhich they cannot get the necessary context tobottom. Multi- octet fields representing numeric values MUST be sent in network (big endian) byte order. Descriptions of bit fields (e.g. flags) values referinterpret. In the case that it is possible to do so, theposition ofSW-PC SHOULD send its SW Response attribute to thebit withinSW-PV that requested it using exclusive delivery as described in section 4.5 of RFC 5793 (PB-TNC) [RFC5793]. Exclusive delivery ensures that only thefield. These bit positions are numbered fromsender of themost significant bit throughSW Request receives theleast significant bit. As such, an octet with only bit 0 set would haveresulting SW Response. 3.2. Software Identifiers Software information records contain avaluelarge amount of0x80 (1000 0000), an octet with only bit 1 set would have a valuedescriptive information about installed software products. However, in many cases the complete level of0x40 (0100 0000), and an octet with only bit 7 set would have a valuedetail in these records is not necessary. For example, if one is simply tracking the installation or removal of0x01 (0000 0001). 3. SWIDknown software products, one only needs enough information to recognize the software added or removed. To allow such uses to be efficiently supported, Software Message and Attributes for PA-TNCSystem Requirementssupports the use of Software Identifiers. A Software Identifier uniquely identifies a specific version of a specific software product. TheSWIDSoftware Message and Attributes for PA-TNC specificationfacilitatesdoes not dictate theexchangestructure ofSWID tag inventories and event information. Specifically, each application supporting SWID Message and Attributes for PA-TNC includesacomponent known as the SWID-PCSoftware Identifier (beyond stating thatreceives messages sent with the SWID Attributes component type. The SWID-PCit isalso responsible for sending appropriate SWID Attributes back to the SWID-PV in response. Similarly, the SWID-PV exists onaNEA Server andstring) or define how it isresponsiblecreated. Instead, each data model described in the Software Data Model IANA table (Section 9.4 includes its own rules forinterpreting responses, forwarding information tohow aCMDB if desired, and making policy decisionsSoftware Identifier is created basedupon the received information. This section outlines what a SWID tag inventory is, important features of tags used by this specification, and the requirementsonSWID-PCs and SWID-PVsa record inorder to supportthestated use cases of this specification. 3.1. SWID Tags asEndpoint's Software Inventory EvidenceAs notedCollection expressed inSection 2.1, SWID tags are intended to be open, easily accessible evidence indicatingthat data model. Within thepresence of a particular piece of software onSoftware Message and Attributes for PA-TNC specification, the Software Identifier is simply anendpoint. A SWID tag contains multiple fields intendedopaque string. Software Identifiers allow SW Response messages touniquelyidentifya singlesoftwareproduct. Ideally,to aSWID tag is managed byserver at a fraction of thesoftwarebandwidth thatinstalls, modifies, replaces, amends (e.g. patches, updates), and/or uninstallswould be needed to send theproduct. Discovery processes, software package managers, and other tools can also createentire associated record. For some combinations of data models andmanage tagssources, the full record might never be necessary asa way to represent software that they discover or manage ontheendpoint. It is importantidentifier can be directly correlated tonote that, even intheideal cases where a product manages its owncontents of the full record. This is possible with authoritative SWIDtag,tags, since these tags always have the same contents and thus atag is inherently distinctSoftware Identifier derived fromthe product that it identifies. For this reason, a SWID tag needs to be treated as evidence of software presence, but cannotthese tags can betreatedused asproof of software presence. That noted,astandardized representationlookup to a local copy ofevidence indicativethe full tag. For other combinations ofan endpoint's software inventory issource and data model, apowerful tool in managingserver might not be able to determine the specific softwarewithin an enterprise. 3.2. Basic SWID Tag Inventory Exchange Inproduct and version associated with themost basic exchange supported by this specification, a SWID-PV sendsidentifier without requesting deliver of the full record. In either case, however, arequestSW-PV can use Software Identifiers to track theSWID-PC requestingpresence of specific software products on an endpoint over time in acopybandwidth-efficient manner. There are two important limitations ofallSoftware Identifiers to keep in mind: The identifiers do not necessarily change when theSWID tagsassociated record changes. In some situations, a record in the endpoint'sSWID tag collection. This simple exchange is shownSoftware Inventory Evidence Collection will change due to new information becoming available or inFigure 2. +-------------+ +--------------+ | SWID-PC | | SWID-PV | Time +-------------+ +--------------+ | | | | |<-------------SWID Request---------------| | | | | |--------------SWID Response------------->| | | | V Figure 2: Basic SWID Message Exchange Upon receiving such a SWID Request fromorder to correct prior errors in that information. Such changes might or might not result in changes to theSWID-PV,Software Identifier, depending on theSWID-PC is expected to locatenature of theendpoint's SWID tagschanges andthen create copiesthe rules governing how Software Identifiers are derived from records ofall identified SWID tags and place them within its response attribute. SWID-PVs MUST discard without error any SWID Response attributesthe appropriate data model. It is possible thatthey receivea single software product is installed on a single endpoint multiple times. If both of these installation instances are reported by the same source using the same data format, then this will result in identical Software Identifiers forwhich theyeach installation instances. In other words, Software Identifiers do notknow the SWID Request parameters that leduniquely identify installation instances; they just uniquely identify software products (which might have more than one installation instance). Instead, tothis SWID Response. This is duedistinguish between multiple instances of a single software product, one needs tothe fact that the SWID Request includes parameters that control the naturemake use ofthe response (as will beRecord Identifiers, described in the followingsections) and without knowing those parameters the SWID Response cannot be reliably interpreted. Most often receiving an unsolicited SWID Response attribute happens when a NEA Server has multiple SWID-PVs; one SWID- PV sends a SWID Request but, unless exclusive deliverysection. 3.2.1. Record Identifiers A Record Identifier isuseda string generated by theSWID-PC in sending the response, both SWID-PVs receive copies of the resulting SWID Response. In this case, the SWID-PVSW-PC thatdidn't send the SWID Request would lackis uniquely associated with a specific record within thecontext necessaryEndpoint's Software Inventory Evidence Collection. The SW-PC MUST assign a unique identifier tocorrectly interpret the SWID Responseeach record when itreceived and would simply discard it. Note, however,is added to the Endpoint's Software Inventory Evidence Collection. The Record Identifier SHOULD remain unchanged if thatproprietary measuresrecord is modified. The SWID-PC mightallow a SWID-PVwish todiscover the SWID Request parameters for a SWID Response even ifassign Record Identifiers sequentially, but any scheme is acceptable provided thatSWID-PV did not sendno two records receive thegiven SWID Request. As such, theresame identifier. Servers can use Record Identifiers to distinguish between multiple instances of a single software product installed on an endpoint. Since each installation instance of a software product isno blanket requirement forassociated with aSWID-PV to discard all SWID Responses to SWID Requestseparate record, servers can use theSWID-PV did not generate itself, only that SWID-PVs are requiredrecord identifier todiscard SWID Responses for which they cannot getdistinguish between instances. For example, if an event is reported (as described in Section 3.5), thenecessary context to interpret. Inrecord identifier will allow thecase that itserver to discern which instance of a software product ispossibleinvolved. 3.2.2. Using Software and Record Identifiers in SW Attributes A SW Attribute reporting an endpoint's Software Inventory Evidence Collection can contain Software Identifiers instead of copies of software inventory evidence records. The message exchange is identical todo so,theSWID-PC MAY send its SWIDdiagram shown in Figure 2, but the contents of the SW Response are Software Identifiers instead of evidence records. The SW Request attribute indicates whether the response is required to use full records or Software Identifiers. Using Software Identifiers can reduce theSWID-PV that requested it using exclusive delivery as described in section 4.5attribute size ofRFC 5793 (PB-TNC) [RFC5793]. Exclusive delivery ensures that onlythesenderresponse by multiple orders of magnitude when compared to sending theSWIDsame inventory using full records. A SW-PC responds to a SW Requestreceivesattribute requesting Software Identifiers theresulting SWID Response. However, SWID Message and Attributessame way it responds to a request forPA-TNC does not require supportfull software records, except that instead of copying each record entirely into the attribute body of the response, it provides the specific values that comprise a Software Identifier forexclusive deliveryeach record. All SW Response attributes include Record Identifiers for each reported record. This is true regardless ofattributes.whether the record is delivered in full or represented by a Software Identifier. 3.3.SWID Tag Identifiers SWID tags can containTargeted Requests Sometimes agreat deal ofSW-PV does not require information abouta software product. In addition to identifying name, manufacturer, and versionevery piece ofasoftwareproduct, SWID tags might contain references to related products, associated files and libraries, dependencies on other software, and many other details. Moreover, SWID tags might be customizedonthean endpoint but only needs toindicate when the SWID tag was last checked for accuracy relativereceive updates about certain software instances. For example, enterprise endpoints might be required tothe endpoint's installedhave certain software products installed andother information about how the software was received. (This document referstothis customized information as "installationspecific" tag information.) For this reason, actual possessionkeep these updated. Instead of requesting aSWID tagcomplete inventory just to see if these products are present, the SW-PV canbe usefulmake a "targeted request" forreasoning about details of an endpoint'sthe softwareinventory. However, a SWID tag file that contains all optional fields might be tens of KBinsize. This means that an endpoint's full SWID inventory, encompassing hundreds of applications, can be quite large. If bandwidth is a concern within an enterprise, there is a way to identify a SWID tag without needingquestion. Targeted requests follow thecomplete tag. All tagssame message exchange described in Figure 2. The SW-PV targets its request by providing one or more Software Identifiers in its SW Request attribute. The SW-PC MUST then limit its response to containspecific fieldsonly records thatcan be usedmatch the indicated Software Identifier(s). This allows the network exchange todistinguish a tag for a particular piece of software from tags for different pieces of software. The Tag Creator RegIDexclude information that is not relevant to astring that uniquely identifies the creator of this SWID tag (whogiven policy question, thus reducing unnecessary bandwidth consumption. The SW- PC's response might consist of full records ormight not be the same as the entity who createdof Software Identifiers, depending on thedescribed software) whileparameters of theUnique ID is a stringSW Request. Note thatuniquely identifiestargeted requests identify thedescribed piece ofsoftwareaccordingrelevant tothat tag creator. These two piecesthe request only through Software Identifiers. This specification does not support arbitrary, parameterized querying ofinformation together createrecords. For example, one cannot request all records from a"tag identifier". 3.3.1. Tag Identifier Data Some attributes defined in this specification contain fieldscertain software publisher, or all records created by a particular record source. Targeted requests only allow a requestor tohold tag identifiers rather than whole tags. When populating these fields, both the Tag Creator RegID and the Unique ID values MUST be copies of the values of fields within the SWID tag that is being identified. Therequest specificfields ofsoftware (as identified by their Software Identifiers) and receive aSWID tagresponse thatcorrespondis limited to theTag Creator RegID and Unique ID values vary between the different releases of the ISO SWID tag specification. Itnamed software. There isimportant to note that, in all other parts of this specification,no assumption that a SW-PC will recognize "synonymous records" - that is, records from different sources for theterms Tag Creator RegIDsame software. Recall that different sources andUnique ID refer to the general field values defined above rather to any term used in any specific release of the ISO SWID tag specification. To identify the SWID tag field corresponding todata models may use different Software Identifier strings for theTag Creator RegID, identifysame software product. The SW-PC returns only records that match thefield containingSoftware Identifiers in theregid value ofSW Request, even if there might be other records in theentity that createdendpoint's Software Inventory Evidence Collection for thegiven SWID tag. Note that thissame software product. This is necessary because SW-PCs might notbehave thesame entityability to determine thatcreatedtwo Software Identifiers refer to thesoftware.same product. Targeted requests do not include Record Identifiers. TheTag Creator RegIDresponse to a targeted request MUSTbe the regid, rather than any prose name that might beinclude all records associated with thetag creator. The specific structure of a regid is defined in the ISO/IEC SWID specification. To identify the SWID tag field corresponding to the Unique ID, findnamed Software Identifiers, including thefield that contains a string that uniquely identifies a specific product, version, edition, revision, etc. of a piece of software. Note that this iscase where there are multiple records associated with a singlefield within the SWID tag, rather than a concatenationSoftware Identifier. SW-PCs MUST accept targeted requests and process them correctly as described above. SW-PVs MUST be capable ofmultiple fields. In particular, SWID tags often contain designated fields for justmaking targeted requests and processing theproduct name, product version, product edition, etc., but these fields areresponses thereto. 3.4. Monitoring Changes in an Endpoint's Software Inventory Evidence Collection The software collection on an endpoint is notused to populatestatic. As software is installed, uninstalled, patched, or updated, theUnique ID. Instead, look for a single field thatSoftware Inventory Evidence Collection isdesignedexpected touniquely identify a specific software product, version, etc. (and thus uniquely identifies a specific tag, at least accordingchange to reflect thetag's creator). Consult the ISO/IEC specification for the specific fields that correspond tonew software state on therequirements ofendpoint. Different record sources might update theTag Creator RegID and Unique ID, as defined above.evidence collection at different rates. For example, a package manager might update its records in the2009 versionSoftware Inventory Evidence Collection immediately whenever it is used to add or remove a software product. By contrast, sources that perform periodic examination of theISO/ IEC SWID specification [SWID],endpoint would likely only update their records in theTag Creator RegID correspondsSoftware Inventory Evidence Collection after each examination. All SW-PCs MUST be able to be able to detect changes to thevalueSoftware Inventory Evidence Collection. Specifically, SW-PCs MUST be able to detect: o The creation ofthe software_identification_tag/software_id/ tag_creator_regid field in a SWID tag.records o TheUnique ID corresponds todeletion of records o The alteration of records An "alteration" is anything that modifies thevaluecontents of a record (or would modify it, if thesoftware_identification_tag/software_id/unique_id fieldrecord is dynamically generated on demand) ina SWID tag. In subsequent releasesany way, regardless of whether theISO/IEC SWID specification, different fields might be used to conveychange is functionally meaningful. SW-PCs MUST detect such changes to thesame information. 3.3.2. Tag Identifier Instances A tag identifierendpoint's Software Inventory Evidence Collection in close to real-time (i.e., within seconds) when thecombination of the Tag Creator RegID andPosture Collector is operating. In addition, in theUnique ID fields) uniquely identifiescase where there is aparticular SWID tag,period during whichcorrespondsthe SW-PC is not operating, the SW-PC MUST be able toa single software product. Assuming that this product manages its own SWID tag (i.e., createsdetermine thetag on installation and deletesnet change to thetag whenendpoint's Software Inventory Evidence Collection over theproduct is uninstalled) then every system with an instance of this software product installed would also have a copy of this same SWID tag file withperiod it was not operational. Specifically, thesame tag identifier field values. (Presence of SWID tags managed by other tools, such as discovery tools, would also depend on"net change" represents thepresencedifference between the state ofthose tools onthedevice.) In fact, if multiple instancesendpoint's Software Inventory Evidence Collection when the SW-PC was last operational and monitoring its state, and the state of thesameendpoint's softwareproduct are installed on a single device (i.e., it has been installed twice in different locations)inventory evidence collection when the SW-PC resumed operation. Note thatdevice would have two instances ofa net change might not reflect thesame SWID tag, one for each installation. Both instancestotal number of change events over this interval. For example, if a record was altered three times during a period when theSWID tag would haveSW-PC was unable to monitor for changes, thesame tag identifier field values. This is true even though the tags themselvesnet change of this interval mightdiffer with regardonly note that there was an alteration totheir installation-specific tag fields. Inthe record, but not how manycases itindividual alteration events occurred. It isimportant to distinguish between instances ofsufficient for aparticular tag onSW-PC's determination of aparticular endpoint. For example, if one is alertednet change tothe deletion ofnote that there was aparticular SWID tagdifference between the earlier andthere are multiple instances ofcurrent state rather than enumerating all the individual events thatSWID tag onallowed theendpoint, one will likely wishcurrent state toknow which instance was deleted. Individual instances of SWID tags are distinguished by providing an "Instance ID" value along with the tag identifier. An Instance ID is a string that is uniquely associated with a particular instance of a SWID tag on a particular endpoint.be reached. Theexact nature of the Instance ID depends on the source ofSW-PC MUST assign a time to each detected change in theSWID tag. Ifendpoint's Software Inventory Evidence Collection. These timestamps correspond to theSWID tag is representedSW-PC's best understanding asa file on disk,to when theInstance ID mightdetected change occurred. These timestamps MUST be as accurate as possible. For changes to thefull path ofendpoint's Software Inventory Evidence Collection that occur while theSWID tag file, includingSW-PC is operating, thename ofSW-PC ought to be able to assign a time to theSWID tag file itself. (Noteevent that is accurate to within a few seconds. For changes to theSWID tag filename MUST be included inendpoint's Software Inventory Evidence Collection that occur while thetag file path because itSW-PC ispossible for two SWID tags, each for different instances ofnot operational, upon becoming operational thesame software product,SW-PC needs to make a best guess as toco-exist inthesame directory under different file names.)time of the relevant events (possibly by looking at timestamps on files), but these values might be off. In the casethat the SWID tag isof dynamically generatedupon request by some source, such as an RPM or YUM package manager,records, thegeneration process MUST create an Instance ID to distinguish instances of a particular tag. Inclusiontime ofthis Instance ID ensures each tagchange isuniquely identified on a given endpoint. Totheextent that it is possible,time at which thegeneration of Instance IDs SHOULD be repeatable for a single installation of a single SWID tag. Indata from which thecase where a product is installed once, and then SWID tagsrecords aregenerated upon request, each timegenerate changes, not theSWID tagtime at which a changed record isgenerated the tag identifier instance SHOULD all have the same Instance ID value.generated. For example, ifa package manager generates a SWID tag in response to a requestrecords are dynamically generated based onsome record it possesses, and then later generatesdata in an RPM database, theSWID tag again based ontime of change would be when thesameRPM record was changed. With regard to deletions ofpackage installation, thenrecords, thesame Instance ID value SHOULD be created both times. This is necessary to allow remote partiesSW-PC needs tounderstand whether a reported SWID tag instance is fordetect thesame product installation they saw reported earlier or if it representsdeletion and MUST retain anew installationcopy of thesame product. Note, however, that some exceptional situations might result infull deleted record along with its Record Identifier so that the record itself can be provided to thechangingSW-PV upon request. This copy ofa product's Instance ID. For example, it is not explicitly prohibited bytheSWID specificationrecord MUST be retained fortags to move after installation,a reasonable amount of time. Vendors andthus have their tag file path change. Ifadministrators determine what "reasonable" means, but a copy of thefile path was usedrecord SHOULD be retained for as long as thetag's Instance ID, subsequent tag identifier instances for that same product might appear to be different. Implementers and users need to be awareevent recording the deletion of the record remains in the SW-PC's event log (as described in Section 3.5). This is recommended because, as long as the event is in the SW-PC's change logs, the SW-PC might send an event attribute (described in Section 3.5) that references thispossibility. The combination ofrecord, and atag identifier with an Instance IDcopy of the record isreferred to asneeded if the SW-PV wanted a"tag identifier instance". A tag identifier instance uniquely identifiesfull copy of the relevant records. With regard to alterations to aparticular instancerecord, SW-PCs MUST detect any alterations to the contents of aparticular tagrecord. Alterations need to be detected even if they have no functional impact on the record. A good guideline is that any alteration to agiven endpoint. Noterecord thattwo endpointsmightproduce identical tag identifier instances, but these do not mean thatchange thetag filesvalue of a hash taken on thetwo endpoints are identical -record's contents needs to be detected by thetags in question indicateSW-PC. A SW-PC might be unable to distinguish modifications to thesame software product on both endpoints (sincecontent of a record from modifications to therespective tag identifiers are identical), butmetadata thetagsfile system associates with the record. For example, a SW-PC might use the "last modification" timestamp as an indication of alteration to a given record, but a record's last modification time can change for reasons other than modifications to the record contents. A SW-PC is stilldiffer in their installation-specific fields. Therefore,considered compliant with this specification if itis important to rememberalso reports metadata change events thattag identifier instancesdo not change the record itself as alterations to the record. In other words, while SW-PC authors areonly comparable inencouraged to exclude modifications that do not affect thescope of a single endpoint; when comparing across different endpoints, onlybytes within thetag identifier fields (Tag Create RegIDrecord, discriminating between modifications to file contents andUnique ID) can be meaningfully compared - any Instance ID value will needchanges to file metadata can beexcluded from comparison. 3.3.3. Comparing Tag Identifiersdifficult andTag Identifier Instances Comparisontime consuming on some systems. As such, as long as the alterations detected by a SW-PC always cover all modifications to the contents oftag identifiers can be usedrecord, the SW-PC is considered compliant even if it also registers alterations that do not modify the contents of a record as well. When recording an alteration todetermine whetheraparticular SWID tagrecord, the SW-PC ispresent inonly required to note that anendpoint's SWID tag collection. A pair of SWID tag identifiersalteration occurred. The SW-PC issaidnot required to"match" if their Tag Creator RegID and Unique ID fields are identical. Similarly, a pair of tag identifier instancesnote or record how the record altered, nor issaidit possible tomatch if their Tag Creator RegID, Unique ID, and Instance ID fields are identical. Fieldsinclude such details inSWID Message andSW Attributesfor PA-TNC attributes that contain tag identifiers or tag identifier instances MUST always be normalized to Network Unicode, so comparison between values transported in attributes can be a simple string comparison. When comparing tag identifiers and tag identifier instances from attributes withreporting thecorresponding values from other sources (such as when comparing themchange to afull SWID tag file or similar record), the relevant fields fromSW-PV. 3.5. Reporting Change Events As noted in thelatter needpreceding section, SW-PCs MUST be able toundergo normalization priordetect changes tocomparison. See Section 4.7 for more on normalization oftheencoding for these fields. Comparisons are case-sensitive. Matching tag identifiersendpoints software inventory evidence collection (creation, deletion, andtag identifier instances indicate very specific things aboutalteration) in near real-time while therespective tags. The following sections describe what one canSW- PC is operational, andcannot deduce based on matching tag identifiers. 3.3.3.1. Matching Tag Identifiers IndicateMUST be able to account for any net change to theSameendpoint's SoftwareProduct The Unique ID value of a tag identifier represents a valueInventory Evidence Collection that occurs when thegiven tag creator will only useSW-PC is not operational. However, toindicate a particular software product (e.g., a particular releasebe ofa particular application). The ISO SWID specification prohibits the tag creator from associating a Unique ID value with multiple, different software products. Atuse to thesame time,enterprise, theTag Creator RegID element value uniquely identifies a given tag creator. As such, even if two different tag creators wereNEA Server needs toassign the same Unique ID valuebe able totwo different software products, the Tag Creator RegID values willreceive these events and bedifferent,able to understand how new changes relate to earlier changes. In Software Message andtherefore the tag identifiers willAttributes for PA-TNC, this is facilitated by reporting change events. All SW-PCs MUST bedifferent. For these reasons,capable of receiving requests for change events and sending change event attributes. All SW-PVs MUST be capable of requesting and receiving change event attributes. 3.5.1. Change Event Records A change event record consists of either a complete record or Software Identifier from theexpectation is that if one sees two tagschanged record along with thesame tag identifiers, these tags are both associated withfollowing pieces of information: o The nature of thesame software product (assumingchange (i.e., creation, deletion, or lteration) o An Event Identifier (EID) value o An EID Epoch value An EID is a 4-byte unsigned integer that thetag's fields are correctly populated). 3.3.3.2. Matching Tag Identifiers DO NOT Necessarily Indicate Identical Tag Files Some optional fieldsSW-PC assigns sequentially to each observed event (whether detected inSWID tags can reflect installation-specific information. As such, the SWID tagsreal-time or deduced by looking for net changes over apieceperiod ofsoftware residing on two different endpoints (or installed twice onSW-PC inactivity). All EIDs exist within the context of some "EID Epoch", which is also represented as asingle endpoint) will have4-byte unsigned integer. EID Epochs are used to ensure synchronization between thesame tag identifier value (same tag creatorSW-PC and any SW-PVs with which it communicates. EID Epoch values SHOULD be generated randomly and in such a way that it is unlikely that the sameUnique ID forEID Epoch is generated twice, even if thesame software product) but might contain different information in their installation-specific fields. For this reason, one cannot assume that just because two endpoints provide the same tag identifier value for their software inventories, thatSW-PC reverted to an earlier state (e.g., resetting it to factory defaults). In thetags on those endpoints are identical incase where a SW-PC needs to reset its EID counter, either because it has exhausted alltheir fields (although one can deduce that the same software product was present on both endpoints). Informative note: Initial drafts of the revised ISO SWID specification indicate that modification of SWID tags might no longer be permitted by parties other than the original tag creator (usually the vendor of the software identified byavailable EID values or because thetag). If thisSW-PC's event log becomespart of the revised SWID specification,corrupted, thenfor SWID tags that conform to this revised specification, this will mean that matching tag identifiers do imply identical tag files. 3.3.3.3. Matching Tag Identifier Instances MIGHT Indicate Identical Tag Files For a single endpoint, matching tag identifier instance values might indicate identical tag files, at least within a narrow time window. Tag identifier instance values are unique toaspecific SWID tag record onnew EID Epoch MUST be selected. Within an Epoch, EIDs MUST be assigned sequentially, so thatparticular endpoint atif a particularpoint in time. The Instance ID inevent is assigned an EID of N, thetag identifier instance information ought to be unique relative to any other instancesnext observed event is given an EID of N+1. In some cases, events might occur simultaneously, or thesame SWID tag currently also on that endpoint. However, tag identifier instances are stillSW-PC might notguaranteed tootherwise beuniqueable toa single SWID tag file over a long period of time. Consider a piecedetermine an ordering for events. In these cases, the SW-PC creates an arbitrary ordering ofsoftware that is installed (adding a SWID tag), uninstalled (removingtheSWID tag),events andthen reinstalled (adding that SWID tag back but with a different installation-specific field values). It is possible that the two SWID tag files, present at different points in time, might have identical tag identifier instance values even thoughassigns EIDs according to this ordering. Two change events MUST NOT ever be assigned thetag files themselves were different. As noted above, SWID tag identifier instances are only comparablesame EID within thecontext of a single endpoint. When SWID tag identifier instances are collected from multiple endpoints and then compared, the Instance ID MUST be ignored in anysame EID Epoch. No meaningful comparison can be made between EID values oftag identifiers fromdifferentendpoints. 3.3.3.4. Differing Tag Identifiers DOEpochs. The EID value of 0 is reserved and MUST NOTNecessarily Indicate Different Software Products While a tag identifier uniquely identifies a software product (i.e., that tag identifier cannotbe associated with any event. Specifically, an EID of 0 in adifferent software product),SW Request attribute indicates that asingle product might have moreSW-PV wants an inventory response rather thanone tag identifier. This is because itan event response, while an EID of 0 in a SW Response ispossible for more than one tag creatorused tocreate a SWID tag forindicate thesame software product. Multiple tags forinitial state of thesame software product but created by different tag creators will have different Tag Creator RegID values and will also likely differ in their Unique ID value. Thus, these two tags will have different tag identifiers even though they were associated withendpoint's Software Inventory Evidence Collection prior to thesame software product. In fact, in some circumstances, two parties might create two different SWID tag records for a single instanceobservation of any events. Thus thesame software product. For example, whenvery first recorded event in aproduct is installed, it createsSW-PC's records within an EID Epoch MUST be assigned aSWID tag file onvalue of 1 or greater. Note that EID and EID Epoch values are assigned by thefile system,SW-PC without regard to whether events are being reported to one or more SW-PVs. The SW-PC records events anda software discovery tool also notesassigns EIDs during its operation. Any and all SW-PVs that request event information from theinstallation ofSW-PC will have those requests served from theproductsame event records andgenerates its own SWID tag record forthus will see the sameinstallation. In this case, that single installation is associated with two SWID tags with different SWID tag identifiers. In short, identical tag identifiers always indicateEIDs and EID Epochs for the samesoftware product, but different tag identifiers do not necessarily indicate different software products. 3.3.4. Using Tag Identifiers in SWID Attributes A SWID attribute reporting an endpoint's SWID tag collection can contain SWID tag identifier instances instead of copies of SWID tag files.events. Themessage exchangeSW-PC MUST ensure there isidentical to the diagram shownno coverage gap (i.e., change events that are not recorded inFigure 2, butthecontentsSW-PC's records) in its change event records. This is necessary because a coverage gap might give a SW-PV a false impression of theSWID Response are SWID tag identifier instances instead of tags. The SWID Request attribute indicates whether the response is required to use full tags or tag identifier instances. Using tag identifier instances can reduce the attribute size of the response by multiple orders of magnitude when comparedendpoint's state. For example, if a SW-PV saw an event indicating that a particular record had been added tosendingthesameendpoint's software inventoryusing full tags. A SWID-PC responds to a SWID Request attribute requesting SWID tag identifier instances the same way it responds to a request for full SWID tags, exceptevidence collection, and saw no subsequent events indicating thatinstead of copying each SWID tag entirely into the attribute body of the response,record had been deleted, itprovides the specific values that comprise a SWID tag identifier instance for each tag. 3.4. Targeted Requests Sometimes a SWID-PV does not require information about every tag on an endpoint but only needs to know about certain tags. For example, an endpointmightbe required to have a particular patch installed. In determining compliance withreasonably assume that thispolicy,record was still present and thus that the indicated software was still installed (assuming theSWID-PVEpoch has not changed). If there isonly interesteda coverage gap in thespecific SWID tag associated withSW-PC's event records, however, thispatch. Instead of requesting a complete inventory just to see if the patch's SWID tagassumption ispresent,false. For this reason, theSWID-PV can make a "targeted request" forSW- PC's event records MUST NOT contain gaps. In thetag in question. Targeted requests followcase where there are periods where it is possible that changes occurred without thesame message exchange described in Figure 2. The SWID-PV targets its request by providing oneSW-PC detecting ormore SWID tag identifiers in its SWID Request attribute. The SWID-PCrecording them, the SW-PC MUSTthen limiteither compute a net change and update itsresponseevent records appropriately, or pick a new EID Epoch tocontain only tags that match the indicated tag identifier(s). This allows the network exchangeindicate a discontinuity with previous event records. Within a given Epoch, once a particular event has been assigned an EID, this association MUST NOT be changed. That is, within an Epoch, once an EID is assigned toexclude informationan event, thatis not relevantEID cannot be reassigned to agiven policy question, thus reducing unnecessary bandwidth consumption. The SWID-PC's response might consist of full tags or of tag identifier instances, depending on the parameters ofdifferent event, and theSWID Request. Targeted requestsevent cannottarget specific SWID tag instances;be assigned a different EID. When theSWID Request does not include fieldsSW-PC's Epoch changes, all of these associations between EIDs and events are cancelled, and EID values once again become free forInstance IDs. As a result, when respondingassignment. 3.5.2. Updating Inventory Knowledge Based on Events Modern endpoints can have hundreds of software products installed, most of which are unlikely to change from one day to the next. As such, instead of exchanging atargeted request, a SWID-PC MUST return applicable results for every instancecomplete list ofthe identified tags. Note that targeted requests identify the SWID tags relevantan endpoint's inventory on a regular basis, one might wish tothe requestonlythrough SWID tag identifiers for those tags. This specification does not support arbitrary, parameterized queryingidentify changes since some earlier known state oftags. For example, one cannot request all tags from a certain software publisher, or all tags createdthis inventory. This is readily facilitated by the use of EIDs to place change events in aparticular tag creator. Targeted requests only allowcontext relative to earlier state. Every inventory sent by arequestorSW-PC torequest specific tagsa SW-PV (asidentified by their tag identifiers)described in Section 3.1 through Section 3.3) includes the EID Epoch andreceive a responseEID of the last event recorded prior to thatis limitedinventory being compiled. This allows the SW-PV to place all subsequently received event records in context relative to this inventory (since thenamed tags. There is also no assumption thatEIDs represent aSWID- PC will recognize "synonymous tags" - that is, tags by different tag creators fortotal ordering of all changes to thesameendpoint's softwareproduct. The SWID-PC returns only tagsinventory evidence collection). Specifically, a SW-PV (or, more likely, a database thatmatchcollects and records its findings) can record an endpoint's full inventory and also thetag identifiers inEID and Epoch of theSWID Request, even if there might be other SWID tagsmost recent event reflected in that state. From that point on, if change events are observed, theendpoint's SWID tag collection forattribute describing these events indicates thesame software product. SWID-PCs MUST accept targeted requests and process them correctly as described above. SWID-PVs MUST be capablenature ofmaking targeted requeststhe change, the affected records, andprocessingtheresponses thereto. 3.5. Monitoring Changesorder inan Endpoint's SWID Tag Collection The SWID collection on an endpoint is not static. As software is installed, uninstalled, patched, or updated, the SWID tag collection is expected to change to reflect the new software state on the endpoint. For tags managedwhich these events occurred (as indicated byan application's installer, tag changes usually occur atthetimesequential EIDs). Using this information, any remote record ofinstallation or update. For tags added by discovery tools, software and package managers, and other sources, changes tothe endpoint'sSWID tag collection occur when some process discovers the new or altered software product, which typically lags behind the actual installation or update time. All SWID-PCs MUST be able toSoftware Inventory Evidence Collection can beable to detect changes to the SWID tag repositories on their endpoint. Specifically, SWID-PCsupdated appropriately. 3.5.3. Using Event Records in SW Attributes A SW-PV MUST be able todetect: o The creationrequest a list oftags o The deletionevent records instead oftags oan inventory. Thealteration of tags An "alteration" is anything that modifiesmessage flow in such an exchange looks thecontents of a SWID tag file (or would modify it, ifsame as thetag filebasic flow shown in Figure 2. The only difference isdynamically generated on demand)that, inany way, regardless of whetherthechange is functionally meaningful. Changes MUST be monitored for all utilized sourcesSW Request attribute, the SW-PV provides an EID other than 0. (A value ofSWID tags. This includes, but is not limited to, monitoring sources that dynamically generate SWID tags. SWID-PCs MUST detect0 in these fields represents a request for an inventory.) When the SW-PC receives suchchanges toa request, instead of identifying records from the endpoint'sSWID tag collection in close to real-time (i.e., within seconds) when the Posture Collector is operating. In addition, in the case where there is a period during which the SWID-PC is not operating, the SWID-PCSoftware Inventory Evidence Collection, it consults its list of detected changes. The SW-PC MUSTbe ableadd an event record todeterminethenetSW Response attribute for each recorded change event with an EID greater than or equal to theendpoint's SWID tag collection over the period it was not operational. Specifically, the "net change" represents the difference between the state of the endpoint's SWID tag collection when the SWID-PC was last operational and monitoring its state, andEID in thestateSW Request attribute (although targeting of requests, as described in theendpoint's SWID tag collection when the SWID-PC resumed operation. Note that a net changenext paragraph, mightnot reflect the total numberlimit this list). A list ofchangeevent records MUST only contain eventsover this interval. For example, if a SWID tag file was altered three times during a period whenwith EIDs that all come from theSWID-PC was unable to monitorcurrent Epoch. SW-PVs can target requests forchanges,event records by including one or more Software Identifiers, as described in Section 3.3, in thenet change of this interval might only noteSW Request thatthere wasrequests analteration to the file, but not how many individual alteration events occurred. It is sufficientevent record list. A targeted request fora SWID-PC's determination of a net changeevent records is used tonoteindicate thatthere was a difference between the earlier and current state rather than enumerating all the individualonly events affecting software thatallowedmatch thecurrent stateprovided Software Identifiers are to bereached. The SWID-PC MUST assign a time to each detected changereturned. Specifically, inthe endpoint's SWID tag collection. These timestamps correspond to the SWID-PC's best understanding asresponse towhena targeted request for event records, thedetected change occurred. These timestampsSW-PC MUSTbe as accurate as possible. For changes to the endpoint's SWID tag collectionexclude any event records thatoccur while the SWID-PC is operating,are less than theSWID-PC ought to be able to assign a time toindicated EID (within the current EID Epoch) and exclude any eventthat is accurate to within a few seconds. For changes to the endpoint's SWID tag collection that occur whilerecords where theSWID-PC isaffected software does notoperational, upon becoming operationalmatch one of theSWID-PC needs to make a best guess as toprovided Software Identifiers. This might mean that thetimeresulting list of event records sent in therelevantresponse attribute does not provide a continuous sequence of EIDs. Both SW-PCs and SWIC-PVs MUST support targeted request for event records. 3.5.4. Partial and Complete Lists of Event Records in SW Attributes Over time, a SW-PC might record a large number of change events. If a SW-PV requests all change events(possibly by looking at timestamps oncovering a large period of time, thefiles), but these valuesresulting SW Response attribute might beoff. Inextremely large, especially if thecaseSW-PV is requesting the use of full records instead ofdynamically generated SWID tags,thetimeuse ofchange isSoftware Identifiers (as described in Section 3.2.2). In thetime at whichcase that thedata from whichresulting attribute is too large to send (either because it exceeds theSWID tags are generate changes, not4GB attribute size limit imposed by thetime at which a changed SWID tag is generated. For example, if SWID tags are dynamically generated basedPA-TNC specification, or because it exceeds some smaller size limit imposed ondata in an RPM database,thetime of change would be whenSW-PC) theRPM record was changed. With regard to deletionsSW-PC MAY send a partial list ofSWID tags, the SWID-PC needsevent records back todetectthedeletion and MUST retainSW-PV. Generation of acopypartial list of events in a SW Response attribute requires thefull deleted tag so that the tag itself can be providedSW-PC to identify a "consulted range" of EIDs. A consulted range is theSWID-PV upon request. This copyset of event records that are examined for inclusion in theSWID tag MUSTSW Response attribute and that are included in that attribute if applicable. Recall that, if a SW Request is targeted, only event records that involve the indicated software would beretainedapplicable. (See Section 3.3 for more on Targeted Request.) If areasonable amount of time. Vendorsrequest is not targeted, all event records in the considered range are applicable andadministrators determine what "reasonable" means, but a copyincluded in the SW Response attribute. The lower bound of thetag SHOULDconsulted range MUST beretained for as long asthe EID provided in the SW Request. (Recall that a SW Request indicates a request for eventrecordingrecords by providing a non-0 EID value in thedeletionSW Request. See Section 3.5.3.) The upper bound of thetag remains in the SWID-PC's records. Thisconsulted range isrecommended because, as long asthe EID of the latest event record (as ordered by EID values) that is included in theSWID-PC's records, the SWID-PC might send an eventSW Response attribute(described in Section 3.6) that references this tag, and a copy of the tag is neededifthe SWID-PV wanted a full copy of the relevant tags. With regard to alterations to a SWID tag file, SWID-PCs MUST detect any alterationsit is applicable to thecontentsrequest. The EID ofa tag file. Alterations need to be detected even if they have no functional impact on the tag file. For example,this last event record is called theaddition of whitespace between XML attributes does not have any impact"Last Consulted EID". The SW-PC chooses this Last Consulted EID based on themeaningsize of theSWID tag file, but still needs to be detected as a tag file alteration by a SWID-PC. A good guidelineevent record list it isthat any alterationwilling toa file that might change the value of a hash taken on the file's contents needsprovide tobe detected bytheSWID-PC.SW-PV. ASWID-PC might be unable to distinguish modifications to the content of a tag file from modifications to the metadata the file system associates with the tag file. For example, a SWID-PC might usepartial result list MUST include all applicable event records within the"last modification" timestamp asconsulted range. This means that for any applicable event record (i.e., any event record in anindication of alteration toun-targeted request, or an event record associated with software matching agiven tag file, butrequested Software Identifier in afile's last modification time can change for reasons othertargeted request) whose EID is greater thanmodificationsor equal to thefile contents. A SWID-PCEID provided in the SW Request and whose EID isstill considered compliant with this specification if it also reports metadata change events that do not change the SWID tag file itself as alterationsless than or equal to theSWID tag file. In other words, while SWID-PC authors are encouraged to exclude modificationsLast Consulted EID, thatdo not affect the bytes within the tag file when detecting alterations to a SWID tag record, discriminating between modifications to file contents and changes to file metadata canevent record MUST bedifficult and time consuming on some systems. As such, as long as the alterations detected by a SWID-PC always cover all modifications toincluded in thecontentsSW Response conveying this partial list oftag files, the SWID-PCevent records. This ensures that every partial list of event records isconsidered compliant even if it also registers alterationsalways complete within its indicated range. All SW Response attributes thatdo not modifyconvey event records (either using full records or using Software Identifiers) include an Epoch, Last EID, and Last Consulted EID field. The Last EID contains thecontentsEID ofa tag file as well. When recording an alteration to a tag file,theSWID-PC is only requiredlast event record known tonotethe SW-PC at the time thatan alteration occurred.the SW Response attribute was generated. TheSWID-PC is not required to noteLast EID might orrecord how the tag file altered, nor is it possible to include such details in SWID Attributes reportingmight not be part of thechange to a SWID-PV. 3.6. Reporting Change Eventsconsulted range. As notedinabove, thepreceding section, SWID-PCs MUST be able to detect changes toLast Consulted EID field contains theSWID tag repositories (tag creation, tag removal, and tag alteration)EID of the last event record innear real-time whiletheSWID-PC is operational,consulted range. The Epoch field contains the EID Epoch associated with the Last EID andMUST be able to account for any net change toLast Consulted EID fields as well as all theendpoint's SWID tag collection that occurs whenEIDs in event records contained within theSWID-PC is not operational. However, to be of useSW Response attribute. Note that, if responding to a targeted SW Request, theenterprise,SW Response attribute might not contain theNEA Server needs to be able to receive these events and be able to understand how new changes relate to earlier changes. In SWID Message and Attributes for PA-TNC, this is facilitated by reporting change events. All SWID-PCs MUST be capable of receiving requests for change events and sending change event attributes. All SWID-PVs MUST be capable of requesting and receiving change event attributes. 3.6.1. Change Event Records A changeevent recordconsists of either a complete SWID tag or SWID tag identifier instance along withwhose EID matches thefollowing pieces of information: o The natureLast Consulted EID value. For example, the last consulted EID record might have been deemed inapplicable because it did not match the specified list of Software Identifiers in thechange (i.e., tag creation, tag deletion, or tag alteration) o An Event Identifier (EID) value o AnSW Request. If a SW-PV receives a SW Response attribute where the Last EIDEpoch value Anand Last Consulted EIDisfields are identical, the SW-PV knows that it has received a4-byte unsigned integerresult list that is complete, given theSWID-PC assigns sequentially to each observed event (whether detected in real-time or deduced by looking for net changes over a periodparameters ofSWID-PC inactivity). All EIDs exist withinthecontext of some "EID Epoch", which is also represented as a 4- byte unsigned integer. EID Epochs are usedrequest, up toensure synchronization betweentheSWID-PCpresent time. On the other hand, if the Last EID andany SWID- PVs with which it communicates.Last Consulted EIDEpochvaluesSHOULD be generated randomly and in suchdiffer, the SW-PV has received away that it is unlikely thatpartial result list. In thesame EID Epoch is generated twice, evenlatter case, if theSWID-PC revertedSW-PV wishes toan earlier state (e.g., resetting ittry tofactory defaults). Incollect thecase where a SWID-PC needs to reset its EID counter, either because it has exhausted all available EID values or becauserest of theSWID-PC's event log becomes corrupted,partially delivered result list it then sends a new SW Request whose EIDEpoch MUST be selected. Within an Epoch, EIDs MUST be assigned sequentially, so that if a particular eventisassigned anone greater than the Last Consulted EIDof N,in thenext observedpreceding response. Doing this causes the SW-PC to generate another SW Response attribute containing event records where the earliest reported event record isgiven an EID of N+1. In some cases, events might occur simultaneously, ortheSWID-PC might not otherwise be able to determine an ordering for events. In these cases,one immediately after theSWID-PC creates an arbitrary ordering ofevent record with theevents and assignsLast Consulted EID (since EIDsaccording toare assigned sequentially). By repeating thisordering. Two change events MUST NOT ever be assigned the same EID withinprocess until it receives a SW Response where thesame EID Epoch. No meaningful comparison can be made between EID values of different Epochs. TheLast EIDvalue of 0 is reservedandMUST NOT be associated with any event. Specifically, anLast Consulted EID are equal, the SW- PV is able to collect all event records over a given range, even if the complete set of0 inevent records would be too large to deliver via aSWID Request attribute indicatessingle attribute. Implementers need to be aware that aSWID-PV wantsSW Request might specify aninventory response ratherEID that is greater thanan event response, while anthe EID of0the last event recorded by a SW-PC. In accordance with the behaviors described in Section 3.5.3, aSWID Response is usedSW-PC MUST respond toindicate the initial statesuch a request with a SW Response attribute of theendpoint's SWID tag collection prior toappropriate type (using full records or Software Identifiers as specified in theobservation of any events. ThusSW Request) that contains zero event records. This is because thevery firstSW-PC has recorded no event records with EIDs greater than or equal to the EID in the SW Request. In such aSWID-PC's records within ancase, the Last Consulted EIDEpochfield MUST beassigned aset to the same valueof 1 or greater. Note thatas the Last EIDandfield in this SW Response attribute. This case is called out because the consulted range on a SW-PC in such a situation is a negative range, where the "first" EIDEpoch values are assigned byin theSWID-PC without regard to whether events are being reported to one or more SWID-PVs. The SWID-PC records events and assigns EIDs during its operation. Any and all SWID-PVs that request event information fromrange (provided in theSWID-PC will have those requests served fromSW Request) is greater than thesame records and thus will see"last" EID in the range (this being thesame EIDs andEIDEpochs forof thesame events. The SWID-PC MUSTlast recorded event on the SW-PC). Implementers need to ensurethere is no coverage gap (i.e., change eventsthatareSW-PCs do notrecordedexperience problems in such a circumstance. Note that this specification only supports theSWID-PC's records) in its recordsreturning ofchange events. Thispartial results when returning event records. There isnecessary because a coverage gap might giveno way to return aSWID-PVpartial inventory list under this specification. 3.5.5. Synchronizing Event Identifiers and Epochs Since EIDs are sequential within an Epoch, if afalse impressionSW-PV's list of event records contains gaps in theendpoint's state. For example, ifEID values within aSWID-PV saw an event indicatingsingle Epoch, the SW-PV knows thata particular SWID tag had been installed, and saw no subsequentthere are eventsindicatingthattag hadhave not beendeleted, it might reasonably assume that this tag was still installed (assumingaccounted for. The SW-PV can either request a new event list to collect theEpoch has not changed). If there ismissing events or request acoverage gap infull inventory to re-sync its understanding of theSWID-PC's records, however, this assumption is false. For this reason,state of theSWID-PC's event records MUST NOT contain gaps.Endpoint's Software Inventory Evidence Collection. In either case, after thecase where there are periods where it is possible that changes occurred withoutSW-PV's record of theSWID-PC detecting or recording them,endpoint's Software Inventory Evidence Collection has been updated, theSWID-PC MUST either compute a net changeSW-PV can record the new latest EID value andupdate its records appropriately, or picktrack events normally from that point on. If the SW-PV receives any attribute from anewSW-PC where the EID Epochto indicate a discontinuity with previous event records. Within a given Epoch, once a particular event has been assigned an EID, this association MUST NOT be changed. That is, within an Epoch, once andiffers from the EIDis assigned to an event,Epoch thatEID cannot be reassignedwas used previously, then SW-PV or any entity using this information toa different event, andtrack theevent cannot be assignedendpoint's Software Inventory Evidence Collection knows that there is adifferent EID. When the SWID-PC's Epoch changes, alldiscontinuity in their understanding ofthese associations between EIDs and events are cancelled,the endpoint's state. To move past this discontinuity andEID values once again become free for assignment. 3.6.2. Updating Inventory Knowledge Based on Events Modern endpoints can have hundredsreestablish a current understanding ofsoftware products installed, mostthe state ofwhich are unlikelythe endpoint's Software Inventory Evidence Collection, the SW-PV needs tochangereceive a full inventory fromone day tothenext. As such, instead of exchanging a complete list of anendpoint. The SW-PV cannot be brought in sync with the endpoint'sinventory on a regular basis, one might wish to only identify changes since some earlier knownstate through the collection of any set of event records in thisinventory.situation. This isreadily facilitated by the use of EIDsbecause it is not possible toplace changeaccount for all eventsin a context relativeon the SW-PC over the interval since the previous Epoch was used, because there is no way toearlier state. Every inventory sent byquery for EIDs from aSWID-PC toprevious Epoch. Once the SW-PV has received aSWID-PV (as described in Section 3.2 through Section 3.4) includesfull inventory for the new Epoch, the SW-PV records the latest EID reported in this new Epoch andEID ofcan track further events normally. A SW-PC MUST NOT report events with EIDs from any Epoch other than thelast event recorded priorcurrent EID Epoch. The SW-PC MAY choose tothat inventory being compiled. This allowspurge all event records from a previous Epoch from memory after an Epoch change. Alternately, theSWID-PVSW-PC MAY choose toplace all subsequently receivedretain some event records from a previous EID Epoch and assign them new EIDs incontext relative to this inventory (sincetheEIDs represent a total ordering of all changes tocurrent Epoch. However, in theendpoint's SWID tag collection). Specifically, a SWID-PV (or, more likely,case where adatabaseSW-PC chooses the latter option it MUST ensure thatcollects and records its findings) can record an endpoint's full inventorythe order of events according to their EIDs is unchanged andalsothat there is no coverage gap between the first retained event recorded during the previous Epoch (now reassigned with an EID in the current Epoch) andEpoch ofthemost recentfirst eventreflected in that state. Fromrecorded during the current Epoch. In particular, the SW-PC MUST ensure thatpoint on, ifall change eventsare observed, the attribute describing these events indicatesthat occurred after thenature of the change,last recorded event from theaffected SWID tags,previous Epoch are known and recorded. (This might not be possible if theorderEpoch change is due to state corruption on the SW-PC.) A SW-PC might choose to reassign EIDs to records from a preceding Epoch to create a "sliding window" of events, where each Epoch change represents a shift inwhich these events occurred (as indicated bythesequential EIDs). Using this information, any remote recordwindow of available events. In theendpoint's SWID tag collection can be updated appropriately. 3.6.3. Using Event Records in SWID Attributes A SWID-PV MUST be able to requestcase where alistSW-PC suffers a crash and loses track of its current EID Epoch or current EID, then it MUST generate a new EID Epoch value and begin assigning EIDs within that Epoch. In this case, the SW-PC MUST purge all event recordsinstead of an inventory. The message flow in such an exchange looksfrom before thesamecrash asthe basic flow shown in Figure 2. The only differenceit cannot ensure that there isthat, in the SWID Request attribute, the SWID-PV provides an EID other than 0. (A value of 0 in these fields representsnot arequest for an inventory.) Whengap between theSWID-PC receives such a request, insteadlast ofidentifying SWID tags inthose records and theendpoint's SWID tag collection, it consults its record ofnext detectedchanges.event. TheSWID-PC MUST add an event record to the SWID Response attributeprocess foreach recorded change event with angenerating a new EIDgreater than or equal toEpoch MUST minimize theEID inpossibility that theSWID Request attribute (although targeting of requests,newly generated EID Epoch is the same asdescribeda previously used EID Epoch. The SW-PV will normally never receive an attribute indicating that the latest EID is less than the latest EID reported in a previous attribute within thenext paragraph, may limitsame EID Epoch. If thislist). A listoccurs, the SW-PC has suffered an error of some kind, possibly indicative of at least partial corruption of its eventrecords MUST only contain events with EIDs that all come fromlog. In this case, thecurrent Epoch. SWID-PVs can target requests for event records by including one or more tag identifiers,SW-PV SHOULD treat the situation asdescribed in Section 3.4,if there was a change in Epoch and treat any local copy of theSWID Requestendpoint's Software Inventory Evidence Collection as out-of-sync until a full inventory can be reported by the SW-PC. In this case, the SW-PV SHOULD flag the occurrence so the SW-PC can be examined to ensure it is now operating properly. 3.6. Subscriptions Thus far, all message exchanges discussed assume thatrequestsa SW-PV sent anevent record list. A targeted request for event recordsSW Request attribute and the SW-PC isusedproviding a direct response toindicatethatonly events affecting SWID tags that matchrequest. The Software Message and Attributes for PA-TNC specification also supports theprovided SWID tag identifiers areability for a SW-PC tobe returned. Specifically,send a message with a SW Attribute to the SW-PV in response to observed changes in the endpoint's software inventory evidence collection, instead of in direct response to atargeted request for event records,SW Request. An agreement by a SW-PC to send content when certain changes are detected to theSWID-PC MUST exclude any event records that are less thanendpoint's Software Inventory Evidence Collection is referred to in this specification as a "subscription", and theindicated EID (withinSW-PV that receives this content is said to be "subscribed to" thecurrent EID Epoch)given SW-PC. All SW-PCs andexclude any event records whereSW-PVs MUST support theaffected SWID tag does not match oneuse of subscriptions. 3.6.1. Establishing Subscriptions A SW-PV establishes a subscription on a particular SW-PC by sending a SW Request attribute with theprovided SWID tag identifiers. This might mean thatSubscription flag set. The SW Request attribute is otherwise identical to theresulting list of event records sentSW Requests discussed inthe response attribute does not provideprevious sections. Specifically, such acontinuous sequence of EIDs. Both SWID-PCs and SWIC-PVs MUST support targetedSW Request might requestfor event records. 3.6.4. Partialfull records or Software Identifiers, might be targeted, andComplete Lists of Event Records in SWID Attributes Over time, a SWID-PCmightrecord a large number ofrequest changeevents. Ifevent records or endpoint inventory. Assuming no error is encountered, aSWID-PV requests all change events coveringSW-PC MUST send alarge period of time, the resulting SWIDSW Response attributemight be extremely large, especiallyin direct response to this SW Request attribute, just as if theSWID-PV is requestingSubscription flag was not set. As such, theuse of full SWID tags instead ofmessage exchange that establishes a new subscription in a SW-PC has theuse of SWID Identifier instancessame flow seen in the previous message exchanges, as depicted in Figure 2. If the SW- PV does not receive a PA-TNC Error attribute (as described in Section3.3.4). In3.8 and Section 4.16) in response to their subscription request, thecase thatsubscription has been successfully established on theresultingSW-PC. The SW Request attribute that establishes a new subscription istoo largereferred tosend (either because it exceeds the 4GB attribute size limit imposed byas thePA-TNC specification, or because"establishing request" for that subscription. When a subscription is established itexceeds some smaller size limit imposed on the SWID-PC) the SWID-PC MAY sendis assigned apartial list of events backSubscription ID value. The Subscription ID is equal to theSWID-PV. Generationvalue ofa partial listthe Request ID ofevents in a SWID Response attribute requirestheSWID-PCestablishing request. (For more about Request IDs, see Section 4.8.) A SW-PC MUST have the ability toidentifyrecord and support multiple simultaneous subscriptions from a"consulted range" of EIDs.single party and from multiple parties. Aconsulted range is the set of event records that are examined for inclusion inSW-PV MUST have theSWID Response attributeability to record andthat are included in that attribute if applicable. Recall that, ifsupport multiple simultaneous subscriptions to aSWID Request is targeted, only event records that involvesingle party and subscriptions to multiple parties. 3.6.2. Managing Subscriptions The SW-PC MUST record each accepted subscription along with theindicated SWID tags would be applicable. (See Section 3.4 for more on Targeted Request.) If a request is not targeted, all event records inidentity of theconsidered rangeparty to whom attributes areapplicable and includedto be pushed in compliance with theSWID Response attribute. The lower bound ofsubscription. This identity includes both theconsulted range MUST beNEA Server's connection ID and theEID provided inPosture Validator Identifier from theSWID Request. (RecallPB-PA message thata SWID Request indicates a requestdelivered the request. Likewise, SW-PVs MUST record each accepted subscription forevent records by providing a non-0 EID value inwhich they are theSWID Request. See Section 3.6.3.) The upper bound ofsubscribing party along with theconsulted range isassociated Subscription ID and theEIDidentity of thelatest event record (as ordered by EID values)SW-PC thatis included in the SWID Response attribute if it is applicable towill be fulfilling therequest.subscription. TheEID ofSW-PV needs to retain thislast event record is calledinformation in order to correctly interpret pushed SW Response attributes sent in fulfillment of the"Last Consulted EID".subscription. TheSWID-PC chooses this Last Consulted EID based on the sizeidentity of theevent record list itSW-PC iswilling to provide togiven in theSWID-PV. A partial result list MUST include all applicable event records withinPosture Collector Identifier of theconsulted range. This meansPB-PA message header in all messages from thatforSW-PC. 3.6.3. Terminating Subscriptions Subscriptions MAY be terminated at anyapplicable event record whose EID is greater than or equal totime by theEID providedsubscribing SW-PV by setting the Clear Subscriptions flag in a SW Request. (See Section 4.9 for more on using this flag.) In theSWIDcase that a SW Requestand whose EIDwith the Clear Subscriptions flag set isless than or equal toreceived theLast Consulted EID, that event recordSW-PC MUSTbe included inonly clear subscriptions that match both theSWID Response conveyingNEA server connection ID and the SW-PV ID for thispartial list of event records.SW Request, and MUST clear all such subscriptions. Thisensures that every partial list of event records is always complete within its indicated range. All SWID Response attributes that convey event records (either using full SWID tags or using SWID tag identifier instances) include an Epoch, Last EID, and Last Consulted EID field. The Last EID containsspecification does not give theEID ofSW-PV thelast event record knownability to terminate subscriptions individually - all subscriptions to theSWID-PC at the time thatSW-PV are cleared when theSWID Response attribute was generated. The Last EID might or mightClear Subscriptions flag is set. This specification does notbe part of the consulted range. As noted above,give theLast Consulted EID field containsSW-PC theEID ofability to unilaterally terminate a subscription. However, if thelast event recordSW-PC experiences a fatal error fulfilling a subscription, resulting in sending a PA-TNC Error attribute of type SW_SUBSCRIPTION_FULFILLMENT_ERROR, then theconsulted range. The Epoch field contains the EID Epoch associated withsubscription whose fulfillment led to theLast EID and Last Consulted EID fields as wellerror MUST be treated asallterminated by both theEIDs in event records contained withinSW-PC and theSWID Response attribute. Note that, if responding to a targeted SWID Request,SW-PV. Only theSWID Response attribute might not containsubscription experiencing theevent record whose EID matcheserror is cancelled and other subscriptions are unaffected. See Section 3.8 for more on this error condition. Finally, a subscription is terminated if theLast Consulted EID value. For example,connection between thelast consulted EID record might have been deemed inapplicable because it did not matchSW-PC and SW-PV is deleted. This occurs when thespecified list of SWID tag identifiersconnection ID used in theSWID Request. If a SWID-PV receives a SWID Response attribute wheremessages between theLast EIDSW-PC andLast Consulted EID fields are identical,theSWID-PV knowsSW-PV becomes unbound. Loss of this connection ID would prevent the SW-PC from sending messages in fulfillment of this subscription. As such, loss of the connection ID necessarily forces subscription termination between the affected parties. 3.6.4. Subscription Status A SW-PV can request thatit has receivedaresultSW-PC report the list of active subscriptions where the SW-PV is the subscriber. A SW-PV can use this to recover lost information about active subscriptions. A SW-PV can also use this capability to verify that a SW-PC has not forgotten any of its subscriptions. The latter iscomplete,especially useful where a SW-PC does not send any attributes in fulfillment of a giventhe parameterssubscription for a long period ofthe request, up to the presenttime.OnThe SW-PV can check theother hand, iflist of active subscriptions on theLast EIDSW-PC andLast Consulted EID values differ, the SWID-PV has received a partial result list. In the latter case, ifverify whether theSWID-PV wishes to tryinactivity is due tocollect the resta lack of reportable events, or due to thepartially delivered resultSW-PC forgetting its obligations to fulfill a given subscription. A SW-PV requests a listitof its subscriptions on a given SW-PC by sending that SW-PC a Subscription Status Request. The SW-PC MUST thensendsrespond with anew SWID Request whose EIDSubscription Status Response (or a PA-TNC Error if an error condition is experienced). The Subscription Status Response MUST contain onegreater thansubscription record for each of theLast Consulted EID inactive subscriptions for which thepreceding response. Doing this causesSW-PV is theSWID-PC to generate another SWID Response attribute containing event records where the earliest reported event record issubscribing party. 3.6.5. Fulfilling Subscriptions As noted in Section 3.4 SW-PCs MUST have theone immediately afterability to automatically detect changes to an endpoint's Software Inventory Evidence Collection in near real-time. For every active subscription, theevent record withSW- PC MUST send an attribute to theLast Consulted EID (since EIDs are assigned sequentially). By repeating this process until it receivessubscribed SW-PV whenever aSWID Response where the Last EID and Last Consulted EID are equal, the SWID-PVchange isabledetected tocollect all eventrelevant recordsover a given range, even ifwithin thecomplete set of event records would be too large to deliver via a single attribute. Implementers need to be aware that a SWID Request might specifyendpoint's Software Inventory Evidence Collection. Such anEID thatattribute isgreater thansaid to be sent "in fulfillment of" theEID ofgiven subscription and any such attribute MUST include that subscription's Subscription ID. If thelast event recorded byestablishing request for that subscription was aSWID-PC. In accordance withtargeted request, then only records that match thebehaviors describedSoftware Identifiers provided inSection 3.6.3, a SWID-PC MUST respond to such athat establishing requestwithare considered relevant. Otherwise, (i.e., for non-targeted requests) any record is considered relevant for this purpose. Figure 3 shows aSWID Response attribute ofsample message exchange where a subscription is established and then later messages are sent from theappropriate type (using SWID tags or SWID tag identifier instances as specifiedSW-PC in fulfillment of theSWID Request) that contains zero event records. This is because the SWID-PC has recorded no event records with EIDs greater than or equal toestablished subscription. +-------------+ +--------------+ | SW-PC | | SW-PV | Time +-------------+ +--------------+ | | | | |<-----------SW Request-------------| | | | | |------------SW Response----------->| | | | | . . . . . . . . . <Change Event>| | | |------------SW Response----------->| | | | | . . . . . . . . . <Change Event>| | | |------------SW Response----------->| | | | V Figure 3: Subscription Establishment and Fulfillment The contents of an attribute sent in fulfillment of a subscription depend on theEIDparameters provided in theSWID Request. In such a case,establishing request for that subscription. Specifically, theLast Consulted EID field MUST be set tocontents of an attribute sent in fulfillment of a subscription have the samevalueformat asthe Last EID field in this SWIDwould a direct responseattribute. This case is called out because consulted range onto the establishing request. For example, if the establishing request stipulated aSWID-PCresponse that contained an event record list wherein affected software indicated using Software Identifiers, all attributes sent insuch a situation is a negative range, where the "first" EIDfulfillment of this subscription will also consist of event record lists expressed using Software Identifiers. As such, all SW Responses displayed in therange (providedexchange depicted in Figure 3 have theSWID Request) is greater than the "last" EIDsame format. A SW Response generated inthe range (this being the EIDfulfillment of an active subscription MUST be a valid SW Response attribute according to all thelast recorded event onrules outlined in theSWID-PC). Implementers needpreceding sections. In other words, an attribute constructed in fulfillment of a subscription will look the same as an attribute sent in direct response toensurean explicit request from a SW-PV thatSWID-PCs do not experience problems in suchhad the same request parameters and which arrived immediately after the given change event. There are acircumstance. Notefew special rules that expand on thisspecification only supportsguideline: 3.6.5.1. Subscriptions Reporting Inventories In thereturning of partial results when returning event records. There is no waycase that a SW-PV subscribes toreturnapartialSW-PC requesting an inventorylist under this specification. 3.6.5. Synchronizing Event Identifiers and Epochs Since EIDsattribute whenever changes aresequential within an Epoch, if a SWID-PV's list of event records contains gaps indetected (i.e. the EIDvalues within a single Epoch,in theSWID-PV knows that there are events that have not been accounted for. The SWID-PV can eitherestablishing requesta new event list to collectis 0), then themissing eventsSW-PC MUST send the requested inventory whenever a relevant change is detected. (A "relevant change" is any change for untargeted requests, orrequestafull inventorychange tore-sync its understanding of the statean indicated record in a targeted request.) Upon detection of a relevant change for an active subscription, theSWID tags onSW-PC sends theendpoint. In either case, afterappropriate inventory information as if it had just received theSWID-PV's recordestablishing request. Attributes sent in fulfillment of this subscription will probably have a large amount of redundancy, as theendpoint's SWID tag collection has been updated, the SWID-PVsame recordsthe new latest EID value and tracks events normally from that point on. If the SWID-PV receives any attribute from a SWID-PC where the EID Epoch differs from the EID Epoch that was used previously, then SWID- PV or any entity using this informationare likely totrack the endpoint's SWID tag collection knows that there is a discontinuitybe present intheir understanding of the endpoint's state. To move past this discontinuity and reestablish a current understandingeach ofthe statethese SW Attributes. The role ofthe endpoint's SWID tag collection, the SWID-PV needs to receive a fullan inventoryfrom the endpoint. This is because itsubscription is notpossibletoaccountreport records just forall events on the SWID-PC overtheinterval since the previous Epoch was used, because thereitems that changed - that isno way to query for EIDs from a previous Epoch. OncetheSWID-PV has receivedrole of afull inventory for the new Epoch, the SWID-PV records the latest EID reported in this new Epoch and can track furthersubscription that reports eventsnormally.(see Section 3.6.5.2). ASWID-PCSW-PC MUST NOTreport events with EIDsexclude a record fromany Epoch other thanan attribute sent in fulfillment of an inventory subscription simply because that record was not involved in thecurrent EID Epoch. The SWID-PC MAY choose to purge alltriggering eventrecords from(although aprevious Epoch from memory after an Epoch change. Alternately,record might be excluded for other reasons, such as if theSWID-PC MAY choosesubscription is targeted - see Section 3.6.5.3). 3.6.5.2. Subscriptions Reporting Events The way in which a SW-PV indicates it wishes toretain someestablish a subscription requesting event recordsfromis by providing apreviousnon-zero EIDEpoch and assign them new EIDs in the current Epoch. However,in thecase where a SWID-PC choosesSW Request establishing thelatter option it MUST ensure thatsubscription (see Section 3.5.1). However, when theorderSW-PC constructs an attribute in fulfillment ofevents accordingthe subscription (other than the direct response totheir EIDs is unchanged and that there is no coverage gap betweenthefirst retainedestablishing request), it MUST only include eventrecorded duringrecords for theprevious Epoch (now reassigneddetected change(s) that precipitated this response attribute. In other words, it MUST NOT send a complete list of all changes starting withan EID inthecurrent Epoch) andindicated EID, up through thefirstlatest change, every time a new eventrecorded during the current Epoch.is detected. Inparticular,effect, theSWID-PC MUST ensure that all change eventsEID in the establishing request is treated as being updated every time an attribute is sent in fulfillment of this subscription, such thatoccurred aftera single event is not reported twice in fulfillment of a single subscription. As such, every SW-PC MUST track the EID of the lastrecordedeventfromthat triggered an attribute for theprevious Epoch are known and recorded. (This might not be possible ifgiven subscription. When theEpoch changenext event (or set of events) isdue to state corruption ondetected, theSWID-PC.) A SWID-PC might choose to reassignSW-PC MUST only report events with EIDsto records from a preceding Epoch to create a "sliding window" of events, where each Epoch change represents a shift inafter thewindow of available events.last reported event. In the casewhere a SWID-PC suffers a crash and loses track of its currentthat the EID Epochor current EID, then it MUST generate a newof the SW-PC changes, the SW-PC MUST treat EID values in the new Epochvalue and begin assigningas being after all EIDswithin that Epoch. In this case,assigned in theSWID-PC MUST purge all event records from beforeprevious Epoch regardless of thecrash as it cannot ensurerelative numeric values of these EIDs. Note thatthere is notwhile agap between the last of those records andsubscription is active, thenext detected event. The processsubscribing SW-PV MAY make other requests forgeneratingevent records that overlap with events that are reported in fulfillment of anew EID Epoch MUST minimizesubscription. Such requests are unaffected by thepossibility thatpresence of thenewly generated EID Epochsubscription, nor is thesame assubscription affected by such requests. In other words, apreviously used EID Epoch. The SWID-PVgiven request willnormally never receiveget the same results back whether or not there was a subscription. Likewise, an attributeindicating that the latest EID is less than the latest EID reportedsent in fulfillment of aprevious attribute withinsubscription will contain the sameEID Epoch. If this occurs, the SWID-PC has suffered an error of some kind, possibly indicative of at least partial corruption of its event log. In this case,information whether or not other requests had been received from theSWID-PV SHOULD treatSW-PV. A SW-PV needs to pay attention to thesituationEID Epoch in these messages, asif there was a changechanges in the Epochand treat any local copymight create discontinuities in the SW-PV's understanding of the endpoint'sSWID tag collectionSoftware Inventory Evidence Collection state, asout-of- sync untildiscussed in Section 3.5.5. In particular, once the EID Epoch changes, afull inventory can be reported by the SWID-PC. In this case, the SWID-PV SHOULD flag the event so it can be examined to ensure it is now operating properly. 3.7. Supporting Multiple Instances of a Single Tag One important considerationSW-PV is unable have confidence that itis possible for multiple instances ofhas aSWID tag to be present on an endpoint. (I.e., multiple SWID tag files whose tag identifiers arecorrect understanding of thesame.) This can happen if there are multiple instancesstate of an endpoint's Software Inventory Evidence Collection until after theindicated software product installedSW-PV collects a complete inventory. SW-PCs MAY send partial lists of event records in fulfillment of a subscription. (See Section 3.5.4 for more onthe endpoint.partial list of event records.) Inorder to account forthepossibility, all SWID-PCscase that a SW-PC sends a partial list of event records, it MUSTfollow specific rules, outlined below. 3.7.1. Inventory Reporting inimmediately send the next consecutive partial list, and continue doing so until it has sent thePresenceequivalent ofMultiply-Instantiated Tags When sending an inventory, either full or based on a targeted request,theSWID-PC MUST include one entry for each instancecomplete list of event records. In other words, if the SW-PC sends arelevant tag. (All tags are relevantpartial list it does not wait for another change event to send another SW Response, but continues sending SW Responses until it has sent all event records that would have been included in afull inventory. In acomplete fulfillment of the subscription. 3.6.5.3. Targeted Subscriptions Subscriptions MAY be targetedrequest for an inventory,to onlytagsapply to records that matchthe tag identifiers provided by the SWID-PV are considered relevant.) For example, ifaparticular piecegiven set ofsoftware is installed twice on an endpoint, and thus there are two instances of its SWID tag present in the endpoint's SWID tag collection, an inventory for which this tag is relevant will contain at least two records for this piece of software, one for each tag instance. (It might contain more if multiple tag creators each created tags for the same piece of installed software.)Software Identifiers. In the case wherethe SWID-PC's response is expressed using full tags, the response MUST contain one copy of each instance of the given tag. In other words, the SWID-PC MUST send one copy of each tag instance, rather than sendchanges are detected that affect multiplecopies of one tag instance. Inrecords, some matching thecase whereestablishing request's Software Identifiers and some not, theSWID-PC's response is expressed using tag identifiers,attribute sent in fulfillment of theresponsesubscription MUST only includethe tag identifier instanceinventory or events (as appropriate) foreach instance ofrecords that match thegiven tag. 3.7.2. Event Reportingestablishing request's Software Identifiers. The SW-PC MUST NOT include non-matching records in thePresence of Multiply Instantiated Tags When reporting events, the specific tagsattribute, even if those non-matching records experienced change events that wereadded, deleted, or changedco-temporal with change events on the matching records. In addition, a SW-PC MUSTbe indicated. For example,send an attribute inthe case where tags A and B are two instances of the same SWID tag, each for separate installationsfulfillment ofthe same software product, and tag Aa targeted subscription only when changesinto the endpoint'sSWID tag collection,Software Inventory Evidence Collection impact one or more records matching theSWID-PCsubscription's establishing request's Software Identifiers. A SW-PC MUSTreport the event using tag A (rather than reporting it using B). This means that the report MUST contain the tag file orNOT send any attribute in fulfillment of a targeted subscription based on detected change to thetag identifier instance forendpoint's Software Inventory Evidence Collection that did not involve any of theaffected tag. 3.8. Subscriptions Thus far, all message exchanges discussed assumerecords targeted by that subscription. 3.6.5.4. No Subscription Consolidation A SW-PV MAY establish multiple subscriptions to aSWID-PV sent an SWID Request attribute andgiven SW-PC. If this is theSWID-PCcase, it isproviding a direct response topossible thatrequest. The SWID Messagea single change event on the endpoint might require fulfillment by multiple subscriptions, andAttributes for PA-TNC specification also supportsthat theability for a SWID-PC toinformation included in attributes that fulfill each of these subscriptions might overlap. The SW-PC MUST send separate attributes for each established subscription that requires amessage with a SWID Attribute to the SWID-PV inresponse due toobserved changes intheendpoint's SWID tag collection, insteadgiven event. Each ofin direct response to a SWID Request. An agreement by a SWID-PC to send content when certain changes are detectedthese attributes MUST contain all information required tothe endpoint's SWID tag collectionfulfill that individual subscription, even if that information isreferred toalso sent inthis specification as a "subscription", andother attributes sent in fulfillment of other subscriptions at theSWID-PV that receivessame time. In other words, SW-PCs MUST NOT attempt to combine information when fulfilling multiple subscriptions simultaneously, even if thiscontent is saidresults in some redundancy in the attributes sent tobe "subscribed to"thegiven SWID-PC. All SWID-PCs and SWID-PVs MUST supportSW-PV. 3.6.5.5. Delayed Subscription Fulfillment A SW-PC MAY delay theusefulfillment ofsubscriptions. 3.8.1. Establishing Subscriptions A SWID-PV establishesa subscriptionon a particular SWID-PC by sending a SWID Request attribute with the Subscription flag set. The SWID Request attribute is otherwise identical to the SWID Requests discussed in previous sections. Specifically, suchfollowing aSWID Request might request full tags or tag identifier instances, might be targeted, and might requestchange eventrecords or endpoint inventory. Assuming no error is encountered, a SWID-PC MUST send a SWID Response attributeindirect responsethe interest of waiting tothis SWID Request attribute, just assee if additional change events are forthcoming and, if so, conveying theSubscription flag was not set. As such,relevant records back to themessage exchange that establishes a new subscriptionSW-PV in aSWID-PC hassingle SW Response attribute. This can help reduce network bandwidth consumption between thesame flow seen inSW-PC and theprevious message exchanges, as depicted in Figure 2.SW-PV. For example, consider a situation where 10 changes occur a tenth of a second apart. If theSWID-PVSW-PC does notreceive a PA-TNC Error attribute (as describeddelay inSection 3.10assembling andSection 4.16) in response to their subscription request,sending SW Response attributes, thesubscription has been successfully established onSW-PV will receive 10 separate SW Response attributes over a period of 1 second. However, if theSWID-PC. The SWID Request attribute that establishesSW-PC waits half anew subscription is referred to assecond after the"establishing request" forinitial event before assembling a SW Response, the SW-PV only receives two SW Response attributes over the same period of time. Note thatsubscription. Whenthe ability to consolidate events for a single subscriptionis established it is assignedover aSubscription ID value. The Subscription ID is equal to the value of the Request IDgiven period of time does not contradict theestablishing request. (For more about Request IDs, seerules in Section4.8.) A SWID-PC MUST have the ability to record and support multiple simultaneous subscriptions from a single party and subscriptions from multiple parties. A SWID-PV MUST have the ability to record and support multiple simultaneous subscriptions to a single party and subscriptions to3.6.5.4 prohibiting consolidation across multipleparties. 3.8.2. Managing Subscriptions The SWID-PC MUST record each accepted subscription along with the identitysubscriptions. When delaying fulfillment ofthe party to whom attributessubscriptions, SW-PCs are still required tobe pushedfulfill each individual subscription separately. Moreover, incompliance withthesubscription. This identity includes bothcase that change events within theNEA Server's connection IDdelay window cancel each other out (e.g., a record is deleted and then re-added), thePosture Validator Identifier from the PB-PA message that delivered the request. Likewise, SWID-PVsSW-PC MUSTrecordstill report eachaccepted subscription for which they arechange event rather than just reporting thesubscribing party along withnet effect of changes over theassociated Subscription ID anddelay period. In other words, delayed fulfillment can decrease theidentitynumber of attributes send by theSWID-PC that will be fulfillingSW-PC, but it does not reduce thesubscription. The SWID-PV needs to retain this information in ordertotal number of change events reported. SW-PCs are not required tocorrectly interpret pushed SWID Response attributes sent insupport delayed fulfillment ofthe subscription. The identity of the SWID-PC is givensubscriptions. However, in thePosture Collector Identifier of the PB-PA message header in all messages fromcase thatSWID-PC. 3.8.3. Terminating Subscriptions Subscriptions MAY be terminated at any time bythesubscribing SWID- PV by settingSW-PC does support delayed subscription fulfillment, it MUST be possible to configure theClear Subscriptions flag in a SWID Request. (See Section 4.9 for more on using this flag.)SW-PC to disable delayed fulfillment. Inthe case that the SWID- PC receives both the connection ID and the Posture Validator ID of the SWID-PV requesting that subscriptionsother words, parties deploying SW-PCs need to becleared (i.e., the clearallowed to disable delayed subscriptionrequestfulfillment in their SW-PCs. The manner in which such configuration occurs isreceived via a TNC_IMC_ReceiveMessageLong function) and the SWID-PC has been recording PV IDs associated with subscriptions when available,left to theSWID-PCdiscretion of implementers, although implementers MUSTonly clear subscriptions that match both the connection ID andprotect thePV ID, and MUST clear all such subscriptions.configuration procedure from unauthorized tampering. Inthe case that the SWID-PC only has the connection ID of the party requesting that subscriptionsother words, there needs to becleared or the SWID-PC has not been recording Posture Validator IDs associated with subscriptions even when available, it MUST only clear subscriptions that match the connection ID andsome assurance thathave no associated Posture Validator ID, and MUST clear all such subscriptions. This specification does not give the SWID-PV the ability to terminate subscriptions individually - all subscriptions to the SWID-PVunauthorized individuals arecleared when the Clear Subscriptions flag is set. This specification doesnotgive the SWID-PC the abilityable tounilaterally terminate a subscription. However, if the SWID-PC experiences a fatal error fulfilling a subscription, resultingintroduce long delays insending a PA-TNC Error attribute of type SWID_SUBSCRIPTION_FULFILLMENT_ERROR, then thesubscriptionwhose fulfillment led tofulfillment. 3.7. Multiple Sources of Software Inventory Evidence Records The records in an endpoint's software inventory evidence collection might potentially come from multiple sources. For example, records might be derived from ISO SWID tags deposited on theerror MUSTfile system and collected therefrom. Records might also betreated as terminatedgenerated byboth the SWID-PCtools such as software andthe SWID-PV. Only the subscription experiencing the errorpackage managers (e.g., RPM or YUM) or might be translated from software discovery reports. A SW-PC iscancelled and other subscriptions are unaffected. See Section 3.10 for morenot required to identify every possible source of software information onthis error condition. Finally,its endpoint. Some SW-PCs might be explicitly tied only to one or asubscription is terminated if the connection betweenhandful of software inventory sources. For all software inventory evidence sources that a particular SW-PC supports, it MUST completely support all requirements of this specification with regard to those sources. In other words, for supported sources, theSWID-PC and SWID-PVSW-PC isdeleted. This occurs whenrequired to be capable of providing a complete set of theconnection ID usedprovided software inventory evidence records; monitoring for changes in themessages between the SWID-PCrecords reported by those sources, correctly providing responses for both full and targeted requests that include records from those sources, and providing either complete records or Software Identifiers as appropriate. If theSWID-PV becomes unbound. Losssource's output is not in one ofthis connection ID would preventtheSWID-PC from sending messagesdata models identified infulfillment of this subscription. As such, loss oftheconnection ID necessarily forces subscription termination betweenSoftware Data Model IANA table (see Section 9.4), theaffected parties. 3.8.4. Subscription Status A SWID-PV can requestSW-PC MUST be capable of converting thata SWID-PC report the listoutput into one ofactive subscriptions wheretheSWID-PV issupported data models. In all cases, thesubscriber. A SWID-PV can use this to recover lost information about active subscriptions. A SWID- PV canSW-PC MUST alsouse this capability to verifybe capable of deriving a Software Identifier from the resulting record and also assigning that record aSWID-PC has not forgotten any of its subscriptions.unique Record Identifier. Thelatter is especially useful where a SWID-PC does not sendSW-PC MUST NOT provide anyattributesinventory or event information from software inventory sources for which it cannot provide this full support. When providing a SW Response (either in direct response to a SW Request or in fulfillment of agiven subscription for a long period of time. The SWID-PV can check the list of active subscriptions onsubscription) theSWID-PC and verify whetherSW-PC MUST include theinactivitycomplete set of relevant data from all supported sources of software inventory evidence. In other words, a full inventory isduerequired to contain all records from all supported sources, alack of reportable events, or duetargeted inventory is required tothe SWID-PC forgetting its obligationscontain all relevant records from all sources, and event tracking is required tofulfill a given subscription. A SWID-PV requestscover all events from all sources. With regard to events, alistSW-PC's assignment ofits subscriptionsEIDs MUST reflect the presence and order of all events ona given SWID-PC by sendingthe endpoint (at least for supported sources) regardless of the source. This means thatSWID-PC a Subscription Status Request. The SWID-PC MUST then respond with a Subscription Status Response (or a PA-TNC Errorif source A experiences anerror condition is experienced). The Subscription Status Response contains one subscription record for each of the active subscriptions for whichevent, and then source B experiences two events, and then source A experiences another two events, theSWID-PVSW- PC is required to capture five events with consecutive EID values reflecting thesubscribing party. Specifically,order in which thecaseevents occur. Note that, if a SW-PC collects data from multiple sources, it is possible thatthe Subscription Status Request arrives withsome software products might be "double counted". This can happen if both sources of inventory evidence provide aconnection ID andrecord for aPosture Validator ID and the SWID-PC has been recording Posture Validator IDs associated with subscriptions when available, the SWID-PCsingle installation of a software product. Moreover, each of these provided records might have different Software Identifiers. When a SW-PC reports information or records events from multiple inventory evidence sources, it MUSTinclude only subscriptionuse the information those sources provide, rather than attempting to perform some form of reduction. In other words, if multiple sources report recordsassociated with bothcorresponding to a single installation of a software product, all such records from each source are required to be part of thegiven connection ID and Posture Validator ID,SW-PC's processing even if this might lead to multiple reporting, andMUST include allthe SW-PC is not to ignore some records to avoid suchrecords. Inmultiple reporting. Similarly, in the case that multiple sources report an event, theSubscription Status Request arrivesSW-PC MUST create separate event records withonly a connection ID or the SWID-PC has not been recording Posture Validator IDs associated with subscriptionsseparate EIDs for each of these, evenwhen available,if there is theSWID-PC MUST include only subscription records associated withchance that they represent thegiven connection IDtwo sources reporting the same action on the endpoint. Entities tracking software inventory information collected via SW-PCs and SW-PVs need to be aware thathave no associated Posture Validator ID, and MUST include allsuchrecords. 3.8.5. Fulfilling Subscriptions As noted in Section 3.5 SWID-PCs MUST have the ability to automatically detect changesdouble-reporting might occur. How (or if) such occurrences are detected and resolved is up to the implementers of those entities. 3.8. Error Handling In the case where the SW-PC detects anendpoint's SWID tag collectionerror innear real-time. For every active subscription, the SWID-PCa SW Request attribute that it receives it MUSTsend anrespond with a PA-TNC Error attribute with an error code appropriate to thesubscribed SWID-PV whenever a change is detected to relevant tags withinnature of theendpoint's SWID tag collection. The SWID-PC MAY choose to exclusively deliver this attribute.error. (Seesection 4.5Section 4.2.8 ofRFC 5793 (PB-TNC) [RFC5793]PA-TNC [RFC5792] for moreon exclusive delivery.) Such an attribute is said to be sent "in fulfillment of" the given subscriptiondetails about PA-TNC Error attributes andany such attribute MUST include that subscription's Subscription ID. If the establishing requesterror codes as well as Section 4.16 in this specification for error codes specific to SW Attributes.) In the case thatsubscription wasan error is detected in atargeted request, then only tags that matchSW Request theSWID tag identifiers provided in that establishing request are considered relevant. Otherwise, (i.e., for non-targeted requests)SW-PC MUST NOT take anytag is considered relevant foraction requested by thispurpose. Figure 3 shows a sample message exchange whereSW Request, even if partial completion of the SW is possible. In other words, asubscriptionSW Request that contains an error isestablishedcompletely ignored by the SW-PC (beyond sending a PA-TNC Error attribute, andthen later messages are sent frompossibly logging theSWID-PC in fulfillment oferror locally) rather than being partially executed. In theestablished subscription. +-------------+ +--------------+ | SWID-PC | | SWID-PV | Time +-------------+ +--------------+ | | | | |<----------SWID Request------------| | | | | |-----------SWID Response---------->| | | | | . . . . . . . . . <Change Event>| | | |-----------SWID Response---------->| | | | | . . . . . . . . . <Change Event>| | | |-----------SWID Response---------->| | | | V Figure 3: Subscription Establishment and Fulfillment The contents of an attribute sent in fulfillment ofcase where the SW-PC receives asubscription depend onvalid SW Request attribute but experiences an error during theparameters provided inprocess of responding to that attribute's instructions where that error prevents theestablishing request forSW-PC from properly or completely fulfilling thatsubscription. Specifically,request, thecontents of anSW-PC MUST send a PA-TNC Error attributesent in fulfillmentwith an error code appropriate to the nature ofa subscription havethesame format as woulderror. In the case where adirect responsePA-TNC Error attribute is sent, the SW-PC MUST NOT take any of the actions requested by the SW Request attribute which led to theestablishing request. For example, ifdetected error. This is theestablishing request stipulated a response that contained an event record list wherein affected SWID tags were indicated using SWID tag identifier instances, all attributes sent in fulfillment of this subscription will also consist of event record lists expressed using SWID tag identifier instances. As such, all SWID Responses displayed in the exchange depicted in Figure 3case even if some actions could have been completed successfully, and might even require thesame format. A SWID Response generated in fulfillment of an active subscription MUST be a valid SWID Response attribute accordingSW-PC toall the rules outlined inreverse some successful actions already taken before thepreceding sections.error condition was detected. In other words,an attribute constructed in fulfillmenteither all aspects of asubscription will lookSW Request complete fully and successfully (in which case thesame as an attribute sent in direct response to an explicit request fromSW-PC sends aSWID-PV that hadSW Response attribute), or no aspects of thesame request parameters andSW Request occur (in whicharrived immediately aftercase thegiven change event. There areSW-PC sends afew special rules that expand on this guideline: 3.8.5.1. Subscriptions Reporting InventoriesPA-TNC Error attribute). In the case that aSWID-PV subscribes toSW-PC sends aSWID-PC requesting an inventoryPA-TNC Error attributewhenever changes are detected (i.e. the EIDinthe establishing request is 0),response to a SW Request then theSWID-PCSW-PC MUST NOT also send any SW Response attribute in response to therequested inventory wheneversame SW Request. For this reason, the sending of arelevant change is detected. (A "relevant change" is any change for untargeted requests, orSW Response attribute MUST be the last action taken by achange to an indicated SWID tagSW-PC in response to atargeted request.) Upon detectionSW Request to avoid the possibility of arelevant change for an active subscription,processing error occurring after that SW Response attribute is sent. In theSWID-PC sendscase that theappropriate inventory information as ifSW-PC detects an error that prevents ithad just receivedfrom properly or completely fulfilling its obligations under an active subscription, theestablishing request. Attributes sent in fulfillment of this subscription will probably haveSW-PC MUST send alarge amountPA-TNC Error attribute ofredundancy, as the same tags are likelytype SW_SUBSCRIPTION_FULFILLMENT_ERROR tobe present in each of these SWID Attributes. The rolethe SW-PV that established this subscription. This type ofan inventoryPA-TNC Error attribute identifies the specific subscriptionis notthat cannot be adequately honored due toreport tags just fortheitems that changed - thaterror condition as well as an error "sub-type". The error sub-type is used to indicate theroletype ofa subscriptionerror condition the SW-PC experienced thatreports events (see Section 3.8.5.2). A SWID-PC MUST NOT exclude a tagprevented it froman attribute sent in fulfillment of an inventory subscription simply becausehonoring the given subscription. In the case thattag wasthe error condition cannot be identified or does notinvolved inalign with any of thetriggering event (althoughdefined error codes, thetag mightSW_ERROR error code SHOULD beexcluded for other reasons, such as if the subscription is targeted - see Section 3.8.5.3). 3.8.5.2. Subscriptions Reporting Events The wayused inwhich a SWID-PV indicates it wishes to establishthe sub-type. In the case that asubscription requesting event recordsSW_SUBSCRIPTION_FULFILLMENT_ERROR isby providing a non-zero EID in the SWID Request establishingsent, the associated subscription(see Section 3.6.1). However, whenMUST be treated as cancelled by both theSWID-PC constructs an attribute in fulfillment of the subscription (other than the direct response to the establishing request), it MUST only include event records for the detected change(s) that precipitated this response attribute. In other words, itSW-PC and SW- PV. The SW-PV MUST NOT senda complete list of all changes starting with the indicated EID, up through the latest change, every time a new event is detected.any PA-TNC Error attributes to SW-PCs. Ineffect, the EID intheestablishing request is treated as being updated every timecase that a SW-PV detects anattribute is sent in fulfillmenterror condition, it SHOULD log this error but does not inform any SW-PC's of thissubscription, such that a single event isevent. Errors might include, but are notreported twice in fulfillmentlimited to, detection of malformed SW Response attributes sent from asingle subscription. As such, every SWID-PC MUST track the EID of the last event that triggered an attribute for thegivensubscription. When the next event (or setSW-PC, as well as detection ofevents) is detected, the SWID-PC MUST only report events with later EIDs. Inerror conditions when thecaseSW-PV processes SW Responses. Both SW-PCs and SW-PVs SHOULD log errors so that administrators can trace theEID Epochcauses of errors. Log messages SHOULD include theSWID-PC changes,type of theSWID-PC MUST treat EID values inerror, thenew Epoch as being after all EIDs assignedtime it was detected, and additional descriptive information to aid in understanding theprevious Epoch regardlessnature and cause of therelative numeric valueserror. 4. Software Message and Attributes for PA-TNC Protocol This section describes the format and semantics ofthese EIDs. Note that while a subscription is active,thesubscribing SWID-PV MAY make other requestsSoftware Message and Attributes forevent records that overlap with events that are reported due to a subscription. Such requests are unaffected byPA-TNC protocol. Software Message and Attributes for PA-TNC uses thepresencestandard PA-TNC message header format. See the PA-TNC specification [RFC5792] for information on this header format. 4.1. PA Subtype (AKA PA-TNC Component Type) The NEA PB-TNC interface provides a general message-batching protocol capable of carrying one or more PA-TNC messages between thesubscription, norPosture Broker Client and Posture Broker Server. When PB-TNC isthe subscription affected by such requests. In other words,carrying agiven request will getPA-TNC message, thesame results back whether or not there was a subscription. Likewise, an attribute sent in fulfillment of a subscription willPB-TNC message headers contain a 32 bit identifier called thesame information whether or not other requests had been received from the SWID-PV. A SWID-PV needs to pay attention toPA Subtype. The PA Subtype field indicates theEID Epoch in these messages, as changes intype of component associated with all of theEpoch might create discontinuities inPA-TNC attributes carried by theSWID-PV's understandingPB-TNC message. The core set ofthe endpoint's SWID tag collection state, as discussedPA Subtypes is defined inSection 3.6.5. In particular, oncetheEID Epoch changes, a SWID-PV is unable have confidence that it has a correct understanding ofPA-TNC specification. This specification adds thestate of an endpoint's SWID tag collection until afterfollowing enumeration element to theSWID-PV collects a complete inventory. SWID-PCs MAY send partial lists of event recordstable infulfillmentsection 7.2 ofa subscription. (See Section 3.6.4 for more on partial list of event records.) Inthecase that a SWID-PC sends a partial list of event records, it MUST immediately sendPA- TNC specification [RFC5792] using thenext consecutive partial list,IETF Standard name space (SMI Private Enterprise Number 0x000000): +-----+---------+-------------+-------------------------------------+ | PEN | Integer | Name | Defining Specification | +-----+---------+-------------+-------------------------------------+ | 0 | 9 | SW | Software Message andcontinue doing so until it has sent the equivalent of the complete list of event records. In other words, if the SWID-PC sends a partial list it does not waitAttributes foranother change event| | | | Attributes | PA-TNC | +-----+---------+-------------+-------------------------------------+ Table 2: PA Subtype Each PA-TNC attribute described in this specification is intended tosend another SWID Response, but continues sending SWID Responses until it hasbe sentall event records that would have been included in a complete fulfillment ofbetween thesubscription. 3.8.5.3. Targeted Subscriptions Subscriptions MAYSW-PC and SW-PV, so will betargeted to only apply to tags that matchcarried in agiven setPB-TNC message indicating a PA Subtype oftag identifiers. In the case where changes are detectedSW Attributes. Note thataffect multiple tags, some matching the establishing request's tag identifiers and some not,although the PA-TNC Error attributesentis defined infulfillmentthe PA-TNC specification, when it is used in a SW Attribute exchange, it uses the SW Attributes Component Definition Value, as described in Section 4.2.8 of thesubscriptionPA- TNC specification [RFC5792]. PB-TNC messages MUSTonlyalways includeinventory or events (as appropriate) for tags that matchtheestablishing request's tag identifiers. The SWID-PC MUST NOT include non-matching tagsSW Attributes Subtype defined inthe attribute, even if those non-matching tags experienced change events that were co-temporal with change events on the matching tags. In addition, a SWID-PC MUST send an attribute in fulfillment of a targeted subscription onlythis section whenchanges to the endpoint's SWID tag collection impactcarrying SW Attributes over PA-TNC. 4.2. PB-TNC and PA-TNC Messages A PA-TNC message is wrapped within a PB-TNC message. A single PA-TNC message might contain one or moretags matching the subscription's establishing request's tag identifiers. A SWID-PC MUST NOT send any attribute in fulfillmentPA-TNC attributes. All of these attributes within atargeted subscription based on detected change to the endpoint's SWID tag collection that did not involve any ofsingle PA-TNC message use thetags targeted by that subscription. 3.8.5.4. No Subscription Consolidation A SWID-PV MAY establish multiple subscriptions to a given SWID-PC. If this issame PA Subtype value. As such, SW Attributes are never sent in thecase, it is possiblesame PA-TNC message as attributes defined in other PA-TNC binding specifications. Note, however, that a singlechange event on the endpointPB-TNC batch mightrequire fulfillment bycontain multiplesubscriptions,PB- TNC and PA-TNC messages, andthat the information included in attributes that fulfilleach ofthese subscriptionsthose messages mightoverlap.use different PA Subtypes. For more information on PB-TNC and PA-TNC messages and message headers, see the PB-TNC [RFC5793] and PA-TNC [RFC5792] specifications, respectively. 4.3. PA-TNC Attribute Header TheSWID-PC MUST send separate attributesSoftware Message and Attributes foreach established subscription that requires a response due to the given event. Each of these attributes MUST contain all information required to fulfill that individual subscription, even if that information is also sentPA-TNC protocol described inother attributes sent in fulfillmentthis specification is an extension ofother subscriptions atthesame time. In other words, SWID-PCs MUST NOT attempt to combine information when fulfilling multiple subscriptions simultaneously, even if this results in some redundancyPA-TNC protocol described in theattributes sentNEA Architecture. PA-TNC was designed tothe SWID-PV. 3.8.5.5. Delayed Subscription Fulfillment A SWID-PC MAY delay the fulfillment of a subscription following a change eventbe very flexible inthe interestorder to carry many types ofwaitingPA-TNC attributes that pertain tosee if additional change events are forthcoming and, if so, conveying the relevant records backan enumerated set of component types (e.g. Table 2). PA-TNC attributes might be carried from Posture Collector tothe SWID-PV in a single SWID Response attribute. This can help reduce network bandwidth consumption between the SWID-PCPosture Validator or vice versa andthe SWID-PV. For example, consider a situation where 10 changes occurmight carry information about endpoint state or other information to be sent between atenth ofPosture Validator and asecond apart. IfPosture Collector. Therefore, theSWID-PC does not delay in assemblingSoftware Message andsending SWID Response attributes, the SWID-PV will received 10 separate SWID Response attributes overAttributes for PA-TNC specification defines aperiodcollection of1 second. However, if the SWID-PC waits half a second after the initial event before assembling a SWID Response, the SWID-PV only receives two SWID ResponsePA-TNC attributesoverrelevant to thesame periodcollection and transmission oftime. Note thatsoftware inventories and associated events. Figure 4, reproduced from theability to consolidate events for a single subscription overPA-TNC specification, shows the format of agiven period of time does not contradict the rulesPA-TNC attribute. Multiple PA-TNC attributes can be sent inSection 3.8.5.4 prohibiting consolidation across multiple subscriptions. When delaying fulfillment of subscriptions, SWID-PCs are still required to fulfilla single PB-TNC message, eachindividual subscription separately. Moreover, in the case that change eventshoused withinthe delay window cancel each other out (e.g., a SWID tag is deletedan attribute structure as described below. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | PA-TNC Attribute Vendor ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PA-TNC Attribute Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | PA-TNC Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Attribute Value (Variable Length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 4: PA-TNC Header andthen re-added), the SWID-PC MUST still report each change event rather than just reportingAttribute Format +-----------+-------------------------------------------------------+ | Field | Description | +-----------+-------------------------------------------------------+ | Flags | This field defines flags affecting thenet effectprocessing ofchanges over| | | thedelay period. In other words, delayed fulfillment can decreaseSoftware Message and Attributes for PA-TNC. | | | Permissible flags are given in thenumberPA-TNC | | | specification. [RFC5792] | | | | | Attribute | This field indicates the owner ofattributes send bytheSWID-PC, but it does not reducename space | | Type | associated with thetotal number of change events reported. SWID-PCs are not required to support delayed fulfillment of subscriptions. However,Attribute Type. Attributes | | Vendor ID | defined in thecase that the SWID-PC does support delayed subscription fulfillment, it MUST be possibleSoftware Message and Attributes for | | | PA-TNC specification have a value corresponding toconfigure| | | theSWID-PC to disable delayed fulfillment. In other words, parties deploying SWID-PCs need to be allowed to disable delayed subscription fulfillment in their SWID-PCs.IETF SMI Private Enterprise Number value | | | (0x000000). Themanner in which such configuration occursPA-TNC Error attribute isleft todefined in | | | thediscretionPA-TNC specification [RFC5792] and also uses the | | | IETF SMI Private Enterprise Number Value (0x000000). | | | See Table 4 for more information. | | | | | Attribute | This field defines the type ofimplementers, although implementers MUST protecttheconfiguration procedure from unauthorized tampering. In other words, there needsAttribute. The | | Type | values corresponding tobe some assurance that unauthorized individualsSW Attributes arenot able to introduce long delays in subscription fulfillment. 3.9. Multiple Sources of SWID Tags As noted in Section 2.1, the SWID tagsgiven inan endpoint's SWID tag collection might potentially come from multiple sources. For example, SWID tags might be deposited on| | | Table 4. | | | | | Attribute | This field contains thefile system and collected therefrom. SWID tags might also be dynamically generated by tools such as software and package managers (e.g., RPM or YUM) or might be dynamically translated from software discovery reports expressedlength insome non-SWID format. A SWID-PC is not required to identify every possible sourceoctets ofSWID tags on its endpoint. Some SWID-PCs might be explicitly tied only to one or a handful of SWID tag sources. SWID-PCs are not required to be aware of SWID tags that come from sources other than those that they specifically support. In particular, if an endpoint has 3 sourcesthe | | Length | entire Attribute, including the Attribute's header. | | | | | Attribute | This field contains the SW Attribute. | | Value | | +-----------+-------------------------------------------------------+ Table 3: Fields ofSWID tags, andthe PA-TNC Attribute Format 4.4. SW Attribute Overview The attributes defined in this specification appear below with aSWID-PC supports collecting SWID tags from twoshort summary ofthose sources, not onlytheir purposes. Each attribute isthat SWID-PC only responsible for reporting tags that come from its two supported sources, but itdescribed in greater detail in subsequent sections. o SW Request - This attribute isalso only responsible for monitoring for change eventsused to request a software inventory or software event list fromthose two sources.an endpoint. Thisnoted, for all of the SWID tag sources thatattribute might also establish aparticular SWID-PC supports, itsubscription on the recipient SW-PC. A SW- PC MUSTcompletely support all requirements ofNOT send thisspecification with regard to its supported sources. In other words, for supported sources, the SWID-PCattribute. o Software Identifier Inventory - This attribute isrequiredused tobe capable of providing complete inventoriesconvey an inventory expressed using Software Identifiers (instead ofSWID tags; monitoring for changes in the SWID collections reported by those sources, correctly providing responses for bothfulland targeted requests, and providing either complete SWID tag files or SWID identifier instances as appropriate. The SWID-PCrecords). When a SW-PC receives a SW Request attribute requesting an inventory using Software Identifiers, the SW-PC MUST send a Software Identifier Inventory attribute (or a PA-TNC Error) in response. This attribute also MAY be sent by the SW-PC in fulfillment of an active subscription. A SW-PV MUST NOTprovide any inventory or event information from SWID tag sources for which it cannot providesend thisfull support. The SWID Response attributes provide no wayattribute. o Software Identifier Events - This attribute is used to convey a list ofdistinguishing asevents concerning changes towhich SWID tags, identifier instances, or eventan endpoint's Software Inventory Evidence Collection. Affected software inventory evidence records areassociated with specific sources. The SWID-PC MUST include the complete set of relevant data from all supported sourcesindicated using Software Identifiers (instead ofSWID tags in every SWID Response. In other words, afullinventory is required to contain all the SWID tags from all supported sources,records). When atargeted inventory is required to contain all relevant tags from all sources, and event tracking is required to cover all events from both sources. With regard to events,SW-PC receives aSWID-PC's assignment of EIDs MUST reflectSW Request attribute requesting an event collection using Software Identifiers, thepresence and order of all events onSW- PC MUST send a Software Identifier Events attribute (or a PA-TNC Error) in response. This attribute also MAY be sent by theendpoint (at least for supported sources) regardlessSW-PC in fulfillment ofthe source. This means that if source A experiencesanevent, and then source B experiences two events, and then sourceactive subscription. Aexperiences another two events, the SWID-PCSW-PV MUST NOT send this attribute. o Software Inventory - This attribute isrequiredused tocapture five events with consecutive EID values reflecting the order in which the events occur. Note that, if a SWID-PC collects data from multiple sources, it is possible that someconvey an inventory expressed using full softwareproducts might be "double counted". This can happen if both sourcesinventory evidence records (instead ofSWID tags provide a SWID tag forSoftware Identifiers). When asingle instance ofSW-PC receives a SW Request attribute requesting an inventory using full softwareproduct. Moreover, each of these provided tags will probably have different SWID tag identifier instances, since Instance IDs are managed by the process that extracts the SWID tags from the individual sources, and such processes are under no obligation to coordinate with each other as toinventory evidence records, theInstance ID value. When a SWID-PC reports information or records events from multiple SWID tag sources, itSW-PC MUSTusesend a Software Inventory attribute (or a PA-TNC Error) in response. This attribute also MAY be sent by theinformation those sources provide, rather than attempting to perform some formSW-PC in fulfillment ofreduction. In other words, if multiple sources report a particular SWID tag correspondingan active subscription. A SW-PV MUST NOT send this attribute. o Software Events - This attribute is used to convey asingle installationlist ofaevents concerning changes to an endpoint's inventory evidence collection. Affected softwareproduct, all such tags from each sourceinventory evidence records arerequired to be partindicated using full records (instead of Software Identifiers). When a SW-PC receives a SW Request attribute requesting an event collection using full records, theSWID-PC's processing even if this might lead to multiple reporting, and the SWID-PC is not to ignore some tags to avoid such multiple reporting. Similarly,SW-PC MUST send a Software Events attribute (or a PA-TNC Error) in response. This attribute also MAY be sent by thecase that multiple sources reportSW-PC in fulfillment of anevent, the SWID-PCactive subscription. A SW-PV MUSTcreate separate event records with separate EIDs for each of these, even if there is the chance that they represent the two sources reporting the same action on the endpoint. Entities tracking SWID tags collected via SWID-PCs and SWID-PVs need to be aware that such double-reporting might occur. How (or if) such occurrences are detected and resolvedNOT send this attribute. o Subscription Status Request - This attribute isupused tothe implementersrequest a SW-PC send a summary ofthose entities. 3.10. Error Handling Inall thecaseactive subscriptions it has where theSWID-PC detects an error in a SWID Request attribute that it receives itrequesting party is the subscriber. The SW-PC MUST respond with a Subscription Status Response (or a PA-TNCErrorError). A SW-PC MUST NOT send this attribute. o Subscription Status Response - This attributewith an error code appropriateis used to convey information about thenature of the error. (See Section 4.2.8 of PA-TNC [RFC5792]active subscriptions that a SW-PC has formore details abouta given subscriber. A SW-PV MUST NOT send this attribute. o PA-TNC Errorattributes and error codes as well- This is the standard PA-TNC Error attribute asSection 4.16defined inthis specification for error codes specificPA-TNC [RFC5792] and is used toSWID attributes.) In the castindicate that an erroris detected inwas encountered during aSWID Request the SWID-PCSW Attribute exchange. It MUSTNOT take any action requested by this SWID Request, even if some requested action canbecompleted successfully despite the errorsent by a SW-PC inthe attribute. In other words,response to aSWIDSW Requestthat contains an error is ignored by the SWID-PC beyond sending a PA-TNC Error attribute, and possibly logging the error locally. Inin the case where theSWID-PC receivesSW-PC encounters avalid SWID Request attribute but experiencesfatal error (i.e., an errorduring the process of responding to that attribute's instructions wherethaterrorprevents further processing of an exchange) relating to theSWID-PC from properly or completely fulfilling that request, the SWID-PCattribute exchange. A SW-PV MUST NOT send this attribute. The SW-PC MUST then ignore the erroneous attribute after a PA-TNC Error attributewith an error code appropriateis sent (i.e., do not attempt to act on an attribute that generated a PA- TNC Error beyond sending thenature of the error.PA-TNC Error). In the case where the SW-PV experiences a fatal error, it MUST ignore the erroneous attribute without sending a PA-TNC Errorattribute is sent, the SWID-PC MUST NOTattribute. It MAY takeany of theother actionsrequested by the SWID Request attribute which ledin response to thedetected error. This iserror, such as logging thecasecause of the error, or evenif sometaking actionscan be completed successfully, and might even require the SWID-PCtoreverse some successful actions already taken beforeisolate theerror condition was detected. In other words, either all aspectsendpoint Because one ofa SWID Request complete fully and successfully (in which casetheSWID-PC sends a SWID Response attribute),Software Identifier Inventory, Software Identifier Events, Software Inventory, orno aspects of the SWID Request occur (in which case the SWID-PC sends a PA-TNC Error attribute). In the case that a SWID-PC sendsSoftware Events attributes is expected to be sent to aPA-TNC Error attributeSW-PV in direct response to aSWIDSW Requestthen the SWID-PC MUST NOT also send any SWID Responseattribute or inresponsefulfillment of an active subscription, those four attribute types are referred tothe same SWID Request. Forcollectively in thisreason, thedocument as "SW Response" attributes. All SW-PVs MUST be capable of sending SW Requests and be capable ofa SWIDreceiving and processing all SW Responseattributeattributes as well as PA-TNC Error attributes. All SW-PCs MUST bethe last action taken by a SWID-PC in response to a SWID Request to avoid the possibilitycapable ofareceiving and processingerror occurring after that SWIDSW Requests and be capable of sending all types of SW Responseattribute is sent. In the case that the SWID-PC detects an error that prevents it from properly or completely fulfilling its obligations under an active subscription, the SWID-PC MUST send aattributes as well as PA-TNC Errorattribute of type SWID_SUBSCRIPTION_FULFILLMENT_ERRORattributes. In other words, both SW-PVs and SW-PCs are required to support their role in exchanges using any of theSWID-PV that establishedattribute types defined in thissubscription. This type ofsection. SW-PVs MUST ignore any SW Request attributes that they receive. SW- PCs MUST ignore any SW Response attributes or PA-TNC Errorattribute identifies the specific subscriptionattributes thatcannot be adequately honored due to the error condition as well as an error "sub-type". The error sub- typethey receive. 4.5. SW Attribute Exchanges A SW Attribute Exchange is used toindicateprovide thetype of error conditionSW-PV with a software inventory or event collection from theSWID-PC experienced that prevented it from honoringqueried endpoint. +-------------+ +--------------+ | SW-PC | | SW-PV | Time +-------------+ +--------------+ | | | | |<------------SW Request--------------| | | | | | SW Response* | | |-----------------or----------------->| | | PA-TNC Error | | | | V *SW Response is one of thegiven subscription.following: Software Identifier Inventory, Software Identifier Events, Software Inventory, or Software Events. Figure 5: SW Attribute Exchange (Direct Response to SW Request) In this exchange, thecase thatSW-PV indicates to theerror condition cannot be identified or does not align with anySW-PC, via a SW Request, the nature of thedefined error codes,information it wishes to receive (inventory vs. events, full or targeted) and how it wishes theSWID_ERROR error code SHOULDreturned inventory to beused in the sub-type. In the case that a SWID_SUBSCRIPTION_FULFILLMENT_ERROR is sent,expressed (full records or Software Identifiers). The SW-PC responds with theassociated subscription MUST be treated as cancelled by bothrequested information using theSWID-PC and SWID-PV. The SWID-PVappropriate attribute type. A single SW Request MUSTNOT send anyonly lead to a single SW Response or PA-TNC Errorattributesthat is in direct response toSWID-PCs.that request. In addition, if there is an active subscription on thecase thatendpoint, the SW-PC sends aSWID-PV detects an error condition, it SHOULD log this error but does not inform any SWID-PC's of this event. Errors might include, but are not limited to, detection of malformed SWIDSW Responseattributes sent from a given SWID-PC, as well as detection of error conditions when the SWID-PV processes SWID Responses. Both SWID-PCs and SWID-PVs SHOULD log errors so that administrators can traceto thecauses of errors. Log messages SHOULD includeSW-PV following a change event on thetypeendpoint in fulfillment ofthe error, the time it was detected, and additional descriptive information to aidthat subscription. Such an exchange is shown inunderstanding the nature and causeFigure 6. +-------------+ +--------------+ | SW-PC | | SW-PV | Time +-------------+ +--------------+ | | | | <Change Event>| | | |--------SW Response(s)*------->| | | | | *SW Response is one of theerror. 4. SWID Message and Attributes for PA-TNC Protocol This section describes the format and semanticsfollowing: Software Identifier Inventory, Software Identifier Events, Software Inventory, or Software Events. Figure 6: SW Attribute Exchange (In Fulfillment ofthe SWID Message and Attributesan Active Subscription) Note that, unlike direct responses to a SW Request, a single change event can precipitate multiple SW Responses forPA-TNC protocol leveraginga single subscription, but only if all but theexisting SWID tag format. SWID Messagelast of those SW Responses convey partial lists of event records, andAttributes for PA-TNC uses the standard PA- TNC message header format. SeethePA-TNC specification [RFC5792] for information on this header format. 4.1. PA Subtype (AKA PA-TNC Component Type) The NEA PB-TNC interface provideslast of those SW Responses conveys ageneral message-batching protocol capablecomplete list ofcarrying one or more PA-TNC messages betweenevent records. (That is, thePosture Broker Clientinitial responses are partial lists andPosture Broker Server. When PB-TNCthe last response iscarrying a PA-TNC message,thePB-TNC message headers contain a 32 bit identifier calledremainder of thePA Subtype. The PA Subtype field indicatesrelevant event records, completing thetypedelivery ofcomponent associated withall relevant events at the time of the change event.) A single Change Event MUST NOT be followed by multiple SW Response or PA-TNC Error attributescarried by the PB-TNC message. The core set of PA Subtypes is definedinthe PA-TNC specification.any combination except as noted earlier in this paragraph. All SW-PVs and SW-PCs MUST support both types of exchanges. Inorder for the NEA protocolsparticular, SW-PCs MUST be capable of pushing a SW Response tocarry SWID tags, this specification adds the following enumeration elementa SW- PV immediately upon detection of a change to thetableendpoint's Software Inventory Evidence Collection insection 7.2fulfillment of established SW-PV subscriptions, as described in Section 3.6. 4.6. Software Message and Attributes for PA-TNC Attribute Enumeration PA-TNC attribute types are identified in the PA-TNCspecification [RFC5792] usingAttribute Header (see Section 4.2) via theIETF Standard name space (SMI Private Enterprise Number 0x000000): +-----+---------+----------------+----------------------------------+Attribute Type Vendor ID and Attribute Type fields. Table 4 identifies the appropriate values for these fields for each attribute type used within the Software Message and Attributes for PA-TNC protocol. +--------------+----------+------------+----------------------------+ | Attribute | PEN | Integer | Description | | Name |Defining Specification|+-----+---------+----------------+----------------------------------+|0|9+--------------+----------+------------+----------------------------+ |SWIDSW Request |SWID Message and Attributes for0x000000 | 0x00000011 | Request from a SW-PV to a | |Attributes|PA-TNC|+-----+---------+----------------+----------------------------------+ Table 2: PA Subtype Each PA-TNC attribute described in this specification is intended to be sent between| SW-PC for theSWID-PC and SWID-PV, so will be carried in a PB- TNC message indicatingSW-PC to | | | | | provide aPA Subtypesoftware | | | | | inventory or event list | | | | | | | Software | 0x000000 | 0x00000012 | A collection ofSWID Attributes. Note that although the PA-TNC Error attribute is defined in the PA-TNC specification, when it is used in a SWID Attribute exchange, it uses the SWID Attributes Component Definition Value, as described in Section 4.2.8 of the PA-TNC specification [RFC5792]. PB-TNC messages MUST always include the SWID Attributes Subtype defined in this section when carrying SWID Attributes over PA-TNC. 4.2. PB-TNC and PA-TNC Messages A PA-TNC message is wrapped withinSoftware | | Identifier | | | Identifiers sent from aPB-TNC message.| | Inventory | | | SW-PC. | | | | | | | Software | 0x000000 | 0x00000013 | Asingle PA-TNC message might contain one or more PA-TNC attributes. Allcollection ofthese attributes within a single PA-TNC message useevents | | Identifier | | | impacting thesame PA Subtype value. As such, SWID Attributesendpoint's | | Events | | | Software Inventory | | | | | Evidence Collection, where | | | | | impacted software | | | | | inventory evidence records | | | | | areneverindicated using | | | | | Software Identifiers. | | | | | | | Software | 0x000000 | 0x00000014 | A collection of software | | Inventory | | | inventory evidence records | | | | | sentwith attributes defined in other PA-TNC binding specifications in a single PA-TNC message. Note, however, thatfrom asingle PB-TNC batch might contain multiple PB-TNC and PA-TNC messages, and eachSW-PC. | | | | | | | Software | 0x000000 | 0x00000015 | A collection ofthose messages might use different PA Subtypes. For more information on PB-TNC and PA-TNC messages and message headers, see the PB-TNC [RFC5793] and PA-TNC [RFC5792] specifications, respectively. 4.3. PA-TNC Attribute Header The SWID Message and Attributes for PA-TNC protocol described in this specification is an extension of the PA-TNC protocol described in the NEA Architecture. PA-TNC was designed to be very flexible in order to carry many types of PA-TNC attributes that pertain to an enumerated set of component types (e.g. Table 2). PA-TNC attributes might be carried from Posture Collector to Posture Validator or vice versa and might carry information about endpoint state or other information to be sent between a Posture Validator and a Posture Collector. Therefore the SWID Message and Attributes for PA-TNC specification defines a collection of PA-TNC attributes relevant to the collection and transmission of SWID tag inventories. Figure 4, reproduced from the PA-TNC specification, showsevents | | Events | | | impacting theformat of a PA-TNC attribute. Multiple PA-TNC attributes can be sent in a single PB-TNC message, each housed within an attribute structure as described below. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+endpoint's |Flags|PA-TNC Attribute Vendor ID|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|PA-TNC Attribute Type|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Software Inventory |PA-TNC Attribute Length|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Attribute Value (Variable Length)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 4: PA-TNC Header and Attribute Format +-----------+-------------------------------------------------------+|FieldEvidence Collection, where |Description|+-----------+-------------------------------------------------------+|Flags|This field defines flags affecting the processing of| impacted software | | | | | inventory evidence records | |the SWID Message and Attributes for PA-TNC.| | |Permissible flagsaregiven in the PA-TNCindicated using full | | |specification. [RFC5792]| |Attributerecords. |This field indicates the owner of the name space| |Type|associated with the Attribute Type. Attributes| |Vendor ID|defined in the SWID Message and Attributes for PA-TNCSubscription | 0x000000 | 0x00000016 |specification haveA request for a list of avalue corresponding to the IETF| | Status |SMI Private Enterprise Number value (0x000000). The| | SW-PV's active |PA-TNC Error attribute is defined in the PA-TNC| Request | |specification [RFC5792] and also uses the IETF SMI| subscription. | |Private Enterprise Number Value (0x000000). See Table| | |4 for more information.| |AttributeSubscription |This field defines the type0x000000 | 0x00000017 | A list ofthe Attribute. Thea SW-PV's active | |TypeStatus |values corresponding to SWID Attributes| | subscriptions. | | Response | | | | | | | | | | Reserved | 0x000000 | 0x00000018 | These attribute types aregiven| | | | - | reserved for future use in | | |Table 4.| 0x0000001F |Attributerevisions to Software |This field contains the length in octets of the| |Length|entire Attribute, including the Attribute's header.| Message and Attributes for | | | | | PA-TNC. | |Attribute|This field contains the SWID Attribute.| |Value| |+-----------+-------------------------------------------------------+ Table 3: Fields of thePA-TNCAttribute Format 4.4. SWID Attribute Overview The attributesError | 0x000000 | 0x00000008 | An error attribute as | | | | | defined inthisthe PA-TNC | | | | | specificationappear below with a short summary[RFC5792]. | +--------------+----------+------------+----------------------------+ Table 4: SW Attribute Enumeration 4.7. Normalization oftheir purposes. Each attribute is described in greater detailText Encoding In order to ensure consistency of transmitted attributes, a field requiring normalization, as indicated insubsequent sections. o SWID Request - This attribute is usedits description, MUST be normalized torequestNetwork Unicode format as defined in RFC 5198 [RFC5198]. Network Unicode format defines aSWID tag inventory or SWID event list from an endpoint. This attribute might also establishrefinement of UTF-8 that ensures asubscription on the recipient SWID-PC. A SWID-PCnormalized expression of characters. SW-PCs and SW-PVs MUST NOTsend this attribute. o SWID Tag Identifier Inventory - This attributeperform conversion and normalization on any field values except those specifically identified as requiring normalization in the following sections. Note, however, that some data models require additional normalization before source information isusedadded toconveyaninventory expressed using SWID tag identifier instances (instead of full tags). When a SWID-PC receivesEndpoint's Inventory Evidence Collection as aSWID Request attribute requesting an inventory using SWID tag identifier instances,record. The references from theSWID-PCSoftware Data Model IANA table (see section Section 9.4 will note where this is necessary. 4.8. Request IDs All SW Request attributes MUSTsendinclude aSWID Tag Identifier Inventory attribute (orRequest ID value. The Request ID field provides aPA-TNC Error) in response. This attribute also MAY be sent byvalue that identifies a given request relative to other requests between a SW-PV and theSWID-PC in fulfillment of an active subscription. A SWID-PV MUST NOT send this attribute. o SWID Tag Identifier Events - Thisreceiving SW-PC. Specifically, the SW-PV assigns each SW Request attribute a Request ID value that isusedintended toconvey a list of events concerning changes to an endpoint's collection of SWID tags. Affected SWID tags are indicated using SWID tag identifier instances (insteadbe unique within the lifetime offull tags). When a SWID-PC receivesaSWIDgiven network connection ID as assigned by the SW-PV's Posture Broker Server. In the case where all possible Requestattribute requesting an event collection using with SWID tag identifier instances,ID values have been exhausted within theSWID-PC MUST send a SWID Tag Identifier Events attribute (orlifetime of aPA-TNC Error) in response. This attribute alsosingle network connection ID, the sender MAYbe sent byreuse previously used Request IDs within theSWID-PCsame network connection that are not being used as Subscription IDs. (See below infulfillment of an active subscription. A SWID-PV MUST NOT sendthisattribute. o SWID Tag Inventory - This attribute is used to conveysection for aninventory expressed using full SWID tags (insteadexplanation of Subscription ID assignment.) In this case ofSWID tag identifier instances). When a SWID-PC receives a SWIDRequestattribute requesting an inventory using full SWID tags,ID reuse, Request IDs SHOULD be reused in theSWID-PC MUST sendorder of their original use. For example, if aSWID Tag Inventory attribute (orRequest ID of X was the first Request ID used within aPA-TNC Error) in response. This attribute also MAYparticular network connection and if the Request IDs are exhausted, X will besent bytheSWID-PC in fulfillment of an active subscription. A SWID-PV MUSTfirst reused Request ID. In other words, a SW-PC SHOULD NOTsend this attribute. o SWID Tag Events - This attribute is used to convey a list of events concerning changes to an endpoint's collection of SWID tags. Affected SWID tags are indicated using full SWID tags (instead of SWID tag identifier instances). When a SWID-PC receivesuse aSWIDgiven Requestattribute requesting an event collection using full SWID tags, the SWID-PC MUST sendID value more than once within aSWID Tag Events attribute (orpersistent connection between aPA-TNC Error)given Posture Broker Client-Posture Broker Server pair, but, inresponse. This attribute also MAY be sent bytheSWID-PC in fulfillment of an active subscription. A SWID-PV MUST NOT send this attribute. o Subscription Status Request - This attributecase where reuse isusednecessary due torequest a SWID-PC send a summaryexhaustion ofallpossible ID values, theactive subscriptions it has whereSW-PC SHOULD structure therequesting party isreuse to maximize thesubscriber.time between original and subsequent use. TheSWID-PC MUST respond with a Subscription Status Response (orRequest ID value is included in aPA-TNC Error). A SWID-PC MUST NOT send this attribute. o Subscription StatusSW Response- Thisattributeis useddirectly responding toconvey information about the active subscriptions that a SWID-PC has for a given subscriber. A SWID-PV MUST NOT sendthisattribute. o PA-TNC Error - This is the standard PA-TNC Error attribute as defined in PA-TNC [RFC5792] and is usedSW Request to indicatethat an errorwhich SW Request wasencountered during a SWID Attribute exchange. It MUSTreceived and caused the response. Request IDs can besent by a SWID-PCrandomly generated or sequential, as long as values are not repeated per the rules inresponsethis paragraph. SW-PCs are not required toa SWIDcheck for duplicate RequestinIDs. In the casewherethat a SW Request requests theSWID-PC encountersestablishment of afatal errorsubscription and the receiving SW-PC agrees to that subscription, the Request ID of that SW Request (i.e.,an errorthe establishing request of the subscription) becomes thatprevents further processingsubscription's Subscription ID. All attributes sent in fulfillment ofan exchange) relating tothis subscription include a flag indicating that the attributeexchange.fulfills a subscription and the subscription's Subscription ID. ASWID-PVSW-PV MUST NOTsend this attribute. The SWID-PC MUST then ignore the erroneous attribute afterreuse aPA-TNC Error attribute is sent (i.e., do not attemptRequest ID value in communicating toact on an attributea given SW-PC while thatgeneratedRequest ID is also serving as aPA-TNC Error beyond sending the PA-TNC Error).Subscription ID for an active subscription with that SW- PC. In the case wherethe SWID-PV experiencesafatal error, it MUST ignore the erroneous attribute without sendingSW-PC receives aPA-TNC Error attribute. It MAY take other actions in response to the error, such as loggingSW Request from a given SW- PV where that Request ID is also thecauseSubscription ID of an active subscription with that SW-PV, theerror, or even taking actions to isolate the endpoint Because oneSW-PC MUST respond with a PA-TNC Error attribute with an error code of SW_SUBSCRIPTION_ID_REUSE_ERROR. Note that this error does not cancel theSWID Tag Identifier Inventory, SWID Tag Identifier Events, SWID Tag Inventory, or SWID Tag Events attributes is expected to be sentindicated subscription. Subscription Status Requests and Subscription Status Responses do not include Request IDs. 4.9. SW Request A SW-PV sends this attribute to aSWID-PV in direct responseSW-PC toa SWID Request attribute or in fulfillment of an active subscription, those four attribute types are frequently referred to collectively in this document as "SWID Response" attributes. All SWID-PVs MUST be capable of sending SWID Requests and be capable of receiving and processing all SWID Response attributes as well as PA-TNC Error attributes. All SWID-PCs MUST be capable of receiving and processing SWID Requests and be capable of sending all types of SWID Response attributes as well as PA-TNC Error attributes. In other words, both SWID-PVs and SWID-PCs are required to support their role in exchanges using any of the attribute types defined in this section. SWID-PVs MUST ignore any SWID Request attributes that they receive. SWID-PCs MUST ignore any SWID Response attributes or PA-TNC Error attributesrequest thatthey receive. 4.5. SWID Attribute Exchanges A SWID Attribute Exchange is used to providetheSWID-PV with a SWID tagSW-PC send software inventoryor event collection frominformation to thequeried endpoint. +-------------+ +--------------+SW-PV. A SW-PC MUST NOT send this attribute. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |SWID-PCFlags | Software Identifier Count |SWID-PV+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Time +-------------+ +--------------+Request ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Earliest EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ||<-----------SWID Request-------------|Software Identifier Length | Software ID (var length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7: SW Request Attribute +---------------+---------------------------------------------------+ | Field | Description |SWID Response*+---------------+---------------------------------------------------+ | Flags: Bit 0 ||-----------------or----------------->|If set (1), the SW-PC MUST delete all | |PA-TNC Error- Clear | subscriptions established by the requesting SW-PV | | Subscriptions |V *SWID Response is one of the following: SWID Tag Identifier Inventory, SWID Tag Identifier Events, SWID Tag Inventory, or SWID Tag Events. Figure 5: SWID Attribute Exchange (Direct Response(barring any errors). | | | | | Flags: Bit 1 | If set (1), in addition toSWID Request) In this exchange, the SWID-PV indicatesresponding to theSWID-PC, via a SWID Request,| | - Subscribe | request as described, thenature ofSW-PC MUST establish a | | | subscription with parameters matching those in | | | theinformation it wishes to receive (inventory vs. events, full or targeted) and how it wishesrequest attribute (barring any errors). | | | | | Flags: Bit 2 | If unset (0), thereturnedSW-PC's response MUST consist | | - Result Type | of complete software inventoryto be expressed (full tags or tag identifier instances). The SWID-PC responds with the requested information usingevidence records | | | and thus theappropriate attribute type. A single SWID Requestresponse MUSTonly lead tobe asingle SWID ResponseSoftware | | | Inventory, a Software Events, or a PA-TNC Errorthat is in direct response to that request. In addition, if there is an active subscription on| | | attribute. If set (1), theendpoint,response MUST consist | | | of Software Identifiers and thus theSWID-PC sendsresponse | | | MUST be aSWID Response to the SWID-PV followingSoftware Identifier Inventory, achange event on the endpoint in fulfillment of that subscription. Such an exchange is shown in Figure 6. +-------------+ +--------------+|SWID-PC| |SWID-PVSoftware Identifier Events, or a PA-TNC Error |Time +-------------+ +--------------+| | attribute. | |<Change Event>|| ||-------SWID Response(s)*------>|| Flags: Bit | Reserved for future use. This field MUST be set | |*SWID Response is one of the following: SWID Tag Identifier Inventory, SWID Tag Identifier Events, SWID Tag Inventory, or SWID Tag Events. Figure 6: SWID Attribute Exchange (In Fulfillment of an Active Subscription) Note that, unlike direct responses3-7 - | toa SWID Request, a single change event can precipitate multiple SWID Responses, but only if all but the last of those SWID Responses convey partial lists of event records,zero on transmission and ignored upon | | Reserved | reception. | | | | | Software | A 3-byte unsigned integer indicating thelast of those SWID Responses conveys a complete listnumber | | Identifier | ofevent records. (That is, the initial responses are partial lists and the last responseSoftware Identifiers that follow. If this | | Count | value isthe remainder of the relevant event records, completing the delivery of all relevant events at the time of the change event.) A single Change Event MUST NOT be followed by multiple SWID Response or PA-TNC Error attributes in any combination except as noted earlier innon-zero, thisparagraph. All SWID-PVs and SWID-PCs MUST support both exchanges. In particular, SWID-PCs MUST be capable of pushing a SWID Response to a SWID-PV immediately upon detection ofis achange to the endpoint's SWID tag collection in fulfillment of established SWID-PV subscriptions,targeted request, as | | | described in Section3.8. 4.6. SWID Message3.3. The Software | | | Identifier Length andAttributes for PA-TNC Attribute Enumeration PA-TNC attribute typesSoftware ID fields areidentified| | | repeated, in order, thePA-TNC Attribute Header (see Section 4.2) via the Attribute Type Vendor ID and Attribute Type fields. Table 4 identifies the appropriate values for these fields for each attribute type used within the SWID Message and Attributes for PA-TNC protocol. +--------------+----------+------------+----------------------------+ | Attribute | PENnumber of times indicated |Integer|Description| in this field. In the case where Software |Name| | Identifiers are present, the SW-PC MUST only | |+--------------+----------+------------+----------------------------+|SWID Requestrespond with software inventory evidence records |0x000000|0x00000011|Request from a SWID-PVor Software Identifiers that correspond to the | | | identifiers the SW-PV provided in this attribute | | | (or with aSWID-PC for the SWID-PCPA-TNC Error attribute). This field | | | value MAY be 0, in which case there are no | | | instances of the Software Identifier Length and |to provide a SWID tag| | Software ID fields. In this case, the SW-PV is | | | indicating an interest in all software inventoryor event list| |SWID Tag|0x000000evidence records on the endpoint (i.e., this is |0x00000012|A collection of SWID tag| not a targeted request). |Identifier| | |identifier instances sent| Request ID |InventoryA value that uniquely identifies this SW Request | | | from aSWID-PC. |particular SW-PV. |SWID Tag|0x000000|0x00000013|A collection of events| Earliest EID |IdentifierIn the case where the SW-PV is requesting | | |impactingsoftware events, this field contains theendpoint'sEID | |Events| value of the earliest event the SW-PV wishes to | |SWID tag collection, where| have reported. (Note - the report will be | | | inclusive of the event with this EID value.) In |impacted SWID tags are| | the case where the SW-PV is requesting an | | |indicated using SWID taginventory, then this field MUST be 0. | | | (0x00000000) In the case where this field is non- | |identifier instances. | | SWID Tag | 0x000000 | 0x00000014 | A collection of SWID tags|| Inventoryzero, the SW-PV is requesting events and the SW- | | |sent fromPC MUST respond using aSWID-PC. | | SWID Tag | 0x000000 | 0x00000015Software Events, Software |A collection of events| |EventsIdentifier Events, or a PA-TNC Error attribute. | | |impactingIn theendpoint's | | | | | SWID tag collection,case where this field is zero, the SW-PV | | || | impacted SWID tags are | |is requesting an inventory and the SW-PC MUST | | |indicatedrespond usingfull SWID | | | | | tags. | | Subscription | 0x000000 | 0x00000016 | A request foralist ofSoftware Inventory, a Software | |Status | | | SWID-PV's active| Identifier Inventory, or a PA-TNC Error |Request| | attribute. |subscription.| |Subscription|0x000000|0x00000017Software | Alist of a SWID-PV's | | Status | | | active subscriptions. | | Response2-byte unsigned integer indicating the length | | Identifier | in bytes of the Software ID field. | |ReservedLength |0x000000|0x00000018|These attribute types are| | | Software ID |-A string containing the Software Identifier value |reserved for future use in| | from a software inventory evidence record. This | |0x0000001F|revisionsfield value MUST be normalized toSWID Message | | | | | and Attributes for PA-TNC. | | PA-TNC ErrorNetwork Unicode |0x000000|0x00000008|An error attributeformat, as| | | | | defineddescribed inthe PA-TNC | |Section 4.7. This string | | |specification [RFC5792].MUST NOT be NULL terminated. |+--------------+----------+------------+----------------------------++---------------+---------------------------------------------------+ Table4: SWID5: SW Request AttributeEnumeration 4.7. Normalization of Text Encoding SWID tags do not have a required encoding format.Fields The2009 ISO SWID specification statesSW-PV sends the SW Request attribute to a SW-PC to request the indicated information. Note that"For encoding purposes,between theuse of utf-8 isResult Type flag and thesuggested methodology for software identification tags...", but leaves implementers freeEarliest EID field, the SW-PC is constrained touse different encodings if this makes sensea single possible SW Response attribute type (or a PA-TNC Error attribute) intheir local environment. As such, implementers ofits response to theSWID Messagerequest. The Subscribe andAttributesClear Subscription flags are used to manage subscriptions forPA-TNC specification cannot assume any specific encoding of SWID tag fields (although, in most current examples of SWID tags, SWID tag creators have followedthesuggestion of using UTF-8 encodings). Similarly, sometimesrequesting SW-PV on theSWID Message and Attributes for PA-TNC specification requiresreceiving SW-PC. Specifically, an attribute with theuse of data taken from other sources, suchSubscribe flag set seeks to establish apath fromnew subscription by theendpoint's file system, and different platforms might use different encodings for this information. In orderrequesting SW-PV toensuretheabilitygiven SW- PC, while an attribute with the Clear Subscription flag seeks toconsistently and reliably compare information sent usingdelete all existing subscriptions by theSWID Message and Attributes for PA-TNC exchange, certain field values (identified explicitly inrequesting SW-PV on theattribute definitionsgiven SW-PC. Note that, in thefollowing sections)latter case, only the subscriptions associated with the Connection ID and the Posture Validator ID of the requester arerequired to undergo normalization prior to their inclusiondeleted as described inanSection 3.6.3. A newly established subscription has the parameters outlined in the Request attribute.In orderSpecifically, the Result Type flag indicates the type of result toensure consistencysend in fulfillment oftransmitted attributes, a field requiring normalization, as indicated in its description, and only such fields MUST be normalized to Network Unicode format as defined in RFC 5198 [RFC5198]. Network Unicode format defines a refinement of UTF-8 that ensures a normalized expressionthe subscription, the value ofcharacters. SWID- PCs and SWID-PVs MUST NOT perform conversion and normalization on anythe Earliest EID fieldvalues except those specifically identified inindicates whether thefollowing sections. 4.8. Request IDs All SWID Requestfulfillment attributesMUST include a Request ID value. The Request ID field provideslist inventories or events, and the fields describing Software Identifiers (if present) indicate if and how avaluesubscription is targeted. In the case thatidentifies a giventhe SW-PC is unable or unwilling to comply with the SW-PV's requestrelativetoother requests betweenestablish or clear subscriptions, the SW-PC MUST respond with aSWID-PV andPA-TNC Error attribute with thereceiving SWID- PC. Specifically,SW_SUBSCRIPTION_DENIED_ERROR error code. (Note that if theSWID-PV assigns each SWID Request attribute a Request ID valueSW-PV requests thatis intended tosubscriptions beunique withincleared but has no existing subscriptions, this is not an error.) An attribute requesting thelifetimeestablishment of agiven network connection IDsubscription is effectively doing double-duty, asassigned byit is a request for an immediate response from theSWID-PV's Posture Broker Server. InSW-PC in addition to setting up thecase where all possible Request ID values have been exhausted withinsubscription. Assuming thelifetime of a single network connection ID,SW-PC is willing to comply with thesender MAY reuse previously used Request IDs withinsubscription it MUST send an appropriate response attribute to a request with thesame network connection that are not being used as Subscription IDs. (See below in this section for an explanationSubscribe flag set containing all requested information. The same is true of the Clear SubscriptionID assignment.) In this case of Request ID reuse, Request IDs SHOULD be reused inflag - assuming there is no error theorder of their original use. For example, ifSW-PC MUST generate aRequest IDresponse attribute without regard to the presence ofX wasthis flag in addition to clearing its subscription list. Both thefirst Request ID used within a particular network connectionSubscribe andif the Request IDs are exhausted, X willClear Subscription flags MAY bethe first reused Request ID. In other words, a SWID-PC SHOULD NOT useset in agivensingle SW RequestID value more than once within a persistent connection between a given Posture Broker Client-Posture Broker Server pair, but, inattribute. In the case wherereusethis request isnecessary due to exhaustion of possible ID values, the SWID-PC SHOULD structuresuccessful, thereuseend result MUST be equivalent tomaximizethetime between originalSW-PC clearing its subscription list for the given SW-PV first andsubsequent use. The Request ID value is included inthen creating aresponse attribute directly responding to this SWID Request to indicate which SWID Request was received and causednew subscription in accordance with theresponse. Request IDs can be randomly generated or sequential, as long as values arerequest parameters. (In other words, do notrepeated perfirst create therules in this paragraph. SWID-PCs are not required to check for duplicate Request IDs. Innew subscription and then clear all thecasesubscriptions including the one thata SWID Request requests the establishment of a subscription and the receiving SWID-PC agrees to that subscription,was just created.) In theRequest ID ofcase thatSWID Request (i.e.,theestablishing request ofrequested actions are successfully completed, thesubscription) becomes that subscription's Subscription ID. All attributes sent in fulfillment of this subscription includeSW-PC MUST respond with aflag indicating that theSW Response attribute. (The specific type of SW Response attributefulfills a subscription anddepends on thesubscription's Subscription ID. A SWID-PV MUST NOT reuse a Request ID value in communicating to a given SWID-PC while that Request ID is also servingResult Type and Earliest EID fields, asa Subscription ID for an active subscription with that SWID-PC.described above.) In the case where there is aSWID-PC receives a SWID Requestfailure that prevents some part this request from completing, the SW-PC MUST NOT add agiven SWID-PV where that Request ID is alsonew subscription, MUST NOT clear theSubscription ID of an active subscription with that SWID-PV,old subscriptions, and theSWID-PCSW-PC MUST respond with a PA-TNC Errorattribute with an error code of SWID_SUBSCRIPTION_ID_REUSE_ERROR. Note that this error does not cancelattribute. In other words, theindicated subscription. Subscription Status Requests and Subscription Status Responses do not include Request IDs. 4.9. SWID Request A SWID-PV sends this attribute toSW-PC MUST NOT partially succeed at implementing such aSWID-PCrequest; either both actions succeed, or neither succeed. The Earliest EID field is used torequest thatindicate whether theSWID- PC send SWID tag-based information toSW-PV is requesting an inventory or event list from theSWID-PV.SW-PC. ASWID-PC MUST NOT send this attribute. 1 2 3 0 1 2 3 4 5 6 7 8 9value of 01 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Tag ID Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |(0x00000000) represents a request for inventory information. Otherwise, the SW-PV is requesting event information. For Earliest EID| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Tag Creator Length | Tag Creator (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unique Software ID Length |Unique Software ID (var length)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 7: SWID Request Attribute +---------------+---------------------------------------------------+ | Field | Description | +---------------+---------------------------------------------------+ | Flags: Bit 0 | If set (1),values other than 0, theSWID-PCSW-PC's response MUSTdelete all | | - Clear | subscriptions established by the requesting SWID- | | Subscriptions | PV (barring any errors). | | Flags: Bit 1 | If set (1),respond with event records, as described inaddition to responding toSection 3.5. Note that the| | - Subscribe |requestas described, the SWID-PC MUST establish | | |does not identify asubscription with parameters matching thoseparticular EID Epoch, since responses can only include events in| | |therequest attribute (barring any errors). | | Flags: Bit 2 | If unset (0),SW-PC's current EID Epoch. The Software Identifier Count indicates theSWID-PC's response MUST consist | | - Result Type |number ofcomplete SWID tags and thusSoftware Identifiers in theresponse MUST | | | be a SWID Tag Inventory, a SWID Tag Events, or a | | | PA-TNC Errorattribute.If set (1), the response | | | MUST consist of SWID tag identifier instances and | | | thus the response MUST be a SWID Tag Identifier | | | Inventory, a SWID Tag Identifier Events, or a PA- | | | TNC Error attribute. | | Flags: Bit | Reserved for future use.Thisfield MUSTnumber might beset | | 3-7 - | to zero on transmissionany value between 0 andignored upon | | Reserved | reception. | | Tag ID Count |16,777,216, inclusive. A3-byte unsigned integer indicatingsingle Software Identifier is represented by fields: Software Identifier Length and Software ID. The Software Identifier Length field indicates the number| | |oftag identifiers that follow. If this value is | | | non-zero, this isbytes allocated to Software ID field. The Software Identifier field contains atargeted request,Software Identifier as| | | describeddescribe in Section3.4. This field is a 3-byte | | | unsigned integer.3.2. TheTag Creator Length, Tag | | | Creator, Unique Software ID Length, and Unique | | |presence of one or more SoftwareID fields are repeated, in order,Identifiers is used by the| | | numberSW-PV to indicate a targeted request, which seeks only inventories oftimes indicated in this field. In the | | | case where tag identifiers are present,or events affecting software corresponding to theSWID- | | | PCgiven identifiers. The SW-PC MUST only respond withSWID tags or tag | | | identifier instancesrecords thatcorrespond to the | | | identifiersmatch theSWID-PVSoftware Identifiers provided in the SW-PVs SW Request attribute. 4.10. Software Identifier Inventory A SW-PC sends this| | |attribute(or withto aPA-TNC Error attribute). | | | This field value MAY be 0,SW-PV to convey the inventory of the endpoint's Software Inventory Evidence Collection expressed using Software Identifiers. This list might represent a complete inventory or a targeted list of records, depending on the parameters inwhich case there | | | are no instancesthe SW- PV's request. A SW-PV MUST NOT send this attribute. The SW-PC either sends this attribute in fulfillment of an existing subscription where theTag Creator Length, Tag |establishing request has a Result Type of 1 and the Earliest EID is zero, or in direct response to a SW Request attribute where the Result Type is 1 and the Earliest EID is zero. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags |Creator, UniqueSoftware Identifier Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request IDLength, and UniqueCopy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EID Epoch | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Last EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Data Model Type| Software IdentifierLength |SW IDfields. In this case, the SWID-PV is |(var len)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Record ID Length |indicating an interest in all SWID tags on theRecord ID (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 8: Software Identifier Inventory Attribute +--------------+----------------------------------------------------+ | Field |endpoint (i.e., this is not a targeted request).Description | +--------------+----------------------------------------------------+ |Request IDFlags: Bit 0 |A valueIn the case thatuniquely identifiesthisSWIDattribute is sent in | | - |Request fromfulfillment of aparticular SWID-PV.subscription this bit MUST be set | |Earliest EIDSubscription | (1). In the casewhere the SWID-PVthat this attribute isrequesting SWIDa direct | | Fulfillment |events,response to a SW Request, thisfield contains the EID value of the | | | earliest event the SWID-PV wishes to have | | | reported. (Note - the report willbit MUST beinclusive ofunset | | |the event with this EID value.) In the case where(0). | | |the SWID-PV is requesting an inventory, then this| | Flags: Bit | Reserved for future use. This field MUST be0. (0x00000000) In the case whereset to | | 1-7 - |this field is non-zero, the SWID-PV is requestingzero on transmission and ignored upon reception. | | Reserved |events and the SWID-PC MUST respond using a SWID| | |Tag Events, SWID Tag Identifier Events, or a PA-| | Software |TNC Error attribute. In the case where this fieldThe number of Software Identifiers that follow. | | Identifier | This field iszero, the SWID-PV is requestinganinventory | | | and the SWID-PC MUST respond using a SWID Tagunsigned integer. The Data Model | | Count |Inventory, a SWID TagType, Software IdentifierInventory, or a | | | PA-TNC Error attribute. | | Tag Creator | A 2-byte unsigned integer indicating the lengthLength, SW ID, Record ID | |Length| Length, and Record ID fields are repeated, inbytes of the Tag Creator field.| |Tag Creator|A string containingorder, theTag Creator RegID valuenumber of times indicated in this | | |from within a SWID tag.field. This field valueMUSTMAY be| | | normalized to Network Unicode format, as | | | described0, inSection 4.7. This string MUST NOTwhich case | | |be NULL terminated.there are no instances of these fields. | |Unique|A 2-byte unsigned integer indicating the length| |SoftwareRequest ID |in bytes ofIn theUnique Software ID field.case where this attribute is in direct | | Copy / | response to a SW Request attribute from a SW-PV, | | Subscription | this field MUST contain an exact copy of the | | ID | Request ID field from that SW Request. In the | | | case where this attribute is sent in fulfillment | | | of an active subscription, this field MUST contain | | | the Subscription ID of the subscription being | | | fulfilled by this attribute. | | | | | EID Epoch | The EID Epoch of the Last EID value. This field is | | | an unsigned 4-byte integer. | | | | | Last EID | The EID of the last event recorded by the SW-PC, | | | or 0 if the SW-PC has no recorded events. This | | | field is an unsigned 4-byte integer. | | | | | Data Model | A 1-byte unsigned integer containing an identifier | | Type | number from the Software Data Model IANA table | | | that identifies the data model of the reported | | | record. | | | | | Software | A 2-byte unsigned integer indicating the length in | | Identifier | bytes of the SW ID field. | | Length | | |Unique| | | SW ID | A string containing theUnique IDSoftware Identifier valuefrom| |Software ID|withinfrom aSWID tag.software inventory evidence record. This | | | field value MUST be| | |normalized to Network Unicodeformat, as| | | format, as described in Section 4.7. This string | | | MUST NOT be NULL terminated. | | |NULL terminated.|+---------------+---------------------------------------------------+ Table 5: SWID Request Attribute Fields The SWID-PV sends| Record ID | A 2-byte unsigned integer indicating theSWID Request attribute tolength in | | Length | bytes of the Record ID field. | | | | | Record ID | A string containing the Record Identifier value | | | from aSWID-PCsoftware inventory evidence record. This | | | field value MUST be normalized torequestNetwork Unicode | | | format, as described in Section 4.7. This string | | | MUST NOT be NULL terminated. | +--------------+----------------------------------------------------+ Table 6: Software Identifier Inventory Attribute Fields In theindicated information. Notecase thatbetween the Result Type flag and the Earliest EID field, the SWID-PCthis attribute isconstrained tosent in fulfillment of asingle possible SWID Responsesubscription, the Subscription Fulfillment bit MUST be set (1). In the case that this attributetype (or a PA-TNC Error attribute)is sent initsdirect response to a SW Request, therequest. The Subscribe and ClearSubscriptionflags are used to manage subscriptions for the requesting SWID-PV onFulfillment bit MUST be unset (0). Note that thereceiving SWID-PC. Specifically, anSW Response attributewith the Subscribe flag set seekssent in direct response toestablishanewSW Request that establishes a subscriptionby the requesting SWID-PV(i.e., a subscription's establishing request) MUST be treated as a direct response to that SW Request (and thus thegiven SWID-PC, while an attribute with the ClearSubscriptionflag seeks to delete all existing subscriptions by the requesting SWID-PV on the given SWID-PC. Note that, in the latter case,Fulfillment bit is unset). SW Response attributes are onlythe subscriptions associated with the Connection ID and, if available, the Posture Validator ID of the requester are deletedtreated asdescribedbeing inSection 3.8.3. A newly establishedfulfillment of a subscriptionhas the parameters outlined(i.e., Subscription Fulfillment bit set) if they are sent following a change event, as shown inthe Request attribute. Specifically, the Result Type flagFigure 3. The Software Identifier Count field indicates thetypenumber ofresultSoftware Identifiers present in this inventory. Each Software Identifier is represented by a set of five fields: Data Model Type, Software Identifier Length, SW ID, Record ID Length, and Record ID. These fields will appear once for each reported record. When responding directly tosenda SW Request attribute, the Request ID Copy / Subscription ID field MUST contain an exact copy of the Request ID field from that SW Request. When this attribute is sent in fulfillment of an existing subscription on this Posture Collector, then this field MUST contain thesubscription, the valueSubscription ID of theEarliestfulfilled subscription. The EID Epoch field indicateswhetherthefulfillment attributes list inventories or events, andEID Epoch of thefields describing tag identifiers (if present) indicate ifLast EID value. The Last EID field MUST contain the EID of the last recorded change event (see Section 3.5 for more about EIDs andhow a subscription is targeted.recorded events) at the time this inventory was collected. In the casethatwhere there are no recorded change events at theSWID-PC is unable or unwillingtime that this inventory was collected, this field MUST contain 0. These fields can be interpreted tocomply withindicate that theSWID-PV's request to establishprovided inventory (be it full orclear subscriptions, the SWID-PC MUST respond with a PA-TNC Error attribute withtargeted) reflects theSWID_SUBSCRIPTION_DENIED_ERROR error code. (Note that ifrecord of events on theSWID-PV requests that subscriptions be cleared but has no existing subscriptions,endpoint after all changes up to and including this last event have been accounted for. 4.11. Software Identifier Events A SW-PC sends thisis not an error.) Anattributerequesting the establishment of a subscription is effectively doing double-duty, as it isto arequest for an immediate response from the SWID-PC in additionSW-PV tosetting upconvey events where thesubscription.affected records are expressed using Software Identifiers. ASWID-PCSW-PV MUST NOT sendan appropriate response attribute to a request with the Subscribe flag set containing all requested information.this attribute. Thesame is true of the Clear Subscription flag - the SWID-PC MUST generate a response attribute without regard to the presence ofSW-PC either sends thisflagattribute inaddition to clearing itsfulfillment of an existing subscriptionlist. Both the Subscribe and Clear Subscription flags MAY be set in a single SWID Request attribute. In the casewherethis request is successful, the end result MUST be equivalent to the SWID-PC clearing its subscription list for the given SWID-PV first and then creating a new subscription in accordance withthe establishing requestparameters. (In other words, do not first create the new subscriptionhas a Result Type is 1 andthen clear all the subscriptions including the one that was just created.) In the case that the requested actions are successfully completed,theSWID-PC MUST respond withEarliest EID is non-zero, or in direct response to aSWID Response attribute. (The specific type of SWID ResponseSW Request attributedepends onwhere the Result Type is 1 and the Earliest EIDfields, as described above.)is non-zero. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Event Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request ID Copy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EID Epoch | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Last EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Last Consulted EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Action |Data Model Type| Software Identifier Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |SW ID (var len)| Record ID Length |Record ID (var)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 9: Software Identifier Events Attribute +--------------+----------------------------------------------------+ | Field | Description | +--------------+----------------------------------------------------+ | Flags: Bit 0 | In the casewhere there is a failurethatprevents some partthisrequest from completing, the SWID-PC MUST NOT addattribute is sent in | | - | fulfillment of anew subscription, MUST NOT clear the old subscriptions, and the SWID-PCsubscription this bit MUSTrespond with a PA-TNC Error attribute.be set | | Subscription | (1). Inother words,theSWID-PC MUST NOT partially succeed at implementing such a request; either both actions succeed, or neither succeed. The Earliest EID fieldcase that this attribute isuseda direct | | Fulfillment | response toindicate whether the SWID-PV is requesting an inventory or event list from the SWID-PC. A value of 0 (0x00000000) representsarequestSW Request, this bit MUST be unset | | | (0). | | | | | Flags: Bit | Reserved forinventory information. Otherwise, the SWID-PV is requesting event information. For Earliest EID values other than 0, the SWID-PC's responsefuture use. This field MUSTrespond with event records, as described in Section 3.6. Note that the request does not identify a particular EID Epoch, since responses can only include events in the SWID-PC's current EID Epoch. The Tag IDbe set to | | 1-7 - | zero on transmission and ignored upon reception. | | Reserved | | | | | | Event Countindicates the| The number oftag identifiersevents that are reported inthethis | | | attribute. Thisnumber might be any value between 0 and 16,777,216, inclusive. A single tag identifierfield isrepresented by four fields: Tag Creator Length, Tag Creator, Uniquea 3-byte unsigned | | | integer. The EID, Timestamp, Action, Data Model | | | Type, Software Identifier Length, SW ID, Record ID | | | Length, andUnique Software ID. The two lengthRecord ID fields areused to indicaterepeated, in | | | order, the number ofbytes allocated to their corresponding stringtimes indicated in this | | | field.The two string fields, Tag Creator and Unique Software ID, contain copies(An instance ofthe SWID tag's Tag Creator RegID and Unique ID values, respectively, converted and normalizedthese fields is referred toNetwork Unicode format,| | | asdescribedan "event record" inSection 4.7. Note that there is nothis attribute. Thus the | | | Event Count fieldto indicate a particular Instance ID. Thus, targeted requests request all instances ofindicates theindicated SWID tags. The presencenumber ofone or more tag identifiers is used by the SWID-PV to indicate a targeted request, which seeks only inventories of or events affecting SWID tags corresponding to the given identifiers. The SWID-PC MUST only respond with tags that match the tag identifier structures provided in the SWID-PVs SWID Request attribute (as describedevent | | | records.) This field value MAY be 0, inSection 3.3.3) and MUST include allwhich case | | | there are no instances ofmatching tags in its response. 4.10. SWID Tag Identifier Inventory A SWID-PC sends this attribute to a SWID-PV to convey a list of the endpoint's SWID tags expressed using SWID tag identifier instances. This list might represent a complete inventory or a targeted list of tags, depending on the parameters inthese fields. | | | | | Request ID | In theSWID-PV's request. A SWID- PV MUST NOT send this attribute. The SWID-PC either sendscase where this attributein fulfillment of an existing subscription where the establishing request has a Result Type of 1 and the Earliest EIDiszero, orin direct | | Copy / | response to aSWIDSW Request attributewhere the Result Type is 1 andfrom a SW-PV, | | Subscription | this field MUST contain an exact copy of theEarliest EID is zero. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Flags|TagIDCount | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Request IDCopy / Subscription IDfield from that SW Request. In the |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|EID Epoch|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+case where this attribute is sent in fulfillment |Last EID|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Tag Creator Length | Tag Creator (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unique Software ID Length |Unique Software ID (var lengthof an active subscription, this field MUST contain |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Instance ID Length|Instancethe Subscription ID(var length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 8: SWID Tag Identifier Inventory Attribute +--------------+----------------------------------------------------+ | Field | Descriptionof the subscription being |+--------------+----------------------------------------------------+|Flags: Bit 0|In the case thatfulfilled by thisattribute is sent inattribute. | |-|fulfillment of a subscription this bit MUST be set| |SubscriptionEID Epoch |(1). InThe EID Epoch of thecase that this attributeLast EID value. This field isa direct| |Fulfillment|response to a SWID Request, this bit MUST be unsetan unsigned 4-byte integer. | | |(0).| |Flags: BitLast EID |Reserved for future use. This field MUST be set toThe EID of the last event recorded by the SW-PC, | |1-7 -|zero on transmission and ignored upon reception.or 0 if the SW-PC has no recorded events. This | |Reserved| field contains the EID of the SW-PC's last | |Tag ID Count|The number of tag identifier instances thatrecorded change event (which might or might not be | | |follow. This field isincluded as anunsigned integer. The Tagevent record in this attribute). | | |Creator Length, Tag Creator, Unique Software ID| | Last |Length, Unique Software ID, Instance ID Length,The EID of the last event record that was | | Consulted |and Instance ID fields are repeated, in order,consulted when generating the event record list | | EID |number of times indicatedincluded in thisfield.attribute. This is different from | | | the Last EID field valueMAY be 0, in which case there are no | | | instances of these fields. | | Request ID | In the case whereif and only if thisattribute is in direct| |Copy /|response to a SWID Requestattributefromis conveying aSWID- | | Subscription | PV, this field MUST contain an exact copypartial list oftheevent | |ID|Request ID field from that SWID Request. In therecords. See Section 3.5.4 for more on partial | | |case where this attribute is sent in fulfillmentlist of event records. | | |of an active subscription, this field MUST contain| | EID |the Subscription IDThe EID of thesubscription beingevent in this event record. | | |fulfilled by this attribute.| |EID EpochTimestamp | TheEID Epoch oftimestamp associated with theLast EID value. This field isevent in this | | |an unsigned 4-byte integer.event record. This timestamps is the SW-PC's best | |Last EID|The EIDunderstanding of when thelastgiven eventrecorded by the SWID-PC,occurred. | | |or 0 if the SWID-PC has no recorded events. ThisNote that this timestamp might be an estimate. | | |field is an unsigned 4-byte integer.The Timestamp date and time MUST be represented as | |Tag Creator|A 2-byte unsigned integer indicating the lengthan RFC 3339 [5] compliant ASCII string in | |Length|bytes ofCoordinated Universal Time (UTC) time with theTag Creator field.| |Tag Creator|A string containingadditional restrictions that theTag Creator RegID value'T' delimiter and | | |from within a SWID tag. This field valuethe 'Z' suffix MUST be capitalized and fractional | | |normalized to Network Unicode format, as described | | | in Section 4.7. This stringseconds (time-secfrac) MUST NOT beNULL | |included. This |terminated.| |Unique | A 2-byte unsigned integer indicatingfield conforms to thelength indate-time ABNF production | |Software ID|bytesfrom section 5.6 of RFC 3339 [RFC3339] with theUnique Software ID field.| |Length| above restrictions. Leap seconds are permitted | |Unique|A string containing the Unique ID value fromand SW-PVs MUST support them. The Timestamp | |Software ID|within a SWID tag. This field valuestring MUST NOT be NULL terminated or padded in | | |normalized to Network Unicode format, as describedany way. The length of this field is always 20 | | |in Section 4.7. This string MUST NOT be NULLoctets. | | |terminated.| |Instance IDAction |A 2-byte unsigned integer indicating the lengthThe type of event that is recorded in this event | |Length|bytesrecord. Possible values are: 1 = CREATION - the | | | addition of a record to theInstance ID field.endpoint's Software | |Instance ID|A string containingInventory Evidence Collection; 2 = DELETION - theInstance ID| | | removal of agiven tagrecord from the endpoint's Software | | |instance. The exact value of this field depends onInventory Evidence Collection; 3 = ALTERATION - | | | There was an alteration to a record within theparty that provides this SWID tag. This field| | |value MUST be normalized to Network Unicodeendpoint's Software Inventory Evidence Collection. | | |format, as described in Section 4.7. This stringAll other values are reserved for future use and | | | MUST NOT beNULL terminated. | +--------------+----------------------------------------------------+ Table 6: SWID Tag Identifier Inventory Attribute Fieldsused when sending attributes. In the | | | casethat this attribute is sent in fulfillment ofwhere asubscription, the Subscription Fulfillment bit MUST be set (1). In the caseSW-PV receives an event record thatthis attribute is sent in direct response to a SWID Request,| | | uses an action value other than theSubscription Fulfillment bitones defined | | | here, it MUSTbe unset (0). Noteignore thatthe SWID response attribute sentevent record but SHOULD | | | process other event records indirect response to a SWID Request that establishes a subscription (i.e., a subscription's establishing request) MUST be treatedthis attribute asa direct response to| | | normal. | | | | | Data Model | A 1-byte unsigned integer containing an identifier | | Type | number from the Software Data Model IANA table | | | thatSWID Request (and thusidentifies theSubscription Fulfillment bit is unset). SWID Response attributes are only treated as being in fulfillmentdata model ofa subscription (i.e., Subscription Fulfillment bit set) if they are sent following a change event, as shown in Figure 3. The Tag ID Count field indicatesthenumber of tag identifier instances presentreported | | | record. | | | | | Software | A 2-byte unsigned integer indicating the length inthis inventory. Each tag identifier instance is represented by a set| | Identifier | bytes ofsix fields: Tag Creator Length, Tag Creator, Unique Softwarethe SW IDLength, Unique Software ID, Instancefield. | | Length | | | | | | SW IDLength, and Instance ID. These six fields, collectively referred to as| A string containing the"Tag ID Fields", will appear once for each reported tag instance. Note that an endpoint's SWID tag collection might contain multiple instances ofSoftware Identifier value | | | from asingle tag (i.e., multiple tag files withsoftware inventory evidence record. This | | | field value MUST be normalized to Network Unicode | | | format, as described in Section 4.7. This string | | | MUST NOT be NULL terminated. | | | | | Record ID | A 2-byte unsigned integer indicating thesame tag identifier value). When this occurs,length in | | Length | bytes of thecase where that tag is reported, thenRecord ID field. | | | | | Record ID | A string containing theresponse MUST containRecord Identifier value | | | from aset of Tag ID Fields for each instance of that tag. (The tag might notsoftware inventory evidence record. This | | | field value MUST bereported ifnormalized to Network Unicode | | | format, as described in Section 4.7. This string | | | MUST NOT be NULL terminated. | +--------------+----------------------------------------------------+ Table 7: Software Identifier Events Attribute Fields The first few fields in theSWID-PV made a targeted request that does not match that tag's tag identifier.) For example, ifSoftware Identifier Events attribute mirror those in the Software Identifier Inventory attribute. The primary difference is that, instead of conveying anendpoint has three copiesinventory using Software Identifiers, the attribute conveys zero or more event records, consisting oftag X,the EID, timestamp, action type, data model type, Software Identifier, and Record Identifier of theSWID-PV requests a full inventory, thenaffected software inventory evidence record. With regard to theresponseTimestamp field, it isrequiredimportant toinclude three sets of Tag ID Fields corresponding to the three instances ofnote thattag. Only the Instance ID fields are differentclock skew betweenthese three instances. When responding directly to a SWID Request attribute,theRequest ID Copy / Subscription ID field MUST containSW-PC and SW-PV as well as between different SW-PCs within anexact copyenterprise might make correlation ofthe Request ID field from that SWID Request. When this attribute is sent in fulfillmenttimestamp values difficult. This specification does not attempt to resolve clock skew issues, although other mechanisms outside ofan existing subscription onthisPosture Collector, then this field MUST contain the Subscription ID of the fulfilled subscription. The EID Epoch field indicates the EID Epoch of the Last EID value. The Last EID field MUST containspecification do exist to reduce theEIDimpact of clock skew and make thelast recorded change event (see Section 3.6 fortimestamp moreabout EIDsuseful for such correlation. Instead, Software Message andrecorded events) atAttributes for PA-TNC uses Timestamp value primarily as a means to indicate the amount of timethis inventory was collected. In the case where there are no recorded changebetween two eventsaton a single endpoint. For example, by taking thetime that this inventorydifference of the times for when a record wascollected, this field MUST contain 0. These fieldsremoved and then subsequently re-added, one canbe interpretedget an indication as toindicate thathow long theprovided inventory (be it full or targeted) reflectssystem was without the given record (and, thus without the associated software). Since this will involve comparison ofeventstimestamp values all originating on theendpoint after all changes up tosame system, clock skew between the SW-PC andincluding this last event have been accounted for. 4.11. SWID Tag Identifier Events A SWID-PC sends this attribute toSW-PV is not an issue. However, if the SW-PC's clock was adjusted between two recorded events, it is possible for such aSWID-PVcalculation toconvey events wherelead to incorrect understandings of theaffected SWID tags are expressed using SWID tag identifier instances. A SWID-PV MUST NOT send this attribute. The SWID-PC either sendstemporal distance between events. Users of thisattribute in fulfillmentfield need to be aware ofan existing subscriptionthe possibility for such occurrences. In the case where theestablishing requestTimestamp values of two events appear to contradict the EID ordering of those events (i.e., the later EID hasa Result Type is 1 andan earlier timestamp) the recipient MUST treat theEarliestEIDis non-zero, orordering as correct. All event records indirect response toaSWID Request attribute whereSoftware Identifier Events Attribute are required to be part of theResult Type is 1 andsame EID Epoch. Specifically, all reported events MUST have an EID from theEarliestsame EID Epoch as each other, and which isnon-zero. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Event Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request ID Copy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |the same as the EID Epoch| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |of the Last EID| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |and Last Consulted EID| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |values. The SW-PC MUST NOT report events with EIDs from different EID| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Action | Tag Creator Length |Tag Creator (v)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Unique Software ID Length |Unique Software ID (var length)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Instance ID Length | Instance ID (var length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 9: SWID Tag Identifier Events Attribute +--------------+----------------------------------------------------+ | Field | Description | +--------------+----------------------------------------------------+ | Flags: Bit 0 | InEpochs. The Last Consulted EID field contains thecase thatEID of the last event record considered for inclusion in this attribute. If this attributeis sent in | | - | fulfillment ofcontains asubscription this bit MUST bepartial event set| | Subscription | (1). In the case(as described in Section 3.5.4) this field value will differ from that of the Last EID field; if this attributeis a direct | | Fulfillment | response tocontains aSWID Request, this bit MUST be unset | | | (0). | | Flags: Bit | Reserved for future use. This field MUST be set to | | 1-7 - | zero on transmissioncomplete event set, the Last EID andignored upon reception. | | Reserved | | | Event Count | The number ofLast Consulted EID values are identical. If multiple eventsthatarereportedsent inthis | | | attribute. This field isa3-byte unsigned | | | integer. The EID, Timestamp, Action, Tag Creator | | | Length, Tag Creator, Unique Software ID Length, | | | UniqueSoftwareID, Instance ID Length, and | | | Instance ID fields are repeated,Identifier Events attribute, the order inorder,which they appear within the attribute is not significant. The EIDs associated with them are used for ordering the| | | number of timesindicated events appropriately. Also note that a single Software Identifier might appear multiple times in an attribute, such as if multiple events involving the associated record were being reported. 4.12. Software Inventory A SW-PC sends thisfield. (An | | | instanceattribute to a SW-PV to convey a list ofthese nine fieldsinventory records. A SW-PV MUST NOT send this attribute. The SW-PC either sends this attribute in fulfillment of an existing subscription where the establishing request had a Result Type of 0 and the Earliest EID isreferredzero, or in direct response toas ana SW Request attribute where the Result Type is 0 and the Earliest EID is zero. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Record Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |"event record" in this attribute. Thus the EventRequest ID Copy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EID Epoch |Count field indicates the number of event+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Last EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Data Model Type| Record ID Length |Record ID (var)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |records.) This field value MAY be 0, in which caseRecord Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Record (Variable) |there are no instances of these fields.+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 10: Software Inventory Attribute +--------------+----------------------------------------------------+ | Field | Description |Request ID+--------------+----------------------------------------------------+ | Flags: Bit 0 | In the casewherethat this attribute is sent in | | - | fulfillment of a subscription this bit MUST be set | | Subscription | (1). In the case that this attribute is a direct | | Fulfillment | response to a SW Request, this bit MUST be unset | | | (0). | | | | | Flags: Bit | Reserved for future use. This field MUST be set to | | 1-7 - | zero on transmission and ignored upon reception. | | Reserved | | | | | | Record Count | The number of records that follow. This field is a | | | 3-byte unsigned integer. The Data Model Type, | | | Record Identifier Length, Record ID, Record | | | Length, and Record fields are repeated, in order, | | | the number of times indicated in this field. This | | | field value MAY be 0 in which case there are no | | | instances of these fields. | | | | | Request ID | In the case where this attribute is in direct | | Copy / | response to aSWIDSW Request attribute from aSWID-SW-PV, | | Subscription |PV,this field MUST contain an exact copy of the | | ID | Request ID field from thatSWIDSW Request. In the | | | case where this attribute is sent in fulfillment | | | of an active subscription, this field MUST contain | | | the Subscription ID of the subscription being | | | fulfilled by this attribute. | | | | | EID Epoch | The EID Epoch of the Last EID value. This field is | | | an unsigned 4-byte integer. | | | | | Last EID | The EID of the last event recorded by theSWID-PC,SW-PC, | | | or 0 if theSWID-PCSW-PC has no recorded events. This | | | fieldcontains the EID of the SWID-PC's lastis an unsigned 4-byte integer. | | |recorded change event (which might or might not be| | Data Model |included asA 1-byte unsigned integer containing anevent record in this attribute).identifier | |LastType |The EID ofnumber from thelast event record that wasSoftware Data Model IANA table | |Consulted|consulted when generatingthat identifies theevent record listdata model of the reported | |EID|included in this attribute. This is different from | | | the Last EID field value if and only if this | | | attribute is conveying a partial list of event | | | records. See Section 3.6.4 for more on partialrecord. | | |list of event records.| |EIDRecord ID |The EID ofA 2-byte unsigned integer indicating theeventlength inthis event record.| |TimestampLength |The timestamp associated withbytes of theevent in thisRecord ID field. | | |event record. This timestamps is the SWID-PC's| | Record ID |best understanding of whenA string containing thegiven eventRecord Identifier value | | |occurred. Note that this timestamp might be anfrom a software inventory evidence record. This | | |estimate. The Timestamp date and timefield value MUST be normalized to Network Unicode | | |representedformat, asan RFC 3339 [5] compliant ASCII | | | stringdescribed inCoordinated Universal Time (UTC) time | | | with the additional restrictions that the 'T'Section 4.7. This string | | |delimiter and the 'Z' suffixMUST NOT becapitalizedNULL terminated. | | |and fractional seconds (time-secfrac) MUST NOT be| | Record Len |included.Thisfield conforms tois a 4-byte unsigned integer indicating thedate-time| | |ABNF production from section 5.6length ofRFC 3339the following software inventory | | |[RFC3339] with the above restrictions. Leapevidence record in bytes. | | |seconds are permitted and SWID-PVs MUST support| | Record | A software inventory evidence record as a string. | | |them.TheTimestamp stringrecord MUSTNOTbeNULLconverted and normalized to | | |terminated or paddedNetwork Unicode format, as described inany way. The length ofSection | | |this field is always 20 octets. | | Action4.7. This string MUST NOT be NULL terminated. | +--------------+----------------------------------------------------+ Table 8: Software Inventory Attribute Fields ThetypeSoftware Inventory attribute contains some number ofeventsoftware inventory evidence records. Given thatis recorded in this event | | | record. Possible values are: 1 = CREATION -the| | | additionsize ofa tag to the endpoint's SWID tag | | | collection; 2 = DELETION -records can vary considerably, theremovallength of this attribute is highly variable and, if transmitting atag | | | from the endpoint's SWID tag collection; 3 = | | | ALTERATION - There was an alterationcomplete inventory, can be extremely large. Enterprises might wish toa tag file | | | withinconstrain theendpoint's tag collection. All other | | | values are reserved for futureuseand MUST NOT be | | | used when sending attributes. Inof Software Inventory attributes to targeted requests to avoid over-burdening thecase wherenetwork unnecessarily. When copying a| | | SWID-PV receives an eventsoftware inventory evidence recordthat uses an | | | action value other thaninto the Record field, theones defined here, it | | | MUST ignore that eventrecordbut SHOULD process | | | other event recordsMUST be converted and normalized to use Network Unicode format prior to its inclusion in the record field. 4.13. Software Events A SW-PC sends this attributeas normal. | | Tag Creator | A 2-byte unsigned integer indicating the length in | | Length | bytes of the Tag Creator fieldto a SW-PV to convey a list of events where thetagaffected| | | by the described event. | | Tag Creator |software inventory evidence records are expressed using full records. Astring containingSW-PV MUST NOT send this attribute. The SW-PC either sends this attribute in fulfillment of an existing subscription where theTag Creator RegID value | | | from withinestablishing request has a Result Type of 0 and theSWID tag affected byEarliest EID is non-zero, or in direct response to a SW Request attribute where thedescribed | | | event.Result Type is 0 and the Earliest EID is non-zero. Note that each record is reported along with its Record Identifier. Thisfield value MUSTcan benormalizedused to link reported records to reported Software Identifier + Record Identifier pairs. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Event Count |Network Unicode format, as described in Section+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request ID Copy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |4.7. This string MUST NOT be NULL terminated.EID Epoch | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |UniqueLast EID |A 2-byte unsigned integer indicating the length in+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Last Consulted EID |Software ID+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |bytes of the Unique Software ID field of the tagEID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |LengthTimestamp |affected by the described event.+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp |Unique+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |A string containing the Unique ID value fromTimestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Software IDTimestamp |within the SWID tag affected by the described+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |event. This field value MUST be normalized toAction |Data Model Type| Record ID Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Record Identifier (Variable Length) |Network Unicode format, as described in Section+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Record Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |4.7. This string MUST NOT be NULL terminated.Record (Variable Length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 11: Software Events Attribute +--------------+----------------------------------------------------+ |Instance IDField |A 2-byte unsigned integer indicatingDescription | +--------------+----------------------------------------------------+ | Flags: Bit 0 | In thelengthcase that this attribute is sent in | |Length- |bytesfulfillment ofthe Instance ID field.a subscription this bit MUST be set | |Instance IDSubscription |A string containing(1). In theInstance ID ofcase that this attribute is agiven tagdirect | | Fulfillment |instance. The exact value ofresponse to a SW Request, thisfield depends onbit MUST be unset | | |the party that provides this SWID tag. This field(0). | | |value| | Flags: Bit | Reserved for future use. This field MUST benormalizedset toNetwork Unicode| | 1-7 - |format, as describedzero on transmission and ignored upon reception. | | Reserved | | | | | | Event Count | The number of events being reported inSection 4.7.this | | | attribute. Thisstringfield is a 3-byte unsigned | | |MUST NOT be NULL terminated.integer. The EID, Timestamp, Action, Data Model |+--------------+----------------------------------------------------+ Table 7: SWID Tag| | Type, Record IdentifierEvents Attribute Fields The first fewLength, Record Identifier, | | | Record Length, and Record fields are repeated, in | | | order, theSWID Tag Identifier Events attribute mirror thosenumber of times indicated inthe SWID Tag Identifier Inventory attribute. The primary difference is that, insteadthis | | | field. (An instance ofconveyingthese fields is referred to | | | as aninventory using tag identifier instances, the attribute conveys zero or more event records, including"event record" in this attribute. Thus theEID, timestamp, action type, and tag identifier instance of| | | Event Count field indicates theaffected tag. With regard tonumber of event | | | records.) This field value MAY be 0, in which case | | | there are no instances of these fields. | | | | | Request ID | In theTimestamp field, itcase where this attribute isimportantin direct | | Copy / | response tonote that clock skew between the SWID-PC and SWID-PV as well as between different SWID-PCs withina SW Request attribute from a SW-PV, | | Subscription | this field MUST contain anenterprise might make correlationexact copy oftimestamp values difficult. This specification does not attempt to resolve clock skew issues, although other mechanisms outsidethe | | ID | Request ID field from that SW Request. In the | | | case where this attribute is sent in fulfillment | | | of an active subscription, thisspecification do exist to reducefield MUST contain | | | theimpactSubscription ID ofclock skew and make the timestamp more useful for such correlation. Instead, SWID Message and Attributes for PA-TNC uses Timestamp value primarily as a means to indicatetheamount of time between two events on a single endpoint. For example,subscription being | | | fulfilled bytaking the differencethis attribute. | | | | | EID Epoch | The EID Epoch of thetimes for when a SWID tag was removed and then subsequently re-added, one can get an indication as to how long the system was without the given tag (and, thus without the associated software). Since this will involve comparisonLast EID value. This field is | | | an unsigned 4-byte integer. | | | | | Last EID | The EID oftimestamp values all originating onthesame system, clock skew betweenlast event recorded by theSWID-PC and SWID-PV is not an issue. However,SW-PC, | | | or 0 if theSWID-PC's clock was adjusted between twoSW-PC has no recordedevents, it is possible for such a calculation to lead to incorrect understandings of the temporal distance betweenevents.Users of thisThis | | | fieldneed to be aware of the possibility for such occurrences. In the case where the Timestamp values of two events appear to contradictcontains the EIDorderingofthose events (i.e., the later EID has an earlier timestamp) the recipient MUST treattheEID orderingSW-PC's last | | | recorded change event (which might or might not be | | | included ascorrect. Allan eventrecordsrecord ina Tag Identifier Events Attribute are required to be partthis attribute). | | | | | Last | The EID of thesame EID Epoch. Specifically, all reported events MUST have an EID fromlast event record that was | | Consulted | consulted when generating thesameevent record list | | EIDEpoch as each other, and which| included in this attribute. This isthe same as the EID Epoch ofdifferent from | | | the Last EID field value if andLast Consulted EID values. The SWID-PC MUST NOT report events with EIDs from different EID Epochs. The Last Consulted EID field contains the EID of the last event record considered for inclusion in this attribute. Ifonly if this | | | attributecontainsis conveying a partial list of eventset (as described in| | | records. See Section3.6.4) this field value will differ from that3.5.4 for more on partial | | | list ofthe Last EID field; if this attribute contains a completeeventset, the Lastrecords. | | | | | EIDand Last Consulted| The EIDvalues are identical. If multiple events are sent in a SWID Tag Identifier Events attribute,of theorderevent inwhich they appear within the attribute is not significant.this event record. | | | | | Timestamp | TheEIDstimestamp associated withthem are used for orderingtheindicated events appropriately. Also note that a single tag identifier instance might appear multiple timesevent inan attribute, such as if multiple events involving the associated tag were being reported. 4.12. SWID Tag Inventory A SWID-PC sendsthisattribute to a SWID-PV to convey a list| | | event record. This timestamp is the SW-PC's best | | | understanding ofSWID tags. A SWID-PV MUST NOT send this attribute. The SWID-PC either sendswhen the given event occurred. | | | Note that thisattribute in fulfillment oftimestamp might be anexisting subscription where the establishing request had a Result Type of 0estimate. | | | The Timestamp date andthe Earliest EID is zero, ortime MUST be represented as | | | an RFC 3339 [5] compliant ASCII string indirect response to a SWID Request attribute where the Result Type is 0 and the Earliest EID is zero. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Flags | Tag Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request ID Copy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | EID Epoch|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Last EID|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Coordinated Universal Time (UTC) time with the |Instance ID Length|Instance ID (var length)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+additional restrictions that the 'T' delimiter and |Tag Length|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Tag (Variable)the 'Z' suffix MUST be capitalized and fractional |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 10: SWID Tag Inventory Attribute +--------------+----------------------------------------------------+|Field|Descriptionseconds (time-secfrac) MUST NOT be included. This |+--------------+----------------------------------------------------+|Flags: Bit 0|Infield conforms to thecase that this attribute is sent indate-time ABNF production | |-|fulfillmentfrom section 5.6 ofa subscription this bit MUST be setRFC 3339 [RFC3339] with the | |Subscription|(1). In the case that this attribute is a directabove restrictions. Leap seconds are permitted | |Fulfillment|response to a SWID Request, this bitand SW-PVs MUSTbe unsetsupport them. The Timestamp | | |(0).string MUST NOT be NULL terminated or padded in | |Flags: Bit|Reserved for future use. Thisany way. The length of this fieldMUST be set tois always 20 | |1-7 -|zero on transmission and ignored upon reception.octets. | |Reserved| | |Tag ID CountAction | Thenumbertype oftagsevent thatfollow. This fieldisa | |recorded in this event |3-byte unsigned integer. The Instance ID Length,| || Instance ID, Tag Length, and Tag fields are | | | repeated, in order,record. Possible values are: 1 = CREATION - thenumber of times indicated | | | in this field. This field value MAY be 0 in which| | |case there are no instancesaddition ofthese fields.a record to the endpoint's Software | |Request ID|InInventory Evidence Collection; 2 = DELETION - thecase where this attribute is in direct| |Copy /|response toremoval of aSWID Request attributerecord froma SWID-the endpoint's Software | |Subscription|PV, this field MUST contain an exact copy of theInventory Evidence Collection; 3 = ALTERATION - | |ID|Request ID field from that SWID Request. InThere was an alteration to a record within the | | |case where this attribute is sent in fulfillmentendpoint's Software Inventory Evidence Collection. | | |of an active subscription, this field MUST containAll other values are reserved for future use and | | | MUST NOT be used when sending attributes. In theSubscription ID of the subscription being| | |fulfilled by this attribute.case where a SW-PV receives an event record that | |EID Epoch|The EID Epoch ofuses an action value other than theLast EID value. This field isones defined | | |an unsigned 4-byte integer.here, it MUST ignore that event record but SHOULD | |Last EID|The EID of the lastprocess other eventrecorded by the SWID-PC,records in this attribute as | | |or 0 if the SWID-PC has no recorded events. Thisnormal. | | |field is an unsigned 4-byte integer.| |Instance IDData Model | A2-byte1-byte unsigned integerindicating the length incontaining an identifier | |LengthType |bytes ofnumber from theInstance ID field.Software Data Model IANA table | | | that identifies the data model of the reported | | | record. | | | |Instance| Record ID | Astring containing2-byte unsigned integer indicating theInstance ID of a given taglength in | | Length |instance. The exact valuebytes ofthis field depends onthe Record ID field. | | | | | Record ID | A string containing theparty that provides this SWID tag.Record Identifier value | | | from a software inventory evidence record. Thisfield| | | field value MUST be normalized to Network Unicode | | | format, as described in Section 4.7. This string | | | MUST NOT be NULL terminated. | |Tag| | | Record Len | This is a 4-byte unsigned integer indicating the | | | length of the followingSWID tagrecord in bytes. | |Tag| | | Record | ASWID tagsoftware inventory evidence record as a string.In the case where the | | | original SWID tag is not expressed using UTF-8| | |encoding, itThe record MUST be converted and normalized to | | | Network Unicode format, as described in Section | | | 4.7.However, in the case where the original SWID | | | tag is expressed using UTF-8 encoding, the SWID | | | tag MUST be copied to this field without | | | modification, even if the original SWID tag does | | | not conform fully to Network Unicode format.This| | |string MUST NOT be NULL terminated. | +--------------+----------------------------------------------------+ Table8: SWID Tag Inventory9: Software Events Attribute Fields TheSWID Tag Inventory attribute contains some number of SWID tags. Given that the size of tags can vary considerably, the lengthfields of this attributeis highly variable and, if transmitting a complete inventory, can be extremely large. Enterprises might wish to constrainare used in theuse of SWID Tag Inventory attributes to targeted requests to avoid over-burdeningsame way as thenetwork unnecessarily. Note thatcorresponding fields of theInstance ID is included in this attribute alongprevious attributes. As with thetag. This is because, unlike the Tag Creator RegID and Unique ID fields that make up the tag identifier, the Instance ID cannot alwaysSoftware Inventory attribute, a Software Events attribute can beextracted from fields withinquite large if many events have occurred following the event indicated by aSWID tag.request's Earliest EID. As such,in order to be able to associate a tag file with a given tag identifier instance,it isnecessary to includerecommended that theInstance ID valueSW Request attributes only request full records be sent (Result Type set to 0) inthe attribute. When copyingaSWID tag intotargeted request, thus constraining theTag field, conversion and normalizationresponse just to records that match a given set of Software Identifiers. As with thecharacter encoding happens if andSoftware Identifier Events Attribute, this attribute MUST onlyifcontain event records with EIDs coming from thesource SWID tag does not use UTF-8 encoding. Incurrent EID Epoch of thecase whereSW-PC. As with thesource SWID tag is expressed using an encoding other than UTF-8, then that tagSoftware Inventory Attribute, the SW-PC MUSTbe convertedperform conversion andnormalizednormalization of the record. 4.14. Subscription Status Request A SW-PV sends this attribute touse Network Unicode format priora SW-PC toits inclusion in the tag field. However, in the case whererequest a list of active subscriptions for which thesource SWID tagrequesting SW-PV isexpressed in UTF-8,thesource tagsubscriber. A SW-PC MUSTbe copied to the Tag field without conversion or normalization.NOT send this attribute. Thisis true evenattribute has no fields. A SW-PC MUST respond to this attribute by sending a Subscription Status Response attribute (or a PA-TNC Error attribute ifthe source SWID tag uses UTF-8 but is not fully conformant with Network Unicode format. This is done because any conversion or normalization of a full SWID tagit islikely to break any cryptographic signatures included in the SWID tag. As such, conversion only happensunable toensurecorrectly provide aSWID tag is readable for the recipient (by ensuring it always uses UTF-8), but is otherwise avoided if possible. Recipients of this attribute can always be assured that the Tag field uses UTF-8 format, but cannot depend on full Network Unicode format compliance. 4.13. SWID Tag Eventsresponse). 4.15. Subscription Status Response ASWID-PCSW-PC sends this attribute to aSWID-PVSW-PV toconvey areport the list ofevents whereactive subscriptions for which theaffected SWID tags are expressed using full tags.receiving SW-PV is the subscriber. ASWID-PVSW- PV MUST NOT send this attribute.The SWID-PC either sends this attribute in fulfillment of an existing subscription where the establishing request has a Result Type of 0 and the Earliest EID is non-zero, or in direct response to a SWID Request attribute where the Result Type is 0 and the Earliest EID is non-zero.1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Status Flags |EventSubscription Record Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Request ID Copy / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Flags |EID EpochSoftware Identifier Count | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Last EIDRequest ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Last ConsultedEarliest EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |EID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Software Identifier Length |TimestampSoftware ID (var length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 12: Subscription Status Response Attribute +-----------------+-------------------------------------------------+ |TimestampField |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Description |Timestamp+-----------------+-------------------------------------------------+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Flags: Bit 0-7 |TimestampReserved for future use. This field MUST be set |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Timestamp- Reserved |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+to zero on transmission and ignored upon |Action|Instance ID Length |Instance ID (v)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Tag Lenreception. |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Tag (Variable)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 11: SWID Tag Events Attribute +--------------+----------------------------------------------------+|Field|DescriptionSubscription |+--------------+----------------------------------------------------+ | Flags: Bit 0 | In the case that this attribute is sent in | | - | fulfillmentThe number ofasubscriptionthis bit MUST be set | | Subscription | (1). In the caserecords thatthis attribute is a direct | | Fulfillment | response to a SWID Request, this bit MUST be unset | | | (0). | | Flags: Bit | Reserved for future use. This field MUST be set to | | 1-7 - | zero on transmission and ignored upon reception. | | Reserved |follow. | |EventRecord Count |The number of events being reported in this | | | attribute.This field is a 3-byte unsigned| | |integer. TheEID, Timestamp, Action, Instance ID| | |Length, InstanceFlags, Software Identifier Count, Request ID,Tag| | | Earliest EID, Software Identifier Length, andTag fields| | | Software ID fields are repeated, in order, thenumber of times| | | number of times indicated in this field.(An instance of these | | | five fields is referred to as an "event record" in | | | this attribute. Thus the Event Count field | | | indicates the number of event records.)Thisfield| | | field value MAY be0,0 in which case there are no | | | instances of these fields. | |Request ID|In the case where this attribute is in direct| |Copy /Flags, Software |response to a SWID Request attribute from a SWID-For each active subscription, these fields | |SubscriptionIdentifier |PV, this field MUSTcontain an exact copy of the fields with the | |ID |Count, RequestID field from that SWID Request. In| same name as provided in the subscription's | | ID, Earliest |case where this attribute is sent in fulfillmentestablishing request. | | EID, Software |of an active subscription, this field MUST contain| || the Subscription ID of the subscription being | | | fulfilled by this attribute. | | EID Epoch | The EID Epoch of the Last EID value. This field is | | | an unsigned 4-byte integer.Identifier | |Last EID | The EID of the last event recorded by the SWID-PC,| Length, and | |or 0 if the SWID-PC has no recorded events. This| Software ID | |field+-----------------+-------------------------------------------------+ Table 10: Subscription Status Response Fields A Subscription Status Response containsthe EID of the SWID-PC's last | | | recorded change event (which mightzero ormight not be | | | included as an eventmore subscription records. Specifically, it MUST contain one subscription recordin this attribute). | | Last | The EID offor each active subscription associated with thelast event recordparty thatwas | | Consulted | consulted when generating the event record list | | EID | included in this attribute. This is different from | | |sent theLast EID field value if and only ifSubscription Status Request to which this| | |attribute isconveyingapartial list of event | | | records. Seeresponse. As described in Section3.6.4 for more on partial | | | list of event records. | | EID | The EID of3.6.2, theevent in this event record. | | Timestamp | The timestampSW-PC MUST use the requester's Connection ID and its Posture Validator ID to determine which subscriptions are associated with theeventrequester. A SW-PC MUST send a Subscription Status Response attribute in response to a Subscription Status Request attribute. The only exception to this| | | event record. This timestampsis if theSWID-PC's | | | best understanding of when the given event | | | occurred. Note that this timestamp might be an | | | estimate. The Timestamp date and time MUST be | | | represented asSW-PC experiences anRFC 3339 [5] compliant ASCII | | | string in Coordinated Universal Time (UTC) time | | | with the additional restrictionserror condition that prevents it from correctly populating the'T' | | | delimiter and the 'Z' suffix MUST be capitalized | | | and fractional seconds (time-secfrac)Subscription Status Response attribute, in which case it MUSTNOT be | | | included. This field conformsrespond with a PA-TNC Error attribute appropriate to thedate-time | | | ABNF production from section 5.6type ofRFC 3339 | | | [RFC3339]error experienced. If there are no active subscriptions associated with theabove restrictions. Leap | | | seconds are permitted and SWID-PVs MUST support | | | them. The Timestamp string MUST NOT be NULL | | | terminated or padded in any way. The lengthrequesting party, the Subscription Status Response attribute will consist of| | | thisits Status Flags field, a Subscription Record Count fieldis always 20 octets. | | Action | The typewith a value ofevent that is recorded0, and no additional fields. Each subscription record included inthis event | | | record. Possible values are: 1 = CREATION -a Subscription Status Response attribute duplicates the| | | additionfields of atag toSW Request attribute that was theendpoint's SWID tag | | | collection; 2 = DELETION - the removalestablishing request of atag | | | from the endpoint's SWID tag collection; 3 = | | | ALTERATION - There was an alteration to a tag file | | | withinsubscription. Note that theendpoint's tag collection. All other | | | values are reserved for future use and MUST NOT be | | | used when sending attributes. InRequest ID field in thecase where a | | | SWID-PV receives an eventrecordthat uses an | | | action value other thancaptures theones defined here, it | | | MUST ignore that event record but SHOULD process | | | other event records in this attribute as normal. | | InstanceSubscription ID| A 2-byte unsigned integer indicatingassociated with thelength in | | Length | bytes ofgiven subscription record (since theInstance ID field. | | InstanceSubscription ID| A string containingis the same as theInstanceRequest ID ofa given tag | | | instance. The exact value of this field depends on | | |thepartyestablishing request). Note also thatprovides this SWID tag. Thisif the establishing request is targeted, then its Record Count field| | | value MUSTwill benormalized to Network Unicode | | | format, as describednon-zero and, within that subscription record, the Record Namespace Length, Record Namespace, Record ID Length, and Record ID fields are repeated, inSection 4.7. This string | | | MUST NOT be NULL terminated. | | Tag Len | This is a 4-byte unsigned integer indicatingorder, the| | | lengthnumber ofthe following SWID tagtimes indicated inbytes. | | Tag | A SWID tag as a string. Inthecase whereRecord Count field. As such, each subscription record can be different sizes. If the| | | original SWID tagestablishing request is notexpressed using UTF-8 | | | encoding, it MUST be converted and normalized to | | | Network Unicode format, as described in Section | | | 4.7. However, in the case where the original SWID | | | tagtargeted (Record Count field isexpressed using UTF-8 encoding,0), theSWID | | | tag MUST be copied to this field without | | | modification, even ifsubscription record has no Record Namespace Length, Record Namespace, Record ID Length, or Record ID fields. When a SW-PV compares theoriginal SWID tag does | | | not conform fullyinformation received in a Subscription Status Response toNetwork Unicode format. This | | | string MUST NOT be NULL terminated. | +--------------+----------------------------------------------------+ Table 9: SWID Tag Events Attribute Fields The fieldsits own records of active subscriptions it should be aware that the SW-PC might be unable to distinguish thisattribute are used inSW-PV from other SW-PVs on the sameway as the corresponding fields of the previous attributes.NEA Server. Aswith the SWID Tag Inventory attribute, a SWID Tag Events attribute can be quite large if many events have occurred following the event indicated byarequest's Earliest EID. As such,result, it isrecommendedpossible that theSWID Request attributes only request full tags be sent (Result Type set to 0) in a targeted request, thus constrainingSW-PC will report more subscription records than theresponse just to tagsSW-PV recognizes. For this reason, SW-PVs SHOULD NOT automatically assume thatmatchextra subscriptions reported in agiven set of tag identifiers. As with the SWID Tag Identifier Events Attribute, thisSubscription Status Response indicate a problem. 4.16. PA-TNC Error as Used by Software Message and Attributes for PA- TNC The PA-TNC Error attributeMUST only contain event records with EIDs coming from the current EID Epoch of the SWID-PC. As with the SWID Tag Inventory Attribute,is defined in theSWID-PC MUST perform conversionPA-TNC specification [RFC5792], andnormalization of the SWID tag itselfits use here conforms to that specification. A PA-TNC Error can be sent due to any error in thecase where the source SWID tag is expressed using an encoding other than UTF-8,PA-TNC exchange andMUST NOT perform conversion or normalization of the SWID tag itselfmight also be sent in response to error conditions specific to the Software Message and Attributes for PA-TNC exchange. The latter casewhere the source SWID tag is expressed using UTF- 8. 4.14. Subscription Status Requestutilizes error codes defined below. ASWID-PV sends thisPA-TNC Error attributetois sent instead of aSWID-PCSW Response attribute due torequest a list of active subscriptions for which the requesting SWID-PV isfactors that prevent thesubscriber. A SWID-PCreliable creation of a SW Response. As such, a SW-PC MUST NOT sendthis attribute. This attribute has no fields. A SWID-PC MUST respond to this attribute by sending a Subscription Status Response attribute (orboth a PA-TNC Error attributeif it is unable to correctly provideand aresponse). 4.15. Subscription StatusSW ResponseA SWID-PC sends thisattribute in response to aSWID-P to reportsingle SW Request attribute. Table 11 lists thelist of active subscriptionsError Code values forwhichthereceiving SWID-PV isPA-TNC Error attribute specific to thesubscriber. A SWID-PVSoftware Message and Attributes for PA-TNC exchange. In all of these cases, the Error Code Vendor ID field MUSTNOT sendbe set to 0x000000, corresponding to the IETF SMI Private Enterprise Number. The Error Information structures for each error type are described in the following subsections. Note that a message with a Software Message and Attributes for PA-TNC attribute might also result in an error condition covered by the Standard PA-TNC Error Codes defined in PA-TNC. For example, a SW Attribute might have an invalid parameter, leading to an error code of "Invalid Parameter". In thisattribute. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Status Flags | Subscription Record Countcase, the SW-PC MUST use the appropriate PA-TNC Error Code value as defined in Section 4.2.8 of PA-TNC specification. +-----------------------+-------------------------------------------+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Error Code Value |FlagsDescription |Tag ID Count+-----------------------+-------------------------------------------+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+0x00000020 |Request IDSW_ERROR. This indicates a fatal error |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Earliest EID|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+(i.e., an error that precludes the |Tag Creator Length|Tag Creator (variable length)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+creation of a suitable response |Unique Software ID Length |Unique Software ID (var length)| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 12: Subscription Status Response Attribute +------------------+------------------------------------------------+|Field|Descriptionattribute) other than the errors |+------------------+------------------------------------------------+|Flags: Bit 0-7 -|Reserved for future use. This field MUST bedescribed below but still specific to the | |Reserved|set to zero on transmission and ignored uponprocessing of SW Attributes. The | | |reception.Description field SHOULD contain | |Subscription|The number of subscription records thatadditional diagnostic information. | |Record Count|follow.| | 0x00000021 | SW_SUBSCRIPTION_DENIED_ERROR. Thisfield is| | | indicates that the SW-PC denied the SW- | | | PV's request to establish a3-byte unsignedsubscription. | | |integer.TheFlags, Tag ID Count, Request ID,Description field SHOULD contain | | |Earliest EID, Tag Creator Length, Tag Creator,additional diagnostic information. | | |Unique Software ID Length, and Unique Software| | 0x00000022 |ID fields are repeated, in order, the numberSW_RESPONSE_TOO_LARGE_ERROR. This | | |of times indicated in this field. This fieldindicates that the SW-PC's response to | | |value MAYthe SW-PV's request was too large to be0 in which case there are no| | |instances of these fields.serviced. The error information structure | |Flags, Tag ID|For each active subscription, these fieldsindicates the largest possible size of a | |Count, Request|contain an exact copy of the fields withresponse supported by the SW-PC (see | |ID, Earliest|same name as provided in the subscription'sSection 4.16.2). The Description field | |EID, Tag Creator|establishing request.SHOULD contain additional diagnostic | |Length, Tag| information. | |Creator, Unique| | |Software ID0x00000023 | SW_SUBSCRIPTION_FULFILLMENT_ERROR. This | | |Length, andindicates that the SW-PC experienced an | | |Unique Softwareerror fulfilling a given subscription. | | |IDThe error information includes the | | |+------------------+------------------------------------------------+ Table 10: Subscription Status Response Fields ASubscriptionStatus Response contains zero or more subscription records. Specifically, it MUST contain one subscription record for each active subscription associated withID of thepartyrelevant | | | subscription, as well as a sub-error thatsent| | | describes theSubscription Status Request to which this attribute is a response. As described in Section 3.8.2, the SWID-PC MUST use the requester's Connection ID and, if available, its Posture Validator ID to determine which subscriptions are associated with the requester. A SWID-PC MUST send a Subscription Status Response attribute in response to a Subscription Status Request attribute. The only exception to this is ifnature of theSWID-PC experiences anerrorcondition that prevents it from correctly populating the Subscription Status Response attribute, in which case it MUST respond with a PA-TNC Error attribute appropriate tothetype of errorSW- | | | PC experienced.If there are no active subscriptions associated with the requesting party, the Subscription Status Response attribute will consist of its Status Flags field, a Subscription Record Count field with a value of 0,The SW-PC andno additional fields. Each subscription record included in a Subscription Status Response attribute duplicatesSW-PV MUST | | | treat thefields of a SWID Request attributeidentified subscription as | | | cancelled. | | | | | 0x00000024 | SW_SUBSCRIPTION_ID_REUSE_ERROR. This | | | indicates thatwastheestablishing request ofSW-PC received asubscription. Note that theSW | | | RequestID field in the record captures the Subscription ID associated with thefrom a givensubscription record (sinceSW-PV where theSubscription| | | Request ID of that SW Request isthe same| | | currently used as theRequestSubscription ID ofthe establishing request). Note also| | | an active subscription with thatifSW-PV. | | | This error does not cancel theestablishing request is targeted, then its Tag ID Count field will be non-zero and, within that subscription record,identified | | | subscription. | | | | | 0x00000025-0x0000002F | RESERVED. These Error Codes are reserved | | | for use by future revisions of theTag Creator Length, Tag Creator, Unique| | | SoftwareID Length,Message andUniqueAttributes for PA- | | | TNC specification. Any PA-TNC Error | | | attribute using one of these Error Codes | | | MUST be treated as indicating a fatal | | | error on the sender without further | | | interpretation. | +-----------------------+-------------------------------------------+ Table 11: PA-TNC Error Codes for SoftwareID fields are repeated, in order,Message and Attributes for PA-TNC The following subsections describe thenumber of times indicatedstructures present in theTag ID Count field. As such, each subscription record can be different sizes. Likewise, ifError Information fields. 4.16.1. SW_ERROR, SW_SUBSCRIPTION_DENIED_ERROR and SW_SUBSCRIPTION_ID_REUSE_ERROR Information The SW_ERROR error code indicates that theestablishing requestsender (the SW-PC) has encountered an error related to the processing of a SW Request attribute but which is nottargeted (Tag ID Count fieldcovered by more specific SW error codes. The SW_SUBSCRIPTION_DENIED_ERROR is0),used when the SW-PV requests to establish a subscriptionrecord has no Tag Creator Length, Tag Creator, Unique Software ID Length,orUnique Software ID fields. When a SWID-PV compares the information received in a Subscription Status Response to its own records of activeclear all subscriptionsit should be aware thatfrom theSWID-PC might begiven SW-PV, but the SW-PC is unable or unwilling todistinguishcomply with thisSWID-PV from other SWID-PVs on the same NEA Server. As a result, itrequest. The SW_SUBSCRIPTION_ID_REUSE_ERROR ispossible thatused when theSWID-PC will report more subscription records than the SWID-PV recognizes. For this reason, SWID-PVs SHOULD NOT automatically assume that extra subscriptions reported inSW-PC receives aSubscription Status Response indicateSW Request whose Request ID duplicates aproblem. 4.16. PA-TNC Error as Used by SWID Message and Attributes for PA-TNC The PA-TNC Error attribute is defined inSubscription ID of an active subscription with thePA-TNC specification [RFC5792], and its use here conforms to that specification. A PA-TNC Error can be sent due to anyrequest's sender. All of these errorincodes use thePA-TNC exchange and might also be sent in response tofollowing errorconditions specific to the SWID Messageinformation structure. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Copy of Request ID / Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Description (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 13: SW Error, Subscription Error, andAttributes for PA-TNC exchange. The latterSubscription ID Reuse Information +--------------+----------------------------------------------------+ | Field | Description | +--------------+----------------------------------------------------+ | Copy of | In the caseutilizesthat this errorcodes defined below. A PA-TNC Error attributecondition issent instead of a SWID Response attribute due to factors that prevent the reliable creation of a SWID Response. As such, a SWID-PC MUST NOT send both a PA-TNC Error attribute and a SWID Response attributegenerated | | Request ID / | in direct response to asingle SWIDSW Requestattribute. Table 11 listsattribute, this | | Subscription | field MUST contain an exact copy of theError Code values for the PA-TNC Error attribute specific to the SWID Message and Attributes for PA-TNC exchange. In all of these cases, the Error Code VendorRequest ID | | ID | fieldMUST be set to 0x000000, corresponding to the IETF SMI Private Enterprise Number. The Error Information structures for each error type are describedin thefollowing subsections. Note that a message with a SWID Message and Attributes for PA-TNCSW Request attributemight also result in an error condition covered by the Standard PA-TNC Error Codes defined in PA-TNC. For example, the SWID Attribute might have an invalid parameter, leading to an error code of "Invalid Parameter". Inthat caused thiscase, the SWID-PC MUST use the appropriate PA-TNC Error Code value as defined in Section 4.2.8 of PA-TNC specification. +-----------------------+-------------------------------------------+ | Error Code Value | Description | +-----------------------+-------------------------------------------+ | 0x00000020 | SWID_ERROR. This indicates a fatal error| | |(i.e., an errorerror. In the case thatprecludesthe attribute in question | | |creationis generated in fulfillment ofa suitable response | | | attribute) other than the errorsan active | | |described below but still specific tosubscription, this field MUST contain the | | |processingSubscription ID ofSWID Attributes. Thethe subscription for which the | | |Description field SHOULD containattribute was generated. (This is only possible | | |additional diagnostic information.if the error code is SW_ERROR as the other errors | |0x00000021|SWID_SUBSCRIPTION_DENIED_ERROR. Thisare not generated by subscription fulfillment.) | | |indicates that the SWID-PC deniedNote that, in this case, the indicated error | | |SWID-PV's request to establishappears as a sub-error for a | | |subscription. The Description fieldSW_SUBSCRIPTION_FULFILLMENT_ERROR, as described in | | |SHOULD contain additional diagnosticSection 4.16.3. | | |information. | | 0x00000022 | SWID_RESPONSE_TOO_LARGE_ERROR. This| | Description |indicates thatA UTF-8 string describing theSWID-PC's response tocondition that | | |the SWID-PV's request was too large tocaused this error. This field MAY be 0-length. | | |serviced. The error information structureHowever, senders SHOULD include some description | | |indicates the largest possible sizein all PA-TNC Error attributes ofa | |these types. |response supported by the SWID-PC (see| | This field MUST NOT be NULL terminated. |Section 4.16.2).+--------------+----------------------------------------------------+ Table 12: SW Error, Subscription Error, and Subscription ID Reuse Information Fields This error information structure is used with SW_ERROR, SW_SUBSCRIPTION_DENIED_ERROR, and SW_SUBSCRIPTION_ID_REUSE_ERROR status codes to identify the SW Request attribute that precipitated the error condition and to describe the error. The Description field contains text describing the error. The SW-PC MAY encode machine- interpretable information in this field, but SHOULD also include a human-readable description of the error, since the receiving SW-PV might not recognize the SW-PC's encoded information. 4.16.2. SW_RESPONSE_TOO_LARGE_ERROR Information The SW_RESPONSE_TOO_LARGE_ERROR error code indicates that a response generated by a SW-PC in response to a SW-PV's SW Request attribute was too large to send. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Copy of Request ID / Subscription I | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |SHOULD contain additional diagnostic |Maximum Allowed Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |information.Description (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 14: SW Response Too Large Error Information +--------------+----------------------------------------------------+ |0x00000023Field |SWID_SUBSCRIPTION_FULFILLMENT_ERROR. ThisDescription | +--------------+----------------------------------------------------+ | Copy of |indicatesIn the case that theSWID-PC experienced an |attribute in question is | |error fulfilling a given subscription. | | | The error information includes theRequest ID / | generated in direct response to a SW Request, this | | SubscriptionID| field MUST contain an exact copy of therelevantRequest ID | | ID |subscription, as well as a sub-errorfield in the SW Request attribute that caused this | | |describes the nature oferror. In theerrorcase that the attribute in question | | |SWID-PC experienced. The SWID-PC andis generated in fulfillment of an active | | |SWID-PVsubscription, this field MUSTtreatcontain theidentified| | | Subscription ID of the subscriptionas cancelled.for which the | |0x00000024|SWID_SUBSCRIPTION_ID_REUSE_ERROR. Thisattribute was generated. Note that, in the latter | | |indicates thatcase, theSWID-PC receivedSW_RESPONSE_TOO_LARGE_ERROR appears as a | | |SWID Request fromsub-error for agiven SWID-PV whereSW_SUBSCRIPTION_FULFILLMENT_ERROR, | | |the Request ID of that SWID Request isas described in Section 4.16.3. | | |currently used as the Subscription ID of| | Maximum | This field MUST contain anactive subscription with that SWID-PV.unsigned integer | | Allowed Size |This error does not cancelindicating theidentifiedlargest permissible size, in bytes, | | |subscription.of SW Attribute that the SW-PC is currently | |0x00000025-0x0000002F|RESERVED. These Error Codes are reservedwilling to send in response to a SW Request | | |for use by future revisions of the SWIDattribute. | | |Message and Attributes for PA-TNC| | Description |specification. Any PA-TNC Error attributeA UTF-8 string describing the condition that | | |using one of these Error Codes MUSTcaused this error. This field MAY be 0-length. | | |treated as indicating a fatal error onHowever, senders SHOULD include some description | | |the sender without furtherin all PA-TNC Error attributes of these types. | | |interpretation.This field MUST NOT be NULL terminated. |+-----------------------+-------------------------------------------++--------------+----------------------------------------------------+ Table11: PA-TNC Error Codes for SWID Message and Attributes for PA- TNC The following subsections describe the structures present in the13: SW Response Too Large Error Informationfields. 4.16.1. SWID_ERROR, SWID_SUBSCRIPTION_DENIED_ERROR and SWID_SUBSCRIPTION_ID_REUSE_ERROR Information The SWID_ERRORFields This errorcode indicates thatstructure is used with thesender (the SWID-PC) has encountered an error relatedSW_RESPONSE_TOO_LARGE_ERROR status code to identify theprocessing of a SWIDSW Request attributebut which is not covered by more specific SWIDthat precipitated the errorcodes.condition and to describe the error. TheSWID_SUBSCRIPTION_DENIED_ERROR is used whenMaximum Allowed Size field indicates theSWID-PV requestslargest attribute the SW-PC is willing to send in response toestablishasubscription or clear all subscriptions fromSW Request under thegiven SWID-PV, butcurrent circumstances. Note that under other circumstances, theSWID-PC is unableSW-PC might be willing to return larger orunwillingsmaller responses than indicated (such as if the endpoint connects tocomply withthe NEA Server using a different network protocol). The other fields in thisrequest.error information structure have the same meanings as corresponding fields in the SW_ERROR and SW_SUBSCRIPTION_DENIED_ERROR information structure. 4.16.3. SW_SUBSCRIPTION_FULFILLMENT_ERROR Information TheSWID_SUBSCRIPTION_ID_REUSE_ERROR is used whenSW_SUBSCRIPTION_FULFILLMENT_ERROR error code indicates that theSWID- PC receivesSW-PC encountered an error while fulfilling aSWID Request whose Request ID duplicatessubscription. The bytes after the first 4 octets duplicate aSubscription IDPA-TNC Error attribute (as described in Section 4.2.8 ofan active subscription withPA-TNC) that is used to identify therequest's sender. Allnature ofthese error codes usethefollowing error information structure.encountered error. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Copy of Request ID /Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Description (variable length)Reserved | Sub Error Code Vendor ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub Error Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub Error Information (Variable Length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure13: SWID Error, Subscription Error, and15: SW SubscriptionID ReuseFulfillment Error Information +--------------+----------------------------------------------------+ | Field | Description | +--------------+----------------------------------------------------+ |Copy ofSubscription |InThis field MUST contain the Subscription ID of thecase that this error condition is generated| |RequestID/|in direct response to a SWID Request attribute,subscription whose fulfillment caused this error. | |Subscription|this| | Reserved | This field MUST containan exact copythe value of the Reserved | |ID|Request IDfieldin the SWID Requestof a PA-TNC Error attribute that describes | | |that caused this error. In the case thatthe error condition encountered during | | |attribute in question is generated in fulfillmentsubscription processing. | | |of an active subscription, this field MUST contain| | Sub Error | This field MUST contain theSubscription IDvalue of thesubscription for whichError | | Code Vendor |theCode Vendor ID field of a PA-TNC Error attributewas generated. (This is only| | ID |possible ifthat describes the errorcode is SWID_ERROR as thecondition encountered | | |other errors are not generated byduring subscription processing. | | |fulfillment.) Note that, in this case,| | Sub Error | This field MUST contain the value of the Error | | Code |indicated error appears as a sub-error forCode field of a PA-TNC Error attribute that | | |SWID_SUBSCRIPTION_FULFILLMENT_ERROR, as describeddescribes the error condition encountered during | | |in Section 4.16.3.subscription processing. | |Description|A UTF-8 string describing the condition that| | Sub Error |caused this error.This fieldMAY be 0-length.MUST contain the value of the Error | | Information |However, senders SHOULD include some descriptionInformation field of a PA-TNC Error attribute that | | |in all PA-TNC Error attributes of these types.describes the error condition encountered during | | |This field MUST NOT be NULL terminated.subscription processing. | +--------------+----------------------------------------------------+ Table12: SWID Error, Subscription Error, and14: SW SubscriptionID ReuseFulfillment Error Information Fields This errorinformationstructure is used withSWID_ERROR, SWID_SUBSCRIPTION_DENIED_ERROR, and SWID_SUBSCRIPTION_ID_REUSE_ERRORthe SW_SUBSCRIPTION_FULFILLMENT_ERROR statuscodes to identifycode. The first 4 octets of this error structure contain theSWID Request attributeSubscription ID of the subscription thatprecipitatedwas being fulfilled when the errorcondition and to describe the error. The Description field contains text describing the error.occurred. TheSWID-PC MAY encode machine- interpretable information inremaining fields of thisfield, but SHOULD also includeerror structure duplicate the fields of ahuman-readable descriptionPA-TNC Error attribute, referred to as the "sub-error". The error code of theerror, sincesub-error corresponds to thereceiving SWID-PV might not recognizetype of error that theSWID-PC's encoded information. 4.16.2. SWID_RESPONSE_TOO_LARGE_ERROR InformationSW-PC encountered while fulfilling the given subscription. TheSWID_RESPONSE_TOO_LARGE_ERRORsub-error MUST NOT have an error codeindicates that a response generated by a SWID-PC in response to a SWID-PV's SWID Request attribute was too large to send. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | CopyofRequest ID / Subscription I | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Maximum Allowed Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Description (variable length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 14: SWID Response Too LargeSW_SUBSCRIPTION_FULFILLMENT_ERROR. The SW-PC sending a PA-TNC ErrorInformation +--------------+----------------------------------------------------+ | Field | Description | +--------------+----------------------------------------------------+ | Copy of | In the case that theattributein question is | | Request ID / | generated in direct response to a SWID Request, | | Subscription |with thisfielderror code, and the SW-PV receiving it, MUSTcontain an exact copy oftreat the| | ID | Requestsubscription identified by the Subscription ID fieldin the SWID Request attribute | | | that caused this error. In the case that the | | | attribute in question is generated in fulfillment | | | ofas cancelled. All other subscriptions are unaffected. 5. Supported Data Models Software Message and Attributes for PA-TNC supports anactive subscription, this field MUST contain | | | the Subscription IDextensible list ofthe subscriptiondata models forwhich | | | the attribute was generated. Note that, in this | | | case, the SWID_RESPONSE_TOO_LARGE_ERRORrepresenting and transmitting software inventory information. This list of data models appearsas | | | a sub-error for a | | | SWID_SUBSCRIPTION_FULFILLMENT_ERROR, as described | | |in the Software Data Model IANA table (see Section4.16.3. | | Maximum |9.4). Thisfield MUST containdocument provides guidance for anunsigned integer | | Allowed Size | indicatinginitial set of data models. Other documents might provide guidance on thelargest permissible size, in bytes, | | |use of new data models by Software Message and Attributes for PA-TNC, and will be referenced by extensions to the Software Data Model IANA table. 5.1. ISO 2015 SWIDAttribute thatTags using XML The International Organization for Standardization and theSWID-PC is currently | | | willing to sendInternational Electrotechnical Commission (ISO/IEC) published the specification governing SWID tag construction and use inresponse to2009 with a revised version published in 2015. [SWID] Since that time, a growing number of vendors have integrated SWIDRequest | | | attribute. | | Description | A UTF-8 string describingtags into their software products. Doing so significantly simplifies thecondition that | | | caused this error. This field MAY be 0-length. | | | However, senders SHOULD include some description | | | in all PA-TNC Error attributestask of identifying thesetypes. | | | This field MUST NOT be NULL terminated. | +--------------+----------------------------------------------------+ Table 13: SWID Response Too Large Error Information Fields This error structure is used with the SWID_RESPONSE_TOO_LARGE_ERROR status codepieces of software: instead of relying on discovery processes that look for clues as toidentifysoftware presence, such as the presence of particular files or registry keys, a readily available list of SWIDRequest attribute that precipitated the error conditiontags provides simple and immediate evidence as todescribetheerror. The Maximum Allowed Size field indicatespresence of thelargest attributegiven piece of software. SWID Message and Attributes for PA-TNC has no reliance on theSWID-PC is willing to send in response to apresence or management of SWIDRequest undertags on an endpoint as described in thecurrent circumstances. NoteISO specification. However, the data model for describing software thatunder other circumstances,is presented in theSWID-PC might be willing to return larger responses than indicated (suchISO specification provides a robust and comprehensive way of describing software and is adopted here asifa means of representing and transmitting software information. It should be emphasized, theendpoint connectsuse of the ISO SWID tag data model makes no assumption as to whether theNEA Server using a different network protocol). The other fields in this error information structure havesource of thesame meanings as corresponding fieldsrecorded information was, in fact, an ISO SWID tag harvested from the endpoint or whether theSWID_ERROR and SWID_SUBSCRIPTION_DENIED_ERRORinformationstructure. 4.16.3. SWID_SUBSCRIPTION_FULFILLMENT_ERROR Information The SWID_SUBSCRIPTION_FULFILLMENT_ERROR error code indicates that the SWID-PC encountered an error while fulfilling a subscription. The bytes afterwas created using some other source and normalized to thefirst 4 octets duplicate a PA-TNC Error attribute (as described in Section 4.2.8 of PA-TNC) that is usedSWID format. 5.1.1. Guidance on Normalizing Source Data toidentifyISO 2015 SWID Tags using XML TBD Don't violate thenature ofspecification Use your own Tag Creator RegID or theencountered error. 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Subscription ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reserved | Sub Error Code Vendor ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub Error Code | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sub Error Information (Variable Length) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 15: SWID Subscription Fulfillment Error Information +--------------+----------------------------------------------------+ | Field | Description | +--------------+----------------------------------------------------+ | Subscription | This field MUST containUnknown Tag Creator RegID. Do not use some other party's RegID, especially not theSubscription IDRegID of the| | ID | subscription whose fulfillment caused this error. | | Reserved | This field MUST containsoftware author if you are not thevalueauthor. 5.1.2. Guidance on Creation of Software Identifiers from ISO 2015 SWID Tags TBD Use combination of Tag Creator RegID and Unique ID fields. Specifically, format should be NUMBER::TAG_CREATOR_REGID UNIQUE_ID, where NUMBER is theReserved | | | fieldlength of TAG_CREATOR_REGID in bytes. The rest ofa PA-TNC Error attribute that describes | | |theerror condition encountered during | | | subscription processing. | | Sub Error | This fieldSoftware Identifier MUSTcontainbe thevalueconcatination of theError | | Code Vendor | Code Vendor ID field of a PA-TNC Error attribute | | ID | that describes the error condition encountered | | | during subscription processing. | | Sub Error | This field MUST containTag Creator RegID and thevalue ofUnique ID from theError | | Code | Code field oftag, without any connecting character or whitespace. 5.2. ISO 2009 SWID Tags using XML As noted above, ISO's SWID tag specification provides aPA-TNC Error attribute that | | | describes the error condition encountered during | | | subscription processing. | | Sub Error | This field MUST contain the valueuseful data model for representation ofthe Error | | Information | Information fieldsoftware information. As ofa PA-TNC Error attribute that | | | describes the error condition encountered during | | | subscription processing. | +--------------+----------------------------------------------------+ Table 14: SWID Subscription Fulfillment Error Information Fields This error structure is used withtheSWID_SUBSCRIPTION_FULFILLMENT_ERROR status code. The first 4 octetswriting of thiserror structure contain the Subscription ID ofspecification, while thesubscription that was being fulfilled when2015 specification is considered more comprehensive and addresses some issues with theerror occurred. The remaining fields of2009 specification, 2009-format SWID tags remain far more common in deployments. For thiserror structure duplicatereason, ISO 2009 SWID tags are included in thefields of a PA-TNC Error attribute, referredSoftware Data Model IANA table. 5.2.1. Guidance on Normalizing Source Data toasISO 2015 SWID Tags using XML TBD Don't violate the"sub-error". The error code ofspecification Use your own Tag Creator RegID or thesub-error corresponds toUnknown Tag Creator RegID. Do not use some other party's RegID, especially not thetypeRegID oferror thattheSWID- PC encountered while fulfillingsoftware author if you are not thegiven subscription. The sub- error MUST NOT have an error codeauthor. 5.2.2. Guidance on Creation ofSWID_SUBSCRIPTION_FULFILLMENT_ERROR. The SWID-PC sending a PA-TNC Error attribute with this error code,Software Identifiers from ISO 2015 SWID Tags TBD Use combination of Tag Creator RegID and Unique ID fields. Specifically, format should be NUMBER::TAG_CREATOR_REGID UNIQUE_ID, where NUMBER is theSWID-PV receiving it,length of TAG_CREATOR_REGID in bytes. The rest of the Software Identifier MUSTtreatbe thesubscription identified byconcatination of theSubscriptionTag Creator RegID and the Unique IDfield as cancelled. All other subscriptions are unaffected. 5.from the tag, without any connecting character or whitespace. 6. Security Considerations This section discusses some of the security threats facing Posture Collectors and Posture Validators that implement theSWIDSoftware Message and Attributes for PA-TNC protocol. This section primarily notes potential issues for implementers to consider, although it does contain a handful of normative requirements to address certain security issues. Implementers need to make the final decision as to how their implementations address the given issues. The issues identified below focus on capabilities specific to this document. Implementers are advised to consult other relevant NEA specifications for security issues that are applicable to such components in general. Reading the Security Considerations section of any well-written specification can be discouraging, as a long list of possible threats is catalogued. Keep in mind that no security measure is absolute, but each one can be beneficial. By understanding the weaknesses of each security measure, we can put in place countermeasures to protect against exploitation of these weaknesses.5.1.6.1. Evidentiary Value ofSWID Tags A SWID tag is only indirect evidence as toSoftware Inventory Evidence Records It must be remembered that theinstallation of a pieceaccuracy ofsoftware onanendpoint. While the ideal is for the presence of a tag to correspond to the presenceendpoints Software Inventory Evidence Collection as an indicator of thecorresponding software, such a correlation hinges on software that accurately manages individual tags asendpoints software load and changes thereon isaddedonly as accurate as the tools that populate andremoved. Utilization ofmanage thetests included in a tag's package_footprint and/or validation elements can provide more direct evidence ofsoftwarepresence, butinventory evidence records in thisinformationcollection. Some tools might not bepresentdesigned to update records inmany tags and, because of its limited support, this version oftheSWID Message and Attributes for PA-TNC specification does not support use of these flags. Tags can include cryptographic signatures of some or all of their fields, which can enable detection of field modification. This is extremely usefulSoftware Inventory Evidence Collection inensuringreal time resulting in a collection thatsensitive fields are not modified maliciously. However, the use of cryptographic signaturesisnot required in SWID tags, and even when utilized, not all fieldsout-of-step with actual system state. Moreover, tools might inaccurately characterize software, or fail to properly record its removal. Finally, it is likely that there willnecessarilybeprotectedsoftware on the endpoint that is not tracked bysignatures. For these reasons, itany source and thus isimportant to treat SWID tags as evidence rather than proofnot reflected in the Software Inventory Evidence Collection. Users of collected softwarepresence. 5.2. Integrity ofinventory evidence records need to understand that theSWID Tag Collection On a related note, while some systems might protect SWID tags against modification, on others there mightinformation provided by the Software Message and Attributes for PA-TNC capability cannot bevery few restrictions on who can add or delete tags on an endpoint. Thistreated as completely accurate. Nonetheless, having endpoints report this information canmean that a malicious party has relatively free rein to add and remove tags withstill provide useful insights into thegoalstate ofobscuringtheactualendpoint's softwareinventoryload, and can alert administrators and policy tools ofthe endpoint. As noted above, signaturessituations that require remediation. 6.2. Sensitivity of Collected Records Software records ontag files can keep tag modification from going undetected, butanattackerendpoint are generally not considered to be sensitive, although there cansimply delete the signed tag and replace it with a modified tag that lacksbe exceptions to this generalization as noted in theassociated signature.section on Privacy Considerations. Infact, even a signed taggeneral, an endpoint's Software Inventory Evidence Collection can beadded by an adversarybrowsed andgo undetected ifindividual records read by any party with access to thetag doesendpoint. This is generally notinclude fieldsconsidered toverify software presence, suchbe problematic, asthe package_footprint or validation element There is little a SWID-PC can do to prevent unauthorized modifications of the endpoint's SWID tag from occurring if the local system does not provide protections for tags. Instead, the SWID-PV and NEA Server need to operate with an awareness that this type of modification can occur. The use of mechanisms to corroborate software inventories can help detect malicious modification of an endpoint's SWID tag collection. Likewise, the SWID-PV can look for odd behavior such as the deletion and rapid re-installation of a particular tag, especially the replacement of a signed tag with an unsigned one. Parties that use SWID tags as evidence of compliance with security policies need to be aware of the possible risks of corruption of an endpoint's SWID tag collection. 5.3. Sensitivity of Collected Tags Tags on an endpoint are generally not considered to be sensitive, although there can be exceptions to this generalization as noted in the section on Privacy Considerations. In general, an endpoint's SWID tag collection can be browsed and individual tags read by any party with access to the endpoint. This is generally not considered to be problematic, as those with access tothose with access to the endpoint can usually learn of everything disclosed by that endpoint'stagsrecords simply by inspecting other parts of the endpoint. The situation changes when an endpoint'sSWID tagsinventory records are collected and stored off of the endpoint itself, such as on a NEA Server or CMDB.TagsInventory records represent a wealth of information about the endpoint in question and, for an adversary who does not already have access to the endpoint, a collection of the endpoint'stagsinventory records might provide many details that are useful for mounting an attack. A list of thetagsinventory records associated with an endpoint reveals a list of software installed on the endpoint. This listiscan be very detailed,generallynoting specific versions and even patch levels, which an adversary can use to identify vulnerable software and design efficacious attacks. In addition, other information might also be gleaned from a collection ofSWID tags:software inventory records: oA SWID tagAn inventory record might include information about where the product was installed on a given endpoint. This can reveal details about the file organization of that endpoint that an attacker can utilize. oA SWID tagAn inventory record might include information about how the software was provided to the endpoint, who in an organization signs off on the package release, and who packaged the product for installation. This information might be used as a starting point for the development of supply chain attacks. o Events affectingSWID tagsinventory records are reported with timestamps indicating when each given event occurred. This can give the attacker an indication of how quickly an organization distributes patches and updates, helping the attacker determine how long an attack window might remain open. Any consolidated software inventory is a potential risk, because such an inventory can provide an adversary an insight into the enterprise's configuration and management process. It is recommended that a centralizedtagsoftware inventory record collection be protected against unauthorized access. Mechanisms to accomplish this can include encrypting the data at rest, ensuring that access to the data is limited only to necessary individuals and processes, and other basic security precautions.5.4.6.3. Integrity of Endpoint RecordsSWID-PCsSW-PCs maintain records of detected changes to the endpoint'sSWID tag collection.Software Inventory Evidence Collection. These records are used to respond to aSWID-PV'sSW-PV's request for change events. TheSWID-PVSW-PV might use a list of reported events to update its understanding of the endpoint'sSWID tag collectionSoftware Inventory Evidence Collection without needing to receive a full inventory report from theSWID-PC.SW-PC. For this reason, preserving the integrity of theSWID- PC'sSW-PC's record of events is extremely important. If an attacker modifies theSWID-PC'sSW-PC's record of changes to the endpoint'sSWID tag collection,Software Inventory Evidence Collection, this might cause theSWID-PV'sSW-PV's understanding of the endpoint'sSWID tag collectionSoftware Inventory Evidence Collection to differ from its actual state. Results might include leading theSWID-PVSW-PV to believe that absent software was present, that present software was absent, that patches have been installed even if this is not the case, or to be unaware of other changes toSWID tags.Software Inventory Evidence Records. As such, theSWID-PCSW-PC MUST take steps to protect the integrity of its eventrecord.records. In addition,sometimes a SWID-PC captures metadata about existing tags or even creates copies of whole tags. Metadata might include hash values of tag files or records of the last time a particular tag file was modified, while whole tags might be preserved to record tags that were deleted from the endpoint's SWID tag collection. If an attacker is able to corrupt or modify this information, they might cause a SWID-PC to fail to detect certain change events, incorrectly report information, or otherwise fail to correctly fulfill SWID-PV requests. As such, this additional information about SWID tags, if collected, MUST be integrity protected. Finally,records of establishedSWID-PVSW-PV subscriptions also require protection against manipulation or corruption. If an attacker is able to modify or delete records of an established subscription by aSWID-PV,SW-PV, theSWID-PCSW-PC might fail to correctly fulfill this subscription. TheSWID-PVSW-PV would not be aware that its subscription was not being correctly fulfilled unless it received additional information that indicated a discrepancy. For example, theSWID-PVSW-PV might collect a full inventory and realize from this that certain events had not been correctly reported in accordance with an established subscription. For this reason, theSWID-PCSW-PC MUST protect the integrity of subscription records.5.5. SWID-PC6.4. SW-PC Access Permissions ASWID-PCSW-PC requires sufficient permissions tolocate and read SWID tags on the endpoint that constitute the endpoint's SWID tag collection, andcollect Software Inventory Evidence Records from all of its supported sources, as well as sufficient permissions to interact with the endpoint's Posture Broker Client. With regard to the former, this might require permissions to read the contents of directories throughout the file system. Depending on the operating environment and other activities undertaken by aSWID-PCSW-PC (or software that incorporates aSWID-PCSW-PC as one of its capabilities) additional permissions might be required by theSWID-PCSW-PC software. TheSWID-PCSW-PC SHOULD NOT be granted permissions beyond what it needs in order to fulfill its duties.5.6.6.5. Sanitization ofTagRecord FieldsIn most cases there is no constraint on an endpoint as to who can add tags. This open model allows applications that run in user space to register tags as easily as more privileged applications. However, this also meansNot all sources of software inventory evidence are necessarily tightly controlled. For example, consider a source thatany tool reading angathers .swid files from the endpoint'stags needs to treat these tags as un-vetted inputfile system. Any party could create a new .swid file that could be collected andemploy appropriate safeguards.turned into a Software Inventory Evidence Record. As a result, it is important that the contents of source information not be automatically trusted. In particular, tools that readSWID tags,source information and the Software Inventory Evidence Records derived therefrom, includingSWID-PCs,SW-PCs, need to be careful to sanitize input to prevent buffer overflow attacks, encoding attacks, and other weaknesses that might be exploited by an adversary who can control the contents of atag. Fields of a SWID tag that change the SWID-PC's behavior, alter system state, or execute code need to be handled with special care.record. 6.6. PA-TNC Security Threats Inparticular,addition to thevalidation element, which provides a command line that can nominally be executed to validate the tag's correctness, can be utilized by an attacker to point to a malicious executable. To defend against this, SWID-PCs MUST NOT execute an application indicated by a validation element unless the element is signed and the SWID-PC has determined thataforementioned considerations thesignature is intactSoftware Message andtrusted. 5.7. Tag Library Poisoning It can be usefulAttributes fora SWID-PV to have accessPA-TNC protocol is subject toa library of tags. IftheSWID-PV receives a listsame security threats as other PA-TNC transactions, as noted in Section 5.2 oftag identifier instances, it can consult this libraryPA- TNC [RFC5792]. These include, but are not limited to, attribute theft, message fabrication, attribute modification, attribute replay, attribute insertion, andcollect full tags correspondingdenial of service. Implementers are advised tothose identifiers. Assuming it does not need accessconsult the PA-TNC specification toinstallation- specific information, it can perform calculations onbetter understand thesefull tags assecurity issues. 7. Privacy Considerations As noted in Section 6.2, ifit had received them from a SWID-PC. For example, itan adversary canusegain an understanding of the software installed on an endpoint, they can utilize thislibrarytoderive software names, publishers,launch attacks andversion by findingmaintain footholds on this endpoint. For this reason, thetag that correspondsNEA Server needs tothe given tag identifier value. If the SWID-PV keeps a collection of full SWID tags for matching against tag identifiers, there might be a temptationensure adequate safeguards are in place toadd any previously unknown tagsprevent exposure of collected inventory records. For similar reasons, it is advisable that an endpoint only send records to aSWID-PC might reportNEA Server that is authorized to receive thislibrary automatically. In fact, this behaviorinformation and that canpose a security risk. If the endpoint has been compromised and the tag manipulated on that endpoint, the tag that it provides to the SWID-PV mightbemisleading with regardtrusted tothe software associated with this tag. If the SWID-PV automatically addssafeguard thiscorrupted taginformation after collection. 8. Relationship toits library, not only will the computations with the compromised endpoint be affected, but computations with other endpoints that provide tag identifier instances that mapOther Specifications This specification makes frequent reference tothe corrupted tag will also be affected. Instead, if the SWID-PV does makeand use of other specifications. This section describes these relationships. This specification is expected to participate in atag library,standard NEA architecture. As such, it isrecommendedexpected toonly populate that librarybe used in conjunction withtags retrieved from a trusted source, or at least to segregate collections of reported tags by endpoint, so corrupted tags on one endpoint will not affect tag computations involvingthe otherendpoints. In general, tags retrieved from a trusted source and signed by a trusted authority are likely be safe for inclusionprotocols used in atag library. 5.8. PA-TNC Security ThreatsNEA exchange. Inaddition to the aforementioned considerations the SWID Message andparticular, SW Attributesfor PA-TNC protocolare conveyed over PB-TNC [RFC5793], which issubject to the same security threats as other PA-TNC transactions, as notedinSection 5.2turn conveyed over some variant ofPA- TNC [RFC5792].PT (either PT-TLS [RFC6876] or PT-EAP [RFC7171]). Theseinclude, butprotocols have an especially important role, as they arenot limited to, attribute theft, message fabrication, attribute modification, attribute replay, attribute insertion, and denial of service. Implementersresponsible for ensuring that attributes defined under this specification areadviseddelivered reliably, securely, and toconsultthePA-TNC specification to better understand these security issues. 6. Privacy Considerations As noted in Section 5.3, if an adversary can gain an understanding of the software installed on an endpoint, they can utilize this to launch attacks and maintain footholds on this endpoint. For this reason, the NEA Server needs to ensure adequate safeguards are in place to prevent exposure of collected tags. For similar reasons, it is advisable that an endpoint only send tags to a NEA Server that is authorized to receive this information and that can be trusted to safeguard this information after collection. 7. Relationship to Other Specifications This specification makes frequent reference to and use of other specifications. This section describes these relationships. This specification is expected to participate in a standard NEA architecture. As such, it is expected to be used in conjunction with the other protocols used in a NEA exchange. In particular, SWID Attributes are conveyed over PB-TNC [RFC5793], which is in turn conveyed over some variant of PT (either PT-TLS [RFC6876] or PT-EAP [RFC7171]). These protocols have an especially important role, as they are responsible for ensuring that attributes defined under this specification are delivered reliably, securely, and to the appropriate party. It is importantappropriate party. It is important to note that the Product Information, Numeric Version, and String Version attributes defined in the PA-TNC specification [RFC5792] are also meant to convey information about installed applications and the versions thereof. As such, there is some conceptual overlap between those attributes and the intent of this specification. However, PA-TNC was designed to respond to very specific queries about specific classes of products, while theSWIDSoftware Message and Attributes for PA-TNC specification is able to convey a broader query, resulting in a more comprehensive set of evidence regarding an endpoint's installed software.Moreover, because this specification makes use of the well-defined structures in SWID tags, it is able to convey information that is more concise (by making use of specific identifier fields instead of sending the whole SWID tag) and/or more comprehensive (as the SWID structures contain many more fields than expressible in PA-TNC).As such, this specification provides important capabilities not present in thePA-TNCPA- TNC specification.8.9. IANA Considerations This section extends multiple existing IANA registries. Specifically, it extends the PA-TNC Attribute Types and PA-TNC Error Codes defined in the PA-TNC specification [RFC5792] and the PA- Subtypes registry defined in the PB-TNC specification [RFC5793] and extended in PA-TNC. This specification only adds values to these registries and does not alter how these registries work or are maintained. Consult the appropriate specifications for details on the operations and maintenance of these registries.8.1.9.1. Registry for PA-TNC Attribute Types Section 4.6 of this specification defines several new PA-TNC attributes. The following values are added to the registry for PA- TNC Attribute Types defined in the PA-TNC specification. Note that Table 4 in Section 4.6 lists these attributes but uses a hexadecimal value to identify their associated integer. The integer values given in that table are identical to those provided here. Note also that Table 4 includes an entry for PA-TNC Error attributes, but the IANA information associated with that attribute is already defined in the PA-TNC specification and is not reproduced here.+-----+---------+----------------------+----------------------------++-----+---------+---------------------+-----------------------------+ | PEN | Integer | Name | Defining Specification |+-----+---------+----------------------+----------------------------++-----+---------+---------------------+-----------------------------+ | 0 | 17 |SWIDSW Request |SWIDSoftware Message and | | | | | Attributes for PA-TNC | | | | | | | 0 | 18 |SWID TagSoftware Identifier |SWIDSoftware Message and | | | | Inventory | Attributes for PA-TNC | | | | | | | 0 | 19 |SWID TagSoftware Identifier |SWIDSoftware Message and | | | | Events | Attributes for PA-TNC | | | | | | | 0 | 20 |SWID TagSoftware Inventory |SWIDSoftware Message and | | | | | Attributes for PA-TNC | | | | | | | 0 | 21 |SWID TagSoftware Events |SWIDSoftware Message and | | | | | Attributes for PA-TNC | | | | | | | 0 | 22 | Subscription Status |SWIDSoftware Message and | | | | Request | Attributes for PA-TNC | | | | | | | 0 | 23 | Subscription Status |SWIDSoftware Message and | | | | Response | Attributes for PA-TNC | | | | | | | 0 | 24 | Subscription Status |SWIDSoftware Message and | | | | Response | Attributes for PA-TNC | | | | | | | 0 | 25 - 31 | Reserved for future |SWIDSoftware Message and | | | | use | Attributes for PA-TNC |+-----+---------+----------------------+----------------------------+ 8.2.+-----+---------+---------------------+-----------------------------+ 9.2. Registry for PA-TNC Error Codes Section 4.16 of this specification defines several new PA-TNC Error Codes. The following values are added to the registry for PA-TNC Error Codes defined in the PA-TNC specification. Note that Table 11 in Section 4.16 lists theseattributescodes but uses a hexadecimal value to identify their associated integer. The integer values given in that table are identical to those provided here.+----+---------+------------------------------------+---------------++-----+---------+-----------------------------------+---------------+ |PEPEN | Integer | Name | Defining | |N| | | Specification |+----+---------+------------------------------------+---------------++-----+---------+-----------------------------------+---------------+ | 0 | 32 |SWID_ERRORSW_ERROR |SWID MessageSoftware | | | | | Message and | | | | | Attributes | | | | | for PA-TNC | | | | | | | 0 | 33 |SWID_SUBSCRIPTION_DENIED_ERRORSW_SUBSCRIPTION_DENIED_ERROR |SWID MessageSoftware | | | | | Message and | | | | | Attributes | | | | | for PA-TNC | | | | | | | 0 | 34 |SWID_RESPONSE_TOO_LARGE_ERRORSW_RESPONSE_TOO_LARGE_ERROR |SWID MessageSoftware | | | | | Message and | | | | | Attributes | | | | | for PA-TNC | | | | | | | 0 | 35 |SWID_SUBSCRIPTION_FULFILLMENT_ERROSW_SUBSCRIPTION_FULFILLMENT_ERROR |SWID MessageSoftware | | | |R| Message and | | | | | Attributes | | | | | for PA-TNC | | | | | | | 0 | 36 |SWID_SUBSCRIPTION_ID_REUSE_ERRORSW_SUBSCRIPTION_ID_REUSE_ERROR |SWID MessageSoftware | | | | | Message and | | | | | Attributes | | | | | for PA-TNC | | | | | | | 0 | 37-47 | Reserved for future use |SWID MessageSoftware | | | | | Message and | | | | | Attributes | | | | | for PA-TNC |+----+---------+------------------------------------+---------------+ 8.3.+-----+---------+-----------------------------------+---------------+ 9.3. Registry for PA Subtypes Section 4.1 of this specification defines one new PA Subtype. The following value is added to the registry for PA Subtypes defined in the PB-TNC specification.+-----+---------+----------------+----------------------------------++-----+---------+-------------+-------------------------------------+ | PEN | Integer | Name | Defining Specification |+-----+---------+----------------+----------------------------------++-----+---------+-------------+-------------------------------------+ | 0 | 9 |SWIDSW |SWIDSoftware Message and Attributes for | | | | Attributes | PA-TNC |+-----+---------+----------------+----------------------------------+ 9.+-----+---------+-------------+-------------------------------------+ 9.4. Registry for Software Data Models TBD 10. References9.1.10.1. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>. [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, DOI 10.17487/RFC3339, July 2002, <http://www.rfc-editor.org/info/rfc3339>. [RFC5198] Klensin, J. and M. Padlipsky, "Unicode Format for Network Interchange", RFC 5198, DOI 10.17487/RFC5198, March 2008, <http://www.rfc-editor.org/info/rfc5198>. [RFC5209] Sangster, P., Khosravi, H., Mani, M., Narayan, K., and J. Tardo, "Network Endpoint Assessment (NEA): Overview and Requirements", RFC 5209, DOI 10.17487/RFC5209, June 2008, <http://www.rfc-editor.org/info/rfc5209>. [RFC5792] Sangster, P. and K. Narayan, "PA-TNC: A Posture Attribute (PA) Protocol Compatible with Trusted Network Connect (TNC)", RFC 5792, DOI 10.17487/RFC5792, March 2010, <http://www.rfc-editor.org/info/rfc5792>. [SWID] The International Organization for Standardization/ International Electrotechnical Commission, "Information Technology - Software Asset Management - Part 2: Software Identification Tag, ISO/IEC 19770-2", November 2009.9.2.10.2. Informative References [NIST-SWID] The National Institute of Standards and Technology and The MITRE Corporation, "Guidelines for the Creation of Interoperable Software Identification (SWID) Tags", August 2013. [RFC5793] Sahita, R., Hanna, S., Hurst, R., and K. Narayan, "PB-TNC: A Posture Broker (PB) Protocol Compatible with Trusted Network Connect (TNC)", RFC 5793, DOI 10.17487/RFC5793, March 2010, <http://www.rfc-editor.org/info/rfc5793>. [RFC6876] Sangster, P., Cam-Winget, N., and J. Salowey, "A Posture Transport Protocol over TLS (PT-TLS)", RFC 6876, DOI 10.17487/RFC6876, February 2013, <http://www.rfc-editor.org/info/rfc6876>. [RFC7171] Cam-Winget, N. and P. Sangster, "PT-EAP: Posture Transport (PT) Protocol for Extensible Authentication Protocol (EAP) Tunnel Methods", RFC 7171, DOI 10.17487/RFC7171, May 2014, <http://www.rfc-editor.org/info/rfc7171>.Appendix A. Examples This appendix includes examples of a SWID tag file and SWID attributes. All examples represent fictional content. Examples are provided using the 2009 release of the ISO/IEC SWID specification. A.1. A Simple SWID Tag Figure 16 shows an example SWID tag for a fictional software product called SomeApp created by Vendor Inc. This example includes only the required SWID tag fields. This tag is for version 2.3, build 12 of the product. 1]<?xml version="1.0" encoding="UTF-8"?> 2]<swid:software_identification_tag 3] xmlns:swid="http://standards.iso.org/iso/19770/-2/2009/schema.xsd" 4] xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 5] <swid:entitlement_required_indicator> 6] true 7] </swid:entitlement_required_indicator> 8] <swid:product_title>SomeApp</swid:product_title> 9] <swid:product_version> 10] <swid:name>2.3 r12</swid:name> 11] <swid:numeric> 12] <swid:major>2</swid:major> 13] <swid:minor>3</swid:minor> 14] <swid:build>12</swid:build> 15] <swid:review>0</swid:review> 16] </swid:numeric> 17] </swid:product_version> 18] <swid:software_creator> 19] <swid:name>Vendor Inc.</swid:name> 20] <swid:regid>regid.2013-06.com.vendor</swid:regid> 21] </swid:software_creator> 22] <swid:software_licensor> 23] <swid:name>Vendor Inc.</swid:name> 24] <swid:regid>regid.2013-06.com.vendor</swid:regid> 25] </swid:software_licensor> 26] <swid:software_id> 27] <swid:unique_id> 28] someapp-21ec2020-3aea-1069-a2dd-08002b30309d 29] </swid:unique_id> 30] <swid:tag_creator_regid> 31] regid.2013-06.com.vendor 32] </swid:tag_creator_regid> 33] </swid:software_id> 34] <swid:tag_creator> 35] <swid:name>Vendor Inc.</swid:name> 36] <swid:regid>regid.2013-06.com.vendor</swid:regid> 37] </swid:tag_creator> 38]</swid:software_identification_tag> Figure 16: A Simple SWID Tag The SWID tag described in Figure 16 is limited to only the information required by the SWID specification [SWID]. This information includes the following: o Lines 5-7: Entitlement requirement indicator. This indicates whether some sort of entitlement (e.g., a license) is required in order to install and/or use the software. o Line 8: Prose name of the product o Lines 9-17: Product version. This includes both a prose expression of the full product version and the version information broken down into distinct fields. o Lines 18-21: Software creator identification. This identifies the party that created the software. This includes both a prose name of the software creator and their "regid" value. o Lines 22-25: Software licensor identification. This identifies the party that holds the rights to license others to use the software. o Lines 26-33: Software unique identifier. This structure contains the regid for the party that created this tag and a value that party uses to uniquely identify the named software product. The SWID Message and Attributes for PA-TNC specification uses the values of these fields when constructing a SWID tag identifier, as described in Section 3.3. o Lines 34-37: Tag creator identification. This identifies the party that created the tag. Assume the SWID tag file is installed on the file system in the following location: C:\ProgramData\Vendor\regid.2013-06.com.vendor_someapp-21ec2020-3aea- 1069.swidtag A.2. SWID Request Attributes Below are hexadecimal dumps of example SWID Request attributes. SWID Request attributes are described in more detail in Section 4.7. A.2.1. Simple Request This is a basic SWID request for inventory information - the request is not targeted nor does the request establish a subscription on the endpoint. The SWID Request dictates that the response be expressed using SWID tag identifier instances. +-------------+-----------------------------------------------------+ | 20 00 00 00 | Clear Subscriptions = 0 (don't clear | | | subscriptions), Subscribe = 0 (don't establish a | | | new subscription), Result Type = 1 (respond using | | | SWID tag identifier instances), Tag ID Count = 0 | | | (non-targeted request) | | ----------- | | | 00 00 3a 76 | Request ID = 14966 | | ----------- | | | 00 00 00 00 | Earliest EID = 0 (respond with inventory rather | | | than event records) | +-------------+-----------------------------------------------------+ Note that this attribute does not contain any Tag Creator Length, Tag Creator, Unique Software ID Length, or Unique Software ID fields because the Tag ID Count field is 0. A.2.2. Subscription Request for Events This attribute establishes a request for a new subscription that will report new SWID change events as they occur. +-------------+-----------------------------------------------------+ | 60 00 00 00 | Clear Subscriptions = 0 (don't clear | | | subscriptions), Subscribe = 1 (establish a new | | | subscription), Result Type = 1 (respond using SWID | | | tag identifier instances), Tag ID Count = 0 (non- | | | targeted request) | | ----------- | | | 00 00 3a 76 | Request ID = 14967 | | ----------- | | | 00 02 cc 3a | Earliest EID = 183354 | +-------------+-----------------------------------------------------+ As before, this attribute does not contain any Tag Creator Length, Tag Creator, Unique Software ID Length, or Unique Software ID fields because the Tag ID Count field is 0. The immediate response to this message (assuming no errors are encountered) will be a list of events with EIDs that are greater than or equal to 183354. Thereafter, if any new events are recorded, those events (and only those events) will be sent back to the SWID-PV in fulfillment of this subscription. (See Section 3.8.2 for more on subscription fulfillment.) A.2.3. Targeted Request This example shows a targeted request. Specifically, the request includes two SWID tag identifiers. The attribute requests that the corresponding full SWID tags be returned. +-----------------+-------------------------------------------------+ | 00 00 00 02 | Clear Subscriptions = 0 (don't clear | | | subscriptions), Subscribe = 0 (don't establish | | | a new subscription), Result Type = 0 (respond | | | using full SWID tags), Tag ID Count = 2 | | | (targeted request identifying two SWID tags) | | ----------- | | | 00 00 3a 76 | Request ID = 14968 | | ----------- | | | 00 00 00 00 | Earliest EID = 0 (respond with inventory rather | | | than event records) | | =========== | START TAG IDENTIFIER 1 | | 00 18 | Tag Creator Length = 24 | | ----------- | | | 72 65 67 69 64 | Tag Creator = regid.2013-06.com.vendor | | 2e 32 30 31 33 | | | 2d 30 36 2e 63 | | | 6f 6d 2e 76 65 | | | 6e 64 6f 72 | | | ----------- | | | 00 2c | Unique Software ID Length = 44 | | ----------- | | | 73 6f 6d 65 61 | Unique Software ID = | | 70 70 2d 32 31 | someapp-21ec2020-3aea-1069-a2dd-08002b30309d | | 65 63 32 30 32 | | | 30 2d 33 61 65 | | | 61 2d 31 30 36 | | | 39 2d 61 32 64 | | | 64 2d 30 38 30 | | | 30 32 62 33 30 | | | 33 30 39 64 | | | =========== | START TAG IDENTIFIER 2 | | 00 18 | Tag Creator Length = 24 | | ----------- | | | 72 65 67 69 64 | Tag Creator = regid.2013-06.com.vendor | | 2e 32 30 31 33 | | | 2d 30 36 2e 63 | | | 6f 6d 2e 76 65 | | | 6e 64 6f 72 | | | ----------- | | | 00 2f | Unique Software ID Length = 47 | | ----------- | | | 61 6e 6f 74 68 | Unique Software ID = | | 65 72 61 70 70 | anotherapp-23a52020-3aea-1069-a2dd-0800884d4e21 | | 2d 32 33 61 35 | | | 32 30 32 30 2d | | | 33 61 65 61 2d | | | 31 30 36 39 2d | | | 61 32 64 64 2d | | | 30 38 30 30 38 | | | 38 34 64 34 65 | | | 32 31 | | +-----------------+-------------------------------------------------+ This message contains SWID tag identifiers for two SWID tags. The first of these tags is the example SWID tag described in Appendix A.1. The second tag is created by the same tag creator, but indicates a different software product. A.3. SWID Response Attributes This section contains examples of SWID response attributes. A.3.1. SWID Tag Identifier Events Attribute This shows an example of a SWID Tag Identifier Events attribute. In this case, this attribute is sent in fulfillment of an established subscription rather than in direct response to a SWID Request attribute. (This is indicated by setting the Subscription Fulfillment flag.) The SWID Request attribute shown in Appendix A.2.2 established this subscription (as indicated by the Subscription ID field). This response contains two event records. +-------------------+-----------------------------------------------+ | 80 00 00 02 | Subscription Fulfillment = 1, Event Count = 2 | | ----------- | | | 00 00 3a 76 | Subscription ID = 14968 | | ----------- | | | 7e 82 1c aa | EID Epoch = 2122456234 | | ----------- | | | 00 02 cc 84 | Last EID = 183428 | | ----------- | | | 00 02 cc 84 | Last Consulted EID = 183428 (Same as Last EID | | | so this is a complete result) | | =========== | START EVENT RECORD 1 | | 00 02 cc 83 | EID = 183427 | | ----------- | | | 32 30 31 33 2d 30 | Timestamp = 2013-07-21T04:32:16Z | | 37 2d 32 31 54 30 | | | 34 3a 33 32 3a 31 | | | 36 5a | | | ----------- | | | 01 | Action = 1 (CREATION) | | ----------- | | | 00 18 | Tag Creator Length = 24 | | ----------- | | | 72 65 67 69 64 2e | Tag Creator = regid.2013-06.com.vendor | | 32 30 31 33 2d 30 | | | 36 2e 63 6f 6d 2e | | | 76 65 6e 64 6f 72 | | | ----------- | | | 00 2c | Unique Software ID Length = 44 | | ----------- | | | 73 6f 6d 65 61 70 | Unique Software ID = | | 70 2d 32 31 65 63 | someapp-21ec2020-3aea-1069-a2dd-08002b30309d | | 32 30 32 30 2d 33 | | | 61 65 61 2d 31 30 | | | 36 39 2d 61 32 64 | | | 64 2d 30 38 30 30 | | | 32 62 33 30 33 30 | | | 39 64 | | | ----------- | | | 00 51 | Instance ID Length = 81 | | ----------- | | | 43 3a 5c 50 72 6f | Instance ID = | | 67 72 61 6d 44 61 | C:\ProgramData\Vendor\regid.2013-06. | | 74 61 5c 56 65 6e | com.vendor_someapp-21ec2020-3aea-1069.swidtag | | 64 6f 72 5c 72 65 | | | 67 69 64 2e 32 30 | | | 31 33 2d 30 36 2e | | | 63 6f 6d 2e 76 65 | | | 6e 64 6f 72 5f 73 | | | 6f 6d 65 61 70 70 | | | 2d 32 31 65 63 32 | | | 30 32 30 2d 33 61 | | | 65 61 2d 31 30 36 | | | 39 2e 73 77 69 64 | | | 74 61 67 | | | ============ | START EVENT RECORD 2 | | 00 02 cc 84 | EID = 183428 | | ----------- | | | 32 30 31 33 2d 30 | Timestamp = 2013-07-21T04:32:22Z | | 37 2d 32 31 54 30 | | | 34 3a 33 32 3a 32 | | | 32 5a | | | ----------- | | | 02 | Action = 2 (DELETED) | | ----------- | | | 00 18 | Tag Creator Length = 24 | | ----------- | | | 72 65 67 69 64 2e | Tag Creator = regid.2009-08.com.company | | 32 30 30 39 2d 30 | | | 38 2e 63 6f 6d 2e | | | 63 6f 6d 70 61 6e | | | 79 | | | ----------- | | | 00 24 | Unique Software ID Length = 36 | | ----------- | | | 32 34 38 35 34 39 | Unique Software ID = | | 37 35 2d 31 32 35 | 24854975-125e-ee3e-98ac-45684248eefa | | 65 2d 65 65 33 65 | | | 2d 39 38 61 63 2d | | | 34 35 36 38 34 32 | | | 34 38 65 65 66 61 | | | ----------- | | | 00 47 | Instance ID Length = 71 | | ----------- | | | 43 3a 5c 50 72 6f | Instance ID = C:\Program | | 67 72 61 6d 20 46 | Files\Company\OurProduct\ | | 69 6c 65 73 5c 43 | OurProduct_8749-84789200-02.swidtag | | 6f 6d 70 61 6e 79 | | | 5c 4f 75 72 50 72 | | | 6f 64 75 63 74 5c | | | 4f 75 72 50 72 6f | | | 64 75 63 74 5f 38 | | | 37 34 39 2d 38 34 | | | 37 38 39 32 30 30 | | | 2d 30 32 2e 73 77 | | | 69 64 74 61 67 | | +-------------------+-----------------------------------------------+ This response contains two event records. Note that their timestamps indicate that they occurred a few seconds apart - some SWID-PCs might choose to wait a brief time before sending messages in fulfillment of subscriptions so as to send multiple event records in a single attribute. The first event record indicates the creation of the SWID tag shown in Appendix A.1. The second event record indicates the deletion of a different SWID tag. Finally, note that since the Last EID field is equal to the EID of one of the reported event records, this indicates that the SWID-PC has no later recorded events. A.3.2. SWID Tag Inventory Attribute This shows an example of a SWID Tag Inventory attribute. In this case, this attribute is being sent in direct response to a SWID Request attribute, as indicated by the Subscription Fulfillment flag being unset. (Specifically, it is being sent in response to the SWID Request shown in Appendix A.2.3, as can be shown by comparing the Request ID and Request ID Copy fields.) The result includes a single tag entry. +-----------------------+-------------------------------------------+ | 00 00 00 01 | Subscription Fulfillment = 0, Tag Count = | | | 1 | | ----------- | | | 00 00 3a 76 | Request ID Copy = 14968 | | ----------- | | | 7e 82 1c aa | EID Epoch = 2122456234 | | ----------- | | | 00 02 cc 84 | Last EID = 183428 | | =========== | BEGIN TAG ENTRY | | 00 51 | Instance ID Length = 81 | | ----------- | | | 43 3a 5c 50 72 6f 67 | Instance ID = | | 72 61 6d 44 61 74 61 | C:\ProgramData\Vendor\regid.2013-06.com. | | 5c 56 65 6e 64 6f 72 | vendor_someapp-21ec2020-3aea-1069.swidtag | | 5c 72 65 67 69 64 2e | | | 32 30 31 33 2d 30 36 | | | 2e 63 6f 6d 2e 76 65 | | | 6e 64 6f 72 5f 73 6f | | | 6d 65 61 70 70 2d 32 | | | 31 65 63 32 30 32 30 | | | 2d 33 61 65 61 2d 31 | | | 30 36 39 2e 73 77 69 | | | 64 74 61 67 | | | ----------- | | | 05 ac | Tag Length = 1452 | | ----------- | | | 3c 3f 78 6d 6c 20 76 | The Tag field is equal to the SWID tag | | ... 69 6f 6e 5f 74 | shown in Figure 16. Note that since the | | 61 67 3e | original tag used UTF-8 encoding, the tag | | | is copied without undergoing any | | | conversion or normalization. | +-----------------------+-------------------------------------------+ This attribute contains a single SWID tag. As a response to the targeted SWID Request in Appendix A.2.3, this indicates a single instance of the first requested SWID tag and no instances of the second requested tag were present in the endpoint's SWID tag collection. Moreover, if the same party receives both this attribute and the attribute in Appendix A.3.1, one can tell that there have been no change events recorded since the preceding message, because the EID Epoch and Last EID values are unchanged.Authors' Addresses Chris Coffin The MITRE Corporation 202 Burlington Road Bedford, MA 01730 USA Email: ccoffin@mitre.org Daniel Haynes The MITRE Corporation 202 Burlington Road Bedford, MA 01730 USA Email: dhaynes@mitre.org Charles Schmidt The MITRE Corporation 202 Burlington Road Bedford, MA 01730 USA Email: cmschmidt@mitre.org Jessica Fitzgerald-McKay Department of Defense 9800 Savage Road Ft. Meade, Maryland USA Email: jmfitz2@nsa.gov