GMTC 全球大前端技术大会 8 折涨价倒计时 2 天,现在购票立减 ¥960 ! 了解详情
写点什么

一款跟踪程序,让近亿元开发费打了水漂

2020 年 6 月 24 日

一款跟踪程序,让近亿元开发费打了水漂

在挣扎了十多周以后,NHS(英国国家医疗服务体系)才意识到想要绕过谷歌和苹果 API 自研开发应用程序并不容易实现,在 1100 多万英镑(约合人民币 9700 多万元)打了水漂后,决定放弃,转而与谷歌、苹果展开合作。


事件回溯

近日,据外媒报道,受到新加坡成功发布 TraceTogether(首个由政府支持的接触追踪应用程序)项目的启发,英国国家医疗服务体系(NHS)也决定自己来开发一款联系人跟踪应用程序:NHS COVID-19,以追踪冠状病毒在人群中的传播。按照计划,该应用程序 5 月初在怀特岛(Isle of Wight)进行测试后,本应该在 5 月中旬推广到英格兰其他地区,但由于一些原因至今也没有上线。


该款应用通过在智能手机上使用蓝牙进行注册,来监控人们之间的密切联系。当某位用户出现新冠症状时,该程序就会向与之有过接触的人发出警报,提醒他们有感染的风险并应该进行隔离和检测。


在使用该应用程序后,与出现症状者有过接触的用户信息将以匿名形式与卫生服务共享,从而可以跟踪数据和 Covid-19 的传播。但经过测试发现,该应用程序在检测苹果手机时存在缺陷。苹果的 iOS 系统将该应用程序推入了后台,Apple 的 iOS 通常会禁止应用程序在后台通过蓝牙运行。这意味着用户须一直在前台打开这个联系人跟踪应用程序,以使其正常运行。因此造成了该应用程序仅可能检测出它所接触的 4%的苹果手机,而安卓手机的检测率为 75%。相比之下,运行 Apple-Google 系统的苹果手机检测率为 99%。由于该应用程序的失败,英国政府近日表示将转向使用苹果和谷歌的应用(美国疫情爆发之后,苹果谷歌联手开发出了一款跟踪程序)。


模型开发愿景

在疫情爆发之后,联系人应用程序层出不穷,不管是开源的还是类似谷歌和苹果这类较为成熟的应用,NHS 在发布之前也曾公布自己的设计愿景。在这份文档中,NHS 希望这款应用程序不会耗费多余的电量,并且可以很好地保护用户隐私,具体原则如下:


  • 在受支持的所有移动设备(包括相当老的设备)上运行良好

  • 仅使用苹果和谷歌支持的软件开发工具(作为 iOS 和 Android 开发的一部分)

  • 不会耗尽电池电量或停止其他应用正常运行

  • 强烈保护用户隐私和安全

  • 提供公共卫生专业人员在疫情防范上面的见解


所有联系人跟踪应用程序都有一个共同特点:记录用户何时与他人保持亲密关系(通常以保护隐私的方式进行),并尝试刻画用户之间的亲密程度以及持续时间。一旦某人向程序表明自己生病了,程序就会按照不同模式做出区别反馈。


在第一种模型(称为“分散模型”)中,系统会定期收集病人的名单,并将这份名单发送给应用内的所有用户,各设备会查看列表中是否有其本地联系人,并告知用户这一情况。在这种去中心化模型中:应用程序的每个用户都对谁生病了很了解(并且该列表会不断更新);公共卫生部门对病患者信息几乎一无所知。



分散式和集中式联系人跟踪模型简介


在第二种模型(“集中式模型”)中,患病的用户报告其症状,但将其所有联系人信息以匿名的方式提供给公共卫生局,以及有关他们所拥有的和联系人相关的一些详细信息(持续时间和接近程度等)。卫生部门可以使用风险建模来确定哪些联系人受风险最大,然后通知他们采取一些措施。在这个模型中,卫生当局拥有匿名数据以帮助其了解疾病如何传播。在这种情况下,系统只要知道某位匿名人士感染了病毒,就会将所有与之密切接触的人员标记为高风险。


当用户下载并运行该应用程序时,会为手机分配一个较大的随机数(一个 128 位 GUID),以充当固定的匿名身份,这一点只有设备和 NHS服务器知道。该应用程序向用户询问其邮政编码的第一部分(例如,主要用于 NHS 资源计划的是 LS1 或 SW1A),并且记录手机型号(例如“ Apple iPhone 10,2”)。手机和系统也会同意一些加密密钥,包括用于验证安装的密钥和一些系统参数,不会从设备或用户处获取任何个人数据。


该应用程序每隔几秒钟采样并记录一次蓝牙信号强度。信号强度是距离的代表,如果没有问题,则 28 天后将删除每条记录。设备每天都会生成一个随机的密钥对,并以只有 NHS 服务器可以恢复的方式对其进行加密。由于电话通过低功耗蓝牙(BLE)彼此联系,这与跟踪器或智能手表的通话机制相同。当另一个应用程序用户距离 BLE 足够近以至于无法通过 BLE 进行查看时,这些设备将彼此连接,并交换包含其当前加密信息的 Blob,用于 BLE 连接的时间和传输功率的软件包,所有这些都使用设备身份验证密钥进行签名。


失败原因

试图绕过 iOS 和安卓系统

在 5 月初,澳大利亚有一款联系人跟踪应用程序没有使用苹果和谷歌系统,最终被证实无法在苹果手机上使用。最近的一些数据表明,该程序仅在四分之一的情况下是可用的,所以现在澳大利亚已经开始在苹果和谷歌系统上开发该程序。


从技术上来看,该款应用程序在设计之初也没打算使用苹果和谷歌的系统,与苹果和谷歌开发的系统相比,NHS 认为他们自行开发的系统可以更准确地检测出通过蓝牙通信的电话之间的距离。事实上,苹果和谷歌所创建的系统可让蓝牙在后台无缝运行,如果不使用这两者提供的官方API是很难实现后台持续运行的。


如果是 iOS 应用,大部分应用程序运行时都被禁止通过蓝牙广播,只可以保证应用程序在前台运行,且用户同意隐私许可的情况下运行蓝牙,这显然不能满足 NHS 的想法,无法持续不间断的收集信息。对于一些特殊应用,苹果确实可以允许其在特殊模式下运行,但这个限制是非常严格且可能存在延迟。比如,安卓应用每秒发送一次数据,iOS 应用每十秒才可以发一次,而且这种频繁的启用还可能损失手机的电池寿命。


如果是安卓应用,这个问题可以通过编码解决,谷歌 Android 8 及更高版本允许联系人跟踪应用程序一直作为前台服务运行,并带有图标表示正在运行,尽管这不是特别电池友好,也不为谷歌所建议,并且可能导致人们根本不愿意使用该应用程序以节省电量。


NHS 坚持要求其工程师开发的应用可以在 iOS 上以特殊的后台模式运行,并“ 足够好 ”地解决上述问题,并在检测到附近设备上运行的应用后短暂唤醒设备,以向附近的设备宣告自己的存在,但现在看来这并没有实现。


用户不愿下载

英国政府声称需要一个集中的系统来收集关于疫情爆发的数据,但这样分散管理的应用程序很容易造成数据泄露,这也让下载该程序的用户担心个人隐私问题。此外,当该款应用程序首次在怀特岛进行测试时,用户就表现出了对该应用程序耗电情况的担忧。怀特岛的用户对这款应用程序进行了测试,随后发现该应用程序存在错误通知、小故障和 bug,这导致一些人将其从设备上卸载。


Adam Smith 研究所的 Matthew Lesh 表示:


如果一款追踪联系人的应用程序要运行,那么绝大多数人都必须下载它。但是一款非必要集中收集数据、操作起来很蹩脚、又很耗电的应用程序可能不太吸引人。我们需要改变这种分散管理的方法。我们需要转变思路,否则后果十分严重。


多方参与,权责不明确

官方拒绝透露在开发这款失败的应用程序上花了多少钱,但一个官方数据库记录了三份价值 480 万英镑左右的合同。据公布的记录显示,软件公司 Zuhlke Engineering 获得了超过 500 万美元的合同,VMware 及其子公司 Pivotal 获得了 480 多万美元的合同,此外,据消息称,一系列合同还被授予了多家负责应用程序安全测试的公司,合同金额从 6.7 万英镑到 16.2 万英镑不等。在被另一种技术替代之前,该款应用由 11 家私营公司共同开发,总花费超过 1100 万英镑。


就在几周前,NHS 技术部门负责人 Matthew Gould 先生还表示,这款应用有望拯救生命。但在试验中,苹果手机上只有 25%的联系人被检测到,而安卓设备上的这一比例为 75%。


该应用程序是由 VMware Pivotal 实验室和许多其他组织共同协助 NHS 开发和测试的,其中包括 Zuhlke 工程、微软、亚马逊网络服务、牛津大学、英国广播公司(BBC)、英国皇家空军,此外,新加坡、挪威、爱尔兰、新西兰和德国也对该项目予以了支持。我们将会仔细研究第一阶段在怀特岛的推出应用程序版本,并在接下来的几周内不断完善和改进它。


更多组织的参与并不意味着能编写出更加一致、有效的代码,这往往会造成分工不明确,相互推诿责任。尽管 NHS 聘请了一系列外部专家和私营企业参与到应用程序的开发中,但我们注意到苹果和谷歌这两家最大的智能手机操作系统公司不在名单上。


英国的软件开发水平

长期以来,英国政府一直致力于各种转型和升级,比如通过开源软件的方式对政府内部使用的软件进行重新升级。但这些事情往往取得的效果甚微,却需要付出相当多的努力。


2013 年,英国也曾经发生过一起与之类似的项目失败案例,当时的目标是做一个通用信贷系统(UC),英国国家审计办公室(NAO)的报告以及泄露出的内部调查,都将其归咎于糟糕的管理和实践。


通用信贷系统的开发隶属于“工作和养老金部”(DWP), 它整合了对数百万英国索赔的补助金给付,这曾被视作一个敏捷项目,并预计在 2017 年发布。但在启动两年后,项目进度就落后于计划,而预算却出现了超支。这一旗舰项目将无法赶上 2013 年 10 月的中期交付,而 The Register(英国的一家科技新闻网站)报道了 DWP 核销掉了 3400 万英镑的软硬件方面的 IT 资产,它们无法用于这一项目中。


此前,英国政府数字化服务(Government Digital Service,GDS)技术架构师 Anna Shipman 曾表示,英国政府希望提供非常好的数字化服务,好让大家喜欢使用它们,并最终让政府和公民间可以更好的互动。Shipman 在过往接受 InfoQ 采访时曾表示:


在任何一个已经存在了一段时间的组织中,做事的方式已经确定,而且常常与它们实施的原因脱节。那些作为“规则”的事物实际上就是惯例。我们必须很好地处理这些差异,回推其中的一些规则以触及核心原则。


例如,有些人说,如果应聘者说了一些你想深入了解的内容,你不能在面试中提出技术性问题或者偏离剧本。但事实并非如此,只要你确信,你给了每个候选人平等的机会来证明自己,你始终如一并保持着良好的记录。我们非常擅长于做研究和回推,这样我们就可以在不损害(通常是非常明智的)原则的情况下改变实践。


然而,随着时间的推移,政府的资金、治理和权力结构面临着更大的挑战。你可以通过某种方式来提供更好的服务,改进技术,引进新技能,而不处理系统的这些主要部分。但在某种程度上,如果你想真正利用互联网时代的工作方式,你就必须解决系统性问题。当你在挑战人们花了整个职业生涯来捍卫的东西时,你会遇到真正的阻力。


如今看来,英国政府的信息化转型之路,道阻且长。


参考链接:


https://www.ncsc.gov.uk/blog-post/security-behind-nhs-contact-tracing-app


https://www.infoq.cn/article/2013/10/noa-uc-failure-report


2020 年 6 月 24 日 14:242191

评论

发布
暂无评论
发现更多内容

手把手教你玩华为eNSP模拟器

正确面对倦怠感,提升职场战斗力

boshi

职场成长 七日更

《零基础看得懂的Python入门教程 》——(五)我的魔法竟然有了一丝逻辑

1_bit

Python

日记 2021年2月10日(周三)

Changing Lin

2月春节不断更

产品训练营 - 第四周 - 作业

邹小胖

产品训练营

第四章作业

Rui

你看那个程序员,每年升职加薪,日赚3千

谙忆

「产品经理训练营」作业 04:知识星球加入星球用例

狷介

产品经理训练营

第四周学习心得

Trigger

极客时间 产品经理训练营

并发编程系列:关于线程中断

程序员架构进阶

Java 并发 28天写作 2月春节不断更

产品经理第四周总结

克比

如何在不辞职的情况下,改变不喜欢的工作?

熊斌

2月春节不断更

用例

z

马斯克说狗币牛逼,我说idea插件助你盯盘摸鱼

滑板上的老砒霜

比特币 idea插件 Android开发

抽奖小程序-活动发布用例分析及流程图

思亭

Spring中经典的9种设计模式,一定要记牢

Crud的程序员

spring 程序员 架构 设计模式

Java容器--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本

JavaPub

Java hashmap 面试题 javapub

5. Python 循环的本质就是一段代码懒得重复写

梦想橡皮擦

Python Python Monad 2月春节不断更 python入门

UC01 用户 购买课程

克比

从“乌鸡”到5G,不仅仅是谐音梗

脑极体

第四周作业

Geek_72d5ab

极客大学·产品训练营·第三章作业(第四周)

二大爷

极客大学 极客大学产品经理训练营 产品训练营

1分钟内的Linux性能分析法

Gopher指北

Linux 后端

产品经理训练营第四周作业

happy-黑皮

产品经理训练营

产品经理第 0 期训练营第四周作业提交

Krystal

产品经理训练营-第四周作业

玖玖

5G点亮工业革命前,2021需要持续点亮5G

脑极体

ZEGO全新语音聊天室方案,2小时复刻 Clubhouse

ZEGO即构

0期产品训练营第四周作业-学情周报用例

skylar

产品经理训练营笔记 - 业务流程与产品文档(二)

.nil?

产品经理训练营

第四周作业-核销优惠券用例

隋泽

产品经理训练营

一款跟踪程序,让近亿元开发费打了水漂-InfoQ