メインコンテンツへスキップ

Technology, security analysis

バックグラウンドで動き続ける:バックグラウンド追跡とNHS COVID-19アプリ

Aidan Fitzpatrick公開日: 2020年5月6日更新日: 2024年7月31日
このページの内容
Cover image for: バックグラウンドで動き続ける:バックグラウンド追跡とNHS COVID-19アプリ
  • NHS COVID-19アプリは、オーストラリアのCOVIDSafeアプリとは異なり、iOSデバイスでバックグラウンド実行中でも正しく動作しているようです
  • このアプリは、症状のあるユーザーに参照コードを発行することで虚偽の報告を防ぎます。そのコードは、対応が取られる前に、正式な検査結果と紐づけられます
  • NHS COVID-19は、医療従事者にPPE着用中はデバイスのBluetoothをオフにするよう指示し、「your interactions at work should not be captured when you are wearing PPE」と説明しています
  • 5月7日 BST 09:25更新:「アプリはどのようにしてバックグラウンドでも効果を保てるのか?」のセクションを下に追加しました。Androidデバイスと通信する際にアプリがどのように動作を維持するのかを説明し、iOS同士の通信における課題や手法にも触れています
  • 5月7日 BST 11:45更新:「アプリは個人データを収集し、私の身元を明かすのか?」のセクションを下に追加しました。

アプリが画面に表示されていないときの接触追跡の課題

アプリ開発者が、アプリがユーザーのデバイスの最前面にないときに「動作し続ける」ようにするための選択肢は、ほとんどありません。Appleは、アプリがユーザーのプライバシーを侵害したり、バッテリーを過度に消耗したりしないよう、こうした選択肢を慎重に管理しています。特に、アプリがフォーカスを持っているか、つまり画面に表示されているか、それともバックグラウンドで動作しているかを区別しています。最近のiOSのアップデートでは、バックグラウンド中にデータにアクセスする開発者の能力が制限されました。たとえば、バックグラウンドでの収集をこれほど効果的に制限できるようになる前は、Uberはタクシーに乗っていないときでもユーザーの動きを追跡できていました。

バックグラウンドで意味のある形で動作するには、アプリの発行元は、App Storeに申請する際に、一連の「Background Modes」を設定して、Appleの許可を得る必要があります。これらのバックグラウンドモードは、あるデバイスから別のデバイスへ動画を送信するとき、位置情報の更新を収集するとき、電話として動作するとき、Bluetoothを使うときに限定されています。たとえば、これらのモードのおかげで、スマートフォンはAirPlayをバックグラウンドで実行したり、Spotifyを常に表示しなくても音楽を再生したり、WhatsAppで誰かに電話をかけてからバックグラウンドに回したり、Stravaでランニングを記録したりできます。

NHS COVID-19アプリ

NHS COVID-19アプリ

ただし、これらのモードは限定されており、ユーザーの皆さんは、アプリにバックグラウンドでの位置情報へのアクセスを許可するかどうかを尋ねるiPhoneの通知に見覚えがあるかもしれません。ユーザーがこれらの許可を与えた場合でも、スマートフォンはそれが正しい判断かどうかの確認を求め続けることがあります。

接触追跡アプリは、Bluetooth Low Energy(BLE)を使って作られています。簡単に言えば、デバイス同士が互いを認識できるようにする技術です。理論上は、Appleの「Uses Bluetooth LE accessories」と「Acts as a Bluetooth LE accessory」のモードがこれに最適で、バックグラウンドでのBLEの利用を可能にします。しかし、これらのモードを使うバックグラウンドのアプリは、すでに通信しているBLEデバイス(Bluetoothのスマートロックなど)との通信は続けられるものの、まだ見たことのないデバイスを確認するためのブロードキャストの頻度を制御することはできません。バックグラウンドでは、新しいデバイスの兆候を探したり、そのデバイスと意味のある形で通信したり、特にApple以外のデバイスを識別したりすることが難しくなります。これは、バックグラウンドで常時動作しなければならない接触追跡アプリにとって、大きな妨げになります。

Appleのこのサービスに関するドキュメントから引用します。

All service UUIDs ... can be discovered only by an iOS device that is explicitly scanning for them. ...and for apps that are advertising are in the background, the frequency at which your peripheral device sends advertising packets may decrease

追跡のための回避策と代替アプローチ

もちろん、これは開発者にとって新しい課題ではありません。アプリをバックグラウンドに置いたまま、制限をかいくぐって追跡データを収集する方法を、開発者は長く探してきました。オープンソースのAltBeaconsのようなフレームワークがこの課題に取り組むために登場していますが、デバイスが新しいデバイスを常に探し続けなければならない接触追跡には向いていません。オーストラリアで国のCOVIDSafeアプリを調べたABCが明らかにしたように、これには実用的な解決策がありませんでした。一時的には役立ちそうな抜け道がいくつか存在します。たとえば、アプリをオーディオプレーヤーとして登録して音楽を再生させる方法です。しかし、こうした抜け道はAppleに歓迎されず、ユーザーに不便を強いる可能性があり、App Storeの審査を通ることもまれです。

その間に、Appleは現在ベータ版が提供されているiOS 13.5のリリースを準備してきました。Appleは、この種の追跡に有利になる変更を、自社のシステムに加えることができます。13.5には、マスクを着用しているユーザー向けのFaceIDへの対応、少なくともパスコード入力へのより素早い経路といった、分かりやすい機能がいくつか導入されるほか、接触追跡アプリがまさに必要としているものを実現するExposureNotificationフレームワークのような、あまり目立たない機能も含まれます。もちろん、これで完璧なシステムになるわけではありません。iPhone 6(2015年)のようなデバイスはiOS 13を実行できないため、すべてのユーザーがこれを利用できるわけではないからです。Appleのシステムはグローバル標準の識別子を使っていますが、これを導入する各国は、それぞれ独立した国別のデータベースを使っています。そのため、ある国の感染したヨーロッパ人が別のヨーロッパの国の市民と接触しても、接触追跡ではそれが分かりません。

AppleのCOVID-19向けExposureNotificationは、ここで必要とされていることに対する解決策を提供しますが、注意点もあります。最も重要なのは、他者によるこの技術の悪用を防ぐため、利用できるのはAppleのアプリだけだとAppleが示していることです。

では、NHSはCOVID-19アプリでどのように実現しているのか?

では、英国のNHS COVID-19は、「スリープ」(技術的には「一時停止」)して効果を失うことなく、バックグラウンドでどのように新しいデバイスを効果的に追跡できるのでしょうか。「NHS COVID-19」アプリのバージョン1.0.1b341でテストしたところ、実際にバックグラウンドでも効果的に通信していることが確認できました。これは、キープアライブと通知を使った一連の巧妙な回避策によって実現されているようです。 アプリを強制終了するとバックグラウンドでの追跡は止まりますが、代わりにスマートフォンの電源を切って入れ直した場合は、バックグラウンドで引き続き正常に通信します。この回避策がAppleの規則に反するかどうかは分かりませんが、現時点では公開されておらず、Appleはこれまでに確認したアプリのビルドを承認しています。

私たちはこの調査を続けており、状況が進展しだい、さらに詳しくお伝えします。

NHS COVID-19アプリは機密データを保存しているのか?

いいえ。このアプリはとてもよくできており、適切なセキュリティ対策を取り、不要なデータは保存していません。中心となるのは、アプリのインストールごとに生成されるlinkingIdです。このIDはアプリのインストールをまたいで保持されるため、アンインストールして再インストールしても、識別子はリセットされません。

iPhone Backup Extractorを使ってuk.nhs.nhsx.sonarパス配下のアプリのデータを見ると、Google Firebaseに結びついた一連のファイルと、アプリのその他のデータを格納する小さなPlist(設定ファイル)が確認できます。

バックアップ内のNHS COVID-19アプリのファイルを見る

バックアップ内のNHS COVID-19アプリのファイルを見る

ユーザーはCOVID-19に感染していると虚偽の自己申告ができるのか?

ユーザーが症状を報告すると、アプリは検査を手配するための電話番号と、参照コードを表示します。検査結果は、そのユーザーの参照コードと紐づけられる仕組みです。ユーザーが虚偽の症状を報告したとしても、NHSがユーザーのコードに合わせて検査結果を更新しない限り、確認は行われません。

アプリは位置情報の許可を求めるのか?

いいえ、求めません。

NHSはGoogleのAPIの利用について国民を欺いたのか?

いいえ。NHS COVID-19アプリは、データの保存と管理のために、Googleの業界標準のFirebase APIと深く統合されています。(NHSはGoogleやAppleの接触追跡フレームワークを使っていません。ほかの理由はさておき、それはiOS 13.5がリリースされるまで利用できないからです。)

アプリはどのサービスと通信しているのか?

Androidアプリと同様に、重要な通信はすべて、*.covid19.nhs.ukの下でホストされているNHSのCOVID19 APIを経由して行われます。アプリは、MicrosoftのAppCenterサービスを使っている関係で、ほかにもいくつかリクエストを送信しますが、重要なものや機密性の高いものはありません。

NHSの職員がアプリを使うと、偽陽性につながるのでは?

このアプリは、医療従事者にPPE着用中はデバイスのBluetoothを無効にするよう促し、「your interactions at work should not be captured when you are wearing personal protective equipment」と表示します。

NHS COVID-19アプリのPPE着用時のBluetoothプロンプト

NHS COVID-19アプリのPPE着用時のBluetoothプロンプト


NHSのCOVID-19アプリを詳しく調べることができて、うれしく思っています。その機能についてはさまざまな憶測がありましたが、私たちが目にしたのは、よく作られた安全なアプリでした。バックグラウンドでの追跡は機能しているようですが、それが今後も有効であり続けるかどうかは、依然としてAppleの手に大きく委ねられています。その結果、英国のCOVID-19対応の有効性も、今ではAppleの手に委ねられています。

独自路線を選ぶか、Appleのフレームワークを使うかは、難しい選択だったはずです。Appleに従うほうが、おそらく物議を醸しにくい選択だったでしょう。しかし、iOS 13.5はまだ公開されておらず、英国のアプリは明日ベータ版として公開されます。英国がその後のアップデートでAppleに倣うことを妨げるものも何もありません。その観点から見れば、まずワイト島で試験運用をしてみてもよいのではないでしょうか。


アプリはどのようにしてバックグラウンドでも効果を保てるのか?

アプリが動作し続ける仕組みの詳細について寄せられた質問にお答えするため、5月7日 BST 09:25にこの回答を追加しました。NHSXは、より良い結果を得るために、いくつかの巧みな手法を使っています。

The Sunは昨夜、アプリが非公開のBluetooth APIを使っていると報じましたが、私たちはそのような兆候を確認しておらず、同紙はその後、この主張を撤回する形で記事を修正しています。NHS COVID-19アプリは、iOSの公開されているBluetooth APIを使っており、特別な権限を利用しているようには見えません。代わりに、いくつかの巧妙な手法が使われています。

最初の手法は、一時停止中のアプリに対するiOSのBluetoothの挙動への対応です。Appleは、アプリが一時停止中に新しいデバイスをスキャンする方法を変更していることが分かりました。一時停止中のアプリは、まだ見たことのないデバイスを正しく認識できません。上で書いたとおり、「新しいデバイスの兆候を探したり、そのデバイスと意味のある形で通信したり、特にApple以外のデバイスを識別したりすることが難しくなる」のです。

NHSXは、Apple以外のデバイスの課題に、逆の方向からアプローチしました。この点でiOSの動作に影響を及ぼせないと悟り、Androidアプリに巧妙な仕組みを組み込んで、iOSデバイス上のバックグラウンドのアプリが送信する、制限されたApple固有のメッセージを認識できるようにしたのです。これにより、Androidデバイスは、iOSデバイスと会話するのに十分な情報を得て、通信できる状態にiOSデバイスを再び起こせます。

Androidがない場合の状況は少し異なります。NHS COVID-19アプリは、バックグラウンドに一定時間置かれると静かになることがあるというしきい値があり、デバイスのログにもその例が示されています。この場合、アプリはバックグラウンドに回されますが、1時間半以上にわたってスキャン(技術的には「ブロードキャスト」)を続けられます。ほかのアプリがBluetoothを使うなど、スマートフォン上のほかのイベントによって、この時間が延びることもあります。

Session uk.nhs.nhsx.sonar-peripheral-11919-319 can advertise in background for 6240 seconds

その結果、「このアプリは、一定期間が経過するとiOS同士の通信で効果を失う」と言い切ることはできません。アプリが動作を維持できる時間枠には余裕があって変動し、その枠が延びる要因として、Bluetoothのほかの用途での利用、Androidデバイスの存在、通知の有効性など、妥当なものがいくつもあるためです。

それほど一般的ではない状況として、システムのメモリが不足しているときなどに、iOSがバックグラウンドのアプリを完全に一時停止しようとすることがあります。この場合、サービスの信頼性に影響が出ます。アプリはこれに対処するため、ユーザーにアプリを開き直すよう促すプッシュ通知を送ろうとしますが、デバイスの状態によっては、常にうまくいくとは限りません。私たちのテストでは、アプリを実行したiOSデバイスは、夜通しバックグラウンドサービスを実行し続けました。


アプリは個人データを収集し、私の身元を明かすのか?

アプリによるデータの収集と送信について寄せられた質問にお答えするため、5月7日 BST 11:45にこの回答を追加しました

iOSアプリが取得するデータは本当にごくわずかで、すべてがlinkingIdに関するものです。これが個人と結びつくのは、ユーザーが症状を報告し、そのIDを使ってNHSで検査を手配した場合だけです。

陽性の検査結果がIDに対して記録されることが、実質的に追跡のアラームを鳴らすきっかけになります。そこで問題になるのは、NHSが検査時に収集した個人の詳細情報を、そのIDと併せて中央に保存するかどうかです。これはアプリが機能するために必要なことではなく、アプリに本質的に備わっているものでもありません。先に書いたとおり、アプリは、ユーザーの郵便番号の最初の数桁(設定時にユーザーが入力するもので、検証されません)を除いて、位置情報にアクセスできません。

つまりここでの問題は、アプリが何を保存するかではなく、検査を予約する際にNHSがどのような情報を求め、その情報がどのように保存されるかです。

ユーザーが症状を報告しても検査を手配しなかった場合(あるいは、IDを提供せずに検査を手配した場合)、この2種類の情報が結びつけられる方法はまったくありません。もちろん、この極端なシナリオでは、ユーザーがCOVID-19に感染していてもアプリが警告できなくなります。

私たちはこの調査を続けており、状況が進展しだい、さらに詳しくお伝えします。


執筆者について

Aidan Fitzpatrick

創業者兼CEO

世界初のiOSデータ復旧ツールを開発した後、Aidanは2008年にReincubateを設立しました。それ以来、AMD、Qualcomm、HPといった企業と協力し、Camoアプリのエコシステムを筆頭に、映像ソフトウェア向けの意義深い機械学習機能を切り拓きながら、同社を世界トップクラスのISVの一つへと成長させてきました。Aidanのリーダーシップのもと、Reincubateは英国最高峰のビジネス栄誉を4度受賞し、The Sunday Timesの「100 Tech」リストにも選出され、Apple Design AwardおよびApp Storeのノミネートで業界からの評価を獲得しています。彼の仕事や手法はモバイルフォレンジックに関する学術論文でもたびたび引用されており、Google、Microsoft、Snapなどの企業が主催するイベントへの登壇にも招かれています。


コメント (1)

richard atterbury 2020年5月9日

I am on IOW. The app does require Location Services. Very surprised as every description, including yours, says that it does not

Reincubate サポートからの返信 2020年5月9日

Hi Richard, thanks for your comment! The way the app gets access to Bluetooth on Android is confusing; its request for access makes it appear it's also requesting location access. We detail what's [going on with that here](https://reincubate.com/blog/nhs-covid-19-background-tracing-details/) — in short, it's a limitation of Android that appears misleading.


関連コンテンツ


人気の記事

King's Award for Enterprise のロゴ

King's Award for Enterprise:Reincubate は英国最高峰の公式ビジネス表彰を4度受賞しており、直近では過去3年間にわたる同社の卓越した成長が評価されました。

ユーザーやパートナーとの関係は、私たちの価値観と開発する製品の中心にあります。レビュー をご覧いただき、皆さまの声をお聞きください。

Centre for Assessment による ISO 27001 認証取得、UKAS 認定

© 2008-2026 Reincubate Ltd. 無断複写・転載を禁じます。イングランドおよびウェールズ登記番号 5189175、VAT 番号 GB151788978。Camo®、Streamlight®、Reincubate® は登録商標です。特許出願中。

ヘルプ