Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 1 | Change Log & Release Notes |
| 2 | ========================== |
| 3 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 4 | This document contains a summary of the new features, changes, fixes and known issues in each release of Trusted |
| 5 | Services. |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 6 | |
Gyorgy Szing | 3e5cc5f | 2025-05-08 11:29:11 +0200 | [diff] [blame] | 7 | Version v1.2.0 |
| 8 | -------------- |
| 9 | |
| 10 | Feature Highlights |
| 11 | ^^^^^^^^^^^^^^^^^^ |
| 12 | |
| 13 | - Corstone1000 updates: |
| 14 | - Integrated PSA-FWU proxy to the proxy SP. |
| 15 | - Enabled compile-time configuration for MHU and RSE buffer sizes. |
| 16 | - Aligned psa-crypto size definitions with TF-M v2.1 |
| 17 | - rd1-ae: |
| 18 | - Introduce the new Arm Reference Design-1 AE platform targeting the Automotive segment. It features |
| 19 | high-performance Arm Neoverse V3AE Application Processor compute system, Arm Cortex-R82AE based Safety Island, and |
| 20 | a Runtime Security Engine (RSE) for enhanced security. See :doc:`/target-platforms/rd1ae` |
| 21 | - Added driver support for MHU v3. |
| 22 | - se-proxy: |
| 23 | - Added support for compile-time configuration of supported services. |
| 24 | - Client ID value 0 is considered invalid by TF-M (the firmware implementation for RSE and SE) and is rejected |
| 25 | starting from version v2.1.x. As a workaround, the SE-Proxy replaces value 0 with its own FF-A ID, which is always |
| 26 | a valid positive integer. This substitution is safe, as the SE-Proxy does not initiate requests on its own behalf. |
| 27 | - Added support for pointer access protocol. |
| 28 | - Block Storage SP |
| 29 | - Added encryption support using the new Encrypted Block Store component. |
| 30 | - Test updates: |
| 31 | - Removed libts-test |
| 32 | - Merged unit-tests into a single deployment |
| 33 | - spm-test |
| 34 | |
| 35 | - Fix mem retrieve in SPM test SP |
| 36 | - Enabled platform-specific configuration of certain manifest entries. |
| 37 | |
| 38 | - fTPM SP (experimental) |
| 39 | - Introduced the fTPM SP deployment, which provides TPM services using the ms-tpm20-ref implementation. |
| 40 | - Documentation: |
| 41 | - Added a new section covering threat assessments for various SPs. |
| 42 | - Notable generic fixes: |
| 43 | - PSA FWU M: Load initial image state in PSA FWU M update agent. |
| 44 | - Fix interrupted FFA_MSG_SEND_DIRECT_REQ handling. |
| 45 | |
| 46 | Deprecations |
| 47 | ^^^^^^^^^^^^ |
| 48 | |
| 49 | None. |
| 50 | |
| 51 | |
| 52 | Updated external components |
| 53 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 54 | |
| 55 | None. |
| 56 | |
| 57 | Breaking changes |
| 58 | ^^^^^^^^^^^^^^^^ |
| 59 | |
| 60 | None. |
| 61 | |
| 62 | Resolved issues |
| 63 | ^^^^^^^^^^^^^^^ |
| 64 | |
| 65 | None. |
| 66 | |
| 67 | Known limitations |
| 68 | ^^^^^^^^^^^^^^^^^ |
| 69 | |
| 70 | - fTPM SP: |
| 71 | |
| 72 | - The implementation is experimental. The end-to-end integration is lacking, some |
| 73 | components are not published yet. |
| 74 | - Missing support of hardware time source. |
| 75 | - Missing support for boot measurements (event log) made by earlier boot stages. |
| 76 | - Locality 4 command handling is not implemented yet. |
| 77 | |
| 78 | |
Gyorgy Szing | dc6f04f | 2024-11-14 12:06:38 +0100 | [diff] [blame] | 79 | Version v1.1.0 |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 80 | -------------- |
| 81 | |
| 82 | - Trustedfirmware.org has deprecated Phabricator, the wiki and issue tracking provider. This functionality has been |
| 83 | moved to GitHub. See the `Trusted Services organization`_. The project wiki has been moved |
| 84 | `to here <https://github.com/Trusted-Services/trusted-services/wiki>`_ |
| 85 | |
| 86 | |
| 87 | Feature Highlights |
| 88 | ^^^^^^^^^^^^^^^^^^ |
| 89 | |
| 90 | - Add documentation covering the :ref:`OP-TEE SPMC tests`. |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 91 | - :ref:`UEFI SMM Services`: |
| 92 | |
| 93 | - Extend the implementation to support Authenticated Variables. |
| 94 | - Relax the UEFI variable name length limit imposed by the size of the RPC buffer. |
| 95 | |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 96 | - Introduce a work in progress RPMB implementation and integrate it to the Block Storage service. The current |
| 97 | configuration uses an SWd RAM buffer for data storage, and is not connected to the RPMB provider running in the NWd. |
| 98 | This is the first baseline to implement a scenario where the RPMB owner is an S-EL0 SP. |
| 99 | - Introduce the :ref:`Logging Service`. |
| 100 | - Add crypto key store partitioning support to the Crypto Service. This feature allows isolating clients running in |
| 101 | different SPs. |
Gyorgy Szing | e6b3846 | 2024-10-24 17:36:45 +0200 | [diff] [blame] | 102 | - Add the "RSE Com" protocol. RSE Com is a new protocol used between secure partitions and security subsystems like the |
| 103 | Secure Enclave on Corstone-1000 or Runtime Security Engine on `RD-1 AE`_. |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 104 | - libsp learnt to support FF-A v1.1 and all SPs are updated to use this version. |
| 105 | - tstee Linux driver was merged upstream and the LinuxFfaTEEDriver external component is removed. |
| 106 | - All SP and arm-linux deployments are updated to support Armv8.5-A Branch Protection feature. |
| 107 | See: :ref:`branch_protection` |
| 108 | - A new FWU agent implementation is introduced, which implements a `PSA Certified Firmware Update API 1.0`_ client. This |
| 109 | component can be used to implement an FWU proxy on A+M systems like Corstone1000 and RD-1 AE. For more details see: |
| 110 | :ref:`Firmware update on A+M systems` |
| 111 | - A new shared library called ``libpsats`` is introduced to help integration of PSA clients to 3rd party linux |
| 112 | user-space projects. For details see: :ref:`libs-libpsats` |
| 113 | - The following new tests and enhancements have been added to :ref:`OP-TEE SPMC tests`: |
Gyorgy Szing | 4a0829d | 2024-04-19 09:34:53 +0200 | [diff] [blame] | 114 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 115 | - FFA_MEM_PERM_GET/SET tests. |
| 116 | - Memory sharing test updated to cover invalid requests. |
| 117 | - VM availability message tests. |
| 118 | - Endpoint ID checking is fixed. |
Gyorgy Szing | 4a0829d | 2024-04-19 09:34:53 +0200 | [diff] [blame] | 119 | |
| 120 | Deprecations |
| 121 | ^^^^^^^^^^^^ |
| 122 | |
| 123 | - This OpenAMP based psa_ipc implementation is deprecated and will be removed in the future. |
| 124 | |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 125 | |
| 126 | Updated external components |
| 127 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 128 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 129 | - MbedTLS version in the Crypto service is updated to v3.6.0. |
Gyorgy Szing | 4a0829d | 2024-04-19 09:34:53 +0200 | [diff] [blame] | 130 | - NanoPB has been upgraded to v0.4.8. |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 131 | - Newlib is no longer required and the newlib external component is removed. |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 132 | |
| 133 | Breaking changes |
| 134 | ^^^^^^^^^^^^^^^^ |
| 135 | |
Gyorgy Szing | dc6f04f | 2024-11-14 12:06:38 +0100 | [diff] [blame] | 136 | None. |
Gyorgy Szing | 4a0829d | 2024-04-19 09:34:53 +0200 | [diff] [blame] | 137 | |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 138 | Resolved issues |
| 139 | ^^^^^^^^^^^^^^^ |
| 140 | |
| 141 | - Fix psa-ps-api-test test case 414. |
| 142 | - Crypto key store partitioning has been implemented, and clients accessing the crypto service from different FF-A |
| 143 | endpoints can not access each other's assets anymore. |
| 144 | |
| 145 | Known limitations |
| 146 | ^^^^^^^^^^^^^^^^^ |
| 147 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 148 | None. |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 149 | |
Gyorgy Szing | 30731ce | 2023-09-27 12:24:18 +0200 | [diff] [blame] | 150 | Version 1.0.0 |
| 151 | ------------- |
| 152 | |
| 153 | The first stabilised release of the project from previously prototype releases ready for product use. |
| 154 | |
| 155 | Feature Highlights |
| 156 | ^^^^^^^^^^^^^^^^^^ |
| 157 | |
Gabor Toth | 666e2bc | 2024-12-03 15:42:24 +0100 | [diff] [blame] | 158 | - Introduce the :doc:`Block Storage Service </services/block-storage/block-storage-service-description>`. The Block Storage service |
Gyorgy Szing | 30731ce | 2023-09-27 12:24:18 +0200 | [diff] [blame] | 159 | can be used to share a block-oriented storage device such as a QSPI flash between a set of independent secure world |
| 160 | clients. |
| 161 | |
| 162 | - Introduce the :doc:`Firmware Update Service </services/fwu/index>`. The FWU service implements the Update Agent |
| 163 | defined in the `Arm FWU-A specification`_ and allows replacing FW components with newer versions. |
| 164 | |
| 165 | - Refactor FF-A UUID policy. Reinterpret the FF-A UUID to identify the protocol supported by TS SP instead of the |
| 166 | service. This removes the maintenance burden of keeping an up to date UUID list in the service locator. All SPs start |
| 167 | using the same protocol UUID, and implement a new discovery service (see the next point). |
| 168 | |
| 169 | - Overhaul the RPC protocol. The main driver is to remove the single shared memory region limitation, which does not |
| 170 | allow separating shared regions of clients running over Linux in the user-space. The second driver is to add |
| 171 | versioning support to the RPC layer. |
| 172 | |
| 173 | - Allow multiple shared memory regions between endpoints. |
| 174 | - Implement the discovery service in the RPC layer. |
| 175 | - Allow assigning a UUID to interfaces. This mechanism replaces the protocol identifier used earlier. Each protocol |
| 176 | of a service is represented as a dedicated interface. |
| 177 | - Add versioning support to the RPC layer. |
| 178 | |
| 179 | - Refactor the discovery service. The is removing the runtime overhead of memory sharing during the discovery and |
| 180 | decreases code size and duplication using the same code for service discovery. |
| 181 | |
| 182 | - Implement the discovery service in the RPC layer for efficiency reasons. |
| 183 | - Implement service identity discovery for all services. |
| 184 | - Remove the encoding type entity and use service UUIDs to represent the serialization type. |
| 185 | - Service property discovery is to be implemented in the future. |
| 186 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 187 | - Add support for the Corstone-1000 platform. For more information about this platform please see: |
| 188 | `Corstone-1000 product homepage`_ |
Gyorgy Szing | 30731ce | 2023-09-27 12:24:18 +0200 | [diff] [blame] | 189 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 190 | - SPs now indicate support of :term:`Normal World` interrupt preemption capability in their SP manifest and allow the |
| 191 | SPMC to enable preemption if possible. This removes NWd interrupts being disabled for long periods due to long service |
| 192 | calls. |
Gyorgy Szing | 30731ce | 2023-09-27 12:24:18 +0200 | [diff] [blame] | 193 | |
| 194 | - Add support for the Armv8-A CRC32 feature for :term:`Secure World` and :term:`Normal World` components. |
| 195 | |
| 196 | - Extend FF-A support with: |
| 197 | |
| 198 | - FF-A v1.1 boot protocol between the SPM and SPs. |
| 199 | - FF-A v1.2 FFA_CONSOLE_LOG call. This allows SPs to emit log messages in an SPMC agonistic way. |
| 200 | |
| 201 | - Improve the build system to allow setting the build steps of external components to be verbose. |
| 202 | |
| 203 | - Add support for runtime (dynamic) psa-acs test case configuration. |
| 204 | |
| 205 | Updated external components |
| 206 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| 207 | |
| 208 | - MbedTLS version integration into the Crypto service is updated to v3.4.0. |
| 209 | - The PSA Arch test is updated to version `74dc6646ff594e131a726a5305aba77bac30eceb`. |
| 210 | |
| 211 | Breaking changes |
| 212 | ^^^^^^^^^^^^^^^^ |
| 213 | |
| 214 | - The new RPC ABI is not backwards compatible and needs recent version of all depending components. |
| 215 | |
| 216 | Resolved issues |
| 217 | ^^^^^^^^^^^^^^^ |
| 218 | |
| 219 | - The new RPC version allows having multiple shared memory regions between endpoints. This allows each NWd client |
| 220 | running in Linux user-space to use a dedicated buffer. |
| 221 | |
| 222 | Known limitations |
| 223 | ^^^^^^^^^^^^^^^^^ |
| 224 | |
| 225 | - Crypto key store partitioning by client is not yet supported. This means multiple clients running at the same FF-A |
| 226 | endpoint use a shared key space. |
| 227 | - The full firmware update process implementation and testing is work-in-progress. The FWU process relies on the |
| 228 | cooperation of multiple FW components owned by multiple FW projects. Some 3rd party components do not implement the |
| 229 | needed features yet and thus, the FWU service was validated in "isolation" and exercised by TS test on the FVP |
| 230 | platform and on the host PC only. |
| 231 | - Service property discovery is not implemented yet. |
| 232 | - Discovering the maximum payload size of a service is not supported yet and buffer sizes are hardcoded. |
| 233 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 234 | Version 1.0.0-Beta |
| 235 | ------------------ |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 236 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 237 | The first tagged release of the project. |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 238 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 239 | Feature Highlights |
| 240 | ^^^^^^^^^^^^^^^^^^ |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 241 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 242 | The project supports the following services: |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 243 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 244 | - Secure Storage |
| 245 | - Crypto |
| 246 | - Initial Attestation |
| 247 | - Smm Variable |
| 248 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 249 | Services may be accessed using client components that implement "`Psacertified v1.0 APIs`_". The project includes |
| 250 | deployments that integrate `PSA API certification tests`_ with API clients to facilitate end-to-end PSA certification |
| 251 | testing. |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 252 | |
| 253 | Known limitations |
| 254 | ''''''''''''''''' |
| 255 | |
| 256 | - Crypto key store partitioning by client is not yet supported. |
| 257 | - Discovery support is only currently integrated into the Crypto service provider. In case of services not supporting |
| 258 | this feature yet, communication parameters (e.g. maximum buffer size) and supported feature set needs to be hardcode |
| 259 | to the service provider and service client. |
| 260 | |
| 261 | Supported Trusted Environments |
| 262 | '''''''''''''''''''''''''''''' |
| 263 | |
| 264 | In the default configuration each service is deployed to a dedicated FF-A Secure Partition and executes isolated. |
| 265 | Service implementations are platform, trusted environment and service deployment agonistic. With appropriate enablement |
| 266 | work services can be enabled to work in any combination of these. |
| 267 | |
| 268 | The reference integration uses the SPMC implemented in OP-TEE OS to manage TS SPs. This release supports `OP-TEE v3.19`_. |
| 269 | |
| 270 | Supported Integration Systems |
| 271 | ''''''''''''''''''''''''''''' |
| 272 | |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 273 | The reference solution uses the OP-TEE integration methodology. This relies on the google repo tool for high-level |
| 274 | dependency management and a set of makefiles to capture the build configuration information. For details please refer to |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 275 | `OP-TEE git repo documentation`_. |
| 276 | |
| 277 | The project is officially enabled in `Yocto meta-arm`_. |
| 278 | |
| 279 | Supported Target Platforms |
| 280 | '''''''''''''''''''''''''' |
| 281 | |
| 282 | The only reference platform supported by this release is the `AEM FVP`_ build using the OP-TEE integration method. |
| 283 | |
| 284 | Known limitations: |
| 285 | |
| 286 | - Non-volatile backend secure storage is not currently provided. |
| 287 | |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 288 | Test Report |
| 289 | ^^^^^^^^^^^ |
| 290 | |
Imre Kis | 92eeced | 2024-01-31 13:38:57 +0100 | [diff] [blame] | 291 | Please find the Test Report covering this release in the `project wiki`_. |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 292 | |
| 293 | |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 294 | -------------- |
| 295 | |
Gyorgy Szing | dc6f04f | 2024-11-14 12:06:38 +0100 | [diff] [blame] | 296 | .. _`FF-A Specification v1.1`: https://developer.arm.com/documentation/den0077/e |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 297 | .. _`Psacertified v1.0 APIs`: https://www.psacertified.org/development-resources/building-in-security/specifications-implementations/ |
| 298 | .. _`OP-TEE v3.19`: https://github.com/OP-TEE/optee_os/tree/3.19.0 |
| 299 | .. _`Yocto meta-arm` : https://gitlab.oss.arm.com/engineering/yocto/meta-arm/-/tree/master/meta-arm/recipes-security/trusted-services |
Imre Kis | 92eeced | 2024-01-31 13:38:57 +0100 | [diff] [blame] | 300 | .. _`project wiki`: https://github.com/Trusted-Services/trusted-services/wiki/Trusted-Services-test-reports |
Gabor Toth | 4fc6d9e | 2024-07-12 10:09:18 +0200 | [diff] [blame] | 301 | .. _`AEM FVP`: https://developer.arm.com/-/media/Files/downloads/ecosystem-models/FVP_Base_RevC-2xAEMvA_11.22_14_Linux64.tgz |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 302 | .. _`PSA API certification tests`: https://github.com/ARM-software/psa-arch-tests |
| 303 | .. _`OP-TEE git repo documentation`: https://optee.readthedocs.io/en/latest/building/gits/build.html |
Gyorgy Szing | 30731ce | 2023-09-27 12:24:18 +0200 | [diff] [blame] | 304 | .. _`Corstone-1000 product homepage`: https://developer.arm.com/Processors/Corstone-1000 |
| 305 | .. _`Arm FWU-A specification`: https://developer.arm.com/documentation/den0118 |
Gyorgy Szing | 0812985 | 2024-04-06 08:16:29 +0200 | [diff] [blame] | 306 | .. _`Trusted Services organization`: https://github.com/Trusted-Services |
Gyorgy Szing | e6b3846 | 2024-10-24 17:36:45 +0200 | [diff] [blame] | 307 | .. _`RD-1 AE`: https://developer.arm.com/Tools%20and%20Software/Arm%20Reference%20Design-1%20AE |
Gyorgy Szing | c6450a0 | 2024-10-28 10:44:29 +0100 | [diff] [blame] | 308 | .. _`PSA Certified Firmware Update API 1.0`: https://arm-software.github.io/psa-api/fwu/1.0/ |
Gyorgy Szing | 0b8b4fa | 2022-11-17 13:00:45 +0100 | [diff] [blame] | 309 | |
Imre Kis | 92eeced | 2024-01-31 13:38:57 +0100 | [diff] [blame] | 310 | *Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved.* |
Julian Hall | e76ade8 | 2020-11-25 03:07:21 +0100 | [diff] [blame] | 311 | |
| 312 | SPDX-License-Identifier: BSD-3-Clause |