2016-07-13 34 views
0

BLE接続の暗号化手順では、マスタとスレーブが3方向ハンドシェイクを実行して暗号化を検証します。私はこの握手の次の図の赤で示されたメッセージLL_START_ENC_RSPすなわち、スレーブはこのハンドシェイクの最後の部分を送信しない場合に直面しています:BLE暗号化処理中にスレーブがLL_START_ENC_RSPを送信しない原因は何ですか?

enter image description here

このため、指定された理由はあります発生する ?指定すると、実装固有ではない理由が意味されます。

BLEコア仕様4.2は、これを告げる:

スレーブのリンク層はLL_START_ENC_RSP PDUを受信すると、それは はLL_START_ENC_RSP PDUを送信しなければなりません。このパケットは、 で暗号化されて送信されます。

しかし、これはスレーブがこのパケットを送信しない条件を指定しません。

この時点で、スレーブは、現在のマスターに関連付けられているロングターム・キーを持っていると思う可能性がありますか?そうでない場合、スレーブは3ウェイ・ハンドシェイクを開始しなかったでしょうか? )、LTKが正しくないため復号化に失敗しますか?それが起こった場合、何もせずに切断メッセージが表示されませんか?

私はBLEにはかなり新しいので、この問題を分析したり解釈したりする方法がわからないので、どんな助けでも大歓迎です。メッセージの有無は、BLEスニファの助けを借りて観察されています。

注:イメージ1は、本の図7-26を再現したものです。Bluetooth Low Energy Robin Heydonの開発者向けハンドブック。

+0

あなたのBluetoothスタック/ハードウェアとは何ですか? – Emil

+0

これは私が共有できない情報(会社の方針)です。そのため、私はインプリメンテーションにとらわれない理由を求めていました。私は答えが始まりました。マスターからの最初のLL_START_ENC_RSPがスレーブによって解読できないようですが、その理由はあいまいです。 – Tim

答えて

1

仕様によると、3番目のメッセージが常に送信されます。送信されない場合は、実装にバグがあります。

スレーブのLTKが間違っていると、スレーブはマスタからのLL_START_ENC_RSPを受け入れません。これが起こると、スレーブがそのパケットを承認しないため、監視タイムアウト後にリンクが破棄されます。

スニファがパケットを正常に復号化するためには、LTKを知る必要があることに注意してください。 Nordicのスニッファプログラムは、スニッファがペアリングプロセス中に実行された場合にLTKを捕捉します。

関連する問題