<?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.6.31 (Ruby 3.2.2) -->


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

]>

<?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-08" 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>Fraunhofer SIT</organization>
      <address>
        <email>henk.birkholz@sit.fraunhofer.de</email>
      </address>
    </author>

    <date year="2024" month="March" day="04"/>

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

    <abstract>


<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. However, this does not
provide a feedback mechanism for developers in the event that an update
or boot fails.</t>

<t>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>


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

<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>

<t>This document provides a definition of a SUIT-specific logging container
that may be used in a variety of scenarios.</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>

<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="the-suit-record"><name>The SUIT Record</name>

<t>If the developer can be assumed to have a copy of the
manifest, then they need little information to reconstruct what the
manifest processor has done. They simply 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>Then, to reconstruct the flow of a manifest, all a developer needs is
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 simply the actual value.</t>

<t>Since it is possible that a non-condition command (directive) may fail in an
exceptional circumstance, this must be included as well. 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 added as well. 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>Reconstructing what a device has done in this way is compact,
however it requires some reconstruction effort. This is an issue that
can be solved by tooling.</t>

<figure><artwork><![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
]
]]></artwork></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      <list style="symbols">
          <t>Dependency A0</t>
          <t>Dependency A1</t>
        </list></t>
      <t>Dependency B      <list style="symbols">
          <t>Dependency B0</t>
          <t>Dependency B1</t>
        </list></t>
      <t>Dependency C      <list style="symbols">
          <t>Dependency C0</t>
          <t>Dependency C1</t>
        </list></t>
    </list></t>
</list></t>

<t>A manifest-id of [1,0] would indicate that the current command was
contained within Dependency B0. Similarly, a manifest-id of [2,1]
would indicate Dependency C1</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="the-suitreport"><name>The SUIT_Report</name>

<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. 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 occured.</t>

<figure><artwork><![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,
}
]]></artwork></figure>

<t>The suit-reference provides a reference URI and digest for a suit
manifest. The uri <bcp14>SHOULD</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.</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>

<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 append-only 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>

<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 unusupported COSE 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 occured.</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">
  <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 anchor="attestation"><name>Attestation</name>

<t>This document describes how a well-informed verifier can infer the trustworthiness of a remote device. Remote attestation is done by using the SUIT_Manifest_Envelope along with the SUIT_Report to reconstruct the state of the device at boot time. By embedding data used for remote attestation in the SUIT_Report, a remote device can use an append-only log to collect both measurements and debug/failure information into the same document. This document can then be conveyed to a verifier as a part of the attestation evidence. A remote attestation format to convey attestation evidence, such as an Entity Attestation Token (EAT, see <xref target="I-D.ietf-rats-eat"/>), that contains a SUIT_Report <bcp14>MUST</bcp14> also include an integrity measurement of the Manifest Processor &amp; Report Generator.</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 verification 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>This information is not intended as Attestation Evidence and while an Attestation Report <bcp14>MAY</bcp14> provide this information for conveying error codes and/or failure reports, it <bcp14>SHOULD</bcp14> be translated into general-purpose claims for use by the Relying Party.</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-component-capabilities => [+ int],
  ? suit-text-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 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.
The Verifier <bcp14>MAY</bcp14> convert a SUIT_Report into a more consumable version of the EAT claim by, for example, constructing a measres 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 carried in a container or transport that ensures authenticity. The SUIT_Report <bcp14>MUST</bcp14> be transported using one of the following options:</t>

<t><list style="symbols">
  <t>As an element of an existing document that ensures authenticity, such as in a measurements claim in an EAT.</t>
  <t>As the payload of a message delivered over secure transport, such as a CoAP or LwM2M message.</t>
  <t>Contained within a secure container that conforms to the current recommendations of <xref target="I-D.ietf-suit-mti"/>.</t>
</list></t>

<t>In this case, the SUIT_Report is carried as sole payload of a COSE_Encrypt0 or COSE_Sign1 as shown in the CDDL snippet below.</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_Profile 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 define only AES-CTR encryption due to its suitability for firmware distribution. Because AES-CTR is not authenticated, SUIT_Report_Protected defines authenticated containers with an encrypted payload.</t>

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

<t>IANA is requested to allocate a CBOR tag and a coap content-type each for the SUIT_Report, SUIT_Reference, and SUIT_Capability_Report CBOR data structures.</t>

<t>IANA is also requested to add a table to the SUIT page for SUIT_Capability_Report_Extensions.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>There are two aspects to the security considerations for SUIT reports:
authenticity and confidentiality. SUIT reports must have guaranteed
authenticity for them to be useful. Several options are available to
ensure the authenticity of a SUIT report. The report <bcp14>MAY</bcp14> be bundled
as the payload of a cryptographic container as described in <xref target="container"/>.
communicated over a secure transport. It may also be communicated as
part of an existing authenticated protocol, such as within an EAT 
token. Ideally, the SUIT_Report <bcp14>SHOULD</bcp14> be communicated as part of an
attestation flow, such as within an EAT token, since this proves the
authenticity of the environment (hardware, software, or both) in which
the SUIT_Report was generated.</t>

<t>The SUIT_Report <bcp14>MAY</bcp14> require confidentiality as well. A SUIT_Report
could potentially reveal confidential information about the kinds of
device that a particular user has. It could also reveal confidential
information about intellectual property contained in a device. Where
these concerns are relevant, the SUIT_Report <bcp14>MUST</bcp14> be encrypted, for 
example using a COSE_Encrypt as described in <xref target="container"/>, or by using
secure transport. When reporting failures, particularly in the
cryptographic primitives, there is a risk that over-reporting can
provide an attacker with better visibility. Therefore, SUIT_Reports
<bcp14>SHOULD</bcp14> be encrypted wherever possible.</t>

<t>There are also operational considerations that intersect with these
security considerations. In situations where the SUIT report is
encrypted as an element of a message within another protocol, care must
be taken to ensure that this does not leak information and that the
principle of least privilege is respected. For example, in an EAT-based
attestation workflow, the Verifier often will not need the full SUIT
Report. Similarly, the Relying Party may also not need the SUIT_Report.
In this case, the SUIT_Report <bcp14>MUST</bcp14> be encrypted even if the EAT token
that contains it is also encrypted.</t>

<t>In contrast, however, there are scenarios where the EAT Verifier
consumes the SUIT report and translates it into one or more other
EAT claims. For example, a SUIT report that shows a particular digest
was matched using an suit-condition-image can be translated into a
EAT measres (Measurement Results) claim. In this scenario, the Verifier
must have access to the full SUIT_Report.</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='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'>
         </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='5' month='February' year='2024'/>
      <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 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-25'/>
   
</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'>




<reference anchor='I-D.ietf-rats-eat'>
   <front>
      <title>The Entity Attestation Token (EAT)</title>
      <author fullname='Laurence Lundblade' initials='L.' surname='Lundblade'>
         <organization>Security Theory LLC</organization>
      </author>
      <author fullname='Giridhar Mandyam' initials='G.' surname='Mandyam'>
         </author>
      <author fullname='Jeremy O&#x27;Donoghue' initials='J.' surname='O&#x27;Donoghue'>
         <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Carl Wallace' initials='C.' surname='Wallace'>
         <organization>Red Hound Software, Inc.</organization>
      </author>
      <date day='15' month='January' year='2024'/>
      <abstract>
	 <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a smartphone, 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.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-rats-eat-25'/>
   
</reference>


<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='4' month='March' year='2024'/>
      <abstract>
	 <t>   This specification describes extensions to the SUIT Manifest format
   (as defined in [I-D.ietf-suit-manifest]) 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-06'/>
   
</reference>


<reference anchor='I-D.ietf-suit-mti'>
   <front>
      <title>Mandatory-to-Implement Algorithms for Authors and Recipients of Software Update for the Internet of Things manifests</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>ALAXALA Networks Corp.</organization>
      </author>
      <date day='12' month='February' year='2024'/>
      <abstract>
	 <t>   This document specifies algorithm profiles for SUIT manifest parsers
   and authors to ensure better interoperability.  These profiles apply
   specifically to a constrained node software update use case.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-suit-mti-05'/>
   
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA71c63LcxpX+j6folVOxqMyMRNm7SVirJBRJr1klWlqKSiol
q1Q9QM8MQgwwRgMcTVT0s+yz7JPtufUNmKGc3a24EpsD9PX0uXzn0phOp1lX
dpU5UW9N3rdGXZtN03ZlvVTNQr3bFLoz6m2nu95mej5vzd0vaVk0ea3XMGjR
6kU3LU23mNq+7KYt9Zk++12WQ/Nl0+5OVFkvmiwrN+2J6treds+fPfv9s+eZ
bo2Wucpul22b9nbZNv0Gnr27vMluzQ4eFSfqsu5MW5tueo5zZZntdF181FVT
w/w7Y7NNeZIp1S5yU9huV8lTpbomj/4s68LUnXtgYZWtWVj/e7dOfnZtmfvG
ebNeQ1//tqyrsg7TmE/dtCptN4VB5k0FzabNk9/AG6DSWm82QEFuq/tu1bSw
2Cm8pH/KGlq/nKmrptW1e8iUfdmautB1+qppl7ou/667sqlP1Gm7Vq/KddmZ
wjUwa11WJ2rOnWdr7DzD4/nTEt/MYCswvUrm/36mXpbt7aqp/p4u4XtT345e
pUv4rtV9vWoWplVv4dDSVayg/2wu/f9ky2628M1nhQGeAM5o1zDUncEjvJye
01qnre7s1Gg4gIvTG3nhxuGXedOW6xN11lxfXsU9iQmJy6ZFA6uA/Y1erztg
mKzeOzM3gA0ujO2g1XQ6VXoO7KBzYL2bFUhAs+i2wLtOImAHqoPnjk1RWG5W
cOZWPUZGPlJuOLVpm7uyQEZQW72jnvBup4pyARQBDlM9jwkMruZN05FQLKpm
a4GD1dwo6Jy35dzA653SxJhNrZiIM/V9szV3pp3AekoL3GesqmEQmRbaL4wp
5jq/VWuTr2BVdk2LKKBX1WxMa4EhaDPwAFbTrXQHa5FVZdASF6UWcLh2htSA
WezG5OWizIkf/PosTFaVy1W3NfjvfRPj4JmuaHM6LAFXsGmsNdbigEBMHQgI
RGhN3tRwHn2O6zNZAdNjSwutCqYcHBU9gNGQMo5Y8THkMHzTzvh812VRVMCN
X+EZtk3RU/8sOyVFtKefyoEoSAVcELBYB9tQjjqeXv58M1B0FhY0A2kxP/VA
2Wo3YTK3LY7WANnU0tQGWJtXa/t8BTrJdmZt3Uz+HKPj2pbdSpm66Zcr5YUJ
yAbrWoDCUy2uKNe9xROpCxwCtmdgyhYIidzvqDUBytq+InUPRwA6rdXKLGBI
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
1sBe9k1YAAA=

-->

</rfc>

