COVID-19対策接触確認アプリ「COCOA」は残念ながら不具合が報道されて話題になりました。そのOSS開発については、誤解が蔓延しているようです。今回はOSSと社会との関係について考察します。(まつもと ゆきひろ)

 昨今の新型コロナウイルス感染症の広がりを防ぐ手段の一つとして導入されたのが、接触確認アプリ「COCOA」(COVID-19 Contact Confirming Application)です。

 このアプリケーションは、プライバシーを維持したまま、ユーザー同士の接触を記録します。もし過去14日の間で、距離1m以内に15分以上とどまっていた人が、後に感染が分かれば通知してくれます。

 もし社会全体で6割以上の人がこのアプリを使えば、大幅な感染拡大の抑制が期待されるとのことでした。

 COCOAはAndroid版とiOS版が提供されていますが、日本では2020年現在、スマートフォンユーザーがようやく6割に届くかどうかというところです。社会全体で6割を達成するためには、日本中のスマートフォンユーザー全員がCOCOAをインストールする必要があるので、達成はかなり困難ではあります。しかし6割に届かなくても感染拡大をある程度抑制できるはずで、ぜひともインストールした方がよいアプリです。

 しかし2020年6月20日のリリース以来、COCOAの不具合が何度も報道され、むしろ不信感を持って見られるようになってしまいました。

 その背景には、COCOAの仕組みや開発体制について非常に誤解されていたことが大きいと思います。今回はまずCOCOAの仕組みなどについて解説し、もうちょっと良い結果を出すためにはどうすべきであったのか、あるいは社会とオープンソースソフトウエア(OSS)がどう関わるべきなのかということについて考察します。

COCOAの仕組み

 接触管理のために、GPSによる位置情報を利用していると誤解している人もいるようですが、COCOAは位置情報は利用していません。いつどこにいたのかというのは重要なプライバシー情報ですから、これが信頼できない第三者に漏洩する可能性があるなら、大変な懸念点になります。

 そこでCOCOAは、接触を確認する仕組みとしてBLE(BluetoothLow Energy)を使います。COCOAはBLEを使って定期的に近くのデバイスに信号を送り、信号の強さからお互いの距離を推測します。この距離を推測する機能はBLEの一部として既に実装されています。そして、1m以内に15分以上接近したデバイスとID(接触符号)を交換します。接触符号は、1日に一度ランダムに生成される日次鍵から(ハッシュ関数を用いて)生成されます(図1)。

図1 COCOAにおける接触検知の仕組み

 いざ、感染が分かった場合、保健所から発行された番号をアプリに入力すると、感染していた可能性のある期間の日次鍵と時間情報をまとめた診断鍵と呼ばれる情報を通知サーバーに送ります(図2)。通知サーバーは、受け取った診断鍵を全端末に送付します。各端末では、診断鍵に含まれる情報から陽性者の接触符号を生成し、過去に交換して端末に保存してある接触鍵と比較します。一致するものがあれば、残念ながら感染の可能性があるので、通知をします(図3)。

図2 陽性検知時のCOCOAへの報告
図3 COCOAからの接触者への通知
【PR】まつもとゆきひろさん好評連載中! 日経Linux9月号 発売中です。
 日本で唯一のLinux専門誌「日経Linux」では15年以上にわたって、Rubyの父、まつもとゆきひろさんにご寄稿をいただいています。Linuxは無料で使えるOSで、サポートが切れてしまった古いWindows PCなどで簡単に使い始められます。

 2020年8月7日発売の日経Linux 9月号では「Linuxの遊び方大全100」と銘打ち、Linuxを遊び感覚で楽しく活用する方法を100本集めた大特集を掲載しています。付録冊子の「ラズパイ&電子工作 スタートブック」は超小型PCボード「Raspberry Pi(ラズパイ)」の使い方を100ページでまとめた入門書です。

 この夏は新型コロナ禍により外出しづらい日々になりそうですが、自宅でじっくり楽しめる、Linuxやラズパイに挑戦してみてはいかがでしょうか。

日経Linuxの購入は<<こちら!>>