2017-02-17 92 views
-1

私たちは、BLEを介して通信する小さなハードウェアデバイス(「パック」と呼んでいます)と、Android用アプリケーション& iOSと対話しています。私たちはパックに接続しているアプリ(C#/ Xamarinで書かれています)を持っていて、彼らはデータを接続したり送ったりしています。BLE(Bluetooth Low Energy)ペアリングとボンディング

this web siteによれば、最初にBluetooth接続が行われると、セキュリティ情報を交換するという意味の2つのデバイスがペアになります。

質問1:セキュリティ情報の交換が自動的に行われることを私は理解していますが、コードを実行するためにコード内で行う必要はありません。

質問2:(キーを含むセキュリティ情報の初期交換後の)通信が暗号化されることを保証していますか?

質問3a:Androidデバイスで、2つのBLEデバイスが合意したセキュリティ機能を確認するために接続をクエリするにはどうすればよいですか?

質問3B:

3aと同じですが、iOSデバイス上のパックは話すために何も表示(LEDのカップルやボタンを)持っていないので、ボンディング用のPINを表示することはできません。ユーザーがモバイルアプリケーションでボンディングを開始し、BLE接続で何らかのコマンドを送信することを計画しています。これに応答して、パックは何らかのパターンでそのライトを点滅させ、ユーザがボタンを押すのを待つ。タイムアウト時間内にボタンが押されると、ボンディングが行われます。

質問4:BLE接続をできるだけ安全に保つために、ボンディングのベストプラクティスは何ですか?

+0

[情報セキュリティ](http://security.stackexchange.com)でおそらく最もよく尋ねられます。 – zaph

+0

暗号化を要求しない限り、データは暗号化されません。暗号化された属性にアクセスするiOSでは、ユーザーにPINを尋ねるペアリングダイアログが表示されます。 – Paulw11

答えて

1

1)BLEセキュリティは複雑な作業です。これについて専門家がいない場合は、アプリケーションを構築しているスタックがこれを実行していることを確認することをお勧めします。 Androidでは(そしてiOS上でも)組み込みのスタックはあなたが起動するとすぐにペアリングを行いますが、カスタム組み立てられた「パック」ではこれを確実にする必要があります。これを正しく行うBluetoothスタック(推奨)。

2)実装が正しい場合、暗号化が保証されます。はい。

3)これは詳しく説明できませんが、ペアリングを開始すると、Bluetoothスタックからの応答があるはずです。戻り値のパラメータでこの情報を見つけることができます(しかし、私はそれを知らず、使用しているAPIに強く依存しています)。

4)ボタンが表示されず、入力可能性がない場合([はい/いいえ]オプションと見なすことができますが、[はい]はボタンを押し、[いいえ]は押していません)ペアリングの可能性は非常に限られています。 I/O機能として表現すると、これは "NoInputNoOutput"(CoreSpec v4.2、Vol.3、Part H、第2.3.2章を参照)と定義されているため、認証されていない接続が常に発生します( CoreSpec v4.2、第3巻、第C部、第5.2.2.6節)。これは、接続が暗号化されていないことを意味するものではありませんが、Man-in-the-Middle attacksに対する保護はありません。

パックがパックされているかどうかを確認することは安全上の措置ですが、攻撃者はあなたのアプリとペア設定したい場合は「ボタンを押した」メッセージを偽造する可能性があります。

+0

Thanks #Nebr、security.stackexchange.comをチェックしてみませんか?私はそこに(#zaphのコメントの後に)投稿したいくつかの追加質問をしましたが、非常に多くの人がそのサイトのメンバーであるかどうかはわかりません –

関連する問題