@@ -22,6 +22,13 @@ The Provisioning process
2222All Bluetooth Mesh nodes must be provisioned before they can participate in a
2323Bluetooth Mesh network. The Provisioning API provides all the functionality
2424necessary 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
2633Beaconing
2734========= 
@@ -73,6 +80,17 @@ The Unprovisioned device automatically responds to the invite by presenting a
7380list of its capabilities, including the supported Out of Band Authentication
7481methods.
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+ 
7694Authentication
7795============== 
7896
@@ -128,6 +146,24 @@ Additionally, a device key is generated for the node. All this data is stored
128146by the mesh stack, and the provisioning :c:member: `bt_mesh_prov.complete `
129147callback 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+ 
131167API reference
132168************* 
133169
0 commit comments