コロナウイルスが日本にも本格的に蔓延してきそうな傾向があります。
そんな中、AppleとGoogleさんがコロナウイルスに立ち向かうべく、新型コロナウイルス感染防止のためのスマホアプリを開発することを決定しました。まずはアプリを開発(5月にリリース)し、その後はアプリではなく機能自体をスマートフォン本体(プラットフォーム、OSの機能)に入れ込む計画でいるようです。
【記事】AppleとGoogleが提携 新型コロナの感染防止で スマホのBluetoothで濃厚接触を検出
この記事は、AppleとGoogleさんがアプリを出した時に、すぐさま一人でも多くの人がアプリをインストールしてくれるために事前に情報を拡散するための記事としています。
個人情報がどうのこうのと言われている今、少しでも詳細を知った上でみんなで協力的になれば良いなと思い、Appleが公開している仕様書(最後に登載)を読んで書きました。
※技術的用語をできる限り使用しないようにしていますので、一部正確な説明になっていない箇所がありますがご了承ください。また、ここでの意見などは全て私個人のものとなっています。
アプリの仕組み
アプリの仕組みを説明します。先ほどの説明の通り、現在のところはまずアプリを開発し、最終的にはスマートフォン内部に実装されるため、こちらではアプリ版の時の詳細を記載しています。
ただ、スマートフォン内部に組み込まれても同じような原理になると推測しています。
【仕組み1】アプリとBluetoothの起動
アプリをインストールしたら、アプリを起動します。
アプリ初回起動時の詳細はわかりませんが、おそらく何かしらの同意が求められるので、同意できる場合のみ起動しましょう。アプリの使用に同意されると、アプリ内に「追跡キー(Tracing Key)」と呼ばれるあなたの端末(スマートフォンやタブレット)専用のキー(※1, 2)が作成されます。
また、このアプリを使用するためには、常にBluetoothが起動していないといけないため、BluetoothをONにしておく必要があります。これで、アプリを使用するための準備は完了でしょう。
※1 「あなた専用のキー」は、あなた専用の番号とかだと思ってください。世界中にあなたの端末しか持っていないものとなります。
※2 ちなみに、この「追跡キー」はアプリ起動時にランダムで作成されますが、「ランダムだったら同じキーが世界中に作られる可能性があるよね?」って思いますよね。この答えに関して、私も詳細が完全に理解できているかあやしいんですが、32バイトの乱数らしいので2進数で表現したとすると、作成できる数のパターンは、
115792089237316195423570985008687907853269984665640564039457584007913129639936 個
っぽいです。笑
わかりました。日本語で言え、ですね。
1157むりょうたいすう9208ふかしぎ9237なゆた3161あそうぎ9542ごうがしゃ3570ごく9850さい868せい7907かん8532こう6998じょう4665じょ6405がい6403京9457兆5840億791万3129
です。笑
そのため、世界中でスマートフォンを使用している人が30億人いたとしても、まぁよっぽどじゃないと被ることはないのかなと思いますね。何か、AppleとGoogleさんで絶対に被らないようにそのほかの工夫をしているかもしれませんが。。。
【仕組み2】Bluetoothを使用してのデータの送信
以下は、あなたがスマートフォンを使用しているとして話を進めます。
アプリを起動したら「あとはアプリを常に起動させたままスマートフォンを保持しておくだけ」です。アプリを止めずにバックグラウンドで起動させておけば、あとは普通に使用して構いません。
起動中のアプリは、あなたのスマートフォンから常にBluetooth通信できる相手を探しています。別のスマートフォン(※3)がBluetoothで通信可能な範囲(※4)に入ってきたとすると、そのスマートフォンに対して、「プライバシーが保護されたデータ」を(そのスマートフォンがBluetoothで通信可能な範囲にいる限りは)定期的に送信し続けます。Bluetoothで通信可能な範囲は1〜10メートルくらいだと思っておきましょう。
ここで、みなさんが気になるのが「プライバシーが保護されたデータとは?」ですよね。こちらのデータなのですが、簡潔に説明すると、アプリ初回起動時に作成した「追跡キー(Tracing Key)」と「時間のデータ」を基に新たに作成したデータとなります。つまり、あなたの個人情報やあなたの現在地などは一切送信しないことになっています。さすが、AppleとGoogleさんですね。
※3 別のスマートフォンも仕組み1を完了させ、常にアプリを起動させているのが前提条件です。
※4 Bluetooth通信が可能となる範囲でのスマートフォン挙動などといった話は、Bluetoothの仕組みの話になってしまうためこちらでは説明を省きますが、Bluetoothの規格も国際基準に即した型を使用しています。(世界中で使用可能な国際的に認められた方法を使用しているということ)。また、AppleのHPでもその詳細を説明しています。
(概要わかったからいいや〜、って人は以下読み飛ばし【仕組み3】へ進んでください。)
知りたい人向けに、プライバシーが保護されたデータとはなんぞや?を説明します。「プライバシーが保護されたデータ」の説明に必要な登場人物は以下です。(主要な奴らを抜粋。)
・追跡キー(Tracing Key)
こちら、上記で説明したものです。
・1日毎に作成される追跡キー(Daily Tracking Key)
こちらは、上記追跡キーを基にして毎日(もしくは、24時間毎)作成される16バイトのキーです。このキーの作成時は、Day Numberと呼ばれるその時の時間を表すデータも使用されます。(Day Numberはエポック秒を年換算したものとなります。どのくらいの小数点以下桁数まで使用されているかは不明。)
・定期的に切り替わる接近ID(Rolling Proximity Identifier)
こちらが「プライバシーが保護されたデータ」と称していた本体です。
そして、このデータ(ID)の作成は、上記の1日毎に作成される追跡キー(Daily Tracking Key)と更に「時間の情報」を基にして行われます。こちらも16バイトです。
ここで登場した「時間の情報」に関して、、、本来データをBluetoothで送信する際は、MACアドレス(通信先に自身のスマートフォンを特定させるための情報、みたいに捉えてください)を使用します。本アプリでは、このMACアドレスが10分〜20分程度で自動的に変更されます。そして、そのMACアドレスが更新された時の時間をRolling Proximity Identifierの作成に使用します。この更新時間とは簡単に説明すると、その日にどれくらいの時間が過ぎているかを10分間隔で表したもの、みたいな感じです(ぜんぜん簡単じゃねぇ)。
頭がごちゃごちゃしますが、これだけやっていればセキュリティも安全性が考慮されていると考えられますね。
また、Bluetoothでのデータの定期的な送信は200〜270ミリ秒毎と定められています(仕様変更の可能性あり)。これも、Bluetoothの規約のようなものに乗っ取っているようで、通常は300ミリ秒毎らしいですが、私は全く専門外なので間違っていたらすみません。
【仕組み3】Bluetoothを使用してのデータの受信
一方、「プライバシーが保護されたデータ」を送信できたということは、そのデータを受信できたスマートフォンがあるわけですね。
ここで、「プライバシーが保護されたデータ」を受信したスマートフォンのアプリはそのデータを保存しておきます。
あなたがいろんなところへ行って、その都度アプリを使用している人と接触するたびにこのデータが保存されて行くことになります。
【仕組み4】感染時の対応
もし、ある人が残念ながら感染してしまったとします。
感染者はアプリで「感染しました」といった情報をサーバに送ることになります。もちろんですが、AppleやGoogleさんですら感染者の個人情報は特定できません。そもそも特定できるような情報を送信しないためです。
なお、ここで送信するデータの主な内容は、最初に作成した追跡キー(Tracing Key)を読み取りづらくするために加工したキー(※5)と時間のデータです。ただこちらでも、あなたの個人情報やあなたの現在地などは一切送信しないことになっています。さすが、AppleとGoogleさんですね。大事なことは二回。
なので、ここでサーバ(図での一番右)は、「感染者のアプリが初期に作成したキーを更に加工したキー」と「送信した時?の時間のデータ」を保存しているだけで、個人情報(あなたの端末を逆探知的に特定できるもの)は一切存在しません。ということもあって、仮にこれらのデータが漏れたところで、あなたのスマートフォンが盗まれて中のアプリを解析されない限りは問題ないように見えます。
解析といっても決して簡単にできるものではないはずです。AppleやGoogleがアプリの内部を完全公開するとはとても思えないためです。
※5 【仕組み2】最後の詳細説明で登場した「1日毎に作成される追跡キー(Daily Tracking Key)」
【仕組み5】自分が感染者と濃厚接触したかどうかを確認
アプリが、Bluetoothでその他の方のスマートフォンへデータを送信・あなたがその他の方のスマートフォンからデータを受信するのとは別に、アプリは定期的に感染情報を保持しているサーバへ感染情報を取得しに行きます。
アプリは感染情報を取得する度に、その情報とアプリ内に保存されているデータ(あなたが今まで接近した人が持つスマートフォンのアプリから受信したデータ)を比較して、あなたが感染者と過去に接触したかどうか判断します。
そして、もし、接触していたとわかった場合は、データから出会ったであろう時期などを計算してあなたが今からどう行動するべきかをアプリから指示されることになります。この際、感染者と接触したことがどこかへ送信されることはないため、あなただけが感染者と接触していた事実を知っていることになります。
ちなみに、なぜこれによって判断ができるかというと、今まで出てきた「データ」や「情報」といったものは全て、アプリ初回起動時に作成した追跡キー(Tracing Key)が元となって作成・加工されているいるためです。ただ、やり取りされるデータや情報はただのキー(実態がそれからは読み取れないただの文字列)であり、あなたの名前や住所、位置情報といった個人情報ではありません。
以上が、AppleとGoogleさんが現在開発しているアプリの全概要です。
利用する上での懸念点
・アプリ起動しっぱなし、Bluetooth起動しっぱなしにするユーザがどれだけいるか。
→正直、スマートフォンで常にこのような状態にしとけと言われても厳しい場合もあるかもしれませんが、我慢ですね。。。
・スマートフォンの電池がもつか。
→上に近いですが、Bluetoothをオンにしておくと、常に通信相手を探すようにするため充電の減りがいつも以上になるとは思います。とはいっても、Bluetoothでやり取りする情報もかなり効率化されて少量になっていることもあり、新しいスマートフォンを定期的に購入しがちな日本人だとバッテリーを常に持ち歩けば大丈夫かと思います。
・感染した場合に、自己申告をどれだけの人が行うか。
→もし、コロナに感染してしまった場合、正直ほかの人のことなど構っている暇ではないですよね。ただ、これを行ってもらわない限りは絶対に世の中の状況は改善することがないですし、この機能の意味が一切なくなってしまうので少しでも感染者を減らすために行動していきたいですね。
・偽って感染情報を送信する人がいるときにどう対応するか。
→人々を混乱させるために偽って感染情報を送信する人が出てきそうです。その報告に信頼性がどれだけあるかを確認するすべをどうにかして見つけていきたいところですね。
最後に
自分の命は自分で守ると言います。それは全く間違っていませんが、今のこの状況では自分の命を守るために他人の命も守らなければなりません。
出来るだけ多くの方が賛同し、5月にアプリがリリースされた際には、世界中のみなさんがアプリのインストールと正常な使い方を実施することを願っています。