Skip to content

Commit d6db9ab

Browse files
omkar3141galak
authored andcommitted
Bluetooth: Mesh: Add information about secure provisioning
This clarification helps implementers to choose provisioning process parameters. Signed-off-by: Omkar Kulkarni <[email protected]>
1 parent 39f06e0 commit d6db9ab

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

doc/reference/bluetooth/mesh/provisioning.rst

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@ The Provisioning process
2222
All Bluetooth Mesh nodes must be provisioned before they can participate in a
2323
Bluetooth Mesh network. The Provisioning API provides all the functionality
2424
necessary for a device to become a provisioned mesh node.
25+
Provisioning is a five-step process, involving the following steps:
26+
27+
* Beaconing
28+
* Invitation
29+
* Public key exchange
30+
* Authentication
31+
* Provisioning data transfer
2532

2633
Beaconing
2734
=========
@@ -73,6 +80,17 @@ The Unprovisioned device automatically responds to the invite by presenting a
7380
list of its capabilities, including the supported Out of Band Authentication
7481
methods.
7582

83+
Public key exchange
84+
===================
85+
86+
Before the provisioning process can begin, the provisioner and the unprovisioned
87+
device exchange public keys, either in-band or Out of Band (OOB).
88+
89+
In-band public key exchange is a part of the provisioning process. The Out
90+
of Band public key exchange is application-specific. For example,
91+
the unprovisioned device could provide its public key Out of Band by using
92+
a QR code printed on the device packaging.
93+
7694
Authentication
7795
==============
7896

@@ -128,6 +146,24 @@ Additionally, a device key is generated for the node. All this data is stored
128146
by the mesh stack, and the provisioning :c:member:`bt_mesh_prov.complete`
129147
callback gets called.
130148

149+
Provisioning security
150+
*********************
151+
152+
Depending on the choice of public key exchange mechanism and authentication method,
153+
the provisioning process can be secure or insecure.
154+
155+
On May 24th 2021, ANSSI `disclosed <https://kb.cert.org/vuls/id/799380>`_
156+
a set of vulnerabilities in the Bluetooth Mesh Provisioning protocol that showcased
157+
how the low entropy provided by the Blink, Vibrate, Push, Twist and
158+
Input/Output numeric OOB methods could be exploited in impersonation and MITM
159+
attacks. In response, the Bluetooth SIG has reclassified these OOB methods as
160+
insecure in the Mesh Profile specification `erratum 16350 <https://www.bluetooth.org/docman/handlers/DownloadDoc.ashx?doc_id=516072>`_,
161+
as AuthValue may be brute forced in real time. To ensure secure provisioning, applications
162+
should use a static OOB value and OOB public key transfer.
163+
164+
To provide the device's public key obtained via OOB,
165+
call :c:func:`bt_mesh_prov_remote_pub_key_set` on the provisioner side.
166+
131167
API reference
132168
*************
133169

0 commit comments

Comments
 (0)