2014-09-23 78 views
1

我有與自定義藍牙LE設備進行通信的要求。的通信需要是確保藍牙LE消息的安全

  • 安全(純文本不能被讀取)
  • 不容易受到重放攻擊包含在每個消息20或22個字節到藍牙LE限制(或電話API實現限制)

信任藍牙LE的本地加密單獨似乎是在此基礎上選擇不當:

https://github.com/mikeryan/crackle/

那麼我們來實現我們自己的加密。在沒有消息大小限制的正常客戶端/服務器通信(例如TCP)中,具有預共享私鑰的CBC模式下的AES-128可能是一個不錯的選擇。然而,隨着藍牙LE

  • 有沒有足夠的空間來與每個特徵讀取發送初始化向量/寫
  • 這似乎很容易出錯,以保持基於最後的最後一塊軌道上改變個人遊消息接收/傳輸,給定多個特性正在播出等。

我錯過了其他方式使藍牙LE安全嗎?

+0

如果可以識別數據包(序列號),那麼您可以使用CTR模式加密並從唯一標識符派生IV。這有點奇怪,你既有「沒有封裝大小限制」,也沒有足夠的空間來傳輸初始化向量「。 – 2014-09-23 15:49:39

+0

@owlstead謝謝你的建議。爲了清晰起見,我編輯了這個問題。問題我發現任何一種順序都是藍牙設備正在廣播特性,客戶端(電話)完全有可能無法接收某些廣播,因此失去了序列的跟蹤。 – NickH 2014-09-23 15:54:34

+1

你看過中間保護的人嗎? LE被設計爲輕量級的,並且由Sig指定的加密反映了這一點。 – 2014-10-13 07:33:09

回答

0

...將數據分段爲20個字節,並對存儲在GATT中的BLE特性進行多次寫入。您需要制定一個協議來重新組合碎片數據。

要打擊重播攻擊,您可以在每次新連接之前生成新的挑戰請求並通過廣告進行播報。它將被中央拾取並返回加密到外設。確保您爲每個新連接生成新的挑戰。

Bluetooth LE配對(不包括OOB)不能從安全點信任。需要在配對之上的固件應用級別上對數據進行加密(使用Just Work或更好)。使用質詢請求實施對稱加密(AES128或256)是一種很好的啓動方式。

最後,我會建議挖掘BLE OOB(帶外)配對,以允許交換中心和外圍設備之間的對稱配對密鑰。這也是確保溝通的一個體面的替代方案。有兩種可用的NFC實現。