1. 白名單機制
- 白名單(white list)是BLE協議中最簡單、直白的一種安全機制。
- 所謂的白名單,就是一組藍牙地址。
- 通過白名單,可以只允許特定的藍牙設備(白名單中列出的)掃描(Scan)、連接(connect)我們。
- 也可以只掃描、連接特定的藍牙設備(白名單中列出的)。
2.HCI層操作白名單的命令
2.1 LE Read White List Size Command
該命令的格式為:
OCF |
Command parameters |
Return Parameters |
0x000F |
|
Status |
Status,命令執行的結果,0為success。
White_List_Size,size,范圍是1~255。
注2:由此可知,白名單是保存在controller中,由於size的范圍是1~255,因此controller必須實現白名單功能(最少保存一個)。
2.2 LE Clear White List Command,將controller中的白名單清空
該命令的格式為:
OCF |
Command parameters |
Return Parameters |
0x0010 |
|
Status |
Status,命令執行的結果,0為success。
2.3 LE Add Device To White List Command,將指定的設備添加到白名單
該命令的格式為:
OCF |
Command parameters |
Return Parameters |
0x0011 |
Address_type(1 byte) |
Status |
Address_type,設備的地址類型[1],0為Public Device Address,1為Random Device Address。
Address,設備的地址。
Status,命令執行的結果,0為success。
2.4 LE Remove Device From White List Command,將指定的設備從白名單中移除的命令
該命令的格式為:
OCF |
Command parameters |
Return Parameters |
0x0012 |
Address_type(1 byte) |
Status |
Address_type,設備的地址類型[1],0為Public Device Address,1為Random Device Address。
Address,設備的地址。
Status,命令執行的結果,0為success。
最后需要說明的是,當controller處於以下三個狀態的時候,以上命令除"LE Read Resolving List Size Command"外,均不能執行:
正在advertising;
正在scanning;
正在connecting。
3. 白名單使用策略有關的命令
BLE設備在發起Advertising、Scanning或者Connecting操作的時候,可以通過Set Advertising Parameters、Set Scan Parameters或者LE Create Connection Command,設置Advertising、Scanning或者Connecting的過濾策略(Filter_Policy),具體如下:
3.1 Advertising時的白名單策略
LE Set Advertising Parameters Command的命令格式為:
OCF |
Command parameters |
Return Parameters |
0x0006 |
… |
Status |
該命令的其它參數請參考[2],Advertising_Filter_Policy的含義如下:
0x00,禁用白名單機制,允許任何設備連接和掃描。
0x01,允許任何設備連接,但只允許白名單中的設備掃描(scan data中有敏感信息?)。
0x02,允許任何設備掃描,但只允許白名單中的設備連接。
0x03,只允許白名單中的設備掃描和連接。
3.2 Scanning時的白名單策略
LE Set Scan Parameters Command的命令格式為:
OCF |
Command parameters |
Return Parameters |
0x000B |
… |
Status |
Scanning_Filter_Policy的含義如下:
0x00,禁用白名單機制,接受所有的廣播包(除了那些不是給我的directed advertising packets)。
0x01,只接受在白名單中的那些設備發送的廣播包(除了那些不是給我的directed advertising packets)。
0x02,和白名單無關,不再介紹。
0x03,接受如下的廣播包:在白名單中的那些設備發送的廣播包;廣播者地址為resolvable private address的directed advertising packets;給我的給我的directed advertising packets。
注3:Scanning時的白名單策略有點奇怪,既然是主動發起的,要白名單的意義就不大了吧?
3.3 Connecting時的白名單策略
LE Create Connection Command的命令格式為:
OCF |
Command parameters |
Return Parameters |
0x000D |
… |
Status |
Initiator_Filter_Policy的含義如下:
0x00,禁用白名單機制,使用Peer_Address_Type and Peer_Address指定需要連接的設備。
0x01,連接那些在白名單中的設備,不需要提供Peer_Address_Type and Peer_Address參數。
本文參考:http://www.wowotech.net/bluetooth/ble_white_list.html