写点什么

谷歌和苹果发布 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:001681

评论

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

RocketMQ 事务消息导致事务消息阻塞 BUG 排查

陈皮

RocketMQ bug 事务消息

Jedis 参数异常引发服务雪崩案例分析

vivo互联网技术

服务雪崩 Redis集群模式 主从切换 Jedis参数设置

软件测试 | Java程序的运行机制和Java虚拟机

测吧(北京)科技有限公司

测试

软件测试 | Java开发环境搭建

测吧(北京)科技有限公司

测试

软件测试 | 编写第一个Java程序

测吧(北京)科技有限公司

测试

【我和openGauss的故事】openGauss逻辑备份恢复

daydayup

什么是大规模敏捷SAFe?SAFe大规模敏捷管理工具

顿顿顿

敏捷开发 safe 大规模敏捷 scrum工具

云原生机甲的构想

如水

云原生 servicemesh 云原生机甲 CloudMecha

12 点半!Voxel51 亚太地区计算机视觉线上 Meetup,速来!

Zilliz

计算机视觉 Milvus Zilliz voxel51

敏捷领导力 (CAL E+O / ALJ) 认证

ShineScrum

点云标注在自动驾驶中的挑战

来自四九城儿

百度智能云 X 软通动力:将结合大模型开发多领域智能应用

科技热闻

为什么要做稳定性保障?

老张

SRE 稳定性保障

MobPush 推送限制策略

MobTech袤博科技

程序员 前端 push 智能推送 推送

【我和openGauss的故事】记一次基于在银河麒麟系统上适配openGauss进阶之旅

daydayup

成功实践丨虚实交互,安擎赋能城市交通大数据应用

科技热闻

AIGC第一波裁员已至

互联网工科生

人工智能 裁员 AIGC

百度知道上云与架构演进

百度Geek说

云原生 架构演进 业务上云 企业号 7 月 PK 榜

用热爱,走一些“远”路!

禅道项目管理

软件测试 | 一个简单的Java范例

测吧(北京)科技有限公司

测试

揭秘高新技术发展最新趋势,程序猿视角下的技术革新感悟 | 社区征文

三掌柜

年中技术盘点

实现在线直播源码高质量直播体验重要功能_山东布谷科技创作

山东布谷科技

软件开发 直播 源码搭建 直播源码 在线直播源码

掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

深耕行业创新 引领视听未来 | 宇视亮相北京Infocomm China 2023展会

新消费日报

全加器

陈皮

质效两全:媒体服务的创新“顶设”

阿里云CloudImagine

云计算 视频云

@Lazy 注解为啥就能破解死循环?

江南一点雨

Java spring

博睿数据获聘信通院DGA首批智库专家组

博睿数据

可观测性 智能运维 博睿数据 信通院 专家智库

点云标注在自动驾驶中的重要性

来自四九城儿

【我和openGauss的故事】 openGauss 5.0.0 分区表增强

daydayup

opengauss

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