写点什么

谷歌和苹果发布 Exposure Notification API 草案

  • 2020-05-08
  • 本文字数:1369 字

    阅读完需:约 4 分钟

谷歌和苹果发布Exposure Notification API草案

几周前,谷歌和苹果宣布,他们将联合在移动操作系统上为接触者跟踪应用程序提供可靠的支持。现在,这一合作达到了一个关键的里程碑:Exposure Notification API的初步草案及其 iOS 测试版。


需要说明的是,苹果和谷歌已经将他们的技术解决方案重新命名为暴露通知(exposure notification),这比接触者跟踪(contact tracing)好。重新命名的原因是,接触者跟踪是一种更广泛的解决方案,会涉及到某种集中式系统,用户可以连接到上面,而这应该由区域卫生当局提供。苹果和谷歌只是为这类应用程序提供技术基础,因此这个名称更合适。


为了加强隐私,新 API 考虑了由谷歌和苹果定义的加密协议的显著变化。最初,该协议使用了两个加密密钥,一个用户唯一的 Tracing Key,永远不会离开设备,另一个是 Daily Tracing Key,它是基于前者生成的一个跟踪密钥。Daily Tracing Keys 用于生成 Rolling Proximity Identifiers(又称伪随机蓝牙标识符),用于检测特定的时间段内设备的邻近性。


实际上,当设备可以直接访问时,有一个与其相关联的唯一密钥会打开高级攻击的大门。因此,新版本的协议使用完全随机的 Temporary Exposure Keys 来生成 Rolling Proximity Identifier Keys,然后再用它们生成 Rolling Proximity Identifier。按照苹果和谷歌的说法,由于 Rolling Proximity Identifier 不是由一个生存期为 24 小时的完全随机的密钥生成的,所以在不知道相应的 Temporary Exposure Keys 的情况下,攻击者在 Rolling Proximity Identifier 上找到碰撞攻击的机会在计算上是不可行的。这减少了重播攻击和伪装攻击的机会。


新的 Exposure Notification 框架包含两个用户角色:*受影响的用户(affected users)*和暴露的用户(exposed users)。受影响的用户是 COVID-19 的确诊或疑似病例,而暴露的用户可能与前者有过接触。当用户被确诊时,他们的 Temporary Exposure Keys 将通过外部诊断服务器与其他可能暴露的用户共享。此步骤需要用户显式授权。暴露的用户可以使用 ENSelfExposureInfoRequest 检索一组 Temporary Exposure Keys,并请求框架使用 ENExposureDetectionSession 确定本地是否检测到了这些密钥。


Exposure Notification 框架的核心类是 ENManager,它负责一些准备任务,比如检查 App 的授权状态。ENManager 可以使用其 setExposureNotificationEnabled:completionHandler 方法启用暴露通知,在请求使用授权后启动或停止蓝牙广播和扫描。在任何时候,都可以使用 getDiagnosisKeysWithCompletionHandler:completionHandler 来检索此设备使用的 Temporary Exposure Keys,并与诊断服务器共享。此步骤也需要显式授权。


ENExposureDetectionSession 类是和 ENManager 配对的类,因为它可以检查从诊断服务器接收到的 Temporary Exposure Keys 是否被检测到了。这可以使用 addDiagnosisKeys:completion 和 finishedDiagnosisKeysWithCompletion:方法来完成。如果检测到用户暴露过,则可以使用 getExposureInfoWithMaxCount:completionHandler 检索更多信息,如接触时长和日期。


了解更多关于新 API 的细节,请查阅Exposure Notification框架官方文档。


新的Exposure Notification API刚刚在iOS 13.5开发者版本Beta 3中提供,感兴趣的开发者可以试着开始接触者跟踪的实验了。


原文链接:


Google and Apple Publish Exposure Notification API Draft


2020-05-08 09:001740

评论

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

2022 Gartner全球数据库魔力象限发布,腾讯云数据库入选

腾讯云数据库

数据库 tdsql Gartner 腾讯云数据库

手写JS函数的call、apply、bind

helloworld1024fd

JavaScript

Vue-Router 路由与配置

千锋IT教育

为什么是无代码?

间隔

微信小程序 编辑器 无代码

基于 Caddy 部署盘古 Admin 实现流量网关

码农大熊

盘古开发框架

Spring Cloud 应用 Proxyless Mesh 模式探索与实践

阿里巴巴云原生

阿里云 微服务 云原生

Vue.$nextTick的原理是什么-vue面试进阶

bb_xiaxia1998

Vue

西藏等保测评公司有哪些?共有几家?

行云管家

等保测评 等保测评公司 西藏

如何用 7 分钟玩转函数计算?

阿里巴巴云原生

阿里云 Serverless 云原生

HarmonyOS年度开发者活动,赋能逾万名开发者开启HarmonyOS学习之旅

极客天地

一文盘点Zebec生态的收益模型

西柚子

面试官:vue2和vue3的区别有哪些?

bb_xiaxia1998

Vue

腾讯前端手写面试题及答案

helloworld1024fd

JavaScript

计算存储分离在京东云消息中间件JCQ上的应用

京东科技开发者

容器 中间件 存储分离 消息中间件 存储计算分离

说说你对Vue的keep-alive的理解

bb_xiaxia1998

Vue

说说Vue响应式系统中的Watcher和Dep的关系-面试进阶

bb_xiaxia1998

Vue

前端vue面试题集锦1

bb_xiaxia1998

Vue

校招前端二面常考手写面试题汇总

helloworld1024fd

JavaScript

Python 的安装与配置(图文教程)

千锋IT教育

HIFIVE音加加提供曲库、评分、修音功能的K歌SDK-Android版本

数到3变暖男i

API 社交泛娱乐 娱乐社交 K歌 K歌SDK

分享一下MySQL数据库中好玩的14个小玩意

Java永远的神

Java MySQL 数据库 程序员 后端

京东前端高频vue面试题(边面边更)

bb_xiaxia1998

Vue

关于Kubernetes中如何访问集群外服务的一些笔记

山河已无恙

12月月更

实践丨GaussDB(DWS)资源管理排队原理与问题定位

华为云开发者联盟

数据库 华为云 12 月 PK 榜

必会vue面试题(附答案)

bb_xiaxia1998

Vue

怎样徒手写一个React

helloworld1024fd

JavaScript

前端一面必会vue面试题(边面边更)

bb_xiaxia1998

Vue

只要是做乙方,欧美白人下班后也别想失联?

SAP虾客

IT行业 乙方 工作与生活分开 欧美 TICKET

火山引擎DataTester科普:A/B实验常见名词解释

字节跳动数据平台

大数据 AB testing实战 12 月 PK 榜

部分双机热备软件详细介绍-行云管家

行云管家

高可用 双机热备 双机

一文带你了解EiPaaS和EiPaaS的国际趋势

华为云开发者联盟

云计算 后端 华为云 12 月 PK 榜

谷歌和苹果发布Exposure Notification API草案_移动_Sergio De Simone_InfoQ精选文章