2021.07.22
【Webマガジン Vol.41- July., 2021】Column: Bluetooth Mesh通信を効率的に解析するには
FRONTLINEWEBマガジン
<目次>
・はじめに
・Bluetooth Meshの構成
・Bluetooth Mesh通信の特徴
・Bluetooth Meshの暗号化キー
・Bluetooth Mesh通信を把握するためのポイント
・終わりに
はじめに
Bluetooth Meshは、2017年に仕様が策定されたBluetooth Low Energy上で動作するプロファイルです。
Bluetooth Low Energy機器が1対1だけではなく多対多で通信することで、広い範囲をカバー可能なメッシュ型ネットワークを構築して多数のデバイスを管理できます。
Bluetooth Meshの解析でポイントとなるのが暗号化されたデータの復号化とMesh通信を把握することになりますが、Bluetoothプロトコルアナライザを使用することで例えばMesh通信においてデータが届かない・データが届くまで時間がかかるなどBluetooth Meshの問題を効率的に解析することが可能になります。
Bluetooth Meshの構成
Bluetooth Meshを構成する各デバイスの役割は以下の通りです。
- Node (ノード) : Meshのネットワークに参加している(プロビジョニングされた)デバイス
- Elements (エレメント) : ノードが持っている照明や空調などの制御機器(例:個別にON/OFFされる3つの電球を備えた照明
- Unprovisioned Devices: ネットワークに参加していない(プロビジョニングされていない)デバイス
- Relay Node (リレーノード): TTL(Time To Live)設定に従って、受信したメッセージを指定された回数で再送信します。
- Proxy Node (プロキシノード): Bluetooth Mesh機能を持たないデバイスがメッシュネットワーク内のノードと通信します。プロキシプロトコルとしてGATT (Generic ATTribute profile) を介して通信されます。
-
-
- Time To Live (TTL): メッセージが中継される回数を制御するために使用され、中継されると値が-1されます。 TTLの値が0の場合、メッセージは再ブロードキャストされません。
-
- Low Power Nodes (ローパワーノード): 一部のノードはスリープモードに移行することで消費電力を抑えますが、定期的にメッセージを管理する必要があり、フレンドノードと連携して動作します。
- Friend Node (フレンドノード): Low Power NodeがオフのときにLow Power Node宛てのメッセージを保存します。
Bluetooth Mesh通信の特長
Ethernetなどのルーターを使用するネットワークでは、すべてのメッセージをルーターに渡しますが、 ルーターに障害が発生してしまうとネットワークに障害が発生してしまいます。
一方、Bluetooth Meshネットワークは、メッセージを配信するためにマネージドフラッディングで展開しますので、メッセージは特定のデバイスにルーティングされるのではなく、ブロードキャストされます。すべてのノードは、ネットワーク範囲内のメッセージを受信します。ネットワークには受信したメッセージを中継するノードも存在します。
受信したメッセージを中継するリレーノードは、メッセージを再ブロードキャストすることで他のノードがメッセージを受信するので、元のブロードキャストメッセージはさらに遠くまで送信されます。
フラッディングではメッセージが多くのノードから受信されますので、マネージドフラッディングによって効率的な転送を実現しています。
マネージドフラッディングでは具体的に以下の処理を行います。
- ブロードキャストメッセージにはTTLフィールドがあり、メッセージが際限なく再ブロードキャストされないようにします。
- ノードにはメッセージキャッシュがあり、受信したメッセージが以前に処理されている場合は破棄します。
- サブネットでネットワークを分割することが可能です。セキュリティと消費電力を押さえるため、メッセージが目的のサブネットを超えて中継(再ブロードキャスト)されるのを防ぎます。
- ハートビートメッセージを使用して、ノードは送信者から離れているホップ数を判別しTTLを最適化します。
Bluetooth Meshの暗号化キー
Bluetooth Mesh上でやりとりするデータは、セキュリティ性を高めるため暗号化されています。解析のためには、Bluetoothプロトコルアナライザに暗号化キーを入力することでデータを見ることが可能です。
Bluetooth Meshでは、以下の3種類の暗号化キーがあります。
- Network Key (NetKey):各ネットワークごとの暗号化キーです。各ノードはネットワークキーを使用することでネットワーク上のデータを復号化することが可能になります
- Application Key (AppKey):特定のアプリケーションで使用される暗号化キーです。Bluetooth Mesh全体では多くのAppKeyが存在する可能性があります(例えば、照明のスイッチと電球は照明用のAppKeyを使用しますが、空調用システムでは別のAppKeyを使用する、といったケース)
- Device Key (DevKey):デバイスキーはコンフィグレーションで使用されます。アプリケーションキーで暗号化されているデータはアプリケーションキー(およびネットワークキー)があれば復号化可能です。
Bluetooth Mesh通信を把握するためのポイント
Bluetooth Meshでのネットワークでは、あるデバイスから別のデバイスへリレーノードを中継してデータが送られるケースがあるため、1対1のBluetooth Low Energy通信とは違った観点で通信を把握する必要があります。
以下に、Bluetooth Mesh通信を把握するためのポイントを記載します。
Bluetooth Mesh アドレス
Bluetooth MeshではMeshプロトコル上で独自に使用するSource/Distination addressがあります。
Bluetoothプロトコルアナライザでは、Bluetooth Meshのパケットが時系列で見ることができ、各パケットのSource/Distination Addressも見ることができるようになっています。
<通信イメージ>
また、Bluetooth Low Energyアドレス (Advertiser Address)も同時に表示することができますので、Bluetooth Meshのパケットが実際にどのデバイスから出ているかを確認可能です。
<通信イメージ>
TTL (Time To Live)
Bluetooth Meshパケットに含まれるTTLフィールドを、各パケットのSource/Distination Addressと並べて見ることができます。
任意のAddressでフィルタリングすることができますので、あるAddressで各パケットのTTLがどのように推移しているか確認することが可能です。
<通信イメージ>
終わりに
今回はBluetooth Mesh通信を効率的に解析するポイントとして、暗号化されたデータの復号化とBluetooth Mesh AddressとTTLを中心にしたデータの見方をご紹介しました。
Bluetoothプロトコルアナライザでは上記のポイント以外にもプロビジョニングのプロセスを確認したり各種メッセージのやりとりなど詳細を解析していくことが可能ですので、是非Bluetooth Meshの開発にご活用いただければ幸いです。
Bluetoothプロトコルアナライザに関するご質問やご要望等ございましたら、ページ下部のWEBマガジンお問い合わせフォームより、お気軽にお問い合わせください。