2.Authentication
蓝牙 Mesh 配网(Provisioning)流程中“认证与确认”阶段的关键步骤,具体包括:
- Confirm(确认值)交换
- Random(随机数)交换(本章说明)
当 IUT 收到 GATEWAY 发送的 Provisioning Random(PDU Type = 0x06)后,会立即使用该 Random 值,结合本地已知的 ConfirmationKey 和 AuthValue,重新计算 GATEWAY 的 Confirm 值,并与之前收到的 Provisioning Confirmation(PDU Type = 0x05)进行比对验证。即 New Device 的Check Confirmation。Provisioner 的Check Confirmation同理。
<0021>10:05:40:256 [INFO]:(common) ============= GATEWAY >>>>>>>>>>>>>>>>>> IUT=================== <0022>10:05:40:256 [INFO]:(common)prov random cmd: 06 d6 a1 b8 09 1b 81 a9 90 6d 70 8a 05 e0 b5 73 63 <0023>10:05:40:463 [INFO]:(common) ============= GATEWAY <<<<<<<<<<<<<<<<<< IUT=================== <0024>10:05:40:463 [INFO]:(common)prov random cmd: 06 4c d2 ed a6 66 1d 07 8c 18 7d 6f 35 02 49 3c 23 <0025>10:05:40:479 [INFO]:(GATEWAY)HCI_GATEWAY_RSP_UNICAST : 91 80 02 00 Provision过程中会上报分配给设备的地址,格式为:TSCRIPT_GATEWAY_DIR_RSP + HCI_GATEWAY_RSP_UNICAST+unicast addr,即:91 80+unicast address。分配给IUT的地址是0x0002<0026>10:05:40:495 [INFO]:(common) ============= GATEWAY >>>>>>>>>>>>>>>>>> IUT=================== <0027>10:05:40:495 [INFO]:(common)prov data cmd: 07 4c 78 32 1c c5 bc 54 90 fb 7a 7d 23 33 f3 06 ba 9f 91 5b b5 6c 5d c5 50 33 f3 e1 e2 0a 46 9c PDU Type = 0x07 → Provisioning Data Payload:32 字节(4c 78 ... 46 9c xx),xx:log未打印出来 📌 这是 整个配网过程中最敏感、最关键的消息 —— 它包含了设备加入 Mesh 网络所需的所有密钥和配置,且已加密。 <0028>10:05:40:606 [INFO]:(common) ============= GATEWAY <<<<<<<<<<<<<<<<<< IUT=================== <0029>10:05:40:606 [INFO]:(common)prov complete cmd: 08 PDU Type = 0x08 → Provisioning Complete Payload:无(仅 1 字节 PDU type) 📌 这是 IUT 发送的最终确认,表示:“我已成功接收并处理了 Provisioning Data,配网完成!” IUT的后续行为: 1.使用 SessionKey + SessionNonce 解密 payload; 2.验证 MIC(确保未被篡改); 3.提取: NetKey → 存储到网络密钥列表 Unicast Address → 设置为自身地址 IV Index → 初始化安全材料 4.派生 DevKey(本地计算,不传输); 5.发送 Provisioning Complete(<0029>); 6.正式成为 Mesh 网络成员!以上是蓝牙 Mesh 配网(Provisioning)流程的最后两个关键步骤:加密传输配网数据和配网完成确认。