blob: 3aa12b9cd5febc54e98034ba77248fd259386493 [file] [log] [blame] [view]
David Brown37f8afd2017-09-12 10:59:39 -06001# MCUboot Release Notes
2
3- Table of Contents
4{:toc}
5
Fabio Utzigef7fbd72020-02-05 12:43:23 -03006## Version 1.5.0
7
8The 1.5.0 release of MCUboot adds support for encrypted images using
9ECIES with secp256r1 as an Elliptic Curve alternative to RSA-OAEP. A
10new swap method was added which allows for upgrades without using a
11scratch partition. There are also lots of bug fixes, extra simulator
12testing coverage and some imgtool updates.
13
14### About this release
15
16- TLVs were updated to use 16-bit lengths (from previous 8). This
17 should work with no changes for little-endian targets, but will
18 break compatibility with big-endian targets.
19- A benchmark framework was added to Zephyr
20- ed25519 signature validation can now build without using mbedTLS
21 by relying on a bundled tinycrypt based sha-512 implementation.
22- imgtool was updated to correctly detect trailer overruns by image.
23- Encrypted image TLVs can be saved in swap metadata during a swap
24 upgrade instead of the plain AES key.
25- imgtool can dump private keys in C format (getpriv command), which
26 can be added as decryption keys. Optionally can remove superfluous
27 fields from the ASN1 by passing it `--minimal`.
28- Lots of other smaller bugs fixes.
29- Added downgrade prevention feature (available when the overwrite-based
30 image update strategy is used)
31
32### Known issues
33
34- TLV size change breaks compatibility with big-endian targets.
35
David Brown4d0c5fa2019-10-08 09:57:31 -060036## Version 1.4.0
37
38The 1.4.0 release of MCUboot primarily adds support for multi-image
39booting. With this release, MCUboot can manage two images that can be
40updated independently. With this, it also supports additions to the
41TLV that allow these dependencies to be specified.
42
43Multi-image support adds backward-incompatible changes to the format
44of the images: specifically adding support for protected TLV entries.
45If multiple images and dependencies are not used, the images will be
46compatible with previous releases of MCUboot.
47
48### About this release
49
David Brownd7581772019-10-15 12:00:25 -060050- Fixed CVE-2019-5477, and CVE-2019-16892. These fix issue with
51 dependencies used in the generation of the documentation on github.
David Brown4d0c5fa2019-10-08 09:57:31 -060052- Numerous code cleanups and refactorings
53- Documentation updates for multi-image features
54- Update imgtool.py to support the new features
David Brownd7581772019-10-15 12:00:25 -060055- Updated the mbed TLS submodule to current stable version 2.16.3
56- Moved the mbed TLS submodule from within sim/mcuboot-sys to ext.
57 This will make it easier for other board supports to use this code.
58- Added some additional overflow and bound checks to data in the image
59 header, and TLV data.
60- Add a `-x` (or `--hex_addr`) flag to imgtool to set the base address
61 written to a hex-format image. This allows the image to be flashed
62 at an offset, without having to use additional tools to modify the
63 image.
David Brown4d0c5fa2019-10-08 09:57:31 -060064
Szymon Janc7fea8462019-07-04 14:45:52 +020065## Version 1.3.1
66
67The 1.3.1 release of MCUboot consists mostly of small bug fixes and updates.
68There are no breaking changes in functionality. This release should work with
69Mynewt 1.6.0 and up, and any Zephyr `master` after sha
70f51e3c296040f73bca0e8fe1051d5ee63ce18e0d.
71
72### About this release
73
74- Fixed a revert interruption bug
75- Added ed25519 signing support
76- Added RSA-3072 signing support
77- Allow ec256 to run on CC310 interface
78- Some preparation work was done to allow for multi image support, which
79 should land in 1.4.0. This includes a simulator update for testing
80 multi-images, and a new name for slot0/slot1 which are now called
81 "primary slot" and "secondary slot".
82- Other minor bugfixes and improvements
83
David Brownb1d15a72019-01-22 16:22:08 -070084## Version 1.3.0
85
86The 1.3.0 release of MCUboot brings in many fixes and updates. There
87are no breaking changes in functionality. Many of the changes are
88refactorings that will make the code easier to maintain going forward.
89In addition, support has been added for encrypted images. See [the
90docs](encrypted_images.md) for more information.
91
92### About this release
93
94- Modernize the Zephyr build scripts.
95- Add a `ptest` utility to help run the simulator in different
96 configurations.
97- Migrate the simulator to Rust 2018 edition. The sim now requires at
98 least Rust 1.32 to build.
99- Simulator cleanups. The simulator code is now built the same way
100 for every configuration, and queries the MCUboot code for how it was
101 compiled.
102- Abstract logging in MCUboot. This was needed to support the new
103 logging system used in Zephyr.
104- Add multiple flash support. Allows slot1/scratch to be stored in an
105 external flash device.
106- Add support for [encrypted images](encrypted_images.md).
107- Add support for flash devices that read as '0' when erased.
108- Add support to Zephyr for the `nrf52840_pca10059`. This board
109 supports serial recovery over USB with CDC ACM.
110- imgtool is now also available as a python package on pypi.org.
111- Add an option to erase flash pages progressively during recovery to
112 avoid possible timeouts (required especially by serial recovery
113 using USB with CDC ACM).
114- imgtool: big-endian support
115- imgtool: saves in intel-hex format when output filename has `.hex`
116 extension; otherwise saves in binary format.
117
Fabio Utzig3c939012018-06-25 13:26:32 -0300118## Version 1.2.0
119
120The 1.2.0 release of MCUboot brings a lot of fixes/updates, where much of the
121changes were on the boot serial functionality and imgtool utility. There are
122no breaking changes in MCUBoot functionality, but some of the CLI parameters
123in imgtool were changed (either removed or added or updated).
124
125### About this release
126
127- imgtool accepts .hex formatted input
128- Logging system is now configurable
129- Most Zephyr configuration has been switched to Kconfig
130- Build system accepts .pem files in build system to autogenerate required
131 key arrays used internally
132- Zephyr build switched to using built-in flash_map and TinyCBOR modules
133- Serial boot has substantially decreased in space usage after refactorings
134- Serial boot build doesn't require newlib-c anymore on Zephyr
135- imgtool updates:
136 + "create" subcommand can be used as an alias for "sign"
137 + To allow imgtool to always perform the check that firmware does not
138 overflow the status area, `--slot-size` was added and `--pad` was updated
139 to act as a flag parameter.
140 + `--overwrite-only` can be passed if not using swap upgrades
141 + `--max-sectors` can be used to adjust the maximum amount of sectors that
142 a swap can handle; this value must also be configured for the bootloader
143 + `--pad-header` substitutes `--included-header` with reverted semantics,
144 so it's not required for firmware built by Zephyr build system
145
146### Known issues
147
148None
149
Fabio Utzig49045cc2018-01-09 15:56:29 -0200150## Version 1.1.0
151
Carles Cufi90eda802018-01-29 18:33:20 +0100152The 1.1.0 release of MCUboot brings a lot of fixes/updates to its
Fabio Utzig49045cc2018-01-09 15:56:29 -0200153inner workings, specially to its testing infrastructure which now
154enables a more thorough quality assurance of many of the available
155options. As expected of the 1.x.x release cycle, no breaking changes
156were made. From the tooling perpective the main addition is
157newt/imgtool support for password protected keys.
158
159### About this release
160
161- serial recovery functionality support under Zephyr
162- simulator: lots of refactors were applied, which result in the
163 simulator now leveraging the Rust testing infrastructure; testing
164 of ecdsa (secp256r1) was added
165- imgtool: removed PKCS1.5 support, added support for password
166 protected keys
167- tinycrypt 0.2.8 and the mbed-tls ASN1 parser are now bundled with
168 mcuboot (eg secp256r1 is now free of external dependencies!)
169- Overwrite-only mode was updated to erase/copy only sectors that
170 actually store firmware
171- A lot of small code and documentation fixes and updates.
172
173### Known issues
174
175None
176
David Brown37f8afd2017-09-12 10:59:39 -0600177## Version 1.0.0
178
Carles Cufi90eda802018-01-29 18:33:20 +0100179The 1.0.0 release of MCUboot introduces a format change. It is
David Brown37f8afd2017-09-12 10:59:39 -0600180important to either use the `imgtool.py` also from this release, or
181pass the `-2` to recent versions of the `newt` tool in order to
182generate image headers with the new format. There should be no
183incompatible format changes throughout the 1.x.y release series.
184
185### About this release
186
187- Header format change. This change was made to move all of the
188 information about signatures out of the header and into the TLV
189 block appended to the image. This allows
190 - The signature to be replaced without changing the image.
191 - Multiple signatures to be applied. This can be used, for example,
192 to sign an image with two algorithms, to support different
193 bootloader configurations based on these image.
194 - The public key is referred to by its SHA1 hash (or a prefix of the
195 hash), instead of an index that has to be maintained with the
196 bootloader.
197 - Allow new types of signatures in the future.
198- Support for PKCS#1 v1.5 signatures has been dropped. All RSA
199 signatures should be made with PSS. The tools have been changed to
200 reflect this.
201- The source for Tinycrypt has been placed in the MCUboot tree. A
202 recent version of Tinycrypt introduced breaking API changes. To
203 allow MCUboot to work across various platforms, we stop using the
204 Tinycrypt bundled with the OS platform, and use our own version. A
205 future release of MCUboot will update the Tinycrypt version.
206- Support for some new targets:
207 - Nordic nRF51 and nRF52832 dev kits
208 - Hexiwear K64
209- Clearer sample applications have been added under `samples`.
Fabio Utzig4dce6aa2018-02-12 15:31:32 -0200210- Test plans for [zephyr](testplan-zephyr.md), and
211 [mynewt](testplan-mynewt.md).
David Brown37f8afd2017-09-12 10:59:39 -0600212- The simulator is now able to test RSA signatures.
213- There is an unimplemented `load_addr` header for future support for
214 RAM loading in the bootloader.
215- Numerous documentation.
216
217### Known issues
218
219None
220
221## Version 0.9.0
222
Carles Cufi90eda802018-01-29 18:33:20 +0100223This is the first release of MCUboot, a secure bootloader for 32-bit MCUs.
David Brown37f8afd2017-09-12 10:59:39 -0600224It is designed to be operating system-agnostic and works over any transport -
225wired or wireless. It is also hardware independent, and relies on hardware
226porting layers from the operating system it works with. For the first release,
227we have support for three open source operating systems: Apache Mynewt, Zephyr
228and RIOT.
229
230### About this release
231
232- This release supports building with and running Apache Mynewt and Zephyr
233 targets.
234- RIOT is supported as a running target.
235- Image integrity is provided with SHA256.
236- Image originator authenticity is provided supporting the following
237 signature algorithms:
238 - RSA 2048 and RSA PKCS#1 v1.5 or v2.1
239 - Elliptic curve DSA with secp224r1 and secp256r1
240- Two firmware upgrade algorithms are provided:
241 - An overwrite only which upgrades slot 0 with the image in slot 1.
242 - A swapping upgrade which enables image test, allowing for rollback to a
243 previous known good image.
244- Supports both mbed-TLS and tinycrypt as backend crypto libraries. One of them
245 must be defined and the chosen signing algorithm will require a particular
246 library according to this list:
247 - RSA 2048 needs mbed TLS
248 - ECDSA secp224r1 needs mbed TLS
249 - ECDSA secp256r1 needs tinycrypt as well as the ASN.1 code from mbed TLS
250 (so still needs that present).
251
252### Known issues
253
254- The image header and TLV formats are planned to change with release 1.0:
255 https://runtimeco.atlassian.net/browse/MCUB-66