BLE4.2鏈路層(LL)安全機制-LL Privacy

本文主要是總結了BLE配對綁定後,二次連接時鏈路層的連接過程和在該過程中,藍牙4.2所做的一些安全機制,主要包括藍牙白名單和安全機制LL Privacy,LL Privacy主要是防止設備地址泄露,導致設備被跟蹤。本文所有內容是按藍牙4.2總結。

1 BLE地址類型

1.1藍牙地址類型

    有兩種設備地址,即是公有地址和隨機地址。公有地址包括一個 24 位的公司識別碼(基於 IEEE802-2001 標準的組織唯一標識符,簡稱爲 OUI)和一個 24 位的公司分配碼(每個設備的號碼不一樣)。

隨機設備地址分爲兩種:靜態地址和私有地址。

靜態地址是隨機生成的 48 位地址,其中兩個最高有效位被設置爲 1。

公有地址是固定不變的。靜態地址只在重新開機時才被修改。

對等設備很容易便能檢測和連接使用了其中一種地址的設備。

私有地址則定期改變,這樣可確保 BLE 設備不被跟蹤。每次重新連接時,不可解析的私有地址都會改變。

對等設備無法計算不可解析的私有地址,因此連接前需要向對等設備提供該地址。

可解析的私有地址(RPA)被定期修改,支持保密功能的設備可以計算並使用它。

LL Privacy安全機制主要利用的就是RPA。

1.2可解析保密地址(RPA)的產生

    可解析私有地址共48位,其格式如下:

     

設備生成 24 位數值(22 位是隨機的, 2 位是固定的)被稱爲 prand。設備將使用 prand 通過 Hash 函數生成 24 位

hash = e(IRKlocal, padding | prand ), 截斷爲 24 位

其中:

  • IRKlocal = 128 位局部 IRK
  • Padding = 向 prand 零填充 104 位以得到 128 位
  • prand = 24 位隨機數值(22 位是隨機的, 兩個最高有效位被設置爲 0b10)
  • 安全函數‘e’ 是 128 位 AES 加密函數,該函數在 PSoC 4/ PRoC BLE 設備的鏈路層硬件中被執行。它使用 128 位key 和 128 位 plaintextData 來生成 encryptedData,如 FIPS-1971 所定義:encryptedData = e(key, plaintextData)
  • 按照以下方式將 24 位 hash 和 24 位 prand 結合起來便得到隨機地址(randomAddress) :

randomAddress = hash | prand

RPA的產生過程如下圖所示:

       

1.3可解析私有地址(RPA)的解析

     BLE 保密設備如何解析對等設備的 RPA。對等設備提供的 RPA 包括 24 位隨機部分(prand)和 24 位散列部分(hash),如第 7.2.3 節所述。對地址進行解析或解碼時, RPA 的最低有效 24 位當作對等設備的 hash,地址的最高有效 24 位當作 prand。使用上面的 Hash 函數生成 localHash 值。其中,函數的輸入參數爲對等設備所提供的 IRK(首次配對綁定時會被主從雙方交換)和從 RPA 提取得到的 prand。

localHash = e(IRKpeer, padding | prand ), 截斷爲 24 位

將 localHash 和從 RPA 提取的 hash 進行比較。如果 localHash 同所提取的 hash 匹配, 則表示對等設備的 ID 地址已被

解析。 地址解析流程如下圖所示。

       

2藍牙白名單   

    所謂的白名單,就是一組藍牙地址;通過白名單,可以只允許特定的藍牙設備(白名單中列出的)掃描(Scan)、連接(connect)我們,也可以只掃描、連接特定的藍牙設備(白名單中列出的)。

    例如,如果某個BLE設備,只需要被受信任的某幾個設備掃描、連接,我們就可以把這些受信任設備的藍牙地址加入到該設備的白名單中,這樣就可以有效避免其它“流氓設備”的騷擾了。

    不過呢,該機制只防君子不防小人,因爲它是靠地址去過濾“流氓”的,如果有些資深流氓,僞裝一下,將自己的設備地址修改爲受信任設備的地址,那就慘了……

    白名單是在LL層實現,其中包括:白名單策略、設備地址類型和設備地址等內容。

3安全機制-LL Privacy

    和白名單機制上的White List類似,如果設備需要使用LL Privacy機制,則需要在Controller端保存一個Resolving List,其思路爲:

  1. BLE設備要按照2.2中的介紹,配置並使能白名單機制,把那些受信任設備的地址(這裏爲Identity Address)加入到自己的白名單中,並採用合適的白名單策略。
  2. 如果設備需要使用LL Privacy策略,保護自己(以及對方)的地址不被竊取,則需要將自己(local)和對方(peer)的地址和加密key保存在一個稱作Resolving List的列表中。
  3. Resolving List的每一個條目,都保存了一對BLE設備的key/address信息,其格式爲:

Local IRK | Peer IRK | Peer Device Identity Address | Address Type

    發送數據包時,判斷Resolving List是否有非0的Local IRK,如果有,則使用Local IRK將Identity Address加密爲Resolvable Private Address,填充到數據包中相應的存放地址的字段。否則,直接填充Identity Address;

    接收數據包時,如果數據包中的地址爲普通的Identity Address,則直接做後續的處理;如果它們爲Resolvable Private Address,則會遍歷Resolving List中所有的“IRK | Identity Address”條目,使用IRK解出Identity Address和條目中的對比,如果匹配,則地址解析成功,可以做進一步處理。如果不匹配,且使能了白名單/LL Privacy策略,則會直接丟棄。如果沒有使能白名單,則走正常的連接過程。

    在配對過程的第三階段中, GAP 中心和 GAP 外設交換了 IRK 和 ID 地址。這些內容作爲配對相關數據包的有效載荷部分。對等設備的 IRK、 ID 地址和局部 IRK 被存儲在兩個設備的解析表中。在該階段,兩個設備都包含用於解析 RPA 的信息,因此它們都設置了 RPA 超時參數,並使能了地址解析。它們也可以選擇性地將對等設備的 ID 地址添加到篩選設備用的白名單內。白名單是 BLE 設備的鏈路層篩選廣播者、掃描者和連接發起者時所用的一組藍牙設備地址。僅在使能設備篩選功能時,才使用白名單。設備在 BLE 數據通道上交換數據。由於設備的解析表具有用於解析對等設備 RPA 的信息,因此重新連接程序將會使用 RPA。下圖顯示的是兩個設備成功實現首次連接後被斷開,然後正在重新連接。

 

     如上面所示,這次,兩個設備在廣播通道上發送的所有數據包都使用 RPA。因此,兩個設備間在廣播通道上進行的通信不被任何第三個設備跟蹤。請注意,重新連接時, GAP 外設可以使用可連接無定向廣播或可連接定向廣播。藍牙 4.2 保密設備支持可連接定向廣播。僅在 GAP 外設使用可連接無定向廣播時,纔會使用掃描請求和掃描響應。在 GAP 外設使用可連接定向廣播時, GAP 中心只能發送連接請求進行響應。請注意,保密功能防止跟蹤 BLE 設備在廣播通道上進行的通信。數據通道的數據包所使用的訪問地址每次連接都被修改,因此最難跟蹤。 保密功能不會對數據通道數據包產生影響。

參考資料

藍牙核心規範Core_v4.2.pdf

AN99209_-_PSoC_4_BLE_and_PRoC_BLE_Bluetooth_LE_4.2_Features_Chinese.pdf

http://www.wowotech.net/bluetooth/ble_ll_privacy.html

http://www.wowotech.net/bluetooth/ble_white_list.html

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