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