在以前的文章中,我們討論了Passkey Entry和Numeric Comparison等主題,這是兩種類型的配對方法。今天,我將介紹另一種方法OOB。
out of band (OOB)配對模式適用於使用out of band機制來發現設備以及交換或傳輸在配對過程中使用的密碼信息的場景。Out of band的方式比較靈活,它允許定義自己的一些配對機制,因此安全級別取決於Out of band保護能力。下面,讓我們來看看它的實現方法。
配對特征交換
在以下這個表中,有一個名為“OOB Data Flag”的字段,它的長度為1個字節。
“OOB數據標志”的定義見表2
OOB數據標志定義了在使用OOB身份驗證數據是否可用,0表示不使用OOB,0x01表示使用OOB方式
LE Legacy Pairing
當兩個藍牙設備都使用LE legacy配對時,這個過程很容易理解。有關LE legacy配對方法選擇映射的詳細信息,請參閱表3。我已經在這個表格中突出顯示了OOB的選擇,你可以看到:
如果要使用OOB進行配對,兩個設備都必須把OOB數據標志設置為0x01;
- 如果一個設備設置了OOB數據標志,而另一個沒有設置,那么這兩個設備都將檢查“AutheReq”字段中的MITM標志,表1用綠色標記。如果任何一個設備設置了它的MITM標志,那么將通過將IO功能映射來選擇配對方法。藍牙核心規范v5.0, Vol3, Part H, Table 2.8提供了詳細的映射信息。
- 否則,就使用“Just Works”作為配對方法。
在圖1中,陰影部分是我們之前文章所講的深入理解低功耗藍牙的配對過程- Part 3 LE legacy Pairing Passkey Entry 流程 ,之后兩個設備的安全管理機制將執行以下步驟:
- 步驟0 兩邊設備都創建隨機值Mrand和Srand。之后,OOB可用於交換信息以幫助發現設備,比如設備地址和128位臨時密鑰(TK)值。正如我之前在第3部分“深入理解低功耗藍牙的配對過程- Part 3 LE legacy Pairing Passkey Entry”中所解釋的,TK值是一個128位隨機數,由偽隨機數引擎生成,該引擎應該符合藍牙核心規范的要求。
- 步驟1 使用函數c1計算Mconfirm和Sconfirm,有關任何加密工具集,請參閱藍牙核心規范v5.0, Vol 3, Part H, Section 2.2。
- 步驟2 交換Mconfirm, Sconfirm和Mrand。
- 步驟3 響應設備通過重復初始設備使用接收到的Mrand值執行的計算來驗證Mconfirm值。
- 如果響應設備計算的Mconfirm值與初始設備接收到的Mconfirm值不匹配,則配對過程將中止,響應設備將發送配對失敗命令,並給出原因代碼“Confirm value Failed”。
- 如果響應設備的計算Mconfirm值與從發起設備接收到的Mconfirm值匹配,則響應設備將Srand傳輸給發起設備。
- 步驟4 配對的發起設備通過重復使用接收到的Srand值執行響應設備的計算來驗證接收到的Sconfirm值。
- 如果初始化設備計算的Sconfirm值與從響應設備接收到的Sconfirm值不匹配,則配對過程將中止,初始化設備將發送配對失敗命令,其中的原因代碼為“Confirm value Failed”。
- 如果初始化設備計算的Sconfirm值與響應設備接收到的Sconfirm值匹配,則初始化設備計算短期密鑰(STK)並告訴控制器啟用加密。
OOB應用
Nordic nRF52832/40芯片都帶有NFC接口,利用這個NFC功能可以實現兩個設備間OOB這種快速配對方式。目前大部分智能手機都支持BLE和NFC功能,當手機和手環(nRF52832/40)進行配對時就可以利用NFC通信實現密鑰交互(OOB方式)完成配對。對於用戶來說,在啟動配對功能后只需要將手機和手環相互靠近一下就快速完成了整個配對流程,這是一種非常好的用戶體驗。