藍牙配對協議分析一

藍牙配對協議分析一

在這裏插入圖片描述

藍牙配對是整個藍牙連接過程中必不可少的環節,配對的目的是通過各種方法創建共享的 鏈路密鑰(Link Key),該密鑰用於設備間連接時認證鑑權並加密相互交互的數據,使得藍牙技術更具有安全行。密鑰不但可以用於當前的連接中,還可以用於兩個設備後續的重連過程中,但是鑑權過程中如果比較雙方的Link Key不一致,則必須重新開始配對流程,從而創建新的鏈路密鑰(Link Key)用於新的連接交互流程。

鏈路密鑰(Link Key)通過HCI命令HCI_Link_Key_Notification上報協議棧Host並保存,存儲路徑:/data/misc/bluedroid/bt_config.conf

存儲內容如下圖:
在這裏插入圖片描述
Bluetooth Core Specification定義了兩種標準配對流程:

  1. PIN碼配對:藍牙核心協議2.0及之前版本使用的配對流程。
  2. SSP安全簡單配對:Secure Simple Pairing,藍牙核心協議2.1及之後版本新增的一種配對流程,由於相較於PIN碼配對具有更高的安全性、更方便的操作,從而現在市面上的藍牙設備基本上都使用這種配對流程。

兩種配對流程的觸發時機都是在鑑權過程中(Authentication Requested),向協議棧Host請求Link Key,Host回覆沒有該鏈路密鑰,從而芯片開始配對流程。接下來簡單介紹PIN碼配對的流程,然後重點分析SSP安全簡單配對。

PIN碼配對
該種方式配對時需要輸入4位十進制組成的數,配對雙方輸入的數字相同,則配對流程才能成功創建共享的鏈路密鑰(Link Key)。

其主要流程如下圖:
在這裏插入圖片描述

SSP安全簡單配對
新增SSP安全簡單配對的主要目的是簡化用戶的配對過程,次要目的是維護或提高藍牙無線技術的安全性。由於在許多技術和產品中,高安全和易於使用的程度往往是相反的,因此從最終用戶的角度來看,最終就是爲了最大限度地提高安全性,同時儘量減少複雜性。

安全簡單配對流程有如下兩個安全目標:

  1. 防止被動竊聽
  2. 防止中間人(MITM)攻擊

SSP流程根據兩個配對連接的藍牙設備雙方的I/O能力來確定採用如下哪種模型:
1、Numeric Comparison:數字比較模型,配對連接的兩個藍牙設備都有屏幕顯示一個六位數字,並且有提供用戶輸入“Yes”或者“No”的選項。

顯示的這6位數字的範圍是:000000~999999,用戶比較兩個設備上顯示的數字是否一致。連個設備上都確定Yes,配對才能成功,這樣可以有效防止中間人(MITM)攻擊。

使用場景:手機、車機、個人電腦等帶有屏幕可以顯示六位數字且提供Yes/No選項的設備間進行配對。

2、Passkey Entry:密碼輸入模型,配對連接的設備中其中一個設備具有輸入能力,但不具有顯示六位數字的能力,另一個設備具有輸出顯示六位數字的能力。只具有輸入能力的設備正確輸入另一個設備上顯示的六位數字,配對才能成功,有效防止中間人(MITM)攻擊。

使用場景:手機和藍牙鍵盤這樣的組合,一個設備只具有輸入能力,另一個設備具備輸出顯示能力。

3、Just Works:工作模型,配對連接的設備中至少有一臺設備沒有能夠顯示六位數字的顯示器,也沒有能夠輸入六位數字的鍵盤。該模型使用類似Numeric Comparison數字比較,但不會向用戶顯示那六位數字,應用程序可以簡單地要求用戶接受連接即可。由於看不到配對過程,總是同意配對,所以無法防止中間人(MITM)攻擊。

使用場景:藍牙耳機和其他設備配對,因爲大部分藍牙耳機沒有顯示也沒有數字輸入功能。

4、Out Of Band:簡稱OOB,兩個配對設備通過其他途徑交換配對信息,比如帶有NFC功能的藍牙音箱等,但此種模型很少使用到,本篇不做過多講解。

以上四種模型就是安全簡單配對SSP的模型了,每種模型都有自己的使用場景,根據配對連接設備的具體條件來決定採用哪種模型來讓用戶確定是否配對。詳細瞭解可以參考藍牙核心協議《Core_v5.2.pdf》的Vol 1 -> Part A -> 5.2.4 Association models部分。

本篇藍牙配對協議的分析就先到這兒,下篇繼續分析SSP的完整流程。感興趣的小夥伴歡迎私信留言一起討論。

更多互聯互通技術,歡迎關注微信公衆號:Connectivity
在這裏插入圖片描述

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