Change:
initiates the download process.  When a download is server-initiated, this means that the status tracker tells the device when to download or that it initiates the transfer directly to the firmware consumer. <del> For example, a download from an HTTP-based firmware server is client- initiated.  Pushing a manifest and firmware image to the transfer to the Package resource of the LwM2M Firmware Update object LwM2M is server-initiated. </del> <ins> For example, a download from an HTTP/1.1-based firmware server is client-initiated.  Pushing a manifest and firmware image to the Package resource of the LwM2M Firmware Update object LwM2M is server- initiated update. </ins> If the firmware consumer has downloaded a new firmware image and is <del> ready to install it, it may need to wait for a trigger from the status tracker to initiate the installation, may trigger the update automatically, or may go through a more complex decision making process to determine the appropriate timing for an update (such as delaying the update process to a later time when end users are less impacted by the update process). </del> <ins> ready to install it, to initiate the installation, it may - either need to wait for a trigger from the status tracker, - or trigger the update automatically, - or go through a more complex decision making process to determine the appropriate timing for an update.  Sometimes the final decision may require confirmation of the user of the device for safety reasons. </ins> Installation is the act of processing the payload into a format that the IoT device can recognise and the bootloader is responsible for then booting from the newly installed firmware image. <del> Each of these steps may require different permissions. 3.11. The work on a standardized manifest format initially focused on the most constrained IoT devices and those devices contain code put together by a single author (although that author may obtain code from other developers, some of it only in binary form). Later it turns out that other use cases may benefit from a standardized manifest format also for conveying software and even personalization data alongside software.  Trusted Execution Environments (TEEs), for example, greatly benefit from a protocol for managing the lifecycle of trusted applications (TAs) running inside a TEE.  TEEs may obtain TAs from different authors and those TAs may require personalization data, such as payment information, to be securely conveyed to the TEE. To support this wider range of use cases the manifest format should therefore be extensible to convey other forms of payloads as well. </del> 4. <del> The information conveyed from an Author to a Firmware Consumer can be considered to be Claims as described in RFC7519 and RFC8392.  The same security considerations apply to the Claims expressed in the manifest.  The chief difference between manifest Claims and CWT or JWT claims is that a manifest has multiple subjects.  The manifest contains: Claims about the Firmware, including its dependencies Claims about the Firmware Consumer's physical or software properties </del> <ins> architecture describes the steps for getting the firmware image and the manifest from the author to the firmware consumer on the IoT device.  Once the firmware consumer has retrieved and successfully processed the manifest and the firmware image it needs to hand control over to the bootloader. </ins> <del> Claims about the Author, or the Author's delegate </del> <ins> In most cases this requires the MCU to restart.  Once the MCU has initiated a restart, the bootloader determines whether a newly available firmware image should be executed. </ins> <del> The credential used to authenticate these Claims must be directly or indirectly related to the trust anchor installed at the device by the Trust Provisioning Authority. The baseline claims for all manifests are described in I-D.ietf-suit- information-model. 5. arch-figure shows the communication architecture where a firmware image is created by an author, and uploaded to a firmware server. The firmware image/manifest is distributed to the device either in a push or pull manner using the firmware consumer residing on the device.  The device operator keeps track of the process using the status tracker.  This allows the device operator to know and control what devices have received an update and which of them are still pending an update. End-to-end security mechanisms are used to protect the firmware image and the manifest although e2e-figure does not show the manifest itself since it may be distributed independently. Whether the firmware image and the manifest is pushed to the device or fetched by the device is a deployment specific decision. The following assumptions are made to allow the firmware consumer to verify the received firmware image and manifest before updating software: To accept an update, a device needs to verify the signature covering the manifest.  There may be one or multiple manifests that need to be validated, potentially signed by different parties.  The device needs to be in possession of the trust anchors to verify those signatures.  Installing trust anchors to devices via the Trust Provisioning Authority happens in an out-of- band fashion prior to the firmware update process. Not all entities creating and signing manifests have the same permissions.  A device needs to determine whether the requested action is indeed covered by the permission of the party that signed the manifest.  Informing the device about the permissions of the different parties also happens in an out-of-band fashion and is also a duty of the Trust Provisioning Authority. For confidentiality protection of firmware images the author needs to be in possession of the certificate/public key or a pre-shared key of a device.  The use of confidentiality protection of firmware images is deployment specific. There are different types of delivery modes, which are illustrated based on examples below. There is an option for embedding a firmware image into a manifest. This is a useful approach for deployments where devices are not connected to the Internet and cannot contact a dedicated firmware server for the firmware download.  It is also applicable when the firmware update happens via a USB stick or via Bluetooth Smart. attached-firmware-figure shows this delivery mode graphically. online-firmware-figure shows an option for remotely updating a device where the device fetches the firmware image from some file server. The manifest itself is delivered independently and provides information about the firmware image(s) to download. This architecture does not mandate a specific delivery mode but a solution must support both types. </del> <ins> A power failure at any time during a firmware update must not cause a failure of the device.  Equally, adverse network conditions during an update must not cause the failure of the device. </ins> <del> 6. </del> <ins> One way to achieve this functionality is to provide a minimum of two storage locations for firmware.  An alternative approach is to use a second stage bootloader with build-in full featured firmware update functionality such that it is possible to return to the update process after power down. </ins> <del> In order for a device to apply an update, it has to make several decisions about the update: </del> <ins> Assuming the first approach, there are (at least) three firmware images available on the device: </ins> <del> Does it trust the author of the update? </del> <ins> First, the bootloader is also firmware.  If a bootloader is updatable then its firmware image is treated like any other application firmware image. </ins> <del> Has the firmware been corrupted? </del> <ins> Second, the firmware image that has to be replaced is still available on the device as a backup in case the freshly downloaded firmware image does not boot correctly. </ins> <del> Does the firmware update apply to this device? </del> <ins> Third, there is the newly downloaded firmware image. </ins> <del> Is the update older than the active firmware? </del> <ins> Since many low end IoT devices use non-relocatable code, the bootloader needs to copy the newly downloaded application firmware image into the location of the old application firmware image and vice versa. </ins> <del> When should the device apply the update? </del> <ins> The boot process is security sensitive.  An attacker will typically try to retrieve a firmware image from the device for reverse engineering or will try to get the bootloader to excute an attacker- modified firmware image.  The bootloader will therefore have to perform security checks on the firmware image before it can be booted.  These security checks by the bootloader happen in addition to the security checks that took place when the firmware image and the manifest were downloaded by the firmware consumer. </ins> <del> How should the device apply the update? </del> <ins> Throughout this document we assume that the bootloader itself is distinct from the role of the firmware consumer and therefore does not manage the firmware update process.  This may give the impression that the bootloader itself is a completely separate component, which is mainly responsible for selecting a firmware image to boot. </ins> <del> What kind of firmware binary is it? </del> <ins> The overlap between the firmware update process and the bootloader functionality comes in two forms, namely </ins> <del> Where should the update be obtained? </del> <ins> A bootloader must verify the firmware image it boots as part of the secure boot process.  Doing so requires meta-data to be stored alongside the firmware image so that the bootloader can cryptographically verify the firmware image before booting it to ensure it has not been tampered with or replaced.  This meta-data used by the bootloader may well be the same manifest obtained with the firmware image during the update process (with the severable fields stripped off). </ins> <del> Where should the firmware be stored? </del> <ins> An IoT device needs a recovery strategy in case the firmware update / boot process fails.  As mentioned earlier, the recovery strategy may include storing two or more application firmware images on the device or offering the ability to have a second stage bootloader perform the firmware update process again using firmware updates over serial, USB or even wireless connectivity like Bluetooth Smart.  In the latter case the firmware consumer functionality is contained in the second stage bootloader and requires the necessary functionality for executing the firmware update process, including manifest parsing. </ins> <del> The manifest encodes the information that devices need in order to make these decisions.  It is a data structure that contains the following information: </del> <ins> In general, it is assumed that the bootloader itself, or a minimal part of it, will not be updated since a failed update of the bootloader poses a reliability risk. </ins> <del> information about the device(s) the firmware image is intended to be applied to, </del> <ins> For a bootloader to offer a secure boot functionality it needs to implement the following functionality: </ins> <del> information about when the firmware update has to be applied, </del> <ins> The bootloader needs to fetch the manifest (or manifest-alike headers) stored in flash memory alongside the firmware image and parse their content for subsequent cryptographic verification. </ins> <del> information about when the manifest was created, </del> <ins> Cryptographic libraries with hash functions, digital signatures (for asymmetric crypto), keyed message digests (for symmetric crypto) need to be accessible. </ins> <del> dependencies on other manifests, </del> <ins> The device needs to have a trust anchor store to verify the digital signature.  (Alternatively, access to a key store for use with the keyed message digest.) </ins> <del> pointers to the firmware image and information about the format, </del> <ins> Ability to expose boot process-related data to the application firmware (such as to the status tracker).  This allows to share information about the current firmware version, and the status of the firmware update process and whether errors have occurred. </ins> <del> information about where to store the firmware image, </del> <ins> Produce boot measurements as part of an attestation solution.  See I-D.ietf-rats-architecture for more information. (optional) </ins> <del> cryptographic information, such as digital signatures or message authentication codes (MACs). </del> <ins> Ability to decrypt firmware images, in case confidentiality protection was applied).  This requires a solution for key management. (optional) </ins> <del> The manifest information model is described in I-D.ietf-suit- information-model. </del> <ins> 5. </ins> <del> 7. </del> <ins> There are billions of MCUs used in devices today produced by a large number of silicon manufacturers.  While MCUs can vary significantly in their characteristics, there are a number of similiaries allowing us to categorize in groups. </ins> <del> Although these documents attempt to define a firmware update architecture that is applicable to both existing systems, as well as yet-to-be-conceived systems; it is still helpful to consider existing architectures. </del> <ins> The firmware update architecture, and the manifest format in particular, needs to offer enough flexibility to cover these common deployment cases. </ins> <del> 7.1. </del> <ins> 5.1. </ins> The simplest, and currently most common, architecture consists of a single MCU along with its own peripherals.  These SoCs generally contain some amount of flash memory for code and fixed data, as well <del> as RAM for working storage.  These systems either have a single firmware image, or an immutable bootloader that runs a single image. A notable characteristic of these SoCs is that the primary code is generally execute in place (XIP).  Combined with the non-relocatable nature of the code, firmware updates need to be done in place. </del> <ins> as RAM for working storage.  A notable characteristic of these SoCs is that the primary code is generally execute in place (XIP).  Due to the non-relocatable nature of the code, the firmware image needs to be placed in a specific location in flash since the code cannot be executed from an arbitrary location in flash.  Hence, then the firmware image is updated it is necessary to swap the old and the new image. </ins> <del> 7.2. </del> <ins> 5.2. </ins> Another configuration consists of a similar architecture to the previous, with a single CPU.  However, this CPU supports a security

Discussion:
First chunk of changes.
This is a really great set of edits. I think that it really improves the document as a whole! I have suggested a couple of minor edits.Quick partial language review