Skip to content

Commit 6a34ec8

Browse files
committed
doc: Bluetooth: Mesh: documentation for mesh security toolbox
Commit adds Mesh security toolbox documentation. Signed-off-by: Aleksandr Khromykh <aleksandr.khromykh@nordicsemi.no>
1 parent 88c8e81 commit 6a34ec8

File tree

3 files changed

+61
-1
lines changed

3 files changed

+61
-1
lines changed

doc/nrf/protocols/bt/bt_mesh/configuring.rst

+38
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,41 @@ Using the :ref:`bluetooth_mesh_sensor_server` sample as an example, configured a
246246
* Ambient light level gain
247247

248248
Adding up all entries, it is worth setting the cache size to minimum 71.
249+
250+
Security toolbox
251+
----------------
252+
253+
Zephyr's Mesh security toolbox implementation does not include encryption and authentication functionality like CMAC, AES-CCM, HMAC-SHA-256 and etc.
254+
The third party crypto solutions are used instead.
255+
256+
* The following options are available:
257+
258+
* :kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA` - Enables use of mbedTLS PSA API based security toolbox. Default option.
259+
* :kconfig:option:`CONFIG_BT_MESH_USES_TFM_PSA` - Enables use of TF-M PSA API based security toolbox. Default option for plarforms those suppot TF-M.
260+
* :kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT` - Enables use of Tinycrypt based security toolbox.
261+
Zephyr's Mesh operates with open value of keys, including storing them in the persistent memory.
262+
The Tinycrypt based solution has worse security materials protection comparing to others and not recommended for the future designs.
263+
264+
Bluetooth Mesh security toolbox based on the PSA API does not operate with open values of keys. Getting keys Bluetooth Mesh imports them instantly into
265+
crypto library getting back the unique key identifier. The only key identifiers are used in the security toolbox.
266+
The only key identifier are stored in the persistent memory too. The crypto library is responsible for storing of the key values in the Internal Trusted Storage (ITS).
267+
Data strutures that Bluetooth Mesh based on Tinycrypt and based on the PSA API store in the persistent memory are not compatible due to different key representations.
268+
The general way for a provisioned device to update its image with Tinycrypt based toolbox on image with the PSA API based toolbox and vice versa
269+
is to be unprovisioned first and reprovisioned after update again.
270+
If the image is changed over Mesh DFU it is recommended to use :c:enumerator:`BT_MESH_DFU_EFFECT_UNPROV`.
271+
272+
Meanwhile, there is ability for a provisioned device to update its image with Tinycrypt based toolbox on image with the PSA API based toolbox without being unprovisioned.
273+
The following option :kconfig:option:`CONFIG_BT_MESH_KEY_IMPORTER` enables the key importer functionality.
274+
The key importer is an application initialization functionality that is called with kernel initialization priority before starting main.
275+
The functionality reads out the Bluetooth Mesh persistently stored data and if it finds keys stored by Tinycrypt based security toolbox it
276+
imports them over PSA API into crypto library and stores gotten key identifiers in PSA API toolbox based form.
277+
At the moment when application starts Bluetooth Mesh initialization, the persistent area already has stored data in the correct form.
278+
279+
However, the key importer usage might add the potential vulnerability to the device. If device works with enabled key importer functionality
280+
and attacker gets ability to write arbitrary data in persistent memory then fake keys might be stored and will be imported to PSA crypto library after next device reset.
281+
282+
* The following steps should be done to use the key importer functionality safely:
283+
284+
* Update images with Tinycrypt based toolbox on images with the PSA API based toolbox with enabled the key importer feature.
285+
* Reset device to perform key import after devices in the network have successfully updated their images.
286+
* Update images with the PSA API based security toolbox but with disabled the key importer feature.

doc/nrf/releases_and_maturity/migration/migration_guide_3.0.rst

+16
Original file line numberDiff line numberDiff line change
@@ -219,3 +219,19 @@ Download client
219219
.. code-block:: C
220220
221221
err = downloader_deinit(&dl);
222+
223+
Protocols
224+
=========
225+
226+
This section provides detailed lists of changes by :ref:`protocol <protocols>`.
227+
228+
Bluetooth Mesh
229+
--------------
230+
231+
.. toggle::
232+
233+
* Support of Tinycrypt based security toolbox (:kconfig:option:`CONFIG_BT_MESH_USES_TINYCRYPT`) started deprecation procedure and not recommended for the future designs.
234+
* The default security toolbox is based on mbedTLS PSA API (:kconfig:option:`CONFIG_BT_MESH_USES_MBEDTLS_PSA`)
235+
* The default security toolbox is based on TF-M PSA API (:kconfig:option:`CONFIG_BT_MESH_USES_TFM_PSA`) for platforms those support TF-M.
236+
237+
The :ref:`ug_bt_mesh_configuring` page provides more information about the updating of the images based on different security toolboxes.

doc/nrf/releases_and_maturity/releases/release-notes-3.0.0-preview1.rst

+7-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,13 @@ Bluetooth® LE
133133
Bluetooth Mesh
134134
--------------
135135

136-
|no_changes_yet_note|
136+
* Added:
137+
138+
* The key importer functionality (:kconfig:option:`CONFIG_BT_MESH_KEY_IMPORTER`)
139+
140+
* Updated:
141+
142+
* The :ref:`ug_bt_mesh_configuring` page with the security toolbox subclause and the key importer functionality.
137143

138144
DECT NR+
139145
--------

0 commit comments

Comments
 (0)