| < draft-ietf-suit-architecture-06.txt | draft-ietf-suit-architecture-07.txt > | |||
|---|---|---|---|---|
| SUIT B. Moran | SUIT B. Moran | |||
| Internet-Draft Arm Limited | Internet-Draft Arm Limited | |||
| Intended status: Informational M. Meriac | Intended status: Informational M. Meriac | |||
| Expires: March 16, 2020 Consultant | Expires: April 22, 2020 Consultant | |||
| H. Tschofenig | H. Tschofenig | |||
| Arm Limited | Arm Limited | |||
| D. Brown | D. Brown | |||
| Linaro | Linaro | |||
| September 13, 2019 | October 20, 2019 | |||
| A Firmware Update Architecture for Internet of Things Devices | A Firmware Update Architecture for Internet of Things Devices | |||
| draft-ietf-suit-architecture-06 | draft-ietf-suit-architecture-07 | |||
| Abstract | Abstract | |||
| Vulnerabilities with Internet of Things (IoT) devices have raised the | Vulnerabilities with Internet of Things (IoT) devices have raised the | |||
| need for a solid and secure firmware update mechanism that is also | need for a solid and secure firmware update mechanism that is also | |||
| suitable for constrained devices. Incorporating such update | suitable for constrained devices. Incorporating such update | |||
| mechanism to fix vulnerabilities, to update configuration settings as | mechanism to fix vulnerabilities, to update configuration settings as | |||
| well as adding new functionality is recommended by security experts. | well as adding new functionality is recommended by security experts. | |||
| This document lists requirements and describes an architecture for a | This document lists requirements and describes an architecture for a | |||
| skipping to change at page 1, line 48 ¶ | skipping to change at page 1, line 48 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 16, 2020. | This Internet-Draft will expire on April 22, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 40 ¶ | skipping to change at page 2, line 40 ¶ | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3 | 2. Conventions and Terminology . . . . . . . . . . . . . . . . . 3 | |||
| 3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.1. Agnostic to how firmware images are distributed . . . . . 7 | 3.1. Agnostic to how firmware images are distributed . . . . . 7 | |||
| 3.2. Friendly to broadcast delivery . . . . . . . . . . . . . 8 | 3.2. Friendly to broadcast delivery . . . . . . . . . . . . . 8 | |||
| 3.3. Use state-of-the-art security mechanisms . . . . . . . . 8 | 3.3. Use state-of-the-art security mechanisms . . . . . . . . 8 | |||
| 3.4. Rollback attacks must be prevented . . . . . . . . . . . 8 | 3.4. Rollback attacks must be prevented . . . . . . . . . . . 9 | |||
| 3.5. High reliability . . . . . . . . . . . . . . . . . . . . 9 | 3.5. High reliability . . . . . . . . . . . . . . . . . . . . 9 | |||
| 3.6. Operate with a small bootloader . . . . . . . . . . . . . 9 | 3.6. Operate with a small bootloader . . . . . . . . . . . . . 9 | |||
| 3.7. Small Parsers . . . . . . . . . . . . . . . . . . . . . . 10 | 3.7. Small Parsers . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.8. Minimal impact on existing firmware formats . . . . . . . 10 | 3.8. Minimal impact on existing firmware formats . . . . . . . 10 | |||
| 3.9. Robust permissions . . . . . . . . . . . . . . . . . . . 10 | 3.9. Robust permissions . . . . . . . . . . . . . . . . . . . 10 | |||
| 3.10. Operating modes . . . . . . . . . . . . . . . . . . . . . 10 | 3.10. Operating modes . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.11. Suitability to software and personalization data . . . . 12 | 3.11. Suitability to software and personalization data . . . . 12 | |||
| 4. Claims . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 4. Claims . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5. Communication Architecture . . . . . . . . . . . . . . . . . 13 | 5. Communication Architecture . . . . . . . . . . . . . . . . . 13 | |||
| 6. Manifest . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 6. Manifest . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 7. Device Firmware Update Examples . . . . . . . . . . . . . . . 18 | 7. Device Firmware Update Examples . . . . . . . . . . . . . . . 18 | |||
| 7.1. Single CPU SoC . . . . . . . . . . . . . . . . . . . . . 18 | 7.1. Single CPU SoC . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 7.2. Single CPU with Secure - Normal Mode Partitioning . . . . 18 | 7.2. Single CPU with Secure - Normal Mode Partitioning . . . . 18 | |||
| 7.3. Dual CPU, shared memory . . . . . . . . . . . . . . . . . 18 | 7.3. Dual CPU, shared memory . . . . . . . . . . . . . . . . . 18 | |||
| 7.4. Dual CPU, other bus . . . . . . . . . . . . . . . . . . . 18 | 7.4. Dual CPU, other bus . . . . . . . . . . . . . . . . . . . 18 | |||
| 8. Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 8. Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 9. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 9. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
| 12. Mailing List Information . . . . . . . . . . . . . . . . . . 25 | 12. Mailing List Information . . . . . . . . . . . . . . . . . . 26 | |||
| 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 27 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 27 | |||
| 14.2. Informative References . . . . . . . . . . . . . . . . . 27 | 14.2. Informative References . . . . . . . . . . . . . . . . . 27 | |||
| 14.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 14.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 1. Introduction | 1. Introduction | |||
| When developing IoT devices, one of the most difficult problems to | When developing IoT devices, one of the most difficult problems to | |||
| solve is how to update the firmware on the device. Once the device | solve is how to update the firmware on the device. Once the device | |||
| skipping to change at page 4, line 13 ¶ | skipping to change at page 4, line 13 ¶ | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in RFC | "OPTIONAL" in this document are to be interpreted as described in RFC | |||
| 2119 [RFC2119]. | 2119 [RFC2119]. | |||
| This document uses the following terms: | This document uses the following terms: | |||
| - Manifest: The manifest contains meta-data about the firmware | - Manifest: The manifest contains meta-data about the firmware | |||
| image. The manifest is protected against modification and | image. The manifest is protected against modification and | |||
| provides information about the author. | provides information about the author. | |||
| - Firmware Image: The firmware image is a binary that may contain | - Firmware Image: The firmware image, or image, is a binary that may | |||
| the complete software of a device or a subset of it. The firmware | contain the complete software of a device or a subset of it. The | |||
| image may consist of multiple images, if the device contains more | firmware image may consist of multiple images, if the device | |||
| than one microcontroller. The image may consist of a differential | contains more than one microcontroller. Often it is also a | |||
| update for performance reasons. Firmware is the more universal | compressed archive that contains code, configuration data, and | |||
| term. Both terms are used in this document and are | even the entire file system. The image may consist of a | |||
| interchangeable. | differential update for performance reasons. Firmware is the more | |||
| universal term. The terms, firmware image, firmware, and image, | ||||
| are used in this document and are interchangeable. | ||||
| - Bootloader: A bootloader is a piece of software that is executed | - Bootloader: A bootloader is a piece of software that is executed | |||
| once a microcontroller has been reset. It is responsible for | once a microcontroller has been reset. It is responsible for | |||
| deciding whether to boot a firmware image that is present or | deciding whether to boot a firmware image that is present or | |||
| whether to obtain and verify a new firmware image. Since the | whether to obtain and verify a new firmware image. Since the | |||
| bootloader is a security critical component its functionality may | bootloader is a security critical component its functionality may | |||
| be split into separate stages. Such a multi-stage bootloader may | be split into separate stages. Such a multi-stage bootloader may | |||
| offer very basic functionality in the first stage and resides in | offer very basic functionality in the first stage and resides in | |||
| ROM whereas the second stage may implement more complex | ROM whereas the second stage may implement more complex | |||
| functionality and resides in flash memory so that it can be | functionality and resides in flash memory so that it can be | |||
| skipping to change at page 8, line 10 ¶ | skipping to change at page 8, line 10 ¶ | |||
| including USB, UART, WiFi, BLE, low-power WAN technologies, etc. and | including USB, UART, WiFi, BLE, low-power WAN technologies, etc. and | |||
| use different protocols (e.g., CoAP, HTTP). The specified mechanism | use different protocols (e.g., CoAP, HTTP). The specified mechanism | |||
| needs to be agnostic to the distribution of the firmware images and | needs to be agnostic to the distribution of the firmware images and | |||
| manifests. | manifests. | |||
| 3.2. Friendly to broadcast delivery | 3.2. Friendly to broadcast delivery | |||
| This architecture does not specify any specific broadcast protocol. | This architecture does not specify any specific broadcast protocol. | |||
| However, given that broadcast may be desirable for some networks, | However, given that broadcast may be desirable for some networks, | |||
| updates must cause the least disruption possible both in metadata and | updates must cause the least disruption possible both in metadata and | |||
| payload transmission. | firmware transmission. | |||
| For an update to be broadcast friendly, it cannot rely on link layer, | For an update to be broadcast friendly, it cannot rely on link layer, | |||
| network layer, or transport layer security. In addition, the same | network layer, or transport layer security. A solution has to rely | |||
| message must be deliverable to many devices, both those to which it | on security protection applied to the manifest and firmware image | |||
| applies and those to which it does not, without a chance that the | instead. In addition, the same manifest must be deliverable to many | |||
| wrong device will accept the update. Considerations that apply to | devices, both those to which it applies and those to which it does | |||
| network broadcasts apply equally to the use of third-party content | not, without a chance that the wrong device will accept the update. | |||
| distribution networks for payload distribution. | Considerations that apply to network broadcasts apply equally to the | |||
| use of third-party content distribution networks for payload | ||||
| distribution. | ||||
| 3.3. Use state-of-the-art security mechanisms | 3.3. Use state-of-the-art security mechanisms | |||
| End-to-end security between the author and the device, as shown in | End-to-end security between the author and the device is shown in | |||
| Section 5, is used to ensure that the device can verify firmware | Section 5. | |||
| images and manifests produced by authorized authors. | ||||
| The use of post-quantum secure signature mechanisms, such as hash- | Authentication ensures that the device can cryptographically identify | |||
| based signatures, should be explored. A migration to post-quantum | the author(s) creating firmware images and manifests. Authenticated | |||
| secure signatures would require significant effort, therefore, | identities may be used as input to the authorization process. | |||
| mandatory-to-implement support for post-quantum secure signatures is | ||||
| a goal. | Integrity protection ensures that no third party can modify the | |||
| manifest or the firmware image. | ||||
| For confidentiality protection of the firmware image, it must be done | ||||
| in such a way that every intended recipient can decrypt it. The | ||||
| information that is encrypted individually for each device must | ||||
| maintain friendliness to Content Distribution Networks, bulk storage, | ||||
| and broadcast protocols. | ||||
| A manifest specification must support different cryptographic | ||||
| algorithms and algorithm extensibility. Because of the nature of | ||||
| unchangeable code in ROM for use with bootloaders the use of post- | ||||
| quantum secure signature mechanisms, such as hash-based signatures | ||||
| [I-D.ietf-cose-hash-sig], are attractive because they maintain | ||||
| security in presence of quantum computers. | ||||
| A mandatory-to-implement set of algorithms has to be defined offering | A mandatory-to-implement set of algorithms has to be defined offering | |||
| a key length of 112-bit symmetric key or security or more, as | a key length of 112-bit symmetric key or security or more, as | |||
| outlined in Section 20 of RFC 7925 [RFC7925]. This corresponds to a | outlined in Section 20 of RFC 7925 [RFC7925]. This corresponds to a | |||
| 233 bit ECC key or a 2048 bit RSA key. | 233 bit ECC key or a 2048 bit RSA key. | |||
| If the firmware image is to be encrypted, it must be done in such a | ||||
| way that every intended recipient can decrypt it. The information | ||||
| that is encrypted individually for each device must be an absolute | ||||
| minimum, for example AES Key Wrap [RFC5649], in order to maintain | ||||
| friendliness to Content Distribution Networks, bulk storage, and | ||||
| broadcast protocols. | ||||
| 3.4. Rollback attacks must be prevented | 3.4. Rollback attacks must be prevented | |||
| A device presented with an old, but valid manifest and firmware must | A device presented with an old, but valid manifest and firmware must | |||
| not be tricked into installing such firmware since a vulnerability in | not be tricked into installing such firmware since a vulnerability in | |||
| the old firmware image may allow an attacker to gain control of the | the old firmware image may allow an attacker to gain control of the | |||
| device. | device. | |||
| 3.5. High reliability | 3.5. High reliability | |||
| A power failure at any time must not cause a failure of the device. | A power failure at any time must not cause a failure of the device. | |||
| skipping to change at page 9, line 22 ¶ | skipping to change at page 9, line 29 ¶ | |||
| bootloader with build-in full featured firmware update functionality | bootloader with build-in full featured firmware update functionality | |||
| such that it is possible to return to the update process after power | such that it is possible to return to the update process after power | |||
| down. | down. | |||
| Note: This is an implementation requirement rather than a requirement | Note: This is an implementation requirement rather than a requirement | |||
| on the manifest format. | on the manifest format. | |||
| 3.6. Operate with a small bootloader | 3.6. Operate with a small bootloader | |||
| Throughout this document we assume that the bootloader itself is | Throughout this document we assume that the bootloader itself is | |||
| distinct from the role of the fw consumer and therefore does not | distinct from the role of the firmware consumer and therefore does | |||
| manage the firmware update process. This may give the impression | not manage the firmware update process. This may give the impression | |||
| that the bootloader itself is a completely separate component, which | that the bootloader itself is a completely separate component, which | |||
| is mainly responsible for selecting a firmware image to boot. | is mainly responsible for selecting a firmware image to boot. | |||
| The overlap between the firmware update process and the bootloader | The overlap between the firmware update process and the bootloader | |||
| functionality comes in two forms, namely | functionality comes in two forms, namely | |||
| - First, a bootloader must verify the firmware image it boots as | - First, a bootloader must verify the firmware image it boots as | |||
| part of the secure boot process. Doing so requires meta-data to | part of the secure boot process. Doing so requires meta-data to | |||
| be stored alongside the firmware image so that the bootloader can | be stored alongside the firmware image so that the bootloader can | |||
| cryptographically verify the firmware image before booting it to | cryptographically verify the firmware image before booting it to | |||
| skipping to change at page 9, line 45 ¶ | skipping to change at page 9, line 52 ¶ | |||
| used by the bootloader may well be the same manifest obtained with | used by the bootloader may well be the same manifest obtained with | |||
| the firmware image during the update process (with the severable | the firmware image during the update process (with the severable | |||
| fields stripped off). | fields stripped off). | |||
| - Second, an IoT device needs a recovery strategy in case the | - Second, an IoT device needs a recovery strategy in case the | |||
| firmware update / boot process fails. The recovery strategy may | firmware update / boot process fails. The recovery strategy may | |||
| include storing two or more firmware images on the device or | include storing two or more firmware images on the device or | |||
| offering the ability to have a second stage bootloader perform the | offering the ability to have a second stage bootloader perform the | |||
| firmware update process again using firmware updates over serial, | firmware update process again using firmware updates over serial, | |||
| USB or even wireless connectivity like a limited version of | USB or even wireless connectivity like a limited version of | |||
| Bluetooth Smart. In the latter case the fw consumer functionality | Bluetooth Smart. In the latter case the firmware consumer | |||
| is contained in the second stage bootloader and requires the | functionality is contained in the second stage bootloader and | |||
| necessary functionality for executing the firmware update process, | requires the necessary functionality for executing the firmware | |||
| including manifest parsing. | update process, including manifest parsing. | |||
| In general, it is assumed that the bootloader itself, or a minimal | 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 | part of it, will not be updated since a failed update of the | |||
| bootloader poses a risk in reliability. | bootloader poses a risk in reliability. | |||
| All information necessary for a device to make a decision about the | All information necessary for a device to make a decision about the | |||
| installation of a firmware update must fit into the available RAM of | installation of a firmware update must fit into the available RAM of | |||
| a constrained IoT device. This prevents flash write exhaustion. | a constrained IoT device. This prevents flash write exhaustion. | |||
| This is typically not a difficult requirement to accomplish because | This is typically not a difficult requirement to accomplish because | |||
| there are not other task/processing running while the bootloader is | there are not other task/processing running while the bootloader is | |||
| skipping to change at page 12, line 48 ¶ | skipping to change at page 13, line 9 ¶ | |||
| together by a single author (although that author may obtain code | together by a single author (although that author may obtain code | |||
| from other developers, some of it only in binary form). | from other developers, some of it only in binary form). | |||
| Later it turns out that other use cases may benefit from a | Later it turns out that other use cases may benefit from a | |||
| standardized manifest format also for conveying software and even | standardized manifest format also for conveying software and even | |||
| personalization data alongside software. Trusted Execution | personalization data alongside software. Trusted Execution | |||
| Environments (TEEs), for example, greatly benefit from a protocol for | Environments (TEEs), for example, greatly benefit from a protocol for | |||
| managing the lifecycle of trusted applications (TAs) running inside a | managing the lifecycle of trusted applications (TAs) running inside a | |||
| TEE. TEEs may obtain TAs from different authors and those TAs may | TEE. TEEs may obtain TAs from different authors and those TAs may | |||
| require personalization data, such as payment information, to be | require personalization data, such as payment information, to be | |||
| securely be conveyed to the TEE. | securely conveyed to the TEE. | |||
| To support this wider range of use cases the manifest format should | To support this wider range of use cases the manifest format should | |||
| therefore be extensible to convey other forms of payloads as well. | therefore be extensible to convey other forms of payloads as well. | |||
| 4. Claims | 4. Claims | |||
| Claims in the manifest offer a way to convey instructions to a device | Claims in the manifest offer a way to convey instructions to a device | |||
| that impact the firmware update process. To have any value the | that impact the firmware update process. To have any value the | |||
| manifest containing those claims must be authenticated and integrity | manifest containing those claims must be authenticated and integrity | |||
| protected. The credential used to must be directly or indirectly | protected. The credential used must be directly or indirectly | |||
| related to the trust anchor installed at the device by the Trust | related to the trust anchor installed at the device by the Trust | |||
| Provisioning Authority. | Provisioning Authority. | |||
| The baseline claims for all manifests are described in | The baseline claims for all manifests are described in | |||
| [I-D.ietf-suit-information-model]. For example, there are: | [I-D.ietf-suit-information-model]. For example, there are: | |||
| - Do not install firmware with earlier metadata than the current | - Do not install firmware with earlier metadata than the current | |||
| metadata. | metadata. | |||
| - Only install firmware with a matching vendor, model, hardware | - Only install firmware with a matching vendor, model, hardware | |||
| skipping to change at page 19, line 19 ¶ | skipping to change at page 19, line 19 ¶ | |||
| 8. Bootloader | 8. Bootloader | |||
| More devices today than ever before are being connected to the | More devices today than ever before are being connected to the | |||
| Internet, which drives the need for firmware updates to be provided | Internet, which drives the need for firmware updates to be provided | |||
| over the Internet rather than through traditional interfaces, such as | over the Internet rather than through traditional interfaces, such as | |||
| USB or RS232. Updating a device over the Internet requires the | USB or RS232. Updating a device over the Internet requires the | |||
| device to fetch not only the firmware image but also the manifest. | device to fetch not only the firmware image but also the manifest. | |||
| Hence, the following building blocks are necessary for a firmware | Hence, the following building blocks are necessary for a firmware | |||
| update solution: | update solution: | |||
| - the Internet protocol stack for (possibly large) firmware | - the Internet protocol stack for firmware downloads (*), | |||
| downloads, | ||||
| - the capability to write the received firmware image to persistent | - the capability to write the received firmware image to persistent | |||
| storage (most likely flash memory) prior to performing the update, | storage (most likely flash memory) prior to performing the update, | |||
| - the ability to unpack, decompress or otherwise process the | - the ability to unpack, decompress or otherwise process the | |||
| received firmware image, | received firmware image, | |||
| - the features to verify an image and a manifest, including digital | - the features to verify an image and a manifest, including digital | |||
| signature verification or checking a message authentication code, | signature verification or checking a message authentication code, | |||
| - a manifest parsing library, and | - a manifest parsing library, and | |||
| - integration of the device into a device management server to | - integration of the device into a device management server to | |||
| perform automatic firmware updates and to track their progress. | perform automatic firmware updates and to track their progress. | |||
| (*) Because firmware images are often multiple kilobytes, sometimes | ||||
| exceeding one hundred kilobytes, in size for low end IoT devices and | ||||
| even several megabytes large for IoT devices running full-fletched | ||||
| operating systems like Linux the protocol mechanism for retrieving | ||||
| these images needs to offer features like congestion control, flow | ||||
| control, fragmentation and reassembly, and mechanisms to resume | ||||
| interrupted or corrupted transfers. | ||||
| All these features are most likely offered by the application, i.e. | All these features are most likely offered by the application, i.e. | |||
| firmware consumer, running on the device (except for basic security | firmware consumer, running on the device (except for basic security | |||
| algorithms that may run either on a trusted execution environment or | algorithms that may run either on a trusted execution environment or | |||
| on a separate hardware security MCU/module) rather than by the | on a separate hardware security MCU/module) rather than by the | |||
| bootloader itself. | bootloader itself. | |||
| Once manifests have been processed and firmware images successfully | Once manifests have been processed and firmware images successfully | |||
| downloaded and verified the device needs to hand control over to the | downloaded and verified the device needs to hand control over to the | |||
| bootloader. In most cases this requires the MCU to restart. Once | bootloader. In most cases this requires the MCU to restart. Once | |||
| the MCU has initiated a restart, the bootloader takes over control | the MCU has initiated a restart, the bootloader takes over control | |||
| skipping to change at page 20, line 24 ¶ | skipping to change at page 20, line 31 ¶ | |||
| verification process. Whether to re-use the standardized manifest | verification process. Whether to re-use the standardized manifest | |||
| format that was used during the initial firmware retrieval process or | format that was used during the initial firmware retrieval process or | |||
| whether it is better to use a different format for the secure boot- | whether it is better to use a different format for the secure boot- | |||
| specific meta-data depends on the system design. The manifest format | specific meta-data depends on the system design. The manifest format | |||
| does, however, have the capability to serve also as a building block | does, however, have the capability to serve also as a building block | |||
| for secure boot with its severable elements that allow shrinking the | for secure boot with its severable elements that allow shrinking the | |||
| size of the manifest by stripping elements that are no longer needed. | size of the manifest by stripping elements that are no longer needed. | |||
| If the application image contains the firmware consumer | If the application image contains the firmware consumer | |||
| functionality, as described above, then it is necessary that a | functionality, as described above, then it is necessary that a | |||
| working image is left on the device to ensure that the bootloader can | working image is left on the device. This allows the bootloader to | |||
| roll back to a working firmware image to re-do the firmware download | roll back to a working firmware image to execute a firmware download | |||
| since the bootloader itself does not have enough functionality to | if the bootloader itself does not have enough functionality to fetch | |||
| fetch a firmware image plus manifest from a firmware server over the | a firmware image plus manifest from a firmware server over the | |||
| Internet. A multi-stage bootloader may soften this requirement at | Internet. A multi-stage bootloader may soften this requirement at | |||
| the expense of a more sophisticated boot process. | the expense of a more sophisticated boot process. | |||
| For a bootloader to offer a secure boot mechanism it needs to provide | For a bootloader to offer a secure boot mechanism it needs to provide | |||
| the following features: | the following features: | |||
| - ability to access security algorithms, such as SHA-256 to compute | - ability to access security algorithms, such as SHA-256 to compute | |||
| a fingerprint over the firmware image and a digital signature | a fingerprint over the firmware image and a digital signature | |||
| algorithm. | algorithm. | |||
| skipping to change at page 21, line 18 ¶ | skipping to change at page 21, line 25 ¶ | |||
| Figure 5 illustrates an example message flow for distributing a | Figure 5 illustrates an example message flow for distributing a | |||
| firmware image to a device starting with an author uploading the new | firmware image to a device starting with an author uploading the new | |||
| firmware to firmware server and creating a manifest. The firmware | firmware to firmware server and creating a manifest. The firmware | |||
| and manifest are stored on the same firmware server. This setup does | and manifest are stored on the same firmware server. This setup does | |||
| not use a status tracker and the firmware consumer component is | not use a status tracker and the firmware consumer component is | |||
| therefore responsible for periodically checking whether a new | therefore responsible for periodically checking whether a new | |||
| firmware image is available for download. | firmware image is available for download. | |||
| +--------+ +-----------------+ +------------+ +----------+ | +--------+ +-----------------+ +------------+ +----------+ | |||
| | Author | | Firmware Server | |FW Consumer | |Bootloader| | | | | | | Firmware | | | | |||
| | Author | | Firmware Server | | Consumer | |Bootloader| | ||||
| +--------+ +-----------------+ +------------+ +----------+ | +--------+ +-----------------+ +------------+ +----------+ | |||
| | | | + | | | | + | |||
| | Create Firmware | | | | | Create Firmware | | | | |||
| |--------------+ | | | | |--------------+ | | | | |||
| | | | | | | | | | | | | |||
| |<-------------+ | | | | |<-------------+ | | | | |||
| | | | | | | | | | | |||
| | Upload Firmware | | | | | Upload Firmware | | | | |||
| |------------------>| | | | |------------------>| | | | |||
| | | | | | | | | | | |||
| skipping to change at page 23, line 23 ¶ | skipping to change at page 23, line 29 ¶ | |||
| device management systems being used. In any case, the status | device management systems being used. In any case, the status | |||
| tracker learns about the firmware version of the devices it manages. | tracker learns about the firmware version of the devices it manages. | |||
| In our example, the device under management is using firmware version | In our example, the device under management is using firmware version | |||
| A.B.C. At a later point in time the author uploads a new firmware | A.B.C. At a later point in time the author uploads a new firmware | |||
| along with the manifest to the firmware server and the status | along with the manifest to the firmware server and the status | |||
| tracker, respectively. While there is no need to store the manifest | tracker, respectively. While there is no need to store the manifest | |||
| and the firmware on different servers this example shows a common | and the firmware on different servers this example shows a common | |||
| pattern used in the industry. The status tracker may then | pattern used in the industry. The status tracker may then | |||
| automatically, based on human intervention or based on a more complex | automatically, based on human intervention or based on a more complex | |||
| policy decide to inform the device about the newly available firmware | policy decide to inform the device about the newly available firmware | |||
| image. In our example, it does so by pushing the manifest to the FW | image. In our example, it does so by pushing the manifest to the | |||
| consumer. The firmware consumer downloads the firmware image with | firmware consumer. The firmware consumer downloads the firmware | |||
| the newer version X.Y.Z after successful validation of the manifest. | image with the newer version X.Y.Z after successful validation of the | |||
| Subsequently, a reboot is initiated and the secure boot process | manifest. Subsequently, a reboot is initiated and the secure boot | |||
| starts. | process starts. | |||
| +---------+ +-----------------+ |-----------------------------. | +---------+ +-----------------+ +-----------------------------+ | |||
| | Status | | Firmware Server | | +------------+ +----------+ | | | Status | | | | +------------+ +----------+ | | |||
| | Tracker | | | | |FW Consumer | |Bootloader| | | | Tracker | | Firmware Server | | | Firmware | |Bootloader| | | |||
| | | | | | | Consumer | | | | | ||||
| +---------+ +-----------------+ | +------------+ +----------+ | | +---------+ +-----------------+ | +------------+ +----------+ | | |||
| | | | | IoT Device | | | | | | | IoT Device | | | |||
| | | `'''''''''''''''''''''''''''' | | | `'''''''''''''''''''''''''''' | |||
| | | | | | | | | | | |||
| | Query Firmware Version | | | | Query Firmware Version | | | |||
| |------------------------------------->| | | |------------------------------------->| | | |||
| | Firmware Version A.B.C | | | | Firmware Version A.B.C | | | |||
| |<-------------------------------------| | | |<-------------------------------------| | | |||
| | | | | | | | | | | |||
| | <<some time later>> | | | | <<some time later>> | | | |||
| skipping to change at page 26, line 42 ¶ | skipping to change at page 27, line 4 ¶ | |||
| - Phillip Hallam-Baker | - Phillip Hallam-Baker | |||
| - Marti Bolivar | - Marti Bolivar | |||
| - Andrzej Puzdrowski | - Andrzej Puzdrowski | |||
| - Markus Gueller | - Markus Gueller | |||
| - Henk Birkholz | - Henk Birkholz | |||
| - Jintao Zhu | - Jintao Zhu | |||
| - Takeshi Takahashi | - Takeshi Takahashi | |||
| - Jacob Beningo | - Jacob Beningo | |||
| - Kathleen Moriarty | ||||
| We would also like to thank the WG chairs, Russ Housley, David | We would also like to thank the WG chairs, Russ Housley, David | |||
| Waltermire, Dave Thaler for their support and their reviews. | Waltermire, Dave Thaler for their support and their reviews. | |||
| 14. References | 14. References | |||
| 14.1. Normative References | 14.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer | [RFC7925] Tschofenig, H., Ed. and T. Fossati, "Transport Layer | |||
| Security (TLS) / Datagram Transport Layer Security (DTLS) | Security (TLS) / Datagram Transport Layer Security (DTLS) | |||
| Profiles for the Internet of Things", RFC 7925, DOI | Profiles for the Internet of Things", RFC 7925, DOI | |||
| 10.17487/RFC7925, July 2016, <https://www.rfc- | 10.17487/RFC7925, July 2016, <https://www.rfc- | |||
| editor.org/info/rfc7925>. | editor.org/info/rfc7925>. | |||
| 14.2. Informative References | 14.2. Informative References | |||
| [I-D.ietf-cose-hash-sig] | ||||
| Housley, R., "Use of the HSS/LMS Hash-based Signature | ||||
| Algorithm with CBOR Object Signing and Encryption (COSE)", | ||||
| draft-ietf-cose-hash-sig-04 (work in progress), October | ||||
| 2019. | ||||
| [I-D.ietf-suit-information-model] | [I-D.ietf-suit-information-model] | |||
| Moran, B., Tschofenig, H., and H. Birkholz, "Firmware | Moran, B., Tschofenig, H., and H. Birkholz, "Firmware | |||
| Updates for Internet of Things Devices - An Information | Updates for Internet of Things Devices - An Information | |||
| Model for Manifests", draft-ietf-suit-information-model-03 | Model for Manifests", draft-ietf-suit-information-model-03 | |||
| (work in progress), July 2019. | (work in progress), July 2019. | |||
| [I-D.ietf-teep-architecture] | [I-D.ietf-teep-architecture] | |||
| Pei, M., Tschofenig, H., Wheeler, D., Atyeo, A., and D. | Pei, M., Tschofenig, H., Wheeler, D., Atyeo, A., and D. | |||
| Liu, "Trusted Execution Environment Provisioning (TEEP) | Liu, "Trusted Execution Environment Provisioning (TEEP) | |||
| Architecture", draft-ietf-teep-architecture-03 (work in | Architecture", draft-ietf-teep-architecture-03 (work in | |||
| End of changes. 26 change blocks. | ||||
| 62 lines changed or deleted | 88 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||