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層,在查詢與呼叫建立後。