12

我需要通過智能手機(iOS & Android)和嵌入式設備(CC2540芯片)之間的藍牙低功耗(BLE)數據連接發送一些敏感數據。藍牙低功耗加密和數據安全

因爲我不認爲手機上的應用程序代碼是安全的,所以我需要依靠BLE安全來將我的加密包從服務器交付給設備一次(我必須假設任何第二次提供包的嘗試都必須來自攻擊者)。

我一直在瀏覽網絡幾天,以瞭解我的數據是否安全,以及在哪些條件下。不幸的是,我無法對我的問題提出一個簡單的答案。

  1. 如果我將手機與設備配對,我的數據是否安全? - 我想是的,儘管我明白配對過程本身是有缺陷的,所以理論上一些中間人(MITM)可能在配對過程中嗅探加密密鑰,從而危害連接。

  2. 我需要將每個設備與多個手機配對(但一次只能與一個手機進行通信)。配對的最大數量是多少?設備? - 不幸的是,我需要將相當多的手機配對到我的設備。

  3. 我可以從設備獲取配對數據(長期按鍵等)並將其存儲在某些外部存儲器中,以增加此限制。

  4. 我可以在不需要配對的情況下與設備建立安全的數據連接,或者在需要時重新配對嗎? - 這個程序對於MITM攻擊有多安全?

我似乎無法找到任何明確回答這些問題的文檔。任何想法或指針都會受到歡迎。

回答

10

這裏是我的兩分錢:

  1. 據我所知,BLE配對/加密過程中不存在缺陷。然而,有三個層次提供加密保護MITM的:

    • 無,這將已知關鍵== 0,因此,如果竊聽者捕獲在配對過程中所有的數據包,他可以按照你的加密連接。
    • 低MITM保護,這是當你使用配對的用戶輸入通行鑰,與關鍵< 1.000.000。這裏竊聽者只需要嘗試一百萬個密鑰。
    • 使用帶外密鑰的高級MITM保護。這將爲您的加密提供完整的128位強度,即使捕捉整個配對過程,竊聽者也需要知道跟隨對話的關鍵。由於BLE中沒有密鑰交換方法(至少至少),這裏最薄弱的部分將是密鑰分發,但這與在應用程序級別具有額外的加密層時會出現同樣的問題。
  2. 這是實現相關。您的設備無需綁定,即與主持人建立永久關係。如果設備沒有綁定,則沒有狀態告訴先前的連接(交換數據除外,但是應用程序域,而不是BLE堆棧)。如果設備未綁定,則在下次連接時需要再次配對以交換受保護的數據。如果設備已綁定,則可以繼續進行加密連接,而無需應用程序/用戶交互,具有與之前相同的安全級別。對於一次性連接設備,綁定沒有意義,因此您可以實現無狀態實現,而不會限制連接設備的數量。對於多次連接,您還可以實現無狀態實現,具體取決於您如何分配/存儲密鑰,然後獨立於BLE。雖然這裏提供的不同選項取決於您使用的器件/ BLE堆棧實現,但該規範允許所有這些。

  3. 如果債券,從而交換長期密鑰等,這些都可以,取決於你建立的BLE實現,可以存儲你喜歡的。

  4. 正如我2.下所述,可以建立不貼合一個安全(加密)連接。下一次他們想要建立安全連接時,設備需要再次配對。如果你不想因爲某種原因而不能配對,那麼你只能進行明文通信。

+0

嗨@Pappnese,您的觀點與我們發現自己的觀點相符。目前,我們已經着手決定在BT協議棧之上添加自己的加密層,然後去尋找非綁定BLE通信協議。 感謝您的回答。 – Frank

+0

謝謝,這是非常豐富的。只是爲了澄清:在LE/Smart中,沒有相當於藍牙安全的簡單配對,它使用Diffie-Hellman交換來避免被動的關鍵竊聽? – lxgr

+0

目前還不是,但我聽說過它會在4.2規範中。 – oyhovd

2

我會試穿這個。

1)我對配對過程的理解是一樣的。如果數據足夠敏感,我會在我的應用程序中添加一個獨立的我自己的加密層...

2)對於連接,BLE協議在同一時間僅限每個設備一個主機,即使在該連接沒有綁定/配對。單個設備同時建立與多個主機的連接的唯一方法是該設備以某種方式「假裝」爲多個設備。這是否可以完成將取決於硬件,它絕對不是使用設備的標準方法之一。即使你可以欺騙硬件來做到這一點,你也可能遇到一些不可避免的問題,例如(幾乎)重疊的連接間隔的發生,這可能會導致你丟失數據並最終建立連接。

設備與多個主機通信的另一種方式是定期斷開連接並讓另一個主機建立連接。 AFAIK,這項技術沒有特別的協議支持,所以除了可能使用定向廣告之外,您可能無法很好地控制接下來哪個主機連接以及何時連接。

參見4.1.2節第1卷中,「Core_V4.0」藍牙規範的一部分(例如從這裏https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737

3)最有可能的是,細節將通過供應商而異,但上面提到的限制。

4)你可以建立無粘合/配對連接。這種連接將允許通信,但它將是沒有任何安全性的明文。 AFAICS,唯一的方法就是在應用程序級別使用您自己的數據保護。

+0

Hi @jelle,謝謝你的回答。我擔心我有點不清楚。任何時候只有一個設備可以連接,但BLE主機應該能夠與任何可能想要與之通話的客戶端安全地進行通信。 我同意我們將需要額外的加密層...... – Frank

0

我假定CC2450設備使用TI堆棧。有關CC2540堆棧行爲的良好文檔在CC2540 Development Kit User Guide中。這可能是從bluetooth.org

  1. 反對MITM的配對過程potects使用的6位引腳4.0規格之後最好的文檔 - 有對PIN輸入30秒的窗口。

  2. 的TI堆棧限制配對的設備的數量到8左右。這是由於重新建立連接所需的CPU和加密性能/資源。

  3. 移開BT設備上的加密密鑰是安全風險。總的來說,密鑰管理是所有加密的關鍵所在。

  4. 你將不會有沒有綁定的加密特徵讀/寫。請參閱TI用戶指南的4.6.1 - 它符合藍牙4.0規範。

+1

(1) - 6位數字引腳無法防止MITM - 請參閱https://lacklustre.net/bluetooth/Ryan_Bluetooth_Low_Energy_USENIX_WOOT.pdf –