シャンティ・フーラスタッフからの情報です。
————————————————————————
少数の信号分析に適したアプリ - nRF Connect for Mobile
スマートフォンを用いて少数のBluetooth信号※を収集し、その中身を分析できるアプリは色々とあります。今回筆者が使用したのは、こちらのnRF Connect for Mobileです:
※本記事における「信号」とはLE規格のAdvertisingパケットを指します。
一般にこのBluetooth疑惑の調査にはBLEScannerがよく使われるようです。いっぽうこちらのnRF ConnectはBluetooth機器を開発している会社が出しているもので、解析の部分がしっかりしており、様々な信号の種類を見分けることができるのがメリットです。
このアプリの操作方法を簡単に紹介しておきます:
- アプリをインストールして起動するとスキャンが始まります。
- 停止したい場合は右上の STOP SCANNING をタップします。
- もう一度スキャンしたい場合、再度右上のSCANをタップします。
- スキャンはしばらく経つと自動で停止します。この停止するまでの時間を長くしたい場合は、左上の"三"→Settings→Scanner→Scanning Period で設定画面を呼び出せます。最大5分まで長くできます。
- 検出された信号はリストにどんどん溜まっていきます。一度消したい場合は、リストで"下に引っ張って更新"操作をすると、消去とスキャンが同時に行われます。
除外すべき信号例
それではこのアプリを使ってリストに表示される信号のうち、一般によく飛んでいるものを紹介していきます。
- 1.Apple製のデバイス (iPhoneなど)/ iBeacon
- 2.Microsoft 製のOSからの信号(WindowsPC など)
- 3.デバイス名のある信号
- 4.Manufacturer Specific Data から会社名が推測できるもの
- 5.新型コロナウイルス接触確認アプリ(COCOA)の信号
- 6."16-bit Service UUIDs" からサービスや会社名が推測できるもの
- 7."128-bit Service UUID" を持つもので、観測数が少ないもの
- 8.MACアドレスから会社名が推測できるもの
- 9.Apple製デバイスから出てくる謎の信号
1.Apple製のデバイス (iPhoneなど)/ iBeacon
これはiPhoneなどのApple製デバイスが常に発信している信号です。左上のアイコンがApple社のマークなので、わかりやすいですね。
例えば次のように、BluetoothをONにしたiPhoneの近くで出てきます。
これは一番多く飛んでいるといってもいい信号です。Apple社は、Continuityと呼ばれるデバイス間の垣根を取り払う機能や、失くしものの追跡に、このBluetoothLE信号をやたらめったら使っているようです。このような信号の多用において、2019年にプライバシー漏洩の懸念が指摘されています。
後述しますが、他にもApple製デバイスは、色々と謎の信号を発しています。なお、Androidスマートフォンからは、こうした信号は見られません。
また、同じAppleの名前が出てくる信号で、iBeaconという信号があります:
これはAppleが仕様を策定したというだけで、Apple製デバイスからだけ出るものではありません。これは第1回目で説明したように、来店クーポンの発行など色々なことに使われている「ビーコン」というものの一種です。
2.Microsoft 製のOSからの信号(WindowsPC など)
こちらはMicrosoft製のOSが載ったデバイスからの信号です。左上がWindows10のアイコンで、途中にMicrosoftやWindowsといった名称が出てきます。
学校などMicrosoft製のパソコンを多くの導入している場所では、かなりの数が観測されます。また送信信号強度が強いようで、建物から30mも離れた屋外でも飛んできます。コメントで触れた「中学校での実験」の後半の結果は、ある程度この信号の影響を受けているのではないかと思いました。
3.デバイス名のある信号
一番上に何かしらの名前が出るものは、その名前から機器が推測できます。
・"Armani"はスマートフォンと連動する腕時計のようです。
・"MaxBuzz"は腕時計型の活動記録計だそうです。
・その次はEPSONのプリンターです。
4.Manufacturer Specific Data から会社名が推測できるもの
"Manufacturer data" の下に"Company:"として会社名が表示されているものは、その会社が作成したソフトウェアによる信号です。
・上の画像の最初はGoogleです。何の製品あるいはアプリかはわかりませんが、このような信号はほとんど見ません。
・その次はWiSilica。会社のサイトによると無線制御された照明ソリューションを提供している会社のようで、そうした照明機器か、もしくは管理用のアプリが発している信号だと思います。
5.新型コロナウイルス接触確認アプリ(COCOA)の信号
これは分かりづらいのですが、"Complete list of 16-bit Service UUIDs" に0xFD6Fと出てくるものは、スマホにインストールされた新型コロナウイルス接触確認アプリ(COCOA)からの信号です。この信号は現在、どこへ行ってもよく見られます。
この信号の仕様はApple社とGoogle社が共同で策定したもので、仕様書にこの0xFD6Fというコードが出てきます:
6."16-bit Service UUIDs" からサービスや会社名が推測できるもの
これは画面写真がなくて申し訳ないのですが、上の0xFD6Fの応用で、会社名を推測する方法を説明します。
Bluetooth SIGというBluetoothの仕様策定を行っている組織のサイトの "Assigned Numbers"ページの"16-bit UUIDs" から、次のような"16bit UUID for members" のリストが入手できます。
例えば上の0xFD6Fは、COCOAアプリの信号の仕様策定者であるAppleInc. に割り当てられた番号であることがわかります。
本来この"16bit UUID for members" と Service UUID は別物なのですが、色々信号を集めていると"16bit UUID for members" が Service UUID として使われているケースが散見されます。これを手がかりにすると、"16-bit Service UUIDs" コードから、信号を発しているソフトウェアの会社名が推測できます。
例として、次はある中〜大規模スーパーの店内から収集できた信号群です:
FEF8は Aplix という会社に割り当てられた"16bit UUID for members"です。こちらのスライドのように、Aplix社はBluetoothビーコンを応用したサービスを、スーパーなどの小売店向けに展開しています。この用途の信号であると推測できます。
このほかに、本来の意味での "16-bit Service UUIDs" として、先のBluetoothの16bit UUID文書には次のようにサービス名が挙げられています。
この "GATT Service" と呼ばれるコードのいずれかに、"16-bit Service UUIDs"が合致する場合は、その機能を提供する機器であろうとして除外できます。例えば、一番上のGlucoseは血糖値送信機能です。
7."128-bit Service UUID" を持つもので、観測数が少ないもの
"128-bitService UUID"を持っている信号は、一般的に、誰かがBluetoothを用いた独自の機能を提供したいときに使われています。
この場合、このService UUIDから会社やサービスを推測することは難しく、即除外というわけにはいきません。そこで、接触した人数と対比して判断します。
接触したと思われるワクチン接種者の数からして、非常に少ない場合は、何らかBluetoothを利用するための通常の信号であろうとして除外できます。
8.MACアドレスから会社名が推測できるもの
第1回目で述べたように、信号に表示されるMACアドレスがPubilcAddressという種類である場合には、次のように会社名が推測できます。ほとんどはワクチン接種者ではない、何かしらの機器であろうとして除外できます。
ただ、nRF Connectはこの仕事はしてくれないので、左上のMACアドレスを元に自分で調べないといけません。調査には第1回目で紹介したツールをご利用ください。
9.Apple製デバイスから出てくる謎の信号
上は、何のデータも入っていない信号です。このような謎の信号が観測されることも多々あります。
これは複数の信号を並べてみないと分かりません。画面の限られたnRF Connect上での判断は難しいでしょう。次はnRF Connect の画面ではありませんが、筆者が信号を収集した結果を抜粋したものです。
2つのMACアドレス(40:07:〜と 5E:DD:〜)から発せられている、各々2つずつ計4つの信号を並べています。各MACアドレスの2つ目の信号だけを見ると、次のようになっており、一見謎の信号に見えます。
- 40:07:〜からの2つ目の信号:
⚬ 先のnRF Connectの画面写真と同様に、何のデータも入っていない。(右の方で00の連続したデータが見られるが、これは空を意味する。) - 5E:DD:〜からの2つ目の信号:
⚬ データは入っているが、そのデータの種類を示す値(AD Typeという)が "Unknown(0x37)"である。(Bluetoothの仕様に定められていない不明な種類である。)
しかし、同じMACアドレスの1つ目の信号を見ると、Apple製デバイスからの信号になっています。つまり、Apple製デバイスから、このような不思議な信号も出ていることがわかります。
2つ目の信号だけを見ていると、「これは疑わしい!」と思ってしまいます。しかし、同じMACアドレスから発せられる別の信号を見ていくと、このように除外できるものが出てきます。
私の調べた限り、次のすべての特徴に当てはまる信号はApple製デバイスからの謎の信号と考えて差し支えないようです。
- MACアドレスが Resolvable Private Address である。(第1回のMACアドレスの種類を参照)
ただし、おそらく古めの機種の場合だと思いますが、Random Static Addressの場合もあります。
- "Flags","Service UUIDs", "Manufacturer Specific Data"のいずれのデータも信号に入っていない。
- データ自体が空であるか、Bluetoothの仕様に定義されていない次のようなAD Type のデータが入っている。
⚬ 観測実績があり※、ほぼ確実にApple製デバイスと思われるAD Type:
・ 0x37, 0x47, 0x57, 0x64, 0x79, 0x84, 0x98, 0x9B, 0x9C, 0x9F, 0xA0, 0xB5, 0xBD, 0xD6, 0xEA⚬ 観測実績がない※ので、別のデバイスの可能性も否定できないAD Type:
・ 0x22, 0x23, 0x2D, 0x31, 0x36, 0x3A, 0x3B, 0x42, 0x4F, 0x56, 0x59, 0x5D, 0x5E, 0x5F, 0x68, 0x6B, 0x76, 0x7D, 0x7E, 0x7F, 0x85, 0x8A, 0x91, 0x95, 0x9E, 0xA3, 0xA8, 0xA9, 0xB7, 0xBE, 0xC1, 0xC4, 0xC8, 0xCA, 0xD7, 0xD8, 0xD9, 0xE1, 0xE8, 0xEB, 0xF3, 0xF5, 0xFE
※「観測実績がある」とは、Apple製デバイスからの信号を発信するMACアドレスから、このようなAD Typeを含む信号を確認できているという意味です。
◇
以上、除外すべき信号の例を紹介しました。次回はこれらを踏まえての、収集した信号を解析した結果を紹介します。
こうして除外できる信号例を挙げてみると、今の社会では、実に様々な用途と種類のBluetoothの信号が飛び交っていることがわかります。その大部分を占めるのはApple製デバイスであり、1つの端末がいくつもの異なる信号を発しています。
この観点から『中学校で「ブルートゥース実験」300件検出』という実験を見てみますと、前半では「 BLE スキャナーが受信した10個の信号はいったい何なのか?生徒たちが入って来る前は、何の表示も無かったのです。…本校ではスマホ、携帯電話等の電子端末は、学校への持ち込みは厳禁…スマホを持ってきた生徒がいたとしても…移動教室にまで持ち歩くことはさらにあり得ない…」ということでした。
これに関しては電子端末の持ち込み状況が本当にこの通りであれば、確かに説明が難しいと思います。ただ仮に2〜3名でも、ルールに反して移動教室にまで、Apple製デバイスを持ち込んでいたとしたら、10個のMACアドレスが検出されることはあり得ます。(端末以上にMACアドレスが増える理由は第3回で触れます) ですので信号の中身を見れば、確かな証拠になり得ます。
後半の「中学の校舎全部をスイープ…300件を超えた」というのは特に上のような仮定をせずとも十分にあり得ることで、こちらは明らかに信号の中身を見る必要があると思います。