2017-02-17 773 views
-1

我們正在設計一個通過BLE進行通信的小型硬件設備(稱爲「冰球」),以及iOS的Android應用程序與之通話。我們有一個應用程序(用C#/ Xamarin編寫)連接到冰球,它們正在連接和發送數據。BLE(低功耗藍牙)配對和綁定

根據this web site,當第一次進行藍牙連接時,兩個設備「配對」,這就意味着它們交換安全信息。

問題1:我的理解是,我的理解是安全信息的交換是自動發生的,在我的代碼中沒有任何事情可以使它發生?

問題2:我保證通信(在包括密鑰在內的安全信息的初始交換之後)將被加密嗎?

問題3a:在Android設備上,如何查詢連接以找出兩個BLE設備達成一致的安全功能?

問題3B:同3A但iOS裝置

上的冰球沒有顯示說話的(幾個LED和按鈕),所以不能顯示用於接合的PIN。該計劃是讓用戶在移動應用程序中啓動綁定,通過BLE連接發送一些命令;作爲迴應,冰球將以某種模式閃爍其燈並等待用戶按下按鈕。如果在某個超時時間內按下按鈕,則應該進行粘接。

問題4:爲了保持BLE連接儘可能安全,綁定的「最佳實踐」是什麼?

+0

可能最好在[信息安全](http://security.stackexchange.com)中提出。 – zaph

+0

除非您請求加密,否則數據未加密。在iOS上訪問加密屬性將觸發一個配對對話框,要求用戶輸入PIN碼。 – Paulw11

回答

1

1)BLE安全性是一件複雜的事情,如果您不是這方面的專家,最好確保您構建應用程序的堆棧正在爲您執行此操作。在Android上(也是在iOS上,我想)內置堆棧會在你啓動它之後立即爲你做配對,但是在你自定義的「冰球」你必須自己確保 - 或者實現一個正確執行此操作的藍牙堆棧(推薦)。 2)如果實施是正確的,則確保加密,是的。 3)我不能詳細地告訴你,但是當你啓動配對時,應該有來自藍牙堆棧的響應;也許在返回參數中,你可以找到這些信息(但我不知道這一點,它強烈依賴於你使用的API)。 4)如果除了一個按鈕(可以看作是/否選項,其中「是」是按下按鈕而「否」不按下按鈕),如果冰球沒有顯示和沒有輸入可能性,你配對的可能性非常有限。表示爲I/O功能,將其定義爲「NoInputNoOutput」(請參閱​​CoreSpec v4.2,第3卷,H部分,第2.3.2章),因此它總是會導致未經身份驗證的連接(請參閱表7 CoreSpec v4.2,第3卷,C部分,第5.2.2.6章)。這並不意味着連接沒有加密(實際上是這樣),但是您沒有針對Man-in-the-Middle attacks的保護。

檢查冰球上的按鈕是否被按下可能是一個額外的安全措施,但請注意,如果他/她想與您的應用配對,攻擊者可以僞造「按鈕按下」消息。

+0

Thanks #Nebr,你有沒有檢查過security.stackexchange.com?我在那裏發佈了一些後續問題(在#zaph的評論之後),但我不確定很多人是該網站的成員 –