2016-07-24 12 views
0

私はAndroidデバイスとWindowsデバイスの間で、Bluetoothを下線通信チャネルとして使用するP2P通信アプリケーションを作成しています。私はそれに応じてセキュリティの意思決定を行うために、各セッション(すなわち、2.x、4.0,4.1,4.2など)で使用されているBluetoothプロトコルのバージョンをチェックしたいと思います(2.xはあまり安全ではありません。セキュア、4.1などが最も安全です)。特定のセッションのBluetoothバージョンを確認してください

どのようにそれがWindowsやAndroidのいずれかで、APIを使用して達成することができますか?私は、各セッションとセッションについて確認する必要があります。私の理解では、Bluetoothのバージョンは両者の最小限の能力であると判断されるからです。

答えて

0

は2.1 SSP、例えば後にこの

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
Set<BluetoothDevice> Devices = mBluetoothAdapter.getBondedDevices(); 

List<String> s = new ArrayList<String>(); 
for(BluetoothDevice bt : pairedDevices) 
    s.add(bt.getVersion()); 
+1

バック2009 – greenmind

1

まず、Bluetoothバージョンを試してみてください2.1,3.0,4.xは、基本的に同じ安全です(しかし、あなたがLEのセキュリティについて話している場合は別の話です)。実際にLMPのバージョンを判断する必要はありません。

残念ながらAndroidのは、この機能は、リモートLMPバージョンを取得することができ、より低いレベル(Bluedroid)「BTM_ReadRemoteVersion」、アプリケーションへのリモートバージョンをエクスポートしません。

あなたの理解は、部分的な権利である「Bluetoothのバージョンは、両当事者のための最低限の能力として決定される。」、両方のホストとコントローラの能力は、それらの最小バージョンで定義されました。

+0

おかげで、私はBluetoothDeviceクラスのGETVERSION()メソッドが表示されていない、とAOSPのコードでそれのための最新の言及は、Androidドーナツ(1.6)内にあるように見えます! LEを脇に置いておくと、Bluetooth 2.xはE0暗号化を使用していることが判明しました。これは安全でないと判明しましたが、Bluetooth 4.1以降はAES-CCMを使用しています。それは4.1を2.xよりも安全にしませんか? – greenmind

+1

私はセキュリティ専門家ではありませんが、AES-CCM暗号化はより安全です.E0はE0が安全でないことを意味しません。 LEセキュアコネクションだけがAES-CCM方式を使用するため、BESを選択する必要があります。LEにAES-CCMを導入する理由の1つは、LEがBT4.0で安全でないことです。セキュリティモードを可能な限り高く(例えば4)設定する方がよい。 –

0

私はアンドロイドlogcatを使用してバージョンを確認する方法を発見。

bt_btif_dm:リモートバージョン情報[AA:BB:CC:DD:EE:FF]:8、2、100

最初の桁(BT接続時には、私はこの行を探してください8)は、コアBluetoothバージョンに対応するLMPバージョンです。 AndroidのJBでアプリを起動すると、(自身のログを除く)もうlogcatを読み取ることができないので(この場合、8は、Bluetooth 4.2を意味する)

これは、完全に私の問題を解決していません。しかし、これは良いスタートです...私は他の何かを見つける場合更新されます。

関連する問題