Skip to content

Commit 647ce8f

Browse files
committed
doc: tfm: move overview to a separate page
Moved the Overview section of the TF-M doc to a separate page. NCSDK-32307 and NCSDK-9188. Signed-off-by: Grzegorz Ferenc <Grzegorz.Ferenc@nordicsemi.no>
1 parent 3db6baf commit 647ce8f

File tree

3 files changed

+96
-51
lines changed

3 files changed

+96
-51
lines changed

doc/nrf/security/tfm/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ For more information about TF-M, see the `Trusted Firmware-M documentation <TF-M
3535
:maxdepth: 2
3636
:caption: Subpages:
3737

38+
tfm_supported_services
3839
tfm_architecture
3940
processing_environments
4041
tfm

doc/nrf/security/tfm/tfm.rst

+13-51
Original file line numberDiff line numberDiff line change
@@ -9,46 +9,10 @@ Configuring applications for Trusted Firmware-M
99

1010
On nRF5340, nRF54L15 and nRF91 Series devices, Trusted Firmware-M (TF-M) is used to configure and boot an application as non-secure.
1111

12-
Overview
13-
********
12+
.. _ug_tfm_building:
1413

15-
TF-M is the reference implementation of `Platform Security Architecture (PSA)`_.
16-
17-
It provides a highly configurable set of software components to create a Trusted Execution Environment.
18-
This is achieved by a set of secure run time services such as Secure Storage, Cryptography, Audit Logs, and Attestation.
19-
Additionally, secure boot through MCUboot in TF-M ensures integrity of runtime software and supports firmware upgrade.
20-
21-
.. note::
22-
Only the TF-M :ref:`minimal build <tfm_minimal_build>` implementation in the |NCS| is currently :ref:`supported <software_maturity_security_features_tfm>`.
23-
Support for TF-M with minimal version *disabled* in the |NCS| is :ref:`experimental <software_maturity_security_features_tfm>`.
24-
25-
For official documentation, see the `TF-M documentation`_.
26-
27-
The TF-M implementation in |NCS| is demonstrated in the following samples:
28-
29-
* All :ref:`tfm_samples` in this SDK
30-
* All :ref:`cryptography samples <crypto_samples>` in this SDK
31-
* A series of :zephyr:code-sample-category:`tfm_integration` samples available in Zephyr
32-
33-
In addition, the TF-M implementation is used in all samples and applications in this SDK that support the ``*/ns`` :ref:`variant <app_boards_names>` of the boards, due to :ref:`Cortex-M Security Extensions (CMSE) <app_boards_spe_nspe>` support.
34-
35-
Limitations
36-
===========
37-
38-
The following limitations apply to TF-M and its usage:
39-
40-
* Firmware Update service is not supported.
41-
* The following crypto modules or ciphers are not supported:
42-
43-
* AES output feedback (AES-OFB) mode.
44-
* AES cipher feedback (AES-CFB) mode.
45-
46-
* Isolation level 3 is not supported.
47-
* In Isolation level 2 (and 3), the number of peripherals configured as secure in Application Root of Trust (ARoT) is limited by the number of available MPU regions.
48-
* Nordic Semiconductor devices only support the GCC toolchain for building TF-M.
49-
50-
Building
51-
********
14+
Building with TF-M
15+
******************
5216

5317
TF-M is one of the images that are built as part of a multi-image application.
5418

@@ -85,18 +49,13 @@ See :ref:`tfm_partition_crypto` for more information about the TF-M Crypto parti
8549
Minimal build
8650
=============
8751

88-
The default configuration of TF-M has all supported features enabled, which results in a significant memory footprint.
89-
For this reason, the |NCS| provides a minimal version of the TF-M secure application, which shows how to configure a reduced version of TF-M.
90-
91-
The secure services supported by this minimal version allow for:
52+
.. include:: tfm_supported_services.rst
53+
:start-after: minimal_build_overview_start
54+
:end-before: minimal_build_overview_end
9255

93-
* Generating random numbers using the CryptoCell peripheral.
94-
* Using the :ref:`platform services <ug_tfm_services_platform>`.
95-
* Reading secure memory from the non-secure application (strictly restricted to a list of allowed addresses).
96-
Depending on the device, this lets you read metadata in the bootloader, verify FICR or UICR values, or access a peripheral that is secure-only.
97-
* Rebooting from the non-secure side.
56+
This minimal build uses an image of around 32 kB.
57+
It is set with the :kconfig:option:`CONFIG_TFM_PROFILE_TYPE_MINIMAL` Kconfig option, which is enabled by default on the nRF53 Series and nRF91 Series devices.
9858

99-
The minimal version is set with the :kconfig:option:`CONFIG_TFM_PROFILE_TYPE_MINIMAL` Kconfig option, which is enabled by default on the nRF53 Series and nRF91 Series devices.
10059
With the minimal build, the configuration of TF-M is severely limited.
10160
Hence, it is not possible to modify the TF-M minimal configuration to create your own variant of the minimal configuration.
10261
Instead, the default configuration must be used as a starting point.
@@ -106,8 +65,9 @@ Instead, the default configuration must be used as a starting point.
10665
Configurable build
10766
==================
10867

109-
The configurable build is the full TF-M implementation that lets you configure all of its features.
110-
It does not come with the constraints of the minimal build.
68+
.. include:: tfm_supported_services.rst
69+
:start-after: configurable_build_overview_start
70+
:end-before: configurable_build_overview_end
11171

11272
To enable the configurable, full TF-M build, make sure the following Kconfig options are configured:
11373

@@ -163,6 +123,8 @@ Following are the available Kconfig options for TF-M partitions:
163123
- Disabled
164124
- CRYPTO
165125

126+
If all services are enabled, the TF-M secure image will be around 97 kB in size.
127+
166128
Secure Partition Manager backend configuration
167129
----------------------------------------------
168130

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
.. _ug_tfm_supported_services:
2+
3+
Supported services and limitations in the |NCS|
4+
###############################################
5+
6+
.. contents::
7+
:local:
8+
:depth: 2
9+
10+
TF-M is the reference implementation of `Platform Security Architecture (PSA)`_.
11+
12+
It provides a highly configurable set of software components to create a Trusted Execution Environment.
13+
This is achieved by a set of secure run time services such as Secure Storage, Cryptography, Audit Logs, and Attestation.
14+
Additionally, secure boot through MCUboot in TF-M ensures integrity of runtime software and supports firmware upgrade.
15+
16+
Supported TF-M services and functionalities
17+
*******************************************
18+
19+
Currently, only the :ref:`Minimal TF-M configuration <tfm_minimal_build>` is :ref:`supported <software_maturity_security_features_tfm>` in the |NCS|.
20+
Configuring TF-M to use features beyond the minimal configuration (with so called :ref:`tfm_configurable_build`) is :ref:`experimental <software_maturity_security_features_tfm>`.
21+
22+
.. note::
23+
Only the TF-M :ref:`minimal build <tfm_minimal_build>` implementation in the |NCS| is currently :ref:`supported <software_maturity_security_features_tfm>`.
24+
Support for TF-M with minimal version *disabled* in the |NCS| is :ref:`experimental <software_maturity_security_features_tfm>`.
25+
26+
For official documentation, see the `TF-M documentation`_.
27+
28+
The TF-M implementation in |NCS| is demonstrated in the following samples:
29+
30+
* All :ref:`tfm_samples` in this SDK
31+
* All :ref:`cryptography samples <crypto_samples>` in this SDK
32+
* A series of :zephyr:code-sample-category:`tfm_integration` samples available in Zephyr
33+
34+
In addition, the TF-M implementation is used in all samples and applications in this SDK that support the ``*/ns`` :ref:`variant <app_boards_names>` of the boards, due to :ref:`Cortex-M Security Extensions (CMSE) <app_boards_spe_nspe>` support.
35+
36+
Minimal TF-M configuration
37+
==========================
38+
39+
.. minimal_build_overview_start
40+
41+
The default configuration of TF-M has all supported features enabled, which results in a significant memory footprint.
42+
For this reason, the |NCS| provides a minimal version of the TF-M secure application, which shows how to configure a reduced version of TF-M.
43+
44+
The secure services supported by this minimal version allow for:
45+
46+
* Generating random numbers using the CryptoCell peripheral.
47+
* Using the :ref:`platform services <ug_tfm_services_platform>`.
48+
* Reading secure memory from the non-secure application (strictly restricted to a list of allowed addresses).
49+
Depending on the device, this lets you read metadata in the bootloader, verify FICR or UICR values, or access a peripheral that is secure-only.
50+
* Rebooting from the non-secure side.
51+
52+
.. minimal_build_overview_end
53+
54+
See :ref:`ug_tfm_building` for more information on building the TF-M secure application with the minimal build.
55+
56+
Configurable TF-M build
57+
=======================
58+
59+
.. configurable_build_overview_start
60+
61+
The configurable build is the full TF-M implementation that lets you configure all of its features.
62+
It does not come with the constraints of the minimal build.
63+
64+
.. configurable_build_overview_end
65+
66+
When you use the configurable build, you are free to enable or disable any of the features in the TF-M configuration file.
67+
See :ref:`tfm_configurable_build` for more information on building the TF-M secure application with the configurable build.
68+
69+
Limitations
70+
***********
71+
72+
The following limitations apply to TF-M and its usage in the |NCS|:
73+
74+
* Firmware Update service is not supported.
75+
* The following crypto modules or ciphers are not supported:
76+
77+
* AES output feedback (AES-OFB) mode.
78+
* AES cipher feedback (AES-CFB) mode.
79+
80+
* Isolation level 3 is not supported.
81+
* In Isolation level 2 (and 3), the number of peripherals configured as secure in Application Root of Trust (ARoT) is limited by the number of available MPU regions.
82+
* Nordic Semiconductor devices only support the GCC toolchain for building TF-M.

0 commit comments

Comments
 (0)