Opaque Data RIM Attributes#

This document defines the ns3 XML namespace used in NVIDIA TCG SWID Reference Integrity Manifests (RIMs). Attributes in this namespace let a RIM carry reference values that a verifier compares numerically rather than by hash. One example is a minimum Security Version Number (SVN) floor. The runtime values these attributes describe are delivered in a GPU’s attestation evidence as opaque data; see NVIDIA Opaque Data Format for that binary encoding.

The URL of this page is the namespace URI itself. A RIM references the namespace by declaring xmlns:ns3="https://docs.nvidia.com/attestation/specs/latest/opaque-data.html", and that URL resolves here, to the definition of the attributes below.

For the base structure of a RIM (the SoftwareIdentity, Entity, Meta, Payload, and Signature elements), see the RIM Guide.

Background: standard measurement records#

A RIM Payload holds a list of ns0:Resource records. A conventional measurement record carries a hash and uses these attributes:

Attribute

Example

Meaning

type

Measurement

Record kind.

index

0

Decimal slot index.

active

True

Whether the record participates in comparison.

alternatives

1

Number of acceptable values (ns2:Hash0, ns2:Hash1, …).

ns2:Hash0

0000…

The golden SHA-384 digest for alternative 0.

name

Measurement_0

Human-readable label.

size

48

Value size in bytes.

Indices 0 through 63 are reserved for the standard SPDM measurement blocks and are always hashed. These records are unchanged by this specification.

Opaque-data records#

An opaque-data record is an ns0:Resource whose index is greater than 0x1000 (4096). As with all RIM indices, the value is written in decimal. The opaque-data identifier is the index minus 0x1000:

opaque data ID = index − 0x1000

For example, index="4133" is 0x1025, so the identifier is 0x1025 − 0x1000 = 0x25 (37 decimal). This identifier is the same dataType the GPU reports in evidence, so it is the key a verifier uses to pair a RIM reference value with the matching runtime value. See the data ID registry for the defined identifiers.

On an opaque-data record:

  • name carries a meaningful label for the value (for example FSP_UCODE_MIN_SVN) so it can be surfaced to a relying party.

  • size is retained for schema compatibility and currently has no effect in the RIM.

  • The record’s type is declared by an ns3 attribute (below), not by ns2:Hash0.

The ns3 namespace#

xmlns:ns3="https://docs.nvidia.com/attestation/specs/latest/opaque-data.html"

Note: A RIM must declare xmlns:ns3 with exactly this URI string. The URI is an identifier; it happens to resolve to this page for documentation, but a verifier matches on the string, not by fetching it.

Attributes#

Attribute

Value type

Required

Default

Meaning

ns3:minSvn

Integer

One ns3 type attribute is required per record

None

The minimum acceptable SVN. The verifier accepts the evidence when the reported value is greater than or equal to this floor. The runtime value travels in opaque data under value type 0x87 (see the format spec).

ns3:includeInResult

True or False

No

False

Whether the runtime value is copied into the attestation result under x-nvidia-attester-claims. When copied, the value comes from the evidence, so a relying party can build policy around the actual reported number.

Reserved value types#

minSvn is the only value type this document commits to. The following names are reserved for future ns3 type attributes and should not be used until they are specified:

  • string

  • rawValue

  • intRange

  • flags

Type identification#

A verifier identifies an opaque-data record’s type by the ns3 type attribute present on it. Today that attribute is ns3:minSvn. A hash attribute such as ns2:Hash0 is not a valid opaque-data type.

IMPORTANT: If a record with index greater than 0x1000 carries no recognized ns3 type attribute, the RIM is malformed and the verifier rejects it.

RIM parsing#

When parsing a RIM Payload:

  1. Treat records with index less than or equal to 0x1000 as standard hashed measurements.

  2. For each active record with index greater than 0x1000, record its identifier (index − 0x1000), name, ns3 type, and includeInResult flag. The identifier, not the record’s position in the list, is what pairs with the evidence entry’s dataType.

Example#

The ns3 declaration lives on Payload; the opaque-data record sits alongside the standard measurement records:

<SoftwareIdentity xmlns="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" xmlns:ns0="http://standards.iso.org/iso/19770/-2/2015/schema.xsd" xmlns:ns2="http://www.w3.org/2001/04/xmlenc#sha384" name="GB100" version="1.0" tagVersion="0">
  <ns0:Entity name="NVIDIA Corporation" role="softwareCreator tagCreator"/>
  <ns0:Meta/>

  <ns0:Payload xmlns:SHA384="http://www.w3.org/2001/04/xmlenc#sha384" xmlns:ns3="https://docs.nvidia.com/attestation/specs/latest/opaque-data.html">
    <ns0:Resource type="Measurement" index="0" active="True" alternatives="1" ns2:Hash0="000000000000000" name="Measurement_0" size="48"/>
    <!-- Additional hashed measurements (indices 1-63)... -->
    <ns0:Resource type="Measurement" index="4133" active="True" alternatives="1" name="FSP_UCODE_MIN_SVN" size="1" ns3:minSvn="5" ns3:includeInResult="True"/>
  </ns0:Payload>

  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">...</ds:Signature>
</SoftwareIdentity>

In this example the opaque-data record at index="4133" (ID 0x25, FSP_UCODE_MIN_SVN) declares a minimum SVN of 5, and includeInResult="True" asks the verifier to copy the reported SVN into the attestation result.