配對、綁定、密鑰生成方法 - 概述


配對和綁定

爲了保證低功耗藍牙的絕大多數安全特徵,必須完成兩件事情:首先,必須互相配對;其次,連接一旦加密,設備必須分配用於加密、保障隱私並對消息進行驗證的密鑰。只要密鑰被保存下來,設備就處於綁定狀態了。

因此,要想了解安全是如何工作的,關鍵在於理解配對和密鑰分配系統的工作原理。同樣,明確兩個設備間的初始化連接不同與二者之間的後續連接也很重要。


配對和綁定區別:
1.連接:通訊的基礎,通訊數據爲明文;

2.配對:配對僅僅是爲了在連接的基礎上加密(通訊數據經過加密爲密文),提高藍牙鏈路傳輸的安全性。不配對也能連接進行通信。

3.綁定:綁定是配對發起時的一個可選配置。把配對信息記錄下來, 下次不用配對自動進入加密的連接所以沒在bonding列表裏的設備不影響連接,照連不誤。


藍牙配對

起初未提供安全性的兩個設備如果希望做一些需要安全性的工作,就必須先配對。

配對涉及兩個設備的身份認證,鏈路加密以及隨後的密鑰分配,身份解析密鑰等。如果配對時設置了綁定位,分配的祕鑰用戶可以存儲在flash中這樣兩個設備再第二次重連時的安全啓動會更快。而不需要像第一次一樣需要再啓動整個配對過程。


總的來說配對有三個階段:
第一階段:配對信息交換(主要就是兩邊設備的i/o能力,設置綁定標誌,鏈路是否需要MITM保護,如果設置綁定分配哪些密鑰等信息。
第二階段:鏈路認證(以前的靜態密碼,動態密碼,這個輸入密碼的過程就是認證的一種方式。

·     第三階段:密鑰分配

配對信息交換:

配對的第一階段涉及配對信息的交換,該信息用於確定設備的配對方式,以及確定在最後的階段將會分配哪些密鑰。

兩臺設備間配對信息的交換是通過配對請求(PairingRequest)和配對響應(PairingResponse)數據包實現的。這兩種信息的內容請參考表1:配對請求/響應。



*位順序從LSBMSB

·        代碼


·        IO 功能

兩端設備的輸入輸出能力如:是否有顯示屏,鍵盤等。


·        OOB DFOOB Data Flag

OOBOut-of-Band的縮寫,意爲“帶外”,採用外部通信方法交換一些配對過程中使用的信息。OOB媒體可能是任何一種能夠傳輸相應信息的其他無線通信標準,如NFC或二維碼。


·        BFBonding Flags

綁定(Bonding)是配對發生之後的長期密鑰交換,並將這些密鑰儲存起來以供日後使用——即在設備間創建永久的安全連結。配對機制是綁定的前提。


·        “MITM”

MITM是“Man-In-The-Middle(中間人)”。這一字段是1比特位的標識,如果設備需要MITM保護,則設置爲1。如果需要輸入密碼就置1。

·        “SC”

SC(LESC) 字段是1比特位的標識,設置爲1,以請求低功耗安全連接配對。可能的配對機制結果是:如果兩臺設備均支持低功耗安全連接,則採用低功耗安全連接;否則採用低功耗傳統連接。因此這一標識是決定第二階段配對方法的一項指標。

·        “KC”

按鍵字段是1比特位的標識,只用於萬能鑰匙進入協議,在其他協議中可忽略。萬能鑰匙進入是傳統配對和安全連接的典型配對方法。這部分在下一篇博文中會進行討論。

·        最大加密密鑰規模

最大密鑰規模範圍爲7-16個八位字節。

·        發起者密鑰分配”&“響應者密鑰分配


鏈路認證




密鑰分配



配對觸發方式:
1、主機直接發起配對請求
2、從機直接發安全請求。如果之前綁定過,那麼主機會直接用保存的LTK加密鏈路,如果沒有那麼主機會發起配對請求。

3、BLE中有一個安全模式的概念。當某個屬性被設置爲需要認證的加密鏈路訪問時,那麼當在主機訪問從機的屬性時,如果鏈路是不安全的就會返回錯誤,然後主機會發起配對請求從而實現安全請求。(屬於被動等待主機觸發方式,所以需要將一些屬性設置爲需要安全鏈路才能訪問,手機在訪問時就會觸發配對過程了)


密鑰生成方法

成特性交換之後,雙方設備就可以選擇下一階段所用的密鑰生成方法了。下方列表中是低功耗傳統配對(Legacy Pairing) 和低功耗安全連接 (LE Secure Connection) 的密鑰生成方法。
低功耗傳統配對:
·直接連接(Just Works)
·萬能鑰匙(Passkey Entry)
·帶外數據(Out-of-Band,簡稱OOB)
低功耗安全連接,除了以上三種方法以外,還增添了一種新方法:
·數值比較(Numeric Comparison)


下面介紹一下選用設備的密鑰生成操作流程:
第1步:查看配對特性交換框架中的安全連接位。如果雙方的安全連接位都等於1,則採用低功耗安全連接,並進入第2步。否則採用低功耗傳統配對,並進入第3步。

第2步:當選用低功耗安全連接時,發起設備和響應設備應遵循如下矩陣選擇配對方法:


·“使用OOB”意爲選擇Out-of-Band
·“查看MITM”意爲忽略“OOB”,查看MITM標識
·“使用IO功能”,進入第4步,根據雙方設備的IO功能選擇密鑰生成方法

第3步:當選用低功耗傳統配對(Legacy Pairing)時,發起設備和響應設備應遵循如下矩陣選擇配對方法:


·“使用OOB”意爲選擇Out-of-Band
·“查看MITM”意爲忽略“OOB”,查看MITM標識
·“使用IO功能”,進入第4步,根據雙方設備的IO功能選擇密鑰生成方法

第4步:以下是IO功能和密鑰生成方法的映射。根據下面這張圖表,發起設備和響應設備雙方就能根據他們的配對特性找到適合的連接方法。





藍牙綁定

綁定真正來說屬於通用訪問規範的討論範疇。綁定指的無非是將密鑰及相關身份信息保存到數據庫中。如果設備不保存這些值,他們雖然能匹配,但不能綁定。只要當中某一個設備不保存,重新連接後,只有一個設備擁有LTK,因此加密的啓動將會失敗。

爲了避免這種情況,兩個設備在最初配對時就會交換綁定信息,從而能夠清楚地知道對方是否保留了該綁定信息。如果對方設備不保存信息,那麼一旦啓動加密的嘗試失敗,主機將試圖再次配對。


綁定的相關知識:

綁定並不是一個獨立存在的過程。 可以理解成 配對有兩種方式, 沒有設置綁定表示的配對請求和設置綁定標誌的配對請求。

配對的目的就是單純的加密鏈路,但是配對過程比較耗時(包括配對信息交換,用戶輸入配對碼或帶外傳輸配對碼,協議層的配對確認交換和隨機數交換以及確認驗證,都沒問題後纔會生成鏈路加密祕鑰來加密鏈路),如果爲了數據始終都是加密傳輸而每次連接都去配對的話就比較麻煩,所以又定義了一個綁定過程,綁定過程是在 配對後鏈路加密的情況下 分發一個 LTK(其他祕鑰這裏不涉及),這個LTK就可以供以後直接加密鏈路,而不用進過繁瑣的配對過程。

   PS:其實LTK分配之後,每次重新連接時的加密並不是用LTK直接加密鏈路,而是雙方交換一些信息(稱爲會話祕鑰分散器),然後利用這些信息和LTK最終生成一個會話祕鑰,真正的加密是用這個會話祕鑰。


總結

1.配對認證:主從機一方提供密碼,一方輸入密碼,如果雙方密碼一致,那麼此密碼將作爲TK(臨時密碼);

2.加密鏈路:利用得到的TK(臨時密碼)等信息計算出STK(短期密碼)用來做加密認證;

3.綁定:加密認證通過後,利用STK等信息生成LTK(長期密碼),把LTK保存下來,用於下次連接時做加密認證,不需要再次配對就可以加密鏈路,這就是綁定了;

綁定後通訊過程 : 每次連接時,從機會向主機發送安全請求,如果主從機相互綁定過,主機不會發送配對請求,主機直接利用綁定時保存的LTK發送加密請求,從機也會利用綁定時保存的LTK來做加密回覆,三次握手成功後(加密成功,三次握手通訊由底層完成,用戶不可見),從機回覆主機加密狀態success。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章