安全機制 - 白名單

白名單(white list)是BLE協議中最簡單、直白的一種安全機制。其原理很簡單,總結如下(前面的分析文章中都有介紹):

所謂的白名單,就是一組藍牙地址;通過白名單,可以只允許特定的藍牙設備(白名單中列出的)掃描(Scan)、連接(connect)我們,也可以只掃描、連接特定的藍牙設備(白名單中列出的)

例如,如果某個BLE設備,只需要被受信任的某幾個設備掃描、連接,我們就可以把這些受信任設備的藍牙地址加入到該設備的白名單中,這樣就可以有效避免其它“流氓設備”的騷擾了。


從設備程序中 ble_advertising.h 中涉及到白名單的有兩個函數。如下:

1、設置白名單


2、取消白名單廣播,可以被任意主設備掃描、連接。初次廣播時記錄廣播模式,所以取消白名單重新廣播也是這個廣播模式。







dm基礎上修改。 

未添加白名單管理:

每次新設備連接都觸發配對請求(手機彈窗:藍牙配對請求),即使是大於最大綁定數量(DEVICE_MANAGER_MAX_BONDS)也觸發,只是超出部分的加密信息不保存而已,但是配對還是成功的。這種情況就是已保存的設備再次連接是不會再觸發配對請求。


添加白名單管理後:

添加白名單後 大於最大綁定數量(DEVICE_MANAGER_MAX_BONDS)就不能再連接(手機彈窗:配對不成功),然後就斷開連接。就是隻有已綁定成功的

設備才能連接,其他的設備都不能連接。所以其他設備要綁定 就先要擦除ps內的信息。


1、配置白名單數量,最好是和 (DEVICE_MANAGER_MAX_BONDS) 一樣。


2、使能白名單功能。


options.ble_adv_whitelist_enabled = BLE_ADV_WHITELIST_ENABLED;


3、白名單請求處理


        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;

        }








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章