9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

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

  • 2020-06-24
  • 本文字数:4235 字

    阅读完需:约 14 分钟

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

在挣扎了十多周以后,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


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-06-24 14:242509

评论

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

虎符Hoo研究院:Cosmos是如何实现链与链的“港口”相连的?

区块链前沿News

Hoo 虎符交易所 虎符研究院 Cosmos

网络损伤工具大乱斗

声网

Dev for Dev 网络损伤 网络仿真 网络与传输

【漏洞分析】反序列化漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 安全漏洞

再谈 AI 及未来的趋势 | 社区征文

宇宙之一粟

AI 新春征文 2月月更

基于CC2530(ZigBee设计)的温度报警器

DS小龙哥

2月月更

从冬奥看中国科技(六):千里光伏初长成

脑极体

Bloom Filter 优化- CrimsonDB系列论文(一)

Emc

存储 LSM-Tree

浅谈 AI 物联网基础常识 | 社区征文

liuzhen007

AI 新春征文 2月月更

万字详解数据仓库、数据湖、数据中台和湖仓一体

五分钟学大数据

数据中台 数据仓库 数据湖 湖仓一体

网络安全kali渗透学习 web渗透入门 如何进行NESSUS漏洞检测

学神来啦

如何理解用户的行为?

石云升

产品经理 用户研究 用户模型 2月月更

当前主流视频编码技术浅析| 社区征文

王强

视频编解码 新春征文

你知道MySQL InnoDB 的内存组件有哪些吗?

程序猿阿星

MySQL MySQL InnoDB Buffer Pool

面试突击24:为什么wait和notify必须放在synchronized中?

王磊

面试 java面试

迁移学习综述与未来展望 | 社区征文

战场小包

人工智能 迁移学习 新春征文 2月月更

【架构训练营-模块三】

默光

架构训练营5期

AI安全技术总结与展望| 社区征文

herosunly

人工智能 新春征文 2月月更

Spring Boot AOP 扫盲,实现接口访问的统一日志记录

沉默王二

Java

凡泰极客加入中商联互联网应用工作委员会并荣任常务委员单位

FinClip

模块 8 作业

miliving

扔掉 Electron,拥抱基于 Rust 开发的 Tauri

百瓶技术

rust 前端 框架开发 tauri

学生管理系统模块4作业

刘洋

#架构实战营 「架构实战营」

系统学习 TypeScript(一)——认识 TypeScript

编程三昧

typescript

医疗保健行业如何从区块链中受益?

CECBC

安卓隐私沙箱来了!Android Privacy Sandbox简介

XCG00

android

提权方式及原理简介(面试)

喀拉峻

黑客

浪潮国资云:国资为引,助力国企上云用数赋智

浪潮云

云计算运维

netty系列之:EventExecutor,EventExecutorGroup和netty中的实现

程序那些事

Java Netty 程序那些事 2月月更

「前端CI/CD系列」第一篇:如何用建木CI往七牛云上传文件

Jianmu

CDN CI/CD 文件存储 七牛云 建木CI

IDP深度 | 企业到底需要何种数据分析挖掘工具?

Baihai IDP

人工智能 数据挖掘 商业智能

龙蜥社区一周动态 | 2.14-2.20

OpenAnolis小助手

Linux 开源 动态

  • 扫码添加小助手
    领取最新资料包
一款跟踪程序,让近亿元开发费打了水漂_大数据_赵钰莹_InfoQ精选文章