藍牙5.4的幾個新特性
前述文章《藍牙5.4引入PAwR,電子價簽迎來新機遇》中我們介紹了藍牙5.4的PAwR特性,該特性的引入使得電子價簽領域迎來了新的機遇,但其實藍牙5.4一共引入了4個特性,本文將逐一進行介紹后面3個特性。
首先來回顧一下藍牙5.4的幾個新特性:
1) 支持帶響應的周期性廣播(PAwR)
PAwR是一個新的BLE邏輯傳輸層,是一種支持無連接的、雙向的、一對多的、一種低功耗拓撲技術。
2) 支持帶加密的廣播數據(EAD)
該特性提供了一種標準化的方法來加密廣播包中的數據,加密后的廣播數據只能被擁有相同密鑰的設備解密。廣播包的加密是需要兩個設備建立gatt連接之后,才會生成加密廣播包的密鑰。
3) 支持標記安全等級(GATT)
設備現在可以支持使用GATT安全等級特性來表示設備的安全模式和安全等級。
4) 支持選擇動態廣播編碼(CSSA)
當發送BLE擴展廣播的時候,現在可以選擇使用哪種Codec編碼方式來發送。
PAwR特性上一篇文章已經介紹過,本文主要介紹支持加密的廣播數據(EAD)、LE GATT 安全級別特征、廣播編碼選擇這三個特性。
1. 加密廣播(EAD)特性介紹
加密廣播特性為廣播包、掃描響應包和EIR數據包中的加密數據傳輸提供了一種標準化的、普遍適用的機制,并安全地共享相關的加密密鑰材料。這使得無連接通信可以用于一對多或一對一場景中的安全應用程序數據傳輸。
加密廣播特性的實現基于BLE的廣播通道,類似于經典藍牙,您可以參考藍牙核心規范以了解更多詳細信息。
1.1 共享密鑰材料
共享密鑰材料的傳輸需要廣播方設備,該設備可以接收連接請求命令并建立GATT連接。廣播方扮演GAP外圍設備角色,并且該設備的GATT服務中需要包含GAP服務。
藍牙5.4規定了一個新的特征,稱為Encrypted Data Key Material,該特征為加密廣播數據的接收者共享密鑰材料提供了基礎。加密數據密鑰材料特征包含一個24字節的值,由16字節的會話密鑰和8字節的IV值組成。GATT客戶端只能通過加密和驗證的GATT連接讀取該值,因此廣播設備和所有打算成為加密廣播數據接收者的設備必須已經配對。該特性不允許寫入,還可以支持GATT指示,但只能通過安全鏈接。
當外圍設備與中央設備建立連接后,當設備的密鑰材料產生變化時,外圍設備可以使用GATT指示命令通知中央設備。
圖 1 客戶端讀取加密數據密鑰
圖 2 服務器端發起加密數據密鑰指示
如果設備需要容納多個加密密鑰材料值,加密數據密鑰材料特性可以不用包含在GAP服務中,可以直接包含在自定義的服務中。
1.2 廣播數據加密
為了保證數據的安全傳輸,所有需要進行安全傳輸的數據都必須首先封裝在適當的AD結構中。通過將需要加密的多個AD結構集合連接成一個序列,可以支持加密多個AD結構。實際上,進行加密的正是這個AD結構序列,其中可能包含一個或多個AD結構。
1.3 加密數據傳輸
藍牙5.4引入了一種新的廣播類型,可通過加密來保護需要保密的數據。一個廣播包可以包含一個或多個加密類型的數據,這些加密數據AD類型會被包含在適當的數據包中,而已經加密的AD類型則不會以原始純文本形式出現在數據包中。其他未加密的AD類型可能會包含在包含加密數據AD類型的數據包中。
除了密文有效載荷外,加密數據AD結構的數據字段還包括一個40位的隨機化器字段和一個32位的消息完整性檢查(MIC)。下圖展示了一個示例廣播負載,其中包含兩種已加密并封裝在加密數據AD類型中的AD類型(ESL和本地名稱)以及一種未加密的AD類型(標志)。
Randomizer字段包含一個5字節的隨機數,按照藍牙核心規范中的要求生成。每次有效載荷值發生變化時,都需要生成一個新的隨機發生器值。Randomizer值用于生成CCM算法所需的隨機數。
如果使用的是隨機設備地址,只要設備更改其地址,Randomizer字段也必須更改。這會導致在設備地址更改時廣播數據包的內容也會更改,從而降低竊聽者跟蹤設備的能力。
圖 3 帶加密數據AD類型的廣播負載
配置文件負責定義如何預共享由會話密鑰和IV組成的加密密鑰材料,以使用加密廣播數據功能。加密數據密鑰材料特性可以包含在通用訪問配置文件GATT服務或其他一些服務中,具體取決于與配置文件相關的其他考慮因素,例如設備角色。
2.安全等級(GATT)特性介紹
通用屬性配置文件(GATT)提供了一種方法,通過該方法可以在由GATT服務、特性和描述符組成的結構中表示設備數據和功能。GATT服務、特征、描述符,這三個類型每個都是一個屬性(attribute),屬性是在屬性表中宏定義的,屬性表中的每一個屬性都有一個唯一的標識符,這個標識符稱為句柄(handle)。
設備使用稱為屬性協議(ATT)訪問對端藍牙設備屬性表中的屬性,遵循各種 GATT 程序定義的規則,例如特征值讀取和特征值寫入。
GATT 定義了兩個角色,GATT客戶端和GATT服務端。 GATT 客戶端向 GATT 服務器發送 ATT 命令,命令分為需要響應的和不需要響應的。 GATT 服務器接受并處理從 GATT 客戶端接收到的命令和請求。 GATT 服務器也可以向 GATT 客戶端發送各種類型的 ATT PDU,命令包括通知和指示,通知是不需要響應的,指示是需要響應確認的。
屬性表中的每個屬性都包含一組屬性權限。屬性權限定義了客戶端對該屬性的訪問類型(例如,讀特征值的能力)以及在授予該訪問權限之前可能需要條件。例如,一個屬性的權限可能表明客戶端可以讀取它的值,但只能通過經過身份驗證和加密的鏈接。屬性權限也適用于ATT 服務器及其使用通知和指示與客戶端的通信。
ATT PDU 通過GATT連接傳輸的。通常在建立連接后,GATT 客戶端會先執行服務發現流程,來發現涉及服務、特征和描述符及其相關屬性(例如句柄值、類型和權限),來確定設備屬性表的內容。需要注意的是,屬性權限不限制客戶端執行發現過程的能力。
圖 4 服務、特征和描述符
如果客戶端嘗試訪問某個屬性,但不滿足相關屬性權限的條件,則屬性協議定義了幾個要返回的錯誤代碼,以向客戶端設備指示訪問請求被拒絕以及拒絕的原因。示例包括加密不足、身份驗證不足和加密密鑰大小不足等。
2.1 GATT 安全和用戶體驗
當客戶端嘗試訪問該屬性時,會檢查該屬性的權限。如果不滿足屬性權限所規定的安全條件,將拒絕客戶端訪問,并在ATT_ERROR_RSP PDU中返回包含錯誤代碼的響應。
當服務器拒絕訪問某個屬性時,通常不會直接斷開GATT連接。此時,客戶端通常會升級安全等級,來達到訪問標準。例如,如果嘗試讀取特征值導致返回加密不足錯誤,則客戶端可能會通過啟動配對流程,配對完成后,就可以使用加密鏈路來訪問,只是此時需要用戶重發上次訪問失敗的數據。
正是由于不滿足訪問安全權限導致錯誤,就算客戶端升級了安全等級,也會導致用戶需要手動重發該數據,這就非常影響用戶的體驗,然而,直到 5.3 版的藍牙核心規范依然沒有提供此安全錯誤處理策略的替代方案。當然,這也是藍牙5.4 支持 GATT安全級別特征的意義所在。
2.2 關于 LE GATT 安全等級特征
藍牙核心規范 5.4 版定義了一個稱為LE GATT 安全級別特征 (SLC) 的新特征。SLC 特性允許客戶端確定 GATT 服務器安全條件,如果要授予對所有 GATT 功能的訪問權限,則必須滿足這些條件。更重要的是,它允許在訪問GATT 使用的屬性之前確定這一點。這種提前檢查訪問要求可以提供更好的用戶體驗,因為不會因安全級別問題導致應用程序臨時中斷。
設備可以在GAP服務中包含 SLC 特性,客戶端在發現服務的時候,發現該特征值后,就會根據該特征值的安全條件,來選擇合適的安全級別,比如發起配對。
2.3 BLE的安全配對模式和等級
安全模式1:無安全(不加密 不鑒權);加密的不鑒權配對;加密的鑒權配對;BLE的安全連接,加密的鑒權配對;
安全模式2:帶數字簽名的不鑒權配對;帶數字簽名的鑒權配對;
安全模式3:無安全(不加密 不鑒權);使用不鑒權的Broadcast_Code;使用鑒權的Broadcast_Code;
客戶端通過讀取其值并根據安全級別要求字段指示的值評估當前安全模式和級別來使用 SLC 特性。如果發現當前的安全模式和級別不足以允許服務器支持的所有 GATT 功能,此時客戶端應用程序將采取措施來解決這個問題,通常是調用程序來升級鏈接安全性。
3. 動態廣播編碼(CSSA)特性介紹
藍牙 LE 物理層定義了三種變體,統稱為PHY。這三個 PHY 分別稱為 LE 1M、LE 2M 和 LE Coded。
使用 LE Coded PHY 時,前向糾錯 (FEC) 算法和模式映射器將根據配置應用于傳輸前的有效載荷。這導致附加的糾錯數據被包含在傳輸的數據包中。使用 FEC 算法可以保證在距離發射端比較遠的設備也可以正確的接收數據(也就是具有較低的信噪比)。
Coded PHY 編碼有兩種方式,根據配置S=2或者S=8,可以控制生成多少糾錯數據,以及將通訊距離增加到什么程度。
如下圖比較了這三種PHY:
圖 5 不同PHY下數據對比
雖然之前Host端已經定義了如何使用HCI接口來發送命令,來改變Control端的編碼,但是在藍牙5.4之前,當擴展廣播選擇LE CODEC編碼的時候,是不能指定S的值是選擇2還是選擇8, 也不能進行動態的切換。 而藍牙5.4更改了 HCI 命令,以允許在使用 LE 編碼 PHY 時指定 FEC 參數 S 的值。
HCI命令如下圖:
圖 6 HCI命令
3. 總結
藍牙核心規范 5.4 版在 PAwR 中添加了一項重要的全新雙向無連接功能,使在廣播數據包中安全地廣播機密數據成為可能。除了這些相當大的改進之外,使用 GATT 的應用程序現在可以在處理屬性安全要求時提供比以前更好的用戶體驗,并且設備可以在使用LE Coded PHY 進行擴展廣播時對重要參數 (S) 進行控制。
總的來說,藍牙5.4這些新的特性,比較明確的應用場景就是電子價簽,這也是藍牙技術聯盟想要獲取的一塊市場。當然這些特性也可以嵌入到其他的藍牙產品中,來提高產品的用戶體驗。
原廠SoC支持方面,Nordic nRF52系列SoC、Silicon Labs EFR32BG22、EFR32xG24系列SoC都可以直接藍牙5.4。藍牙模塊方面,信馳達科技基于nRF52840、nRF52833、nRF52832、nRF52811、nRF52810系列藍牙無線模塊、基于EFR32BG22、EFR32BG24、EFR32MG24系列藍牙無線模塊都可以支持藍牙5.4,感興趣的小伙伴可以直接訪問我們的官網http://www.ycccsm.com/進行了解。