新型コロナウイルスに関係する内容の可能性がある記事です。
新型コロナウイルス感染症については、必ず1次情報として 厚生労働省 首相官邸 のウェブサイトなど公的機関で発表されている発生状況やQ&A、相談窓口の情報もご確認ください。※非常時のため、すべての関連記事に本注意書きを一時的に出しています。
見出し画像

感染追跡アプリはどのように動作するか

外出自粛も10日目、Netflixにも飽きて、シンガポールのコロナ感染追跡アプリについて調べてみた。3月20日にシンガポール政府がTraceTogetherというアプリを出してから、いくつもの大学で研究プロジェクトが立ち上がり、取り組みを表明する政府が続いている。10日にはAppleとGoogleが、両社のスマートフォンを横断して利用できるよう共通APIを整備すると声明を出した。

このアプリは、Bluetoothを使って接触者の追跡を行う。アプリを入れた2台のスマホが近接したときに、互いのIDを交換し、そのログを残す。コロナの感染が発覚した場合、行動ログから相手に通知が飛ぶ。

接触者追跡は通常、保健当局が感染者ごとに、過去の行動を聞き取りすることで、接触者を調べ上げて連絡を行うのだが、想像するに明らかに、人手と時間を要し、抜け漏れも出るだろう。それをスマホのアプリを通して代わりに行うわけである。

長らくロックダウンが続く米国や欧州各国は、いま外出再開の時期を探っているが、都市に人が出られるようになったとして、感染者がまた急増すれば、第二のロックダウンが避けられない。外出により新たに生じるクラスターは、早めに探知して封じ込める必要がある。そうした背景のもと、ドイツフランスイギリス、そして米国のいくつかの州が、いま接触者追跡アプリの準備を進めている。

日本でも先日リリースが出て、都のコロナ情報サイトが好評だったCode for Japanにより、開発が進められていることが明らかになった。

シンガポールの追跡アプリは、GitHubで仕様と実装が公開されている。リポジトリには、iOSとAndroidのクライアント、Cloud Functionを使ったサーバのコード、そして技術とプライバシーの要点をまとめた論文がある。

シンガポール政府の技術セクションによるものだが、コードもドキュメントも分かりやすく、開発者が使いやすい形で提供されている。

自分のiPhoneにアプリを入れて、動かしながらコードを見てみる。まず、電話番号を入れてSMS認証する。ユーザー登録した後は、動作中ずっとBluetoothで他の端末を待ち受ける。他の人の端末とBluetoothのハンドシェイクが行われたとき、相手のIDが送られてくる。IDと電波強度が、データベースに保存される。電波強度はおよその近接距離を求めるのに使われる。

プライバシーのため、15分間有効の暗号化されたIDを使うのが、この追跡システムの重要なところである。保健当局のサーバは、一時匿名IDの発行機となる。すれ違う端末同士は、匿名で互いの存在を伝え合う。

スクリーンショット 2020-04-19 17.33.04

アプリは起動時に、100個の一時匿名IDをサーバから受け取って、時間に応じて使っていく。15分で変わるので、他のアプリがトラッキングすることもできなくなっている。

端末のデータベースに貯められたすれ違いのログは、21日過ぎると消えていく。もしコロナに感染したと判明したときは、このログをサーバにアップロードする。暗号化されていたIDが復号され、ユーザーが分かるので、相手のアプリに通知が送られ、また必要なら電話で連絡が行われる。

行動ログのアプリは、どうしてもプライバシーが問題になる。シンガポールの追跡アプリは、一時匿名IDと、行動ログの提出を感染時にのみ限定するという2点で、プライバシーを守りつつ、接触者追跡を実現できるようになっている。オープンソースにすることで、中の動作をすべて明示していることも大事な意味がある。

TraceTogetherはプライバシーと接触者追跡を両立した初の実施例となったが、同じ頃、米国と欧州の大学でも接触者追跡のプロジェクトが進められていて、前後して3つのリポジトリが公開された。米国ではスタンフォード大とMIT、欧州ではスイス工科大である。この3つは、仕様がよく似ている。TraceTogetherと同じBluetooth追跡アプリであり、IDの暗号化を変えることでより匿名性を強めている。

AppleとGoogleの共同仕様は、これら3大学の仕様を踏襲したものになっている。スタンフォード大研究者からのリリースによれば、Appleは彼らとかなり協議を重ねた上でAPI仕様をまとめたようだ。一時匿名IDの振り出しではなく、24時間有効の暗号鍵をアプリ内で生成する。この鍵のセットを行動ログにすることで、より分散的な仕様となった。

匿名IDではなく、暗号鍵が行動ログになるというのは、直感的には分かりづらいが、これにより、暗号の検証を行う場所がサーバからクライアントに移ることになる。すれ違いで交換されるのは、暗号鍵とタイムスタンプから導出されたMAC値になる。クライアントは定期的に感染者の鍵を受け取り、MAC値の検証を行う。

スクリーンショット 2020-04-19 17.42.11

この方式だと、クライアントから検証の結果が返らない限り、サーバは誰と誰が近接したかも関知できない。

大学の暗号研究者たちが検討した、おそらく最もプライバシーを確保する方法を、AppleとGoogleはそのまま取り入れたことになる。暗号化の方法は、シンガポール方式と比べてより徹底している。

もしトレードオフがあるとすれば、保健当局が従来の聞き取りもアプリも利用して、両方からの接触者に電話をかけていくといった、手作業との連携がやりづらい点だろう。シンガポールの論文では、感染者の認定のプロセスでは、人が担う部分も大事で、何でも自動化はすべきでないと書かれていて、それは確かに現場の真理と思われる。一方で、適切な部分をテクノロジーに任せることで、人が助かることもあるだろう。

アプリによる追跡には、限界もある。物を介した感染や、無症状者からの感染には役立たない。アプリを入れていない相手とすれ違っても検知できないので、まず多くの人にインストールしてもらう必要がある。ただ、AppleとGoogleがOSでサポートすることになったので、まもなくあらゆるスマホ(35億台)で、アプリを入れれば利用できるようになる。iPhone特有の、バックグラウンドで待ち受けできない問題も解消される。ある程度の人が使えば、クラスターの発見に寄与するだろうし、早めの警戒、保健当局の作業軽減を通して、感染抑制に効果を上げられる見込みは十分ありそうだ。

各国の政府は、テック企業と同じようにGitHubのリポジトリを使い、オープンソースの共同作業を実現し始めている。大学の暗号専門家が、プライバシーとトラッキングを両立する方法を改善し、成果を端末メーカーも取り入れた。シンガポールが初めのアプリを出してから、わずかひと月間の進展である。それは感染の拡大の中にあって、明るい話ではないだろうか。


参考

研究開発

シンガポール(BlueTrace/OpenTrace)

Appleの声明

Googleの声明

スタンフォード大(CovidWath)

MIT(CovidSafePaths)

スイス工科大(DP3T)


各国政府の導入

Singapore launches contact tracing mobile app to track coronavirus infections - Reuters

Three U.S. local governments to adopt coronavirus contact tracing app - Reuters

France working on 'StopCovid' contact-tracing app, ministers say

German contact tracing app to go live by mid-May - NS Tech

UK confirms plan for its own contact tracing app - BBC

Italy tests contact-tracing app to speed lockdown exit  - Reuters

Indian Govt Releases its COVID-19 Tracker App, AarogyaSetu: How You Can Use it - News18

この記事が参加している募集

いま私にできること

この記事が気に入ったら、サポートをしてみませんか?気軽にクリエイターを支援できます。

82
東京でエンジニアをしてます

この記事が入っているマガジン

#エンジニア 系記事まとめ
#エンジニア 系記事まとめ
  • 682本

noteに投稿されたエンジニア系の記事のまとめ。コーディングTIPSよりは、考察や意見などを中心に。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。