BlueTrace: シンガポール発のコロナ接触者追跡アプリ
今日、コロナウィルスの濃厚接触者を把握するためのスマホアプリの導入を政府が検討しているという報道が出た。
何日か前に、コロナ対策専門家会議でクラスタ対策を主導している西浦教授から以下の発言が出たように、感染症の専門家からも、医学的な検査を補完する手段としてスマホによる電子的な接触者追跡を活用したいという期待があるようだ。
日本でもやりたいのですが、皆さん許してくれますか。 https://t.co/7YFWwkTnBi
— Hiroshi Nishiura (@nishiurah) 2020年4月8日
この報道でも言及されているように、これはシンガポールの政府機関の一つ Government Technology Agency (GovTech) がコロナ感染者の接触者追跡のために開発した TraceTogether を日本向けに改修して利用するという計画らしい。
調べてみると、彼らはつい数日前に、TraceTogether のクライアント・サーバ間プロトコルを BlueTrace と名付けて仕様化すると共に、参照実装である OpenTrace をオープンソース化していた。OpenTrace には、iOS および Android 向けのクライアント実装と、Node.js ベースのサーバ実装が含まれており、すぐに利用できるようになっている。
一方で、当局主導で行われる個人の行動追跡はプライバシーの観点で大きな懸念がある。いま、単に「プライバシー」と書いたが、公権力である国家による行動追跡は、民間企業によるそれと比べても数段階上の配慮が求められる。万が一、目的外使用に繋がることがあれば、民主主義国家である日本に別種の危機を招き寄せることになりかねない。
この点に関して、BlueTrace は「ユーザのプライバシーを守りながら接触者追跡を行う」と謳っている点が大きな特徴である*1。具体的には、BlueTrace は接触者追跡にあたって GPS などの位置情報を使わない。代わりに、至近距離に存在するスマホ同士で Bluetooth を介して一時 ID を交換し、各端末のストレージに蓄える(かつてのすれちがい通信と類似の仕組みと思われる)。そして、所有者の感染が明らかになった段階で、本人の承認を経てスマホに蓄積した一時 ID をサーバ側へと送信し、履歴に含まれる ID の該当者へ警告を行う仕組みになっている。
また、同様の仕組みは、Apple と Google が共同で開発している Bluetooth ベースの接触者追跡システムでも採用予定だとされている。
では、これらの仕組みは本当に設計者たちの期待通りにプライバシーを守りつつ、接触者追跡という目的を十分に達成できるだろうか? 幸い、BlueTrace の設計者たちはこれらの技術的詳細を論文やソースコードとして公開しており、外部の技術者が検証できるようになっている。この記事は、BlueTrace の技術的な紹介を通じて、今後数週間のうちに大きなトピックになるであろう「スマホを利用した接触者追跡」についての議論を喚起することを狙いとしている。
よく、「技術は政治や思想から自由である/あるべきだ」という主張がなされることがあるが、本件はそれに対する最も明瞭な反例と言えるだろう。特に、この接触者追跡技術については、公共政策、感染症学、そしてソフトウェア技術という、従来はなかなか交わることのなかった領域を跨いだ総合的な視点が必要だ。ソフトウェア技術者のコミュニティは、今後始まるであろう議論に備えておくべきだと思うし、それが我々の専門家としての「社会的責任」を果たすこと繋がると思う。
BlueTrace とは何か
BlueTrace のトップページから引用する:
BlueTrace とは?
接触者追跡 (contact tracing) は、COVID-19 に代表される感染症の蔓延を減らすための重要なツールです。 BlueTrace は、Bluetooth デバイスを用いて、プライバシーを保護しながらコミュニティ主導の接触者追跡を行うプロトコルであり、グローバルな相互運用性があります。
BlueTrace は、非中央集権的な近接ロギング (proximity logging) を、公衆衛生当局による中央集権型の接触追跡で補うように設計されています。 Bluetooth による近接ロギングは、手作業の接触者追跡の限界、すなわち個人の記憶に頼るため、知り合いや会ったことを覚えている接触者しか追跡できないという課題を解決します。すなわち、BlueTrace により、よりスケーラブルかつ少ないリソースで接触者追跡が可能になります。
BlueTrace はプライバシーを中心に設計されています
#1: サードパーティは BlueTrace 通信を使用したユーザの継続的な追跡はできません
デバイスの一時 ID を頻繁に変更 (rotate) することで、悪意ある参加者が BlueTrace メッセージを傍受して個別のユーザを継続的に追跡するのを防ぎます。
#2: 個人を特定可能な情報の収集を制限
個人を特定可能な情報として収集されるのは電話番号のみです。これは保健当局によってセキュアに保管されます。
#3: 遭遇履歴はローカルストレージに
各ユーザの遭遇履歴 (encounter history) は、ユーザ自身のデバイスにのみ保管されます。保健当局がこの履歴にアクセスできるのは、感染者が履歴を共有することを選んだ場合のみです。
#4: 同意は取り消し可能
ユーザーは自分の個人データを管理できます。ユーザが同意を撤回すると、保健当局に保存されている個人を特定可能なデータはすべて削除されます。これにより、すべての遭遇履歴はユーザーにリンクされなくなります。
BlueTrace プロトコルは OpenTrace コードを用いて実装できます。 TraceTogether は 2020/03/20 にシンガポールでローンチしました。これは、世界初の国家的な Bluetooth 接触者追跡アプリであり、OpenTrace コードを用いて BlueTrace プロトコルを実装します。
BlueTrace 技術の詳細
政府指導者や政策立案者向けの資料では、より具体的な仕組みが説明されている:
- ユーザ登録時に電話番号を提供すると、保健当局のサーバはそれをランダムな User ID と結びつける
- アプリが生成する一時 ID は User ID を暗号化したものであり、保健当局のみが復号できる
- アプリをインストールした端末間で Bluetooth 通信が確立された場合、BlueTrace プロトコルにより一時 ID、携帯の型式、電波強度の3つを記録する
- ユーザの感染が確認された場合、保健当局の接触者追跡員はユーザに PIN を提供する(スクリーンショットでは6桁)
- ユーザはアプリに PIN を入力することで、過去21日分の接触履歴のアップロードに同意する
- 接触者追跡員は(一時 ID を復号して?)得た電話番号を用いて接触者へ連絡する
- アプリは、Bluetooth をオフにしていない限り、バックグラウンドで周囲の Bluetooth デバイスをスキャンし続ける
- ただし、現状では iOS はバックグラウンドの Bluetooth デバイススキャンを許可していないので、常にフォアグラウンドで起動する必要がある。ただし、Wired の記事によれば、Apple はこの制限を近日中に撤廃する方向で動いている模様
だが、こうしたBluetooth方式の追跡システムは、これまで大きな壁に直面していた。アップルがiOSに制限をかけることで、バックグラウンドで稼働するアプリがBluetoothを無制限に利用できないようにしていたのだ。これはプライヴァシーの保護と省エネルギーを考慮した措置だった。
ところがアップルは今回、濃厚接触を追跡するアプリに限ってその規制を撤廃する。アップルとグーグルはスマートフォンのバッテリー駆動時間を考慮して、最小限度の電力しか使わないようにするという。「このアプリは24時間ずっと休むことなく稼働するので、消費電力を徹底的に抑える必要があります」と、共同プロジェクトの広報担当者は説明している。
- データ解析ダッシュボードについては、調査員や医療専門家と協同しながらプロトタイピングを進めている
- 各国の BlueTrace 互換アプリ同士で接触者情報を共通に収集できるようにしたい。これにより、国境を跨いだ接触者追跡が可能になる
白書
より技術的詳細について書かれた白書(white paper)が公開されている。
まとめ
white paper やソースコードについても紹介したかったが、もう午前2時なので機会があれば後日ということで。
ざっと眺めた感想としては、要素技術はなかなか興味深いと思う。Apple/Google が同様の技術を採用する方向で動いているということで、この方式がスタンダードになっていくのかもしれない。
ただ、一つ注意しておきたいのが、そもそもこの仕組みが接触者追跡という目的に対して十分に効果を発揮するかはまだよく分からないということだ。それは、彼らのドキュメントの中でも明確に宣言されている。プライバシー上の大きな懸念を呼ぶシステムである以上、その辺も含めて検証が必要だろう。
また、なんとなくだが、収集された情報の利用については技術面というより法律面、運用面での制約を加える必要を感じる(まず思いつくのは、特定の地域に「任意の第三者」がビーコン収集端末を並べて監視カメラと突き合わせると、事実上、個人の詳細な行動追跡ができるのでは、とか。あと、一時 ID の生成って暗号化よりもいい方法がありそう)。
あと、日本版の BlueTrace 実装の開発においてはオープンソース化を強く求めたい。これは、日本のソフトウェア技術者のアイデアを活かすという意味でも、仕様が正しく実装され運用されていることをチェックする意味でも非常に重要だと思う。
続き
追記1 (4/14 14:00)
NHK の報道で言及されていた「民間団体」って、もしかして Code for Japan なのかな?(東京都のコロナ情報サイトを運営しているソフトウェア技術者のボランティア団体)
この記事の通りだとすると、すでに開発はスタートしていて Apple/Google の接触者追跡 API を使う方向で動いているのだろう。上記でも述べたように、オープンソース化に期待したいところ。
政府は民間団体による日本版の開発を待って、近く実用実験に乗り出すことにしています。
追記2 (4/16 10:00)
やはり Code for Japan が開発に関わっているとのこと。上記でも述べているように、適当なタイミングで仕様とソースコードを公開して、プロトコルの詳細やプライバシーを担保する方法についてオープンな議論ができるようにして頂きたい。
追記3 (4/16 16:00)
4月の初め頃に Anti-Covid-19 Tech Team (ACTT) なる枠組みが立ち上がっていたらしい。プロジェクト例として「シンガポールのTrace Togetherアプリケーション日本版の実装検討」にも触れられている。
官庁のIT対応能力を強化すべく、コロナウイルス感染症対策担当大臣をチーム長として、IT政策担当大臣及び規制改革担当大臣が連携し、内閣官房や内閣府、総務省、経済産業省、厚生労働省等、関係省庁からなるテックチームを組成。 テックチームは、民間企業や技術者の協力を得ながら、諸外国の状況も踏まえ、考えられるITやデータの活用を検討し、TECH企業による新たな提案も受けながら、迅速に開発・実装できることを目的とする。
内閣官房に私がチーム長の #新型コロナウイルス感染症対策 テックチーム(Anti-Covid-19 Tech Team #ACTT )を立ち上げ、IT企業など12社のオンライン参加を得て開催。感染拡大防止のためのIT活用を官民協力して迅速にすすめる。早速、今月中旬には米国 #CDC と同様の #チャットボット を導入予定です。 pic.twitter.com/t2HrSOLAV5
— 西村 やすとし (@nishy03) 2020年4月6日
追記4 (4/16 16:00)
Apple/Google が検討してる接触者追跡の技術的詳細について。こちらは、ID のマッチングは中央サーバではなく、感染者の匿名化された ID を広告して各端末内で行うようになっているようだ。こちらの方がプライバシー上の懸念について説明が容易だし、筋が良い気がするな。
今日の #rebuildfm で紹介した、Apple/Google が COVID-19 のコンタクトトレーシングをどう実装するかの技術紹介記事。実際に「誰とどこで」接触したかはそもそも記録されないし、その履歴のマッチングもローカルのオンデバイス上のみで行われる。 https://t.co/FdGBZqovYW
— Tatsuhiko Miyagawa (@miyagawa) 2020年4月12日
Google + Apple が提供する、COVID-19 の Contact Tracing(コンタクトトレーシング)の仕組みを図にまとめました。 pic.twitter.com/rwoGtiDofy
— 太田 祐一 (@yuichiota) 2020年4月13日
Apple のプレスリリースと仕様書はこの辺。