<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.29 (Ruby 3.4.5) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY SELF "RFCthis">
]>

<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-suit-report-15" category="info" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Secure Reporting of Update Status">Secure Reporting of Update Status</title>

    <author initials="B." surname="Moran" fullname="Brendan Moran">
      <organization>Arm Limited</organization>
      <address>
        <email>brendan.moran.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="H." surname="Birkholz" fullname="Henk Birkholz">
      <organization abbrev="Fraunhofer SIT">Fraunhofer SIT</organization>
      <address>
        <postal>
          <street>Rheinstrasse 75</street>
          <city>Darmstadt</city>
          <code>64295</code>
          <country>Germany</country>
        </postal>
        <email>henk.birkholz@ietf.contact</email>
      </address>
    </author>

    <date year="2025" month="September" day="08"/>

    <area>Security</area>
    <workgroup>SUIT</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<?line 59?>

<t>The Software Update for the Internet of Things (SUIT) manifest provides
a way for many different update and boot
workflows to be described by a common format.
This specification describes a lightweight feedback mechanism that
allows a developer in possession of a manifest to reconstruct the
decisions made and actions performed by a manifest processor.</t>



    </abstract>



  </front>

  <middle>


<?line 68?>

<section anchor="introduction"><name>Introduction</name>

<t>This specification describes a SUIT-specific
logging container that creates a lightweight feedback mechanism for
developers in the event that an update or boot fails in the manifest
processor. In this way, it provides the necessary link between the
Status Tracker Client and the Status Tracker Server as defined in
<xref target="RFC9019"/>.</t>

<t>A SUIT Manifest Processor can fail to install or boot an update for many
reasons. Frequently, the error codes generated by such systems fail to
provide developers with enough information to find root causes and
produce corrective actions, resulting in extra effort to reproduce
failures. Logging the results of each SUIT command can simplify this
process.</t>

<t>While it is possible to report the results of SUIT commands through
existing logging or attestation mechanisms, this comes with several
drawbacks:</t>

<t><list style="symbols">
  <t>data inflation, particularly when designed for text-based logging</t>
  <t>missing information elements</t>
  <t>missing support for multiple components</t>
</list></t>

<t>The CBOR objects defined in this document allow devices to:</t>

<t><list style="symbols">
  <t>report a trace of how an update was performed</t>
  <t>report expected vs. actual values for critical checks</t>
  <t>describe the installation of complex multi-component architectures</t>
  <t>describe the measured properties of a system</t>
  <t>report the exact reason for a parsing failure</t>
</list></t>

</section>
<section anchor="terminology"><name>Conventions and Terminology</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<?line -18?>

<t>Terms used in this specification include:</t>

<t><list style="symbols">
  <t>Boot: initialization of an executable image. Although this
specification refers to boot, any boot-specific operations described
are equally applicable to starting an executable in an OS context.</t>
</list></t>

</section>
<section anchor="suit-record"><name>The SUIT_Record</name>

<t>The SUIT_Record is a record of a decision taken by the Manifest Processor.
It contains the information that the Manifest Processor used to make the
decision. The decision can be inferred from this information, so it is not
included.
If the developer has a copy of the
manifest, then they need little information to reconstruct what the
manifest processor has done. They need any data that influences
the control flow of the manifest. The manifest only supports the
following control flow primitives:</t>

<t><list style="symbols">
  <t>Set Component</t>
  <t>Set/Override Parameters</t>
  <t>Try-Each</t>
  <t>Run Sequence</t>
  <t>Conditions</t>
</list></t>

<t>Of these, only conditions change the behavior of the processor from the
default, and then only when the condition fails.</t>

<t>To reconstruct the flow of a manifest, a developer needs
a list of metadata about failed conditions:</t>

<t><list style="symbols">
  <t>the current manifest</t>
  <t>the current section</t>
  <t>the offset into the current section</t>
  <t>the current component index</t>
  <t>the "reason" for failure</t>
</list></t>

<t>Most conditions compare a parameter to an actual value, so the "reason"
is typically the actual value.</t>

<t>Since it is possible that a non-condition command (directive) may fail in an
exceptional circumstance,
a failure code for a non condition command must be communicated to the developer. However,
a failed directive will terminate processing of the manifest. To accommodate
for a failed command and for explicit "completion," an additional "result"
element is included as well; however, this is included in the SUIT_Report (<xref target="suit-report"/>).
In the case of a command failure,
the failure reason is typically a numeric error code. However, these error
codes need to be standardised in order to be useful.</t>

<t>This approach effectively compacts the log of operations taken using the SUIT Manifest
as a dictionary. This enables a full reconstruction of the log using a matching
decompaction tool.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : SUIT_Parameters,
    $$SUIT_Record_Extensions
]
]]></sourcecode></figure>

<t>suit-record-manifest-id is used to identify which manifest contains the
command that caused the record to be generated. The manifest id is a
list of integers that form a walk of the manifest tree, starting at the
root. An empty list indicates that the command was contained in the
root manifest. If the list is not empty, the command was contained in
one of the root manifest's dependencies, or nested even further below
that.</t>

<t>For example, suppose that the root manifest has 3 dependencies
and each of those dependencies has 2 dependencies of its own:</t>

<t><list style="symbols">
  <t>Root  <list style="symbols">
      <t>Dependency A (index 0)      <list style="symbols">
          <t>Dependency AA (index 0,0)</t>
          <t>Dependency AB (index 0,1)</t>
        </list></t>
      <t>Dependency B (index 1)      <list style="symbols">
          <t>Dependency BA (index 1,0)</t>
          <t>Dependency BB (index 1,1)</t>
        </list></t>
      <t>Dependency C (index 2)      <list style="symbols">
          <t>Dependency CA (index 2,0)</t>
          <t>Dependency CB (index 2,1)</t>
        </list></t>
    </list></t>
</list></t>

<t>A manifest-id of [1,0] would indicate that the current command was
contained within Dependency BA. Similarly, a manifest-id of [2,1]
would indicate Dependency CB</t>

<t>suit-record-manifest-section indicates which section of the manifest was
active. This is used in addition to an offset so that the developer can
index into severable sections in a predictable way. The value of this
element is the value of the key that identified the section in the
manifest.</t>

<t>suit-record-section-offset is the number of bytes into the current
section at which the current command is located.</t>

<t>suit-record-component-index is the index of the component that was
specified at the time that the report was generated. This field is
necessary due to the availability of set-current-component values of
True and a list of components. Both of these values cause the manifest
processor to loop over commands using a series of component-ids, so the
developer needs to know which was selected when the command executed.</t>

<t>suit-record-properties contains any measured properties that led to the
command failure.
For example, this could be the actual value of a SUIT_Digest or
class identifier. This is encoded in a SUIT_Parameters block as defined
in <xref target="I-D.ietf-suit-manifest"/>.</t>

</section>
<section anchor="suit-report"><name>The SUIT_Report</name>

<t>The SUIT_Report is a SUIT-specific logging container. It contains
the SUIT_Records needed to reconstruct the decisions made by a
Manifest Processor as well as references to the Manifest being 
processed, the result of processing, and an optional capability
report.</t>

<t>Some metadata is common to all records, such as the root manifest:
the manifest that is the entry-point for the manifest processor. This
metadata is aggregated with a list of SUIT_Records as defined in 
<xref target="suit-record"/>. The SUIT_Report
may also contain a list of any System Properties that were measured
and reported, and a reason for a failure if one occurred.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => \
        \[ * SUIT_Record / system-property-claims \],
  suit-report-result          => true / {
    suit-report-result-code   => int,
    suit-report-result-record => SUIT_Record,
    suit-report-result-reason => SUIT_Report_Reasons,
  },
  ? suit-report-capability-report => SUIT_Capability_Report,
  $$SUIT_Report_Extensions
}
system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + SUIT_Parameters,
}
]]></sourcecode></figure>

<t>The suit-reference provides a reference URI and digest for a suit
manifest. The URI <bcp14>MUST</bcp14> be the canonical URI that is provided in the
manifest. The digest is the digest of the manifest.</t>

<t>NOTE: The digest is used
in preference to other identifiers in the manifest because it allows
a manifest to be uniquely identified (collision resistance) whereas
other identifiers, such as the sequence number, can collide,
particularly in scenarios with multiple trusted signers.</t>

<t>The following CDDL describes a SUIT_Reference.</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Reference = [
    suit-report-manifest-uri  : tstr,
    suit-report-manifest-digest : SUIT_Digest,
]
]]></sourcecode></figure>

<t>suit-report-manifest-digest provides a SUIT_Digest (as defined in
<xref target="I-D.ietf-suit-manifest"/>) that is the characteristic digest of the
Root manifest. This digest <bcp14>MUST</bcp14> be the same digest as is held in
the first element of SUIT_Authentication in the referenced
Manifest_Envelope.</t>

<t>suit-report-manifest-uri provides the reference URI that was provided in
the root manifest.</t>

<t>suit-report-nonce provides a container for freshness or replay
protection information. This field <bcp14>MAY</bcp14> be omitted where the suit-report
is authenticated within a container that provides freshness already.
For example, attestation evidence typically contains a proof of
freshness.</t>

<section anchor="suit-report-records"><name>SUIT_Report_Records</name>

<t>suit-report-records is a list of 0 or more SUIT_Records or
system-property-claims. Because SUIT_Records are only generated on failure,
in simple cases this can be an empty list. SUIT_Records and
suit-system-property-claims are merged into a single list because this
reduces the overhead for a constrained node that generates this report.
The use of a single log allows report generators to use simple
memory management. Because the system-property-claims
are encoded as maps and SUIT_Records are encoded as lists, a recipient need
only filter the CBOR Type-5 entries from suit-report-records to obtain all 
system-property-claims.</t>

<t>System Properties can be extracted from suit-report-records by filtering
suit-report-records for maps. System Properties are a list of measured
or asserted properties
of the system that creates the SUIT_Report. These properties are scoped by
component identifier. Because this list is expected to be constructed on
the fly by a constrained node, component identifiers may appear more than
once. A recipient may convert the result to a more conventional structure:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Record_System_Properties = {
  * component-id => {
    + SUIT_Parameters,
  }
}
]]></sourcecode></figure>

</section>
<section anchor="suit-report-result"><name>SUIT_Report Result</name>

<t>suit-report-result provides a mechanism to show that the SUIT procedure
completed successfully (value is true) or why it failed (value is a map
of an error code and a SUIT_Record).</t>

<t>suit-report-result-reason gives a high-level explanation of the failure.
These reasons are intended for interoperable implementations. The reasons
are divided into a small number of groups:</t>

<t><list style="symbols">
  <t>suit-report-reason-cbor-parse: a parsing error was encountered by the
CBOR parser.</t>
  <t>suit-report-reason-cose-unsupported: an unsupported COSE (<xref target="RFC9052"/>) structure or
header was encountered.</t>
  <t>suit-report-reason-alg-unsupported: an unsupported COSE algorithm was
encountered.</t>
  <t>suit-report-reason-unauthorised: Signature/MAC verification failed.</t>
  <t>suit-report-reason-command-unsupported: an unsupported command was
encountered.</t>
  <t>suit-report-reason-component-unsupported: The manifest declared a
component/prefix that does not exist.</t>
  <t>suit-report-reason-component-unauthorised: The manifest declared a
component that is not accessible by the signer.</t>
  <t>suit-report-reason-parameter-unsupported: The manifest used a
parameter that does not exist.</t>
  <t>suit-report-severing-unsupported: The manifest uses severable fields
but the Manifest Processor doesn't support them.</t>
  <t>suit-report-reason-condition-failed: A condition failed with soft-
failure off.</t>
  <t>suit-report-reason-operation-failed: A command failed (e.g.,
download/copy/swap/write)</t>
</list></t>

<t>The suit-report-result-code reports an internal error code that is
provided for debugging reasons. This code is not intended for
interoperability.</t>

<t>The suit-report-result-record indicates the exact point in the manifest
or manifest dependency tree where the error occurred.</t>

<t>suit-report-capability-report provides a mechanism to report the capabilities of the Manifest Processor. The SUIT_Capability_Report is described in <xref target="capabilities"/>. The capability report is optional to include in the SUIT_Report, according to an application-specific policy. While the SUIT_Capability_Report is not expected to be very large, applications should ensure that they only report capabilities when necessary in order to conserve bandwidth. A capability report is not necessary except when:</t>

<t><list style="numbers" type="1">
  <t>A client explicitly requests the capability report, or</t>
  <t>A manifest attempts to use a capability that the Manifest Processor does not implement.</t>
</list></t>

</section>
</section>
<section anchor="attestation"><name>Attestation</name>

<t>Where Remote Attestation (see <xref target="RFC9334"/>, the RATS Architecture) is in use, the RATS Verifier (Verifier hereafter) requires a set of
Attestation Evidence. Attestation Evidence contains Evidence Claims about the Attester. These Evidence Claims
contain measurements about the Attester. Many of these measurements are the same measurements that are generated in SUIT,
which means that a SUIT_Report contains most of the Claims and some of the Endorsements that a Verifier requires.</t>

<t>Using a SUIT_Manifest and a SUIT_Report improves a well-informed Verifier's ability to appraise the trustworthiness of a remote device. Remote attestation is done by using the SUIT_Manifest_Envelope along with the SUIT_Report in Evidence to reconstruct the state of the device at boot time.
Additionally, by including SUIT_Report data as telemetry (i.e., debug/failure information) next to measurements in Evidence, both types of Evidence data can be notarized via verifiable data structure, such as an append-only log (<xref section="3" sectionFormat="of" target="I-D.ietf-scitt-architecture"/>) using the same conceptual message.</t>

<t>For the SUIT_Report to be usable as Attestation Evidence, the environment that
generated the SUIT_Report also needs to be measured. Typically, this means that
the software that executes the commands in the Manifest (the Manifest
Processor) must be measured; similarly, the piece of software that assembles
the measurements, taken by the Manifest Processor, into the SUIT_Report (the
Report Generator) must also be measured. Any bootloaders or operating systems
that facilitate the running of the Manifest Processor or Report Generator also need
to be measured in order to demonstrate the integrity of the measuring environment.</t>

<t>Therefore, if a Remote Attestation format that conveys Attestation Evidence, such as an Entity Attestation Token (EAT, see <xref target="RFC9711"/>), contains a SUIT_Report, then it <bcp14>MUST</bcp14> also include an integrity measurement of the Manifest Processor, the Report Generator and any bootloader or OS environment that ran before or during the 
execution of both.</t>

<t>When a Concise Reference Integrity Manifest (CoRIM, see <xref target="I-D.birkholz-rats-corim"/>) is delivered in a SUIT_Manifest_Envelope, this codifies the delivery of appraisal information to the Verifier:</t>

<t><list style="symbols">
  <t>The Firmware Distributor:
  <list style="symbols">
      <t>sends the SUIT_Manifest_Envelope to the Verifier without payload or text, but with CoRIM</t>
      <t>sends the SUIT_Manifest_Envelope to the recipient without CoRIM, or text, but with payload</t>
    </list></t>
  <t>The Recipient:
  <list style="symbols">
      <t>Installs the firmware as described in the SUIT_Manifest and generates a SUIT_Report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
      <t>Boots the firmware as described in the SUIT_Manifest and creates a SUIT_Report, which is encapsulated in an EAT by the installer and sent to the Firmware Distributor.</t>
    </list></t>
  <t>The Firmware Distributor sends both reports to the Verifier (separately or together)</t>
  <t>The Verifier:
  <list style="symbols">
      <t>Reconstructs the state of the device using the manifest</t>
      <t>Compares this state to the CoRIM</t>
      <t>Returns an Attestation Report to the Firmware Distributor</t>
    </list></t>
</list></t>

<t>This approach simplifies the design of the bootloader since it is able to use an append-only log. It allows a Verifier to validate this report against a signed CoRIM that is provided by the firmware author, which simplifies the delivery chain of verification information to the Verifier.</t>

<t>For a Verifier to consume the SUIT_Report, it requires a copy of the
SUIT_Manifest. The Verifier then replays the SUIT_Manifest, using the
SUIT_Report to resolve whether each condition is met. It identifies each
measurement that is required by attestation policy and records this
measurement as an Attestation Claim. It evaluates whether the SUIT_Report
correctly matches the SUIT_Manifest as an element of evaluating
trustworthiness. For example there are several indicators that would show
that a SUIT_Report does not match a SUIT_Manifest. If any of the following
(not an exhaustive list) occur, then the Manifest Processor that created the
report is not trustworthy:</t>

<t><list style="symbols">
  <t>Hash of SUIT_Manifest at suit-report-manifest-uri does not match suit-report-manifest-digest</t>
  <t>A SUIT_Record is issued for a SUIT_Command_Sequence that does not exist 
in the SUIT_Manifest at suit-report-manifest-uri.</t>
  <t>A SUIT_Record is identified at an offset that is not a condition and does
not have a reporting policy that would indicate a SUIT_Record is needed.</t>
</list></t>

<t>Many architectures require multiple Verifiers, for example where one Verifier
handles hardware trust, and another handles software trust, especially the
evaluation of software authenticity and freshness. Some Verifiers may not
be capable of processing a SUIT_Report and, for separation of roles, it
may be preferable to divide that responsibility. In this case, the Verifier
of the SUIT_Report should perform an Evidence Transformation
<xref target="I-D.ietf-rats-evidence-trans"/> and
produce general purpose Measurement Results Claims that can be consumed by a
downstream Verifier, for example a Verifying Relying Party, that does not
understand SUIT_Reports.</t>

</section>
<section anchor="capabilities"><name>Capability Reporting</name>

<t>Because SUIT is extensible, a manifest author must know what capabilities a device has available. To enable this, a capability report is a set of lists that define which commands, parameters, algorithms, and component IDs are supported by a manifest processor.</t>

<t>The CDDL for a SUIT_Capability_Report follows:</t>

<figure><sourcecode type="~CDDL"><![CDATA[
SUIT_Capability_Report = {
  suit-component-capabilities  => [+ SUIT_Component_Capability ]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]
]]></sourcecode></figure>

<t>A SUIT_Component_Capability is similar to a SUIT_Component_ID, with one difference: it may optionally be terminated by a CBOR 'true' which acts as a wild-card match for any component with a prefix matching the SUIT_Component_Capability leading up to the 'true.' This feature is for use with filesystem storage, key value stores, or any other arbitrary-component-id storage systems.</t>

<t>When reporting capabilities, it is <bcp14>OPTIONAL</bcp14> to report capabilities that are declared mandatory by the SUIT Manifest <xref target="I-D.ietf-suit-manifest"/>. Capabilities defined by extensions <bcp14>MUST</bcp14> be reported.</t>

<t>Additional capability reporting can be added as follows: if a manifest element does not exist in this map, it can be added by specifying the CBOR path to the manifest element in an array and using this as the key. For example SUIT_Dependencies, as described in <xref target="I-D.ietf-suit-trust-domains"/> could have an extension added, which was key 3 in the SUIT_Dependencies map. This capability would be reported as: [3, 3, 1] =&gt; [3], where the key consists of the key for SUIT_Manifest (3), the key for SUIT_Common (3), and the key for SUIT_Dependencies (1). Then the value indicates that this manifest processor supports the extension (3).</t>

</section>
<section anchor="eat"><name>EAT Claim</name>

<t>The Entity Attestation Token (EAT, see <xref target="RFC9711"/>) is a secure container for conveying
Attestation Evidence, such as measurements, and Attestation Results.
The SUIT_Report is a form of measurement done by the SUIT Manifest Processor as it attempts to invoke a manifest or install a manifest. As a result, the SUIT_Report can be captured in an EAT measurements type.</t>

<t>The log-based structure of the SUIT_Report is not conducive to processing by a
typical Relying Party: it contains only a list of waypoints through the SUIT
Manifest--unless system parameter records are included--and requires additional 
information (the SUIT_Manifest) to reconstruct the values that must have been
present at each test. A Verifier in posession of the SUIT_Manifest can reconstruct 
the measurements that would produce the waypoints in the SUIT_Report. The Verifier 
<bcp14>SHOULD</bcp14> convert a SUIT_Report into a more consumable version of the EAT claim by, for 
example, constructing a measurement results claim that contains the digest of a 
component, the vendor ID &amp; class ID of a component, etc.</t>

</section>
<section anchor="container"><name>SUIT_Report Container</name>

<t>The SUIT_Report <bcp14>MUST</bcp14> be transported using one of the following methods:</t>

<t><list style="symbols">
  <t>As part of a larger document that provides authenticity guarantees, such as within a <spanx style="verb">measurements</spanx> claim in an Entity Attestation Token (EAT <xref target="RFC9711"/>).</t>
  <t>As the payload of a message transmitted over a communication security protocol, such as DTLS <xref target="RFC9147"/>.</t>
  <t>Encapsulated within a secure container, such as a COSE structure. In the case of COSE, the container <bcp14>MUST</bcp14> be either a <spanx style="verb">COSE_Encrypt0</spanx> or <spanx style="verb">COSE_Sign1</spanx> structure. The SUIT_Report <bcp14>MUST</bcp14> be the sole payload, as illustrated by the CDDL fragment below.</t>
</list></t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1 \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1_Tagged \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0 \
                         .and SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0_Tagged \
                         .and SUIT_COSE_Profiles

SUIT_Report_COSE_Sign1_Tagged = #6.18(SUIT_Report_COSE_Sign1)
SUIT_Report_COSE_Sign1 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    signature : bstr
]
SUIT_Report_COSE_MAC0_Tagged = #6.17(SUIT_Report_COSE_MAC0)
SUIT_Report_COSE_MAC0 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    tag : bstr
]
SUIT_Report_Unprotected = SUIT_Report / SUIT_Report_COSE_Encrypt0
SUIT_Report_COSE_Encrypt0 = COSE_Encrypt0
]]></sourcecode></figure>

<t>Note that SUIT_Report_COSE_Sign1 and SUIT_Report_COSE_MAC0 <bcp14>MUST</bcp14> be combined with a SUIT_COSE_Profiles from <xref target="I-D.ietf-suit-mti"/> using the CDDL .and directive. The SUIT_Report_COSE_Encrypt0 carries a ciphertext payload that <bcp14>MUST</bcp14> contain just the ciphertext obtained by encrypting the following CDDL:</t>

<figure><sourcecode type="CDDL"><![CDATA[
SUIT_Report_plaintext = bstr .cbor SUIT_Report
]]></sourcecode></figure>

<t>SUIT_COSE_Profiles, which use AES-CTR encryption, are not integrity protected and authenticated. For this purpose, SUIT_Report_Protected defines authenticated containers with an encrypted payload.</t>

</section>
<section anchor="iana"><name>IANA Considerations</name>

<t>IANA is requested to name the overall SUIT registry group "Software Update for the Internet of Things (SUIT)".</t>

<t>IANA is requested to allocate a CBOR tag for each of:</t>

<t><list style="symbols">
  <t>SUIT_Report_Protected</t>
  <t>SUIT_Reference</t>
  <t>SUIT_Capability_Report</t>
</list></t>

<t>IANA is requested to allocate a CoAP content-format <xref target="RFC7252"/> and a media-type for SUIT_Report.</t>

<t>IANA is also requested to add the following registries to the SUIT registry group:</t>

<t><list style="symbols">
  <t>SUIT_Report Elements</t>
  <t>SUIT_Record Elements</t>
  <t>SUIT_Report Reasons</t>
  <t>SUIT Capability Report Elements</t>
</list></t>

<t>For each of these registries, registration policy is:</t>

<t><list style="symbols">
  <t>-256 to 255: Standards Action</t>
  <t>-65536 to 257, 256 to 65535: Specification Required</t>
  <t>-4294967296 to -65537, 65536 to 4294967295: First Come, First Served</t>
</list></t>

<section anchor="expert-review-instructions"><name>Expert Review Instructions</name>
<t>The IANA registries established in this document allow values to be added based on expert review. This section gives some general guidelines for what the experts should be looking for, but they are being designated as experts for a reason, so they should be given substantial latitude.</t>

<t>Expert reviewers should take into consideration the following points:</t>

<t><list style="symbols">
  <t>Point squatting should be discouraged. Reviewers are encouraged to get sufficient information for registration requests to ensure that the usage is not going to duplicate one that is already registered, and that the point is likely to be used in deployments. The zones tagged as private use are intended for testing purposes and closed environments; code points in other ranges should not be assigned for testing.</t>
  <t>Specifications are required for the standards track range of point assignment. Specifications should exist for all other ranges, but early assignment before a specification is available is considered to be permissible. When specifications are not provided, the description provided needs to have sufficient information to identify what the point is being used for.</t>
  <t>Experts should take into account the expected usage of fields when approving point assignment. The fact that there is a range for standards track documents does not mean that a standards track document cannot have points assigned outside of that range. The length of the encoded value should be weighed against how many code points of that length are left, the size of device it will be used on, and the number of code points left that encode to that size.</t>
</list></t>

</section>
<section anchor="media-type-registration"><name>Media Type Registration</name>

<section anchor="applicationsuit-reportcose"><name>application/suit-report+cose</name>

<dl spacing="compact">
  <dt>Type name:</dt>
  <dd>
    <t>application</t>
  </dd>
  <dt>Subtype name:</dt>
  <dd>
    <t>suit-report+cose</t>
  </dd>
  <dt>Required parameters:</dt>
  <dd>
    <t>n/a</t>
  </dd>
  <dt>Encoding considerations:</dt>
  <dd>
    <t>binary (CBOR)</t>
  </dd>
  <dt>Security considerations:</dt>
  <dd>
    <t><xref target="seccons"/> of &SELF;</t>
  </dd>
  <dt>Interoperability considerations:</dt>
  <dd>
    <t>n/a</t>
  </dd>
  <dt>Published specification:</dt>
  <dd>
    <t>&SELF;</t>
  </dd>
  <dt>Applications that use this media type:</dt>
  <dd>
    <t>SUIT Manifest Processor, SUIT Manifest Distributor, SUIT Manifest Author, RATS Attesters, RATS Verifiers</t>
  </dd>
  <dt>Fragment identifier considerations:</dt>
  <dd>
    <t>The syntax and semantics of fragment identifiers are as specified for "application/cose".</t>
  </dd>
  <dt>Person &amp; email address to contact for further information:</dt>
  <dd>
    <t>SUIT WG mailing list (suit@ietf.org)</t>
  </dd>
  <dt>Intended usage:</dt>
  <dd>
    <t>COMMON</t>
  </dd>
  <dt>Restrictions on usage:</dt>
  <dd>
    <t>none</t>
  </dd>
  <dt>Author/Change controller:</dt>
  <dd>
    <t>IETF</t>
  </dd>
  <dt>Provisional registration:</dt>
  <dd>
    <t>no</t>
  </dd>
</dl>

</section>
</section>
<section anchor="coap-content-format-registration"><name>CoAP Content-Format Registration</name>

<t>IANA is requested to assign a CoAP Content-Format ID for the CoSWID media type in the "CoAP Content-Formats" registry, from the "IETF Review with Expert Review or IESG Approval with Expert Review" space (256..9999), within the "CoRE Parameters" registry group <xref target="RFC7252"/> <xref target="IANA.core-parameters"/>:</t>

<texttable>
      <ttcol align='left'>Content Type</ttcol>
      <ttcol align='left'>Content Coding</ttcol>
      <ttcol align='left'>ID</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>application/suit-report+cose</c>
      <c>&#160;</c>
      <c>TBA</c>
      <c>&SELF;</c>
</texttable>

</section>
<section anchor="cbor-tag-registration"><name>CBOR Tag Registration</name>

<t>IANA is requested to allocate a tag in the "CBOR Tags" registry <xref target="IANA.cbor-tags"/>, preferably in the Specification Required range:</t>

<texttable>
      <ttcol align='left'>Tag</ttcol>
      <ttcol align='left'>Data Item</ttcol>
      <ttcol align='left'>Semantics</ttcol>
      <c>TBA</c>
      <c>array</c>
      <c>SUIT_Report_Protected</c>
      <c>TBA</c>
      <c>array</c>
      <c>SUIT_Reference</c>
      <c>TBA</c>
      <c>map</c>
      <c>SUIT_Capability_Report</c>
</texttable>

</section>
<section anchor="suitreport-elements"><name>SUIT_Report Elements</name>

<t>IANA is requested to create a new registry for SUIT_Report Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>2</c>
      <c>Nonce</c>
      <c><xref target="suit-report"/></c>
      <c>3</c>
      <c>Records</c>
      <c><xref target="suit-report"/></c>
      <c>4</c>
      <c>Result</c>
      <c><xref target="suit-report"/></c>
      <c>5</c>
      <c>Result Code</c>
      <c><xref target="suit-report"/></c>
      <c>6</c>
      <c>Result Record</c>
      <c><xref target="suit-report"/></c>
      <c>7</c>
      <c>Result Reason</c>
      <c><xref target="suit-report"/></c>
      <c>8</c>
      <c>Capability Report</c>
      <c><xref target="suit-report"/></c>
      <c>99</c>
      <c>Reference</c>
      <c><xref target="suit-report"/></c>
</texttable>

</section>
<section anchor="suitrecord-elements"><name>SUIT_Record Elements</name>

<t>IANA is requested to create a new registry for SUIT_Record Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Manifest ID</c>
      <c><xref target="suit-record"/></c>
      <c>1</c>
      <c>Manifest Section</c>
      <c><xref target="suit-record"/></c>
      <c>2</c>
      <c>Section Offset</c>
      <c><xref target="suit-record"/></c>
      <c>3</c>
      <c>Component Index</c>
      <c><xref target="suit-record"/></c>
      <c>4</c>
      <c>Dependency Index</c>
      <c><xref target="suit-record"/></c>
      <c>5</c>
      <c>Record Properties</c>
      <c><xref target="suit-record"/></c>
</texttable>

</section>
<section anchor="suitreport-reasons"><name>SUIT_Report Reasons</name>

<t>IANA is requested to create a new registry for SUIT_Report Reasons.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>0</c>
      <c>Result OK</c>
      <c><xref target="suit-report-result"/></c>
      <c>1</c>
      <c>CBOR Parse Failure</c>
      <c><xref target="suit-report-result"/></c>
      <c>2</c>
      <c>Unsupported COSE Structure or Header</c>
      <c><xref target="suit-report-result"/></c>
      <c>3</c>
      <c>Unsupported COSE Algorithm</c>
      <c><xref target="suit-report-result"/></c>
      <c>4</c>
      <c>Signature / MAC verification failed</c>
      <c><xref target="suit-report-result"/></c>
      <c>5</c>
      <c>Unsupported SUIT Command</c>
      <c><xref target="suit-report-result"/></c>
      <c>6</c>
      <c>Unsupported SUIT Component</c>
      <c><xref target="suit-report-result"/></c>
      <c>7</c>
      <c>Unauthorized SUIT Component</c>
      <c><xref target="suit-report-result"/></c>
      <c>8</c>
      <c>Unsupported SUIT Parameter</c>
      <c><xref target="suit-report-result"/></c>
      <c>9</c>
      <c>Severing Unsupported</c>
      <c><xref target="suit-report-result"/></c>
      <c>10</c>
      <c>Condition Failed</c>
      <c><xref target="suit-report-result"/></c>
      <c>11</c>
      <c>Operation Failed</c>
      <c><xref target="suit-report-result"/></c>
</texttable>

</section>
<section anchor="suit-capability-report-elements"><name> SUIT Capability Report Elements</name>

<t>IANA is requested to create a new registry for SUIT Capability Report Elements.</t>

<texttable>
      <ttcol align='left'>Label</ttcol>
      <ttcol align='left'>Name</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>1</c>
      <c>Components</c>
      <c><xref target="capabilities"/></c>
      <c>2</c>
      <c>Commands</c>
      <c><xref target="capabilities"/></c>
      <c>3</c>
      <c>Parameters</c>
      <c><xref target="capabilities"/></c>
      <c>4</c>
      <c>Cryptographic Algorithms</c>
      <c><xref target="capabilities"/></c>
      <c>5</c>
      <c>Envelope Elements</c>
      <c><xref target="capabilities"/></c>
      <c>6</c>
      <c>Manifest Elements</c>
      <c><xref target="capabilities"/></c>
      <c>7</c>
      <c>Common Elements</c>
      <c><xref target="capabilities"/></c>
      <c>8</c>
      <c>Text Elements</c>
      <c><xref target="capabilities"/></c>
      <c>9</c>
      <c>Component Text Elements</c>
      <c><xref target="capabilities"/></c>
</texttable>

</section>
</section>
<section anchor="seccons"><name>Security Considerations</name>

<t>The SUIT_Report serves four primary security objectives:</t>

<t><list style="symbols">
  <t>Validated Identity</t>
  <t>Integrity</t>
  <t>Replay protection</t>
  <t>Confidentiality</t>
</list></t>

<t>The mechanisms for achieving these protections are outlined in <xref target="container"/>.</t>

<t>Ideally, a SUIT_Report <bcp14>SHOULD</bcp14> be conveyed as part of a remote attestation procedure,
such as embeding it in EAT tokens that represent RATS conceptual messages. This approach ensures that the SUIT_Report
is cryptographically bound to the environment (hardware, software, or both) in
which it was generated, thereby strengthening its authenticity.</t>

<t>A SUIT_Report may disclose sensitive information about the device on which it
were produced. In such cases, the SUIT_Report <bcp14>MUST</bcp14> be encrypted, as specified in
<xref target="container"/>.</t>

<t>Furthermore, failure reports, particularly those involving cryptographic operations,
can unintentionally reveal insights into system weaknesses or vulnerabilities. As such,
SUIT_Reports <bcp14>SHOULD</bcp14> be encrypted whenever possible, to minimize the risk of information
leakage.</t>

<t>In addition to these core security requirements, operational considerations must be taken
into account. When a SUIT_Report is included within another protocol message (e.g., inside
an encrypted EAT), care must be taken to avoid inadvertently leaking information and
to uphold the principle of least privilege. For example, in many EAT-based remote attestation flows,
the Verifier may not require the full SUIT_Report. Similarly, the Relying Party might not
need access to it either.</t>

<t>To support least-privilege access, the SUIT_Report should be independently encrypted, even
when the transport or enclosing token is also encrypted. This layered encryption ensures that
only authorized entities can access the contents of the SUIT_Report.</t>

<t>In other scenarios, the EAT Verifier might require full access to a SUIT_Report.
For example, the SUIT_Report must be accessible in its entirety for the EAT Verifier
to extract or convert the SUIT_Report content into specific EAT claims, such as <spanx style="verb">measres</spanx>
(Measurement Results). A typical case
involves translating a successful <spanx style="verb">suit-condition-image</spanx> check into a digest-based claim within
the EAT.</t>

<t>When applying cryptographic protection to the SUIT_Report, the same algorithm profile used for
the corresponding SUIT manifest <bcp14>SHOULD</bcp14> be reused. The available algorithm profiles are detailed
in <xref target="I-D.ietf-suit-mti"/>. If using the same profile is not feasible (e.g., due to constraints
imposed by <spanx style="verb">suit-sha256-hsslms-a256kw-a256ctr</spanx>), then a profile offering comparable security
strength <bcp14>SHOULD</bcp14> be selected—for instance, <spanx style="verb">suit-sha256-esp256-ecdh-a128ctr</spanx>.</t>

<t>In exceptional cases, if no suitable profile can be applied, the necessity of disabling a SUIT_Report functionality altogether might arise.</t>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors would like to thank Dave Thaler for his feedback.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="I-D.ietf-suit-manifest">
   <front>
      <title>A Concise Binary Object Representation (CBOR)-based Serialization Format for the Software Updates for Internet of Things (SUIT) Manifest</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         <organization>University of Applied Sciences Bonn-Rhein-Sieg</organization>
      </author>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Koen Zandberg" initials="K." surname="Zandberg">
         <organization>Inria</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <date day="28" month="May" year="2025"/>
      <abstract>
	 <t>   This specification describes the format of a manifest.  A manifest is
   a bundle of metadata about code/data obtained by a recipient (chiefly
   the firmware for an Internet of Things (IoT) device), where to find
   the code/data, the devices to which it applies, and cryptographic
   information protecting the manifest.  Software updates and Trusted
   Invocation both tend to use sequences of common operations, so the
   manifest encodes those sequences of operations, rather than declaring
   the metadata.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-manifest-34"/>
   
</reference>
<reference anchor="RFC9019">
  <front>
    <title>A Firmware Update Architecture for Internet of Things</title>
    <author fullname="B. Moran" initials="B." surname="Moran"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="D. Brown" initials="D." surname="Brown"/>
    <author fullname="M. Meriac" initials="M." surname="Meriac"/>
    <date month="April" year="2021"/>
    <abstract>
      <t>Vulnerabilities in Internet of Things (IoT) devices have raised the need for a reliable and secure firmware update mechanism suitable for devices with resource constraints. Incorporating such an update mechanism is a fundamental requirement for fixing vulnerabilities, but it also enables other important capabilities such as updating configuration settings and adding new functionality.</t>
      <t>In addition to the definition of terminology and an architecture, this document provides the motivation for the standardization of a manifest format as a transport-agnostic means for describing and protecting firmware updates.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9019"/>
  <seriesInfo name="DOI" value="10.17487/RFC9019"/>
</reference>
<reference anchor="RFC9052">
  <front>
    <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
    <author fullname="J. Schaad" initials="J." surname="Schaad"/>
    <date month="August" year="2022"/>
    <abstract>
      <t>Concise Binary Object Representation (CBOR) is a data format designed for small code size and small message size. There is a need to be able to define basic security services for this data format. This document defines the CBOR Object Signing and Encryption (COSE) protocol. This specification describes how to create and process signatures, message authentication codes, and encryption using CBOR for serialization. This specification additionally describes how to represent cryptographic keys using CBOR.</t>
      <t>This document, along with RFC 9053, obsoletes RFC 8152.</t>
    </abstract>
  </front>
  <seriesInfo name="STD" value="96"/>
  <seriesInfo name="RFC" value="9052"/>
  <seriesInfo name="DOI" value="10.17487/RFC9052"/>
</reference>
<reference anchor="RFC9711">
  <front>
    <title>The Entity Attestation Token (EAT)</title>
    <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
    <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
    <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
    <author fullname="C. Wallace" initials="C." surname="Wallace"/>
    <date month="April" year="2025"/>
    <abstract>
      <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
      <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9711"/>
  <seriesInfo name="DOI" value="10.17487/RFC9711"/>
</reference>

<reference anchor="I-D.ietf-suit-mti">
   <front>
      <title>Cryptographic Algorithm Recommendations for Software Updates of Internet of Things Devices</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Øyvind Rønningstad" initials="O." surname="Rønningstad">
         <organization>Nordic Semiconductor</organization>
      </author>
      <author fullname="Akira Tsukamoto" initials="A." surname="Tsukamoto">
         <organization>Openchip &amp; Software Technologies, S.L.</organization>
      </author>
      <date day="9" month="June" year="2025"/>
      <abstract>
	 <t>   This document specifies cryptographic algorithm profiles to be used
   with the Software Updates for Internet of Things (suit) manifest.
   These profiles define mandatory-to-implement algorithms to ensure
   interoperability.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-mti-17"/>
   
</reference>
<reference anchor="IANA.cbor-tags" target="https://www.iana.org/assignments/cbor-tags">
  <front>
    <title>Concise Binary Object Representation (CBOR) Tags</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<reference anchor="IANA.core-parameters" target="https://www.iana.org/assignments/core-parameters">
  <front>
    <title>Constrained RESTful Environments (CoRE) Parameters</title>
    <author>
      <organization>IANA</organization>
    </author>
  </front>
</reference>
<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.birkholz-rats-corim">
   <front>
      <title>Concise Reference Integrity Manifest</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Thomas Fossati" initials="T." surname="Fossati">
         <organization>arm</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>arm</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Intel</organization>
      </author>
      <author fullname="Wei Pan" initials="W." surname="Pan">
         <organization>Huawei Technologies</organization>
      </author>
      <date day="11" month="July" year="2022"/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester and therefore to decide
   whether to engage in secure interactions with it.  Evidence about
   trustworthiness can be rather complex and it is deemed unrealistic
   that every Relying Party is capable of the appraisal of Evidence.
   Therefore that burden is typically offloaded to a Verifier.  In order
   to conduct Evidence appraisal, a Verifier requires not only fresh
   Evidence from an Attester, but also trusted Endorsements and
   Reference Values from Endorsers and Reference Value Providers, such
   as manufacturers, distributors, or device owners.  This document
   specifies Concise Reference Integrity Manifests (CoRIM) that
   represent Endorsements and Reference Values in CBOR format.
   Composite devices or systems are represented by a collection of
   Concise Module Identifiers (CoMID) and Concise Software Identifiers
   (CoSWID) bundled in a CoRIM document.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-birkholz-rats-corim-03"/>
   
</reference>

<reference anchor="I-D.ietf-suit-trust-domains">
   <front>
      <title>SUIT Manifest Extensions for Multiple Trust Domains</title>
      <author fullname="Brendan Moran" initials="B." surname="Moran">
         <organization>Arm Limited</organization>
      </author>
      <author fullname="Ken Takayama" initials="K." surname="Takayama">
         <organization>SECOM CO., LTD.</organization>
      </author>
      <date day="3" month="March" year="2025"/>
      <abstract>
	 <t>   This specification describes extensions to the SUIT Manifest format
   for use in deployments with multiple trust domains.  A device has
   more than one trust domain when it enables delegation of different
   rights to mutually distrusting entities for use for different
   purposes or Components in the context of firmware or software update.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-suit-trust-domains-10"/>
   
</reference>

<reference anchor="I-D.ietf-scitt-architecture">
   <front>
      <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
      <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
         <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname="Antoine Delignat-Lavaud" initials="A." surname="Delignat-Lavaud">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Cedric Fournet" initials="C." surname="Fournet">
         <organization>Microsoft Research</organization>
      </author>
      <author fullname="Yogesh Deshpande" initials="Y." surname="Deshpande">
         <organization>ARM</organization>
      </author>
      <author fullname="Steve Lasker" initials="S." surname="Lasker">
         <organization>DataTrails</organization>
      </author>
      <date day="8" month="May" year="2025"/>
      <abstract>
	 <t>   Traceability in supply chains is a growing security concern.  While
   verifiable data structures have addressed specific issues, such as
   equivocation over digital certificates, they lack a universal
   architecture for all supply chains.  This document proposes a
   scalable architecture for single-issuer signed statement transparency
   applicable to any supply chain.  It ensures flexibility,
   interoperability between different transparency services, and
   compliance with various auditing procedures and regulatory
   requirements.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-scitt-architecture-12"/>
   
</reference>

<reference anchor="I-D.ietf-rats-evidence-trans">
   <front>
      <title>Evidence Transformations</title>
      <author fullname="Fabrizio Damato" initials="F." surname="Damato">
         <organization>AMD</organization>
      </author>
      <author fullname="Andrew Draper" initials="A." surname="Draper">
         <organization>Altera</organization>
      </author>
      <author fullname="Ned Smith" initials="N." surname="Smith">
         <organization>Intel Corporation</organization>
      </author>
      <date day="8" month="April" year="2025"/>
      <abstract>
	 <t>   Remote Attestation Procedures (RATS) enable Relying Parties to assess
   the trustworthiness of a remote Attester to decide if continued
   interaction is warrented.  Evidence structures can vary making
   appraisals challenging for Verifiers.  Verifiers need to understand
   Evidence encoding formats and some of the Evidence semantics to
   appraise it.  Consequently, Evidence may require format
   transformation to an internal representation that preserves original
   semantics.  This document specifies Evidence transformation methods
   for DiceTcbInfo, concise evidence, and SPDM measurements block
   structures.  These Evidence structures are converted to the CoRIM
   internal representation and follow CoRIM defined appraisal
   procedures.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-rats-evidence-trans-01"/>
   
</reference>
<reference anchor="RFC9334">
  <front>
    <title>Remote ATtestation procedureS (RATS) Architecture</title>
    <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
    <author fullname="D. Thaler" initials="D." surname="Thaler"/>
    <author fullname="M. Richardson" initials="M." surname="Richardson"/>
    <author fullname="N. Smith" initials="N." surname="Smith"/>
    <author fullname="W. Pan" initials="W." surname="Pan"/>
    <date month="January" year="2023"/>
    <abstract>
      <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9334"/>
  <seriesInfo name="DOI" value="10.17487/RFC9334"/>
</reference>
<reference anchor="RFC9147">
  <front>
    <title>The Datagram Transport Layer Security (DTLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <author fullname="N. Modadugu" initials="N." surname="Modadugu"/>
    <date month="April" year="2022"/>
    <abstract>
      <t>This document specifies version 1.3 of the Datagram Transport Layer Security (DTLS) protocol. DTLS 1.3 allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>The DTLS 1.3 protocol is based on the Transport Layer Security (TLS) 1.3 protocol and provides equivalent security guarantees with the exception of order protection / non-replayability. Datagram semantics of the underlying transport are preserved by the DTLS protocol.</t>
      <t>This document obsoletes RFC 6347.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9147"/>
  <seriesInfo name="DOI" value="10.17487/RFC9147"/>
</reference>
<reference anchor="RFC7252">
  <front>
    <title>The Constrained Application Protocol (CoAP)</title>
    <author fullname="Z. Shelby" initials="Z." surname="Shelby"/>
    <author fullname="K. Hartke" initials="K." surname="Hartke"/>
    <author fullname="C. Bormann" initials="C." surname="Bormann"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks. The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s. The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t>
      <t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types. CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7252"/>
  <seriesInfo name="DOI" value="10.17487/RFC7252"/>
</reference>



    </references>

</references>


<?line 759?>

<section anchor="full-cddl"><name>Full CDDL</name>
<t>In order to create a valid SUIT_Report document the structure of the corresponding CBOR message <bcp14>MUST</bcp14> adhere to the following CDDL data definition.</t>

<t>To be valid, the following CDDL <bcp14>MUST</bcp14> have the COSE CDDL appended to it. The COSE CDDL can be obtained by following the directions in <xref section="1.4" sectionFormat="comma" target="RFC9052"/>. It must also have the CDDL from <xref target="I-D.ietf-suit-mti"/> appended to it.</t>

<figure><sourcecode type="CDDL"><![CDATA[
=============== NOTE: '\' line wrapping per RFC 8792 ================

SUIT_Report_Tool_Tweak /= SUIT_start
SUIT_Report_Tool_Tweak /= SUIT_Report_Protected
SUIT_Report_Protected /= SUIT_COSE_tool_tweak

SUIT_Report_Protected /= SUIT_Report_COSE_Sign1 .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_Sign1_Tagged .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0 .and \
                                                   SUIT_COSE_Profiles
SUIT_Report_Protected /= SUIT_Report_COSE_MAC0_Tagged .and \
                                                   SUIT_COSE_Profiles

SUIT_Report_COSE_Sign1_Tagged = #6.18(SUIT_Report_COSE_Sign1)
SUIT_Report_COSE_Sign1 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    signature : bstr
]
SUIT_Report_COSE_MAC0_Tagged = #6.17(SUIT_Report_COSE_MAC0)
SUIT_Report_COSE_MAC0 = [
    protected : bstr,
    unprotected : {* int => any},
    payload : bstr .cbor SUIT_Report_Unprotected,
    tag : bstr
]
SUIT_Report_Unprotected = SUIT_Report / SUIT_Report_COSE_Encrypt0
SUIT_Report_COSE_Encrypt0 = COSE_Encrypt0

SUIT_Report = {
  suit-reference              => SUIT_Reference,
  ? suit-report-nonce         => bstr,
  suit-report-records         => [
    * SUIT_Record / system-property-claims ],
  suit-report-result          => true / {
    suit-report-result-code   => int,
    suit-report-result-record => SUIT_Record,
    suit-report-result-reason => SUIT_Report_Reasons,
  },
  ? suit-report-capability-report => SUIT_Capability_Report,
  $$SUIT_Report_Extensions
}

SUIT_Reference = [
    suit-report-manifest-uri : tstr,
    suit-report-manifest-digest : SUIT_Digest
]

SUIT_Record = [
    suit-record-manifest-id        : [* uint ],
    suit-record-manifest-section   : int,
    suit-record-section-offset     : uint,
    suit-record-component-index    : uint,
    suit-record-properties         : {*$$SUIT_Parameters},
    $$SUIT_Record_Extensions
]

system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + $$SUIT_Parameters,
}

SUIT_Capability_Report = {
  suit-component-capabilities  => [+ SUIT_Component_Capability]
  suit-command-capabilities          => [+ int],
  suit-parameters-capabilities       => [+ int],
  suit-crypt-algo-capabilities       => [+ int],
  ? suit-envelope-capabilities       => [+ int],
  ? suit-manifest-capabilities       => [+ int],
  ? suit-common-capabilities         => [+ int],
  ? suit-text-capabilities           => [+ int],
  ? suit-text-component-capabilities => [+ int],
  ? suit-dependency-capabilities     => [+ int],
  * [+int]                           => [+ int],
  $$SUIT_Capability_Report_Extensions
}

SUIT_Component_Capability = [*bstr,?true]

suit-report-nonce = 2
suit-report-records = 3
suit-report-result = 4
suit-report-result-code = 5
suit-report-result-record = 6
suit-report-result-reason = 7
suit-report-capability-report = 8
suit-reference = 99

system-component-id = 0

suit-record-manifest-id = 0
suit-record-manifest-section = 1
suit-record-section-offset = 2
suit-record-component-index = 3
suit-record-dependency-index = 4
suit-record-properties = 5

SUIT_Report_Reasons /= suit-report-reason-ok
SUIT_Report_Reasons /= suit-report-reason-cbor-parse
SUIT_Report_Reasons /= suit-report-reason-cose-unsupported
SUIT_Report_Reasons /= suit-report-reason-alg-unsupported
SUIT_Report_Reasons /= suit-report-reason-unauthorised
SUIT_Report_Reasons /= suit-report-reason-command-unsupported
SUIT_Report_Reasons /= suit-report-reason-component-unsupported
SUIT_Report_Reasons /= suit-report-reason-component-unauthorised
SUIT_Report_Reasons /= suit-report-reason-parameter-unsupported
SUIT_Report_Reasons /= suit-report-severing-unsupported
SUIT_Report_Reasons /= suit-report-reason-condition-failed
SUIT_Report_Reasons /= suit-report-reason-operation-failed

suit-report-reason-ok = 0
suit-report-reason-cbor-parse = 1
suit-report-reason-cose-unsupported = 2
suit-report-reason-alg-unsupported = 3
suit-report-reason-unauthorised = 4
suit-report-reason-command-unsupported = 5
suit-report-reason-component-unsupported = 6
suit-report-reason-component-unauthorised = 7
suit-report-reason-parameter-unsupported = 8
suit-report-severing-unsupported = 9
suit-report-reason-condition-failed = 10
suit-report-reason-operation-failed = 11

suit-component-capabilities        = 1
suit-command-capabilities          = 2
suit-parameters-capabilities       = 3
suit-crypt-algo-capabilities       = 4
suit-envelope-capabilities         = 5
suit-manifest-capabilities         = 6
suit-common-capabilities           = 7
suit-text-capabilities             = 8
suit-text-component-capabilities   = 9
suit-dependency-capabilities       = 10
  
]]></sourcecode></figure>

</section>


  </back>

<!-- ##markdown-source:
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
lOIcwv8D2tp20TaYAAA=

-->

</rfc>

