こんにちは、まっさん(@Tera_Msaki)です。
この記事は SIベンダーで28年あまりシステムエンジニアとして、
いろいろなシステムを開発してきた経験をもとにセキュリティについてまとめたものです。
IT分野における個の特定として用いられるMACアドレス。
MACアドレスは、OSI7階層モデルのデータリンク層で扱われるネットワークインタフェースを識別するために使用する符号です。
無線LAN といえば Wi-Fi が有名ですが、BluetoothもWi-Fiと同じ無線通信技術のひとつであり、MACアドレスを使用して通信しています。
Andoridアプリの開発で BLE(Bluetooth Low Energy)に触れる機会がありましたで、BLEのセキュリティについて、お話したいと思います。
この記事を読めば、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アドレス、タイプを表示しています。
SwitchBot温湿度計の場合、アドバタイズの属性データに温度と湿度が含まれています。
つまり、GATT通信しなくてもSwitchBot温湿度計がおかれている場所の温度と湿度がわかります。
ただし、データパケットはバイナリデータで、どこに情報が格納されている把握する必要があります。
SwitchBot温湿度計のデータパケット
Bluetooth接続で温度と湿度をインタフェースできるスマート家電です
GATT通信
セントラルはペリフェラルと1対1の通信接続をしたい相手を選び、接続要求を送信、セントラルとペリフェラルでデータリンクを確立します。
この1対1の接続通信のことをGATT通信と呼びます。
GATT通信ではサービスとキャラクタリスティックという概念でデータ交換します。
サービスはペリフェラルがもつ機能、キャラクタリスティックはサービスを利用するための手順でセントラルに公開して共有するデータ構造です。
サービスやキャラクタリスティックにはUUIDと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等の他の手段で鍵を交換する方式です。
現在のところ、脆弱性は見つかっておらず、有効なセキュリティ対策です。
今回はここまでです。
誤字脱字、意味不明でわかりづらい、
もっと詳しく知りたいなどのご意見は、
このページの最後にあるコメントか、
こちらから、お願いいたします♪
ポチッとして頂けると、
次のコンテンツを作成する励みになります♪
参考になったら、💛をポッチとしてね♪
コメント欄