CH579 CH573 CH582 藍牙從機設置白名單


1. 白名單機制

  • 白名單(white list)是BLE協議中最簡單、直白的一種安全機制。
  • 所謂的白名單,就是一組藍牙地址。
  • 通過白名單,可以只允許特定的藍牙設備(白名單中列出的)掃描(Scan)、連接(connect)我們。
  • 也可以只掃描、連接特定的藍牙設備(白名單中列出的)。

2.2 LE Clear White List Command,將controller中的白名單清空

/*******************************************************************************
* @fn LL_ClearWhiteList
*
* @brief Clear white list
*
* input parameters
*
* @param None
*
* output parameters
*
* @param None.
*
* @return Command Status.
*/

extern bStatus_t LL_ClearWhiteList( void );

該命令的格式為:

OCF

Command parameters

Return Parameters

0x0010

   

Status

Status,命令執行的結果,0為success。

2.3 LE Add Device To White List Command,將指定的設備添加到白名單

/*******************************************************************************
* @fn LL_AddWhiteListDevice
*
* @brief Add a device address into white list ( support 16 MAX )
*
* input parameters
*
* @param addrType - Type of device address
* @param devAddr - first address of device address
*
* output parameters
*
* @param None.
*
* @return Command Status.
*/
extern bStatus_t LL_AddWhiteListDevice( u8 addrType, u8 *devAddr );

該命令的格式為:

OCF 

Command parameters

Return Parameters

0x0011

Address_type(1 byte)
Address(6 bytes)

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,將指定的設備從白名單中移除的命令

/*******************************************************************************
* @fn LL_RemoveWhiteListDevice API
*
* @brief Remove a device address from white list
*
* input parameters
*
* @param addrType - Type of device address
* @param devAddr - first address of device address
*
* output parameters
*
* @param None.
*
* @return Command Status.
*/
extern bStatus_t LL_RemoveWhiteListDevice( u8 addrType, u8 *devAddr);

該命令的格式為:

OCF

Command parameters

Return Parameters

0x0012

Address_type(1 byte)
Address(6 bytes)

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


Advertising_Filter_Policy(1 byte)

Status

該命令的其它參數請參考[2],Advertising_Filter_Policy的含義如下:

0x00,禁用白名單機制,允許任何設備連接和掃描。

0x01,允許任何設備連接,但只允許白名單中的設備掃描(scan data中有敏感信息?)。

0x02,允許任何設備掃描,但只允許白名單中的設備連接。

0x03,只允許白名單中的設備掃描和連接。

 

代碼中添加白名單,在void HidEmu_Init( ) 設備初始化中

uint8 mac0[6]={0x9d,0xa4, 0xe3, 0x7a, 0xac, 0x6d};//指定mac地址
uint8 macType=1; //指定地址類型
LL_AddWhiteListDevice(macType,mac0); //添加白名單mac

uint8 filter_policy = GAP_FILTER_POLICY_WHITE_CON;//允許任何設備掃描,但只允許白名單中的設備連接。
GAPRole_SetParameter( GAPROLE_ADV_FILTER_POLICY, sizeof( uint8 ), &filter_policy );//設置白名單

測試效果,僅白名單的mac地址主機可以搜索連接該從機,其他BLE主機只能掃描,無法連接。

 參數選擇還有如下幾種可以,默認是不開白名單的

 

 

3.2 Scanning時的白名單策略(未寫實現實例)

LE Set Scan Parameters Command的命令格式為:

OCF

Command parameters

Return Parameters

0x000B


Scanning_Filter_Policy(1 byte)

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


Initiator_Filter_Policy(1 byte)

Status

Initiator_Filter_Policy的含義如下:

0x00,禁用白名單機制,使用Peer_Address_Type and Peer_Address指定需要連接的設備。

0x01,連接那些在白名單中的設備,不需要提供Peer_Address_Type and Peer_Address參數。

 

本文參考:(24條消息) 9.BLE---安全機制之白名單_weixin_30883311的博客-CSDN博客


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM