藍牙配對認證淺析


1 何爲配對?

是指兩個藍牙設備首次通訊時,相互確認的過程,兩個藍牙設備一經配對之後,隨後的通訊就不必每次配對,只需要認證就可以了。

2 安全模式

藍牙支持三種安全模式:

(1)    設備沒有任何安全措施的“無安全操作”。

(2)    信道建立之前不需要啓動安全協議的“業務級安全模式”。

(3)    終端在建立鏈路之前必須啓動安全模式的“鏈路安全模式”,安全級別最高。目前藍牙設備通常採用該安全模式。

3 配對和認證

藍牙通信初始化過程需要三個步驟:

(1)    生成初級密鑰 kinit。

(2)    生成鏈路密鑰。

(3)    雙方認證。

然後藍牙設備會將鏈路密鑰保存在非易失的存儲介質中,以備以後每次連接時使用。在配對之前首先要將PIN碼輸入到藍牙設備中,像某些設備(藍牙耳機),PIN碼是固定不變的。

注意,兩邊的PIN必須相同,否則配對會失敗。

PIN(Personal Identification Number):個人識別碼,藍牙使用的PIN碼長度爲1-8個十進制位(8-128比特)。

 

 

現在簡單解析一下藍牙配對認證的過程

1、配對和認證

 

  藍牙通訊初始化過程需要三個步驟:生成初始密鑰(Kinit)、生成鏈路密鑰(Kab)和雙方認證。接着,用加密密鑰來保護往後的通訊。在配對之前,需要事先將PIN碼輸入到藍牙設備中,在某些設備(像無線耳機),PIN是固定不可改變的。必須注意的是,兩邊的PIN必須匹配,否則不能通訊。下面我們將討論配對和雙方認證的細節。

 

  生成初始密鑰(Kinit)

 

  初始密鑰Kinit t長度爲128位,由E22算法產生,圖1描述了生成Kinit密鑰的過程。首先提出通信要求的設備稱爲主設備(Master),用A表示;被動進行通信的設備稱爲從設備(Slave),用B表示。從圖中可以看到,E22算法的輸入(明文)由以下三部分組成:

 

  1)從設備的物理地址:BD_ADDR,在生成Kinit前,主設備通過詢問方式獲得從設備的地址BD_ADDR。

 

  2)PIN碼及其長度,PIN碼是雙方設備預先設定的。

 

  3)一個128位的隨機數(IN_RAND)。由主設備產生,並以明文方式傳送給從設備。

 

  由於主、從設備使用了相同的E22算法,如果雙方設備以上三部分的值都相等,那麼各自算出來的Kinit也應該相同。


圖1

.生成鏈路密鑰Kab

 見圖2,首先主設備A產生128位的隨機數LK_RANDA,從設備B也產生128位的隨機數LK_RANDB。在主設備A中,Kinit與LK_RANDA進行位比特邏輯異或運算,異或結果發送給B設備;同樣的,在B設備中,Kinit和LK_RANDB進行位比特邏輯異或運算,結果發送給A設備。通過這些交換後,A和B設備都具有相同的Kinit、LK_RANDA和LK_RANDB。按照圖2,設備A和B分別用E21算法將LK_RANDA和BD_ADDRA、LK_RANDB和BD_ADDRB加密,並將結果進行異或得到Kab。

 

圖2

如圖2所示,master和slave會生成相同的鏈路密鑰。

雙向認證

 

雙向認證採用challenge-response(挑戰-應答)方式。如圖3所示,主設備A爲應答方,從設備B爲請求方。做爲應答方的A設備產生一個128位的隨機數AU_RANDA,並以明文方式傳送至B設備。A、B設備都用E1算法將各自得到的AU_RANDA、Kab和BD_ANDRB加密運算分別生成32位的SRESA和SRESB。B設備將結果SRESB傳送給A設備,A設備比較SRESA和SRESB,如果相等,此次認證通過,否則認證不通過。執行完此次認證後,A設備和B設備的角色對換,即A設備做爲請求方,B設備做爲應答方,採用同樣的方式進行認證。

 

 

 

 

圖3

 

 

配對,認證發生在LMP層,在查詢與呼叫建立後。

 

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