【サルでもわかるBLE入門】(8) ペアリング
こんにちは。ムセンコネクト三浦です。
今回も「サルでもわかるBLE入門」と銘打ってお話していこうと思います。BLE初心者の方でも理解をしてもらえるように、できるだけわかりやすく解説していきます。
今回は第8回目、BLEの『ペアリング』についてのお話しです。
わかりやすく解説する為に、BLE初心者にはあまり必要ない例外的な内容は省略して説明するようにしています。
また、あえてアバウトに書いている部分もありますのでご承知おきください。
(厳密な技術的内容を知りたいような方は別の解説書を参考にしてください。)
人によって捉え方がマチマチ? ペアリングとは?
「ペアリング」という言葉は、Bluetoothを使ったことのある人なら聞き覚えのある言葉じゃないかと思います。
ペアリングとは、「通信相手を覚えさせてペアにすること」を言います。
例えばBluetoothマウスを買ってきた後、パソコンにマウスを覚えさせるこんな操作が「ペアリング」です。
- Bluetoothマウスの裏面にあるボタンを押して、マウスをペアリング設定モードにする。
- パソコンのBluetooth設定画面から、周囲のデバイスを検索する。
- Bluetoothマウス選択してパソコンにBluetoothマウスを登録する。
しかし、実はBluetoothの歴史的な背景や、Bluetoothの技術的な用語の分かりづらさも影響して、「ペアリング」の言葉の使い方は人によってマチマチになっています。
私もお客さんと話をする時には、相手が「ペアリング」という言葉をどういう意味で使っているのか読み解くのに気を使って話をします。
ある人は「BLEで接続すること」をペアリングという言葉で表現していましたし、また別のある人は「アプリがペリフェラルデバイスのデバイス名やBDアドレスを覚えておく機能」という意味合いでペアリングという言葉を用いていました。
このように人によってマチマチな理解をされがちなペアリングですが、技術的な観点で話をする場合には、「通信相手を覚えさせてペアにすること」に加えてもう少し深く理解をする必要があります。
技術的な要素を踏まえると、ペアリングとは「通信相手を覚えさせてお互いにしかわからない共通の暗号化情報を保持しておくこと。そして通信内容を暗号化して相互にセキュアな通信をすること」になります。
注意事項
BLEの技術用語で言えば「ペアリング」ではなく、「ボンディング」という言葉を使う方が本当は適切です。
ですが、ここでは多くの人が知っている「ペアリング」という言葉で話を進めようと思います。前述のBluetoothの歴史的な背景もあって、スマートフォンやパソコンのBluetooth設定画面でも「ペアリング」という言葉が使われています。
ペアリングの目的は通信内容を暗号化すること
ペアリングをする目的は大きく2つあり、
- お互いの通信相手を覚えること
- お互いにしかわからないように通信内容を暗号化すること
になります。
逆に言うと、ペアリングを実施しないBLE通信は、通信内容が平文(暗号化されていない状態)でやり取りされます。ですので、BLE電波を受信できる専用装置を利用すると、比較的簡単に通信内容を傍受することができてしまいます。
スマートロックなどのセキュリティ性が高い製品では通信内容が傍受されてしまっては困りますので、ペアリングを利用して暗号化したり、もしくは上位のアプリケーション層で独自に暗号化をかけて対策するのが一般的です。
ペアリングによる暗号化情報の交換方法は以下の2つがあります。
- LE Legacy Pairing:シンプルな暗号化情報の交換方法です。
- LE Secure Connections(LESC):Bluetooth4.2で追加された、よりセキュアな暗号化情報の交換方法です。楕円曲線暗号という暗号化の仕組みを利用しています。
※LE Legacy Pairingではペアリングしている瞬間の無線通信内容を傍受された場合に暗号化情報が流出してしまう脆弱性が指摘されています。
ペアリングの処理
ペアリングは以下の流れで行われます。
①セントラルからペアリング要求を送信する
セントラルとペリフェラル間でBLE接続が確立した後、セントラル側がペアリング要求を送信します。
ペリフェラル側がキャラクタリスティックに鍵をかけておくことで、セントラル側からペアリング要求を送信するように仕向けることもできます。
②ペリフェラルがペアリング応答を返す
ペリフェラル側はセントラルからのペアリング要求に答える形でペアリング応答を返します。
③認証処理が行われる
次にオーセンティケーションという認証処理が行われます。
認証手法には以下のようなものがあり、ペアリング要求/ペアリング応答の情報から使用する認証手法が決定されます。
・Just Works:ユーザー操作無しに自動的に接続相手を認証する簡易な認証です。
※機器によっては「ペアリングをしますか?」とユーザーにYES操作を求める表示が出るものもあります。
・Passkey Entry:パスキーを入力することで認証します。スマートフォン(iOS、Androidともに)のように表示と入力の機能がある機器で利用します。間違ったパスキーを入力すると認証に失敗します。
・Numeric comparison:お互いに認証番号を表示してペアリングしようとしている相手が意図した相手であるか確認します。
・Out Of Band:NFC(機器をかざして使うような超近距離無線)など、Bluetooth以外の通信方法を利用して認証します。
④暗号化情報を交換する
お互いの認証が成功した後、暗号化情報の交換が行われます。暗号化情報は不揮発メモリに保存され、次回同じ相手と通信する際にも利用されます。
この暗号化情報のことを「ペアリング情報」と呼びます。
⑤暗号化された通信を行う
暗号化情報が交換された後は暗号化情報に基づいて、データ通信の内容が暗号化されます。
なお、再接続時にお互いが暗号化情報を保持していれば、ペアリング済みデバイスとして①~④の処理は不要で、すぐに暗号化された通信を行うことができます。
セントラル側のスマートフォンの表示
ちなみに、ペアリング時にセントラル側のスマートフォンでは以下のように表示されます。(iPhone8の場合)
- Just Worksの時
- Passkey Entryの時
- Numeric comparisonの時
ペアリング利用時の注意点
ペアリングは便利な機能ですが、BLE通信の「誰とでもカンタンに通信できる」という特徴とは相反するトレードオフな関係でもあります。
ペアリングは技術的な知識を持たない一般ユーザーにとってはわかりづらいものです。その為、ペアリング機能を持ったデバイスはユーザーのオペレーション上のトラブルが多くなってしまいます。
何らかの原因でペアリング情報が消えてしまった場合もトラブルになります。例えば、一方がペアリング情報を保持しており、もう一方がペアリング情報が消えてしまった場合に、BLE通信ができなくなってしまうトラブルが起きがちです。(その場合、復旧させるためにはユーザーによってペアリング情報を削除する操作が必要です。)
また、スマートフォンやパソコン側のペアリング処理に起因する不具合も少なくありません。OSバージョンや機種などによってもその挙動は変わってきますが、相性の悪い機種では、ペアリングを行うと正常な通信が出来なくなるような場合もあります。
以前はそのようなトラブルがあまりにも多く、過去にはペアリング機能を搭載したコンシューマ向け製品で接続性が悪いこと、通信エラーが多いことを理由に製品レビューが炎上してしまった事例もあります。
あえてペアリングなし、かつ、上位アプリケーションで暗号化して通信する方が、トラブルを回避できることがありますので、BLE製品を開発する場合は安易にペアリング機能を導入せず、このようなリスクを理解した上でペアリングを利用するかどうか判断する必要があります。
BLE通信のセキュリティ対策については下記の記事も参考にしてください。
今回はペアリングについてお話しました。
次回もBLEの技術要素について深堀りしてお話したいと思います。