#author("2023-04-17T17:23:33+08:00","default:Admin","Admin") #author("2023-04-17T17:24:37+08:00","default:Admin","Admin") [[BlueTooth]] &color(red){※前提条件:本情報はBlueTooth 4.0を基づいて説明してる}; #contents * 概要 [#x7dae876] &ref(BLE_liu1.jpg); ** Provision [#hb4fdad1] ** 主要分两个阶段 [#ae337081] *** Provision [#hb4fdad1] &ref(BLE_Provision.jpg); ** Config [#e183af29] *** Config [#e183af29] &ref(BLE_Config.jpg); ** 分五个阶段 [#a0200ecd] 所谓配网就是将未配网的设备变为配网的节点,一般需要一个配网器与末配网设备进行配网交互、验证然后通过后将一些密钥交给对方的一个过程。 一般过程有5个阶段: + 信标(Beaconing)阶段 + 邀请 (Invitation)阶段 + 交换公钥 (Exchange Public Keys)阶段 + 身份认证 CAuthentication)阶段 + 分发配网数据 (Distribution Of Provisioning Data)阶段 * 身份认证 [#y5089f43] 启动配置设备使用所选的验证方法,对未经启动配置设备进行验证。有三种可用的验证方法(OOB, Out-Of-Band): - 输出OOB(Output OOB) - 输入OOB(Input OOB) - 以及静态OOB(Static OOB)或无OOB(No OOB)。 ** 输出OOB(Output OOB) [#r6137ec3] 未经启动配置设备会选择一个随机数,并通过与其功能兼容的方式输出该数字。~ 例如,如果未经启动配置设备是一个灯泡,则它能够闪烁指定的次数。如果设备具有LCD屏幕,则可以将随机数显示为多位数值。启动配置设备(Provisioner)的用户需要输入观察到的数字,来验证未经启动配置的设备。 ** 输入OOB(Input OOB) [#w459c01a] 未经启动配置设备会选择一个随机数,并通过与其功能兼容的方式输出该数字。例如,如果未经启动配置设备是一个灯泡,则它能够闪烁指定的次数。如果设备具有LCD屏幕,则可以将随机数显示为多位数值。启动配置设备(Provisioner)的用户需要输入观察到的数字,来验证未经启动配置的设备。输出带外验证方法的工作流程如图1所示 ** 以及静态OOB(Static OOB)或无OOB(No OOB) [#w2d33d81] 在输入带外或输出带外都不可用的情况下,启动配置设备(Provisioner)和未经启动配置的设备可采用静态带外(Static OOB)验证或无带外(No OOB)验证:采用静态OOB信息;或静态OOB信息不可用,直接以数值0代替。在此情况下,启动配置设备和未经启动配置的设备各自生成一个随机数,然后进行检查确认值操作。 检查确认值(Check Confirmation Value)~ 无论采用何种验证方法,都会进行确认值生成和检查。根据蓝牙mesh规格,启动配置设备(Provisioner) 和未经启动配置设备应分别计算确认值。这两个值被称为ConfirmationProvisioner和ConfirmationDevice。这两个值的计算都使用一系列相同的函数,不同之处仅在于所使用的随机数输入。 *** 确认值检查(Confirmation Value Check) [#oe7fbadc] - 如果由未经启动配置设备计算所得的确认值与接收到的ConfirmationProvisioner不匹配,则启动配置(Provisioning)过程将被中止。 - 如果由未经启动配置设备计算所得的确认值与接收到的ConfirmationProvisioner匹配,则未经启动配置设备将其RandomDevice值发送给启动配置设备。 - 然后,启动配置设备(Provisioner) 使用相同的过程来重新计算确认值,并通过比较计算所得值与先前接收值来进行验证。 - 如果由启动配置设备(Provisioner) 计算所得的确认值与接收到的ConfirmationDevice不匹配,则启动配置(Provisioning)流程将被中止。 - 如果由启动配置设备(Provisioner) 计算所得的确认值与接收到的ConfirmationDevice匹配,则表示验证成功。后续只要启动配置设备(Provisioner)和未经启动配置设备完成启动配置流程的第五步:启动配置数据分发,则未经启动配置设备就能成为蓝牙mesh网络中的节点(node)。 #codeprettify{{ XXX }} #hr(); コメント: #comment_kcaptcha