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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc rfcedstyle="yes"?>
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="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-02" category="info">

  <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@arm.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="2022" month="July" day="11"/>

    <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</bcp14>
NOT", "<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/Dependency Index</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-dependency-index => uint
    ),
    suit-record-properties     => SUIT_Parameters,
}
]]></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-dependency-index is similar to suit-record-component-index
but is used to identify the dependency that was active.</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-suit-report"><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-report-manifest-digest => SUIT_Digest,
  ? suit-report-manifest-uri  => tstr,
  ? suit-report-nonce         => bstr,
  suit-report-records         => [ * SUIT_Record ],
  ? suit-system-properties      => [ + system-property-claims ],
  suit-report-result          => true / {
    suit-report-result-code   => int, ; could condense to enum later
    suit-report-result-record => SUIT_Record,
  }
}
system-property-claims = {
  system-component-id => SUIT_Component_Identifier,
  + SUIT_Parameters,
}

]]></artwork></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-system-properties provides 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-records is a list of 0 or more SUIT Records. Because SUIT
Records are only generated on failure, in simple cases this can be an
empty list.</t>

<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>The suit-report-result-code indicates the reason for the failure. Values
are expected to be CBOR parsing failures, Schema validation failures,
COSE validation failures or SUIT processing failures.</t>

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

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

<t>This document ~~can allow~~ 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 Parser &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="iana"><name>IANA Considerations</name>

<t>IANA is requested to allocate a CBOR tag for the SUIT Report.</t>

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

<t>The SUIT Report should either be carried over a secure transport, or
signed, or both. Ideally, attestation should be used to prove that the
report was generated by legitimate hardware.</t>

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

</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'>
	 <organization>Arm Limited</organization>
      </author>
      <author fullname='Hannes Tschofenig'>
	 <organization>Arm Limited</organization>
      </author>
      <author fullname='Henk Birkholz'>
	 <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Koen Zandberg'>
	 <organization>Inria</organization>
      </author>
      <date day='11' month='July' year='2022'/>
      <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 that 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-18'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-suit-manifest-18.txt' type='TXT'/>
</reference>



<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<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'>
	 <organization>Security Theory LLC</organization>
      </author>
      <author fullname='Giridhar Mandyam'>
	 <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <author fullname='Jeremy O&#39;Donoghue'>
	 <organization>Qualcomm Technologies Inc.</organization>
      </author>
      <date day='10' month='July' year='2022'/>
      <abstract>
	 <t>   An Entity Attestation Token (EAT) provides an attested claims set
   that describes state and characteristics of an entity, a device like
   a phone, IoT device, network equipment or such.  This claims set is
   used by a relying party, server or service to determine how much it
   wishes to trust the entity.

   An EAT is either a CBOR Web Token (CWT) or JSON Web Token (JWT) with
   attestation-oriented claims.  To a large degree, all this document
   does is extend CWT and JWT.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-rats-eat-14'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-rats-eat-14.txt' type='TXT'/>
</reference>


<reference anchor='I-D.birkholz-rats-corim'>
   <front>
      <title>Concise Reference Integrity Manifest</title>
      <author fullname='Henk Birkholz'>
	 <organization>Fraunhofer SIT</organization>
      </author>
      <author fullname='Thomas Fossati'>
	 <organization>arm</organization>
      </author>
      <author fullname='Yogesh Deshpande'>
	 <organization>arm</organization>
      </author>
      <author fullname='Ned Smith'>
	 <organization>Intel</organization>
      </author>
      <author fullname='Wei 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'/>
   <format target='https://www.ietf.org/archive/id/draft-birkholz-rats-corim-03.txt' type='TXT'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
H4sIABSZzGIAA71a647cNpb+r6fgtoFZ26kqXzbA7vTOrW9ZN2Cns93tLILE
MFgSq0pjlVQhJbdrDPtZ5lnmyfY7F1FUXQY7+2MCJOmiyMPDc/3OIafTadaW
beVOzZ3LO+/Mrds0vi3rpWkW5u2msK0zd61tu5DZ+dy7j/+XmUWT13YNooW3
i3ZaunYxDV3ZTj2vmT5/meWYvmz89tSU9aLJsnLjT03ru9C+fP78t5hgvbO6
V9lus4fGf1j6pttg7O31ffbBbTFUnJrrunW+du30kvbKstDaunhvq6bG/lsX
sk15mhnjF7krQrutdNSYtsmTP8u6cHXbDwRw6d0ixN/b9ehn68s8Ts6b9Rpr
49eyrsp62MZ9aqdVGdopiMybCtOmzdNv8AVSWtvNBhKUubZrV40Hs1N85H/K
GrPPZ+ZN423dD4pkz72rC1uPPzV+aevyL7Ytm/rUnPm1eV2uy9YV/QS3tmUV
F8948Z+sX89wBuxrRhu/mpnz0n9YNdVfxnu/cvWHvU/jvb/ztqtXzcJ5cwdt
jbdfYf1sruv/FMp2tojTZ4WDMcAk/BqkPjrS3fX0csY25G0bps5C8ldn9/qh
pyMf88aX61Nz0dxev8my+iAVtsQ1mF240J5m2XQ6NXYOndoc9nO/ghk3i/YB
BtibNbgxLcZ7WyOLv19BccE8Jmt8YnpyZuObj2VB2jQPdssr8W1rinKB08FM
TCc0YaVm3jQtW/aiah4CzNDMncHi3Jdzh89bY9m6mtqIQGbmVfPgPjo/AT9l
gAm5YGoQ0W0xf+FcMbf5B7N2+QpchTUzUWBV1WycD1AuHwYD4KZd2Ra8KFcZ
ZhJTZgFFhRlJA7uEjcvLRZmzbiN/AZtV5XLVPjj676GNiXhmKz6cHVggDjZN
CC4EIghh2kGAEIJ3eVNDH11O/LmswPY0M2BWIZKDqngA1EgyvbBSNeQg3/iZ
6HddFkUFy3pEOvRN0fH6LDvjaHJgnckhFJICMQR3aHEM00snyivqN0O0CmBo
Bst3v3aQbLWdiJi9J2oNxGaWrnYwU+E2dPkKgSW0bh36naIeE3U9lO3KuLrp
lisTHQNiA18LRC3jiaPcdoE0UhdEAsdz2NJDkGT9vbQmkGzoKo7ZUAECk7fG
LUBSxa5LM+IGIR6ned0slzSdTiKLA+nLWfDOkiPzJIWQuEK53lTlYsu2mako
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
rC/IDhV05tQXBvZf6iPK7H8BqxWeKaMwAAA=

-->

</rfc>

