低功耗藍牙開發權威指南 之 安全

一、安全概念

1、認證

認證是一種證明身份的方式,用來證實所連接的設備是其聲稱的設備,而非第三方攻擊者。

認證有兩種基本方法:

a、初始認證和密碼共享。(如去銀行開戶必須出示本人身份證認證)

b、使用預先共享的密碼重新認證。(如取款必須要銀行卡和密碼認證,證明是賬戶持有者就可以取款,無論是誰)

執行認證有三種不同方式:

a、在初始配對時,設備使用一個認證算法來驗證連接的對端設備。該過程可能設計向一個或兩個設備鍵入祕鑰。輸入的祕鑰用來支持鏈路加密,繼而可以分配那些日後使用的共享機密。只要設備保存了共享機密,即稱之爲“已綁定”。

b、當重新連接到以前綁定過的設備時,其中的任一設備可以向對端設備發送一個簽名的命令來進行身份驗證,表明它知道先前分配的共享機密。簽名使用了上次綁定是彼此交換的共享機密來創建,因此不能被第三方僞造。該簽名的命令含有一個計數器部分,每個消息發送時遞增,以防重放攻擊。

c、當重新連接到以前綁定過的設備時,二者之中任一設備都可以啓動加密。以後傳輸的每個數據包將包含消息完整性檢查(MIC)值,接收設備使用先前分配的共享機密驗證消息的發送方。


2、授權

授權是指分配權限做某事,如某設備與你的設備建立連接時,你可以授權它來訪問你的設備的某些部分。 通常包括兩種方式:

a、文檔提供授權。

b、直接進行授權。


3、完整性

完整性的定義是指數據的內容一致性和無訛化性。無論使用有線還是無線通訊協議,數據從一個設備傳送到另一個設備時都容易產生各種錯誤,也可能是第三方攻擊。因此,錯誤檢測和防範非常重要。爲了確保完整性,需要一個更強大的消息認證機制,能夠同時檢測原始消息的完整性。循環冗餘校驗(CRC)可以用來防止位元的變化,但其功能較弱,不能視作一種安全措施。


4、機密性

機密性是指將事物保持機密的意圖。在BLE中,機密性意味着即使一個第三方竊聽者接收到一個消息,她也無法解密。


5、隱私

防止他人根據你的設備認出你。


6、加密引擎

BLE有一個加密塊,實際上是一個單向函數,用於產生祕鑰、機密和提供完整性檢查。用的是先進加密系統(AES)。


7、共享機密

幾乎所有的安全性都是基於共享機密。你的銀行卡密碼是一個機密,由你和你的銀行之間共享;你的電腦密碼是一個機密,由你和你的計算機之間共享;還有,你家的鑰匙是握在你手上的金屬與門鎖內的金屬之間的共享機密。

在BLE裏也有許多共享機密,稱之爲祕鑰。一個祕鑰是一個“共享機密”的速記方式。可以有很多祕鑰,就如同你有汽車鑰匙,門鑰匙,自行車鎖鑰匙等。

BLE主要有五個祕鑰:

a、臨時祕鑰(TK)

b、短期祕鑰(STK)

c、長期祕鑰(LTK)

d、身份解析祕鑰(IRK)

e、連接簽名解析祕鑰(CSRK)


長期祕鑰(LTK):

一旦初始配對過程完成了連接加密,設備將會分配長期祕鑰(LTK)。LTK可以是存儲在安全數據庫中的一個隨機數。在從設備上也能生成LTK。

在設計上,從設備的資源通常較爲有限,所以要讓其維護一個安全數據庫可能只是一種奢望。爲了解決這個問題,從設備向主設備分配兩個值:EDIV和Rand。這兩個值存儲在主設備上,當與從設備重新連接時再發回給對方。從設備隨後可以計算要使用的LTK,或者更準確地說,計算它先前給過主設備的LTK值。

在重新連接到之前配對並綁定過的設備時,用LTK加密連接。這意味着不需要爲每次的設備連接執行完整的配對。







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