安全机制 - 白名单

白名单(white list)是BLE协议中最简单、直白的一种安全机制。其原理很简单,总结如下(前面的分析文章中都有介绍):

所谓的白名单,就是一组蓝牙地址;通过白名单,可以只允许特定的蓝牙设备(白名单中列出的)扫描(Scan)、连接(connect)我们,也可以只扫描、连接特定的蓝牙设备(白名单中列出的)

例如,如果某个BLE设备,只需要被受信任的某几个设备扫描、连接,我们就可以把这些受信任设备的蓝牙地址加入到该设备的白名单中,这样就可以有效避免其它“流氓设备”的骚扰了。


从设备程序中 ble_advertising.h 中涉及到白名单的有两个函数。如下:

1、设置白名单

安全机制 - 白名单_第1张图片

2、取消白名单广播,可以被任意主设备扫描、连接。初次广播时记录广播模式,所以取消白名单重新广播也是这个广播模式。

安全机制 - 白名单_第2张图片

安全机制 - 白名单_第3张图片

安全机制 - 白名单_第4张图片




dm基础上修改。 

未添加白名单管理:

每次新设备连接都触发配对请求(手机弹窗:蓝牙配对请求),即使是大于最大绑定数量(DEVICE_MANAGER_MAX_BONDS)也触发,只是超出部分的加密信息不保存而已,但是配对还是成功的。这种情况就是已保存的设备再次连接是不会再触发配对请求。


添加白名单管理后:

添加白名单后 大于最大绑定数量(DEVICE_MANAGER_MAX_BONDS)就不能再连接(手机弹窗:配对不成功),然后就断开连接。就是只有已绑定成功的

设备才能连接,其他的设备都不能连接。所以其他设备要绑定 就先要擦除ps内的信息。


1、配置白名单数量,最好是和 (DEVICE_MANAGER_MAX_BONDS) 一样。

安全机制 - 白名单_第5张图片

2、使能白名单功能。

安全机制 - 白名单_第6张图片

options.ble_adv_whitelist_enabled = BLE_ADV_WHITELIST_ENABLED;


3、白名单请求处理

安全机制 - 白名单_第7张图片

        case BLE_ADV_EVT_WHITELIST_REQUEST:

        {

            ble_gap_whitelist_t whitelist;

            ble_gap_addr_t    * p_whitelist_addr[BLE_GAP_WHITELIST_ADDR_MAX_COUNT];

            ble_gap_irk_t     * p_whitelist_irk[BLE_GAP_WHITELIST_IRK_MAX_COUNT];


            whitelist.addr_count = BLE_GAP_WHITELIST_ADDR_MAX_COUNT;

            whitelist.irk_count  = BLE_GAP_WHITELIST_IRK_MAX_COUNT;

            whitelist.pp_addrs   = p_whitelist_addr;

            whitelist.pp_irks    = p_whitelist_irk;


            err_code = dm_whitelist_create(&m_app_handle, &whitelist);

            APP_ERROR_CHECK(err_code);

            err_code = ble_advertising_whitelist_reply(&whitelist);

            APP_ERROR_CHECK(err_code);

            break;

        }








你可能感兴趣的:(NRF52832)