我有與自定義藍牙LE設備進行通信的要求。的通信需要是確保藍牙LE消息的安全
- 安全(純文本不能被讀取)
- 不容易受到重放攻擊包含在每個消息20或22個字節到藍牙LE限制(或電話API實現限制)
信任藍牙LE的本地加密單獨似乎是在此基礎上選擇不當:
https://github.com/mikeryan/crackle/
那麼我們來實現我們自己的加密。在沒有消息大小限制的正常客戶端/服務器通信(例如TCP)中,具有預共享私鑰的CBC模式下的AES-128可能是一個不錯的選擇。然而,隨着藍牙LE
- 有沒有足夠的空間來與每個特徵讀取發送初始化向量/寫
- 這似乎很容易出錯,以保持基於最後的最後一塊軌道上改變個人遊消息接收/傳輸,給定多個特性正在播出等。
我錯過了其他方式使藍牙LE安全嗎?
如果可以識別數據包(序列號),那麼您可以使用CTR模式加密並從唯一標識符派生IV。這有點奇怪,你既有「沒有封裝大小限制」,也沒有足夠的空間來傳輸初始化向量「。 – 2014-09-23 15:49:39
@owlstead謝謝你的建議。爲了清晰起見,我編輯了這個問題。問題我發現任何一種順序都是藍牙設備正在廣播特性,客戶端(電話)完全有可能無法接收某些廣播,因此失去了序列的跟蹤。 – NickH 2014-09-23 15:54:34
你看過中間保護的人嗎? LE被設計爲輕量級的,並且由Sig指定的加密反映了這一點。 – 2014-10-13 07:33:09