You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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>
Copy file name to clipboardexpand all lines: doc/nrf/security/tfm/tfm.rst
+13-51
Original file line number
Diff line number
Diff line change
@@ -9,46 +9,10 @@ Configuring applications for Trusted Firmware-M
9
9
10
10
On nRF5340, nRF54L15 and nRF91 Series devices, Trusted Firmware-M (TF-M) is used to configure and boot an application as non-secure.
11
11
12
-
Overview
13
-
********
12
+
.. _ug_tfm_building:
14
13
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
+
******************
52
16
53
17
TF-M is one of the images that are built as part of a multi-image application.
54
18
@@ -85,18 +49,13 @@ See :ref:`tfm_partition_crypto` for more information about the TF-M Crypto parti
85
49
Minimal build
86
50
=============
87
51
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
92
55
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.
98
58
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.
100
59
With the minimal build, the configuration of TF-M is severely limited.
101
60
Hence, it is not possible to modify the TF-M minimal configuration to create your own variant of the minimal configuration.
102
61
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.
106
65
Configurable build
107
66
==================
108
67
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
111
71
112
72
To enable the configurable, full TF-M build, make sure the following Kconfig options are configured:
113
73
@@ -163,6 +123,8 @@ Following are the available Kconfig options for TF-M partitions:
163
123
- Disabled
164
124
- CRYPTO
165
125
126
+
If all services are enabled, the TF-M secure image will be around 97 kB in size.
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