セキュリティ・ネットワーク

BLEのセキュリティについて

この記事は約9分で読めます。
スポンサーリンク

こんにちは、まっさん(@Tera_Msaki)です。

この記事はSIベンダーで28年あまりシステムエンジニアとして、いろいろなシステムを開発してきた経験をもとにセキュリティについてまとめたものです。

IT分野における個の特定として用いられるMACアドレス。
MACアドレスは、OSI7階層モデルのデータリンク層で扱われるネットワークインタフェースを
識別するために使用する符号です。
無線LANといえばWi-Fiが有名ですが、
BluetoothもWi-Fiと同じ無線通信技術のひとつであり、
MACアドレスを使用して通信しています。

Andoridアプリの開発でBLE(Bluetooth Low Energy)に触れる機会がありましたで、
BLEのセキュリティについて、お話したいと思います。

・BLE(Bluetooth LE)の通信仕様について知りたい人
・Bluetoothのセキュリティについて知りたい人
・SwitchBot温湿度計を使ったアプリを開発したい人

この記事を読めば、 Bluetooth(BLE)の仕様とセキュリティについて分かります。

BLE(Bluetooth Low Energy)

近距離無線通信技術Bluetoothの拡張仕様で、極低電力で通信が可能なことが特徴です。
この特徴を生かして、電源の小型化、デバイスの小型化が進み、
まさにIoTデバイスの中核をなす技術といえます。
従来のBluetoothのことをBluetooth Classic、
Bluetooth LEはBLEに対応していることを示すブランド名(Bluetooth Smart)と呼び、
区別しています。

BLE通信

BLE通信では、データを受ける側(PCやスマホやゲートウェイ機器など)をセントラルといい、
データを送る側(センサー機器)をペリフェラルと定義しています。
ペリフェラルは一定周期でBLE接続待ちの状態(アドバタイズ)を送り、
それを受け取ったセントラルはペリフェラルとBLE接続(GATT通信)を行います。
セントラルとペリフェラル間で機器を識別するために用いられるのがMACアドレスです。

アドバタイズ

アドバタイズはブロードキャスト通信で不特定多数の相手にデータを送信する一方通行の通信方式です。
つまり、機器を識別するために使用される符号のMACアドレスを送り続けています。
また、アドバタイズにペリフェラルの名前や属性データを含めて発信することが出来ます。
セントラルはスキャンすることでアドバタイズを受信、
周囲にどんなペリフェラルがいるかを知ることができます。
さらにセントラルはアドバタイズを受信したとき、
受信した電波の強さ(RSSI:受信電波強度)から
ペリフェラルまでの距離を把握します。

ペリフェラルの名前や属性データ

開発したAndoroidアプリのGPS位置情報中継アプリ(MLS)の検索結果の画面です。
アドバタイズのデータのうち、MACアドレス、機器名、タイプを表示しています。

機器名は、匿名(ANONYMOUS)になってますが、
機器名がセットされているケースもあります。
2行目のデータが
SwitchBot温湿度計のアドバタイズです。
SwitchBot温湿度計の場合、属性データに温度と湿度が含まれています。
つまり、GATT通信しなくてもSwitchBot温湿度計がおかれている場所の温度と湿度がわかります。
ただし、データパケットはバイナリデータで、
どこに情報が格納されている把握する必要があります。

SwitchBot温湿度計のデータパケットのフォーマットです(タイプが16hのデータパケット)。

SwitchBot温湿度計は温度と湿度をBluetooth接続でインタフェースできるスマート家電です。

GATT通信

セントラルはペリフェラルと1対1の通信接続をしたい相手を選び、
接続要求を送信、セントラルとペリフェラルでデータリンクを確立します。
この1対1の接続通信のことをGATT通信と呼びます。
GATT通信ではサービスとキャラクタリスティックという概念でデータ交換します。
サービスはペリフェラルがもつ機能、
キャラクタリスティックはサービスを利用するための手順でセントラルに公開して共有するデータ構造です。
サービスやキャラクタリスティックにはUUIDという16バイトの一意な番号がつけられ、
セントラル機器はUUIDを指定して、キャラクタリスティックのデータにアクセスします。
UUIDについては、Bluetoothの推進団体が標準的なGATT通信のプロファイルを公開しています。

キャラクタリスティック

キャラクタリスティックには「Read」「Write」「Notify」の属性がり、
セントラルからはペリフェラルに対して、
属性に応じた「Read」「Write」を使用して、データの読み書きを行います。
「Notify」はペリフェラルからセントラルに変更を通知し、
セントラルはデータを読み込みます。

BLEのセキュリティ対策

アドバタイズでMACアドレスをブロードキャスト通信していることから、
スキャンすることで機器のMACアドレスを収集することが可能で、
更にはGATT通信で機器のもつサービス、キャラクタリスティックを使用して、通信が可能です。
BLEのセキュリティ対策としては、MACアドレスのプライベート化、
Passkey Entry方式やOut of Band方式によるペアリング(またはボンディング)があります。

MACアドレスのプライベート化

実際のMACアドレスではなく、ランダムで生成したMACアドレスを使い通信を行います。
通信で使用するアドレスのことをPrivate MACと呼びます。
Wi-Fiにおいては、Private MACによるセキュリティ対策が主流で、
iOS14、Android10以降はデフォルトで有効、
Windows10ではデフォルトでは無効ですが、設定で有効にできます。
ただ、Private MACの有効化による弊害があり、
MACアドレスが動的に変化することで、無線LANアクセスポイント、位置情報の特定、
認証サーバなどMACアドレスを利用した機能に影響があり、対策が必要になります。

ペアリング

ペアリングとは、セントラルとペリフェラル間のデータ暗号化のための鍵の交換のことです。
その際に、正しい相手かを認証をするために、双方で番号を入れるなどチェックをします。
ボンディングは、ペアリングで交換した鍵を保存し、
次回以降の通信では保存した鍵を使用して通信を行います。

Passkey Entry

4~6桁の数字を入力するなどで認証をする方式です。
実際にはPasskeyは固定することが多く、ブルートフォースアタックに対して脆弱です。

Out of Band(OOB)

NFC等の他の手段で鍵を交換する方式です。
現在のところ、脆弱性は見つかっておらず、有効なセキュリティ対策です。

コラム
キャリアの基地局(またはWi-Fiスポット)において、電波の強さを測るアクセスポイントが3点以上あれば、各点の受信電波強度から位置を特定することが可能となり、これがスマホやPCの位置を把握する仕組みとなっています。BLEにおいても、位置を把握する仕組みの実用化例が存在します。

今回はここまでです。

次回は、Andoridアプリの開発をしていますので、
それを題材に「Androidのセキュリティについて」を紹介してみたいと思います。

開発したAndroidアプリのご紹介

GPS位置情報中継アプリ MLS(Mock Location Service)

Bluetooth LE搭載のGPSロガーにBluetooth接続し、
GPSロガーの位置情報を疑似ロケーション(MockLocation)としてスマホの位置情報に中継するアプリです。

アプリで対応している機器です。
Bluetooth接続でGPS位置情報をインタフェースできるGPSロガーです。

ブログランキング・にほんブログ村へ

コメント欄

タイトルとURLをコピーしました