保持生命:后台跟踪和NHS COVID-19应用程序
- 与澳大利亚COVIDSafe应用不同,NHS COVID-19应用在iOS设备上在后台运行时似乎可以正常运行
- 该应用程序通过向用户提供带有参考代码的症状来防止虚假报告:然后将该代码与正式的测试结果相关联,然后采取行动
- NHS COVID-19指示医护人员在穿着PPE时关闭其设备上的蓝牙,并解释说“穿着PPE时不应捕获您在工作中的互动”
- 0925 BST更新5月7日 :我们添加了“应用程序如何在后台保持有效?”下面的部分介绍了与Android设备通信时该应用如何保持活力,并涵盖了iOS到iOS通信的一些挑战和技术
- 5月7日BST更新1145 :我们添加了“应用程序是否收集个人数据并透露我的身份?”下面的部分。
屏幕上不显示应用程序时的联系人跟踪挑战
当应用程序不在用户设备的前端或居中时,应用程序开发人员就没有什么选择可以使它们保持“活动”状态。 Apple仔细管理这些选项,以确保应用程序不会侵犯用户隐私或过度消耗用户电量。特别是,他们区分了应用程序是否具有焦点 ,即。它显示在屏幕上-或在后台运行。 iOS的最新更新限制了开发人员在后台运行时访问数据的能力 :例如,在能够如此有效地限制后台收集之前,Uber能够跟踪用户的活动,即使不在驾驶室中也是如此。
为了在后台有意义地运行,当应用程序的发布者提交到App Store时,需要通过使用一组“ 后台模式 ”进行标记来获得Apple的许可。当从一个设备向另一个设备传输视频,收集位置更新,充当电话或使用蓝牙时,这些背景模式仅限于使用。例如,这些模式可让您的手机在后台运行AirPlay,播放音乐而又不会始终显示Spotify,使用WhatsApp打电话给某人,然后将其置于后台,或者跟踪您在Strava上的运行。
这些模式是有限的,但是,用户可能熟悉iPhone通知,询问是否应允许应用程序在后台访问您的位置。即使用户授予了这些权限,电话也可能会继续请求确认这是正确的选择。
联系人跟踪应用程序是使用低功耗蓝牙(BLE)构建的,简而言之,它允许设备相互识别。从理论上讲,Apple的“使用Bluetooth LE附件”和“充当Bluetooth LE附件”模式是理想的选择,并且允许在后台使用BLE。但是,尽管使用这些模式的后台应用程序将能够继续与已经与之通信的任何BLE设备(例如蓝牙智能锁)进行通信,但它无法控制轮询设备的广播速率它从未见过。在有背景的情况下,这将使得查找新设备的迹象,与它们进行有意义的通信,尤其是识别非Apple设备变得更加困难。这反而会妨碍必须在后台连续运行的联系人跟踪应用程序。
所有服务UUID只能由明确对其进行扫描的iOS设备发现。 [...]对于正在做广告的应用程序,在后台,外围设备发送广告数据包的频率可能会降低
跟踪的变通办法和替代方法
当然,对于开发人员而言,这并不是新的挑战:他们长期以来一直在努力寻找使应用程序保持后台运行并收集 跟踪数据的 限制的 方法 。已经出现了开源AltBeacons之类的框架来解决此问题,但对于设备必须不断寻找新设备的联系人跟踪来说,它们并不可行。正如ABC在澳大利亚发现的那样,当查看他们的国家COVIDSafe应用程序时,还没有一个切实可行的解决方案。存在一些可能暂时有用的漏洞利用方法-例如将一个应用程序注册为音频播放器并使其播放音乐-但这种性质的此类漏洞利用方法被Apple拒之门外,给用户带来不便,并且很少将其批准给应用商店。
同时,苹果公司一直在准备发布iOS 13.5 ,目前可以在beta中使用。 Apple可以对自己的系统进行更改,从而有利于以这种方式进行跟踪。 13.5将引入许多更明显的功能-例如,对戴着口罩的用户的FaceID的支持,或者至少是输入密码的更快速的途径-以及一些不太明显的功能,例如ExposureNotification
框架,该框架可实现联系人的确切身份跟踪应用程序需求。当然,这不会产生完美的系统:并非每个用户都可以利用此功能,因为iPhone 6(2015)等设备无法运行iOS13。而Apple的系统使用全球标准标识符,实现它的每个国家/地区都使用孤立的国家/地区数据库。因此,如果来自一个国家的受感染的欧洲人暴露于来自另一个欧洲国家的公民,他们将不会通过联系追踪发现它 。
Apple的COVID-19 ExposureNotification
提供了此处所需的解决方案,但有一些警告。最重要的是,Apple表示只有他们的应用程序才能使用它,以防止他人滥用该技术。
那么NHS如何使用其COVID-19应用程序呢?
那么,英国的NHS COVID-19如何才能在后台运行时有效地追踪新设备,而不会“入睡”(从技术上来说,是“被暂停”)并因此失效?通过我们对“ NHS COVID-19”应用程序1.0.1b341
的测试,我们可以看到确实在后台有效地进行了交流。看来这是通过使用一些使用keepalive和通知的巧妙变通办法来完成的。强制退出该应用程序将停止后台跟踪,但是,如果相反地将手机关闭并重新打开,它将继续在后台正常通信。这种解决方法可能会或可能不会与Apple相抵触,但目前尚未公开,Apple已经批准了他们迄今为止所见的应用程序的构建。
我们将继续对此进行研究,并将随着事情的发展发布更多细节。
NHS COVID-19应用程序是否存储敏感数据?
不会。该应用程序使用合理的安全措施,并且没有存储不必要的数据,看起来很好地组合在一起。它围绕为应用程序的每次安装生成的linkingId
旋转。该ID在应用程序的安装过程中一直存在,因此,卸载并重新安装该ID不会重置该标识符。
使用uk.nhs.nhsx.sonar
路径下的iPhone Backup Extractor查看应用程序中的数据,我们可以看到有一系列与Google Firebase耦合的文件以及该应用程序其余部分的一组小Plist(配置文件)数据。
用户是否可以错误地自我报告他们拥有COVID-19?
如果用户报告症状,则该应用会提供一个电话号码以安排测试以及参考代码。想法是将测试结果与用户的参考代码关联。如果用户虚假地报告症状,没有NHS更新测试结果以使其与用户代码相匹配就不会进行确认。
该应用是否请求位置权限?
不,不是的。
NHS是否误导了公众有关使用Google API的信息?
不能。NHSCOVID-19应用程序已与Google的行业标准Firebase API进行了深度集成,以进行数据存储和管理。 (NHS并未使用Google或Apple的联系人跟踪框架;除其他以外,直到iOS 13.5发行版才可用。)
该应用与哪些服务通信?
与Android应用程序一样,所有实质性通信都通过NHS的COVID19 API进行,该API托管在*.covid19.nhs.uk
。由于使用了Microsoft的AppCenter服务 ,该应用程序还会发出其他一些请求,但没有任何实质性或敏感的请求。
如果NHS工作者使用该应用程序,会不会导致误报?
该应用程序提示医护人员在佩戴PPE时禁用其设备上的蓝牙,并指出“佩戴个人防护用品时不应捕获您在工作中的互动情况”。
我们很高兴对NHS的COVID-19应用程序进行了更深入的研究。尽管围绕它的功能有很多猜测,但我们看到的是一个构建良好且安全的应用程序。尽管背景跟踪在很大程度上仍由Apple控制,但背景跟踪似乎仍然有效。结果,英国对COVID-19的反应的有效性现在也由苹果控制。
选择单独使用它还是使用Apple的框架将是一个具有挑战性的选择。追随苹果的领导可能是一个没有争议的选择。但是,iOS 13.5尚未发布,而英国应用程序将于明天在Beta版中发布,没有什么可以阻止英国在随后的更新中跟随苹果公司了。从这个角度看,为什么不先在怀特岛进行审判?
该应用程序如何在后台保持有效?
我们已在5月7日BST 0925上添加了此答案,以回答我们收到的有关仍在运行的应用程序细节的问题。 NHSX在这里使用了一些智能技术来改善结果。
《太阳报》昨晚报道说 ,该应用程序使用了专用的蓝牙API,但是我们没有看到任何迹象,因此他们对其故事进行了修改,以撤消这一主张。 NHS COVID-19应用程序使用iOS内的公共蓝牙API,并且似乎没有利用任何特殊特权。相反,有一些巧妙的技术。
第一项技术是响应iOS对已暂停应用程序的蓝牙行为。我们注意到,苹果改变了应用在暂停状态下扫描新设备的方式。暂停的应用无法正确识别之前未曾看到的设备。如我们上面所写,“寻找新设备的迹象,与它们进行有意义的通信,尤其是识别非Apple设备变得更加困难”。
NHSX则以另一种方式应对了非Apple设备的挑战:意识到它们无法影响iOS在这方面所做的事情,他们已经在Android应用程序中构建了巧妙的功能,以识别后台应用程序在Apple特定的受限制消息在iOS设备上会发送。这为Android设备提供了足够的信息,使其能够与iOS设备进行通信,从而将其唤醒,使其恢复为可以通信的状态。
没有iOS的情况有所不同。有一个阈值,NHS COVID-19应用程序在后台放置一段时间后可以安静下来,设备日志显示了此示例。在这种情况下,该应用程序已被推送到后台,但是将能够继续扫描一个半小时以上(技术上为“广播”)。手机上的其他事件(包括使用蓝牙的其他应用程序)可以扩展此范围。
会话uk.nhs.nhsx.sonar-peripheral-11919-319可以在后台投放广告6240秒
因此,不可能说“该应用在X一段时间后将无法在iOS到iOS的通信中失效”:有一个很大的可变窗口,该应用必须保持运行,并且有许多合理的因素可以触发此窗口被扩展,包括蓝牙的其他用途,Android设备的存在以及通知的有效性。
在某些不太常见的情况下,iOS可能会尝试完全挂起后台应用程序,例如,系统内存不足。发生这种情况时,服务的可靠性受到影响。该应用尝试通过触发要求用户重新打开该应用的推送通知来解决此问题,但这并不总是有效的,具体取决于设备的状态。在我们的测试中,我们运行该应用程序的iOS设备继续保持后台服务在夜间运行。
该应用程序是否收集个人数据并透露我的身份?
我们已在5月7日BST 1145 BST上添加此答案,以回答有关应用程序的数据收集和传输的问题
iOS应用程序实际上捕获的数据非常少:全部都是关于linkingId
。只有当他们报告症状并使用该ID安排与NHS进行测试时,这才可能与一个人联系在一起。
针对ID编码的阳性测试结果有效地关闭了跟踪警报。然后的问题是,NHS是否将在测试时收集的个人详细信息与该ID 一起集中存储。这对于应用程序的工作不是必需的,也不是应用程序固有的。正如我们之前所写,该应用程序无法访问用户邮政编码的前几位(用户在设置时输入的,未经验证)的位置数据。
然后,这里的问题不是关于应用程序存储的内容,而是关于NHS在预订测试时要求提供的信息以及如何存储该信息。
如果用户要报告症状而不安排测试(或在不提供其ID的情况下安排测试),则绝对不可能将两种类型的信息链接在一起。当然,在这种极端情况下,这也将阻止应用程序警告用户是否具有COVID-19。
我们将继续对此进行研究,并将随着事情的发展发布更多细节。
由 richard atterbury
I am on IOW. The app does require Location Services. Very surprised as every description, including yours, says that it does not
回复: Reincubate Support
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 — in short, it's a limitation of Android that appears misleading.