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 |
|---|---|---|
|
|
Record kind. |
|
|
Decimal slot index. |
|
|
Whether the record participates in comparison. |
|
|
Number of acceptable values ( |
|
|
The golden SHA-384 digest for alternative 0. |
|
|
Human-readable label. |
|
|
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:
namecarries a meaningful label for the value (for exampleFSP_UCODE_MIN_SVN) so it can be surfaced to a relying party.sizeis retained for schema compatibility and currently has no effect in the RIM.The record’s type is declared by an
ns3attribute (below), not byns2:Hash0.
The ns3 namespace#
xmlns:ns3="https://docs.nvidia.com/attestation/specs/latest/opaque-data.html"
Note: A RIM must declare
xmlns:ns3with 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 |
|---|---|---|---|---|
|
Integer |
One |
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 |
|
|
No |
|
Whether the runtime value is copied into the attestation result under |
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:
stringrawValueintRangeflags
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
indexgreater than0x1000carries no recognizedns3type attribute, the RIM is malformed and the verifier rejects it.
RIM parsing#
When parsing a RIM Payload:
Treat records with
indexless than or equal to0x1000as standard hashed measurements.For each active record with
indexgreater than0x1000, record its identifier (index − 0x1000),name,ns3type, andincludeInResultflag. The identifier, not the record’s position in the list, is what pairs with the evidence entry’sdataType.
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.