AirDrop隔空投送究竟是什么?它跟蓝牙有什么区别?
使用iOS设备有一段时间了,但是其实一直不懂AirDrop的实质是什么?似乎不能把它看作蓝牙?但是它又有蓝牙的性质,有没有人从技术层面解释一下AirDrop?
使用iOS设备有一段时间了,但是其实一直不懂AirDrop的实质是什么?似乎不能把它看作蓝牙?但是它又有蓝牙的性质,有没有人从技术层面解释一下AirDrop?
0x01 Introduction
Apple AirDrop 是一种文件共享服务,集成到全球超过 15 亿终端用户设备,包括 iPhone、iPad 和 Mac 系统,自 2011 年开始运行。AirDrop 完全离线运行,仅在两个设备之间使用直接 Wi-Fi 连接和低功耗蓝牙 (BLE)。本研究在底层身份验证协议中发现了两个严重的隐私漏洞。特别是,这些缺陷允许攻击者了解附近 AirDrop 发送者和接收者的联系人标识符(即电话号码和电子邮件地址)。这些缺陷源于在发现过程中交换此类联系人标识符的哈希值,可以使用暴力或字典攻击轻松破解。
在身份验证期间,两个 AirDrop 设备运行一种联系人发现形式,它们确定它们是否是相互的联系人,即它们是否已将彼此的联系信息存储在其地址簿中。如果结果是肯定的,则连接仅被认为是真实的。保护隐私的联系人发现通常通过文献中的隐私保护集合交集( (PSI) 进行广播。 PSI 协议通常是加密图形协议,它允许两个交互方安全地计算其各自输入集的交集,而不会泄露任何额外的数据。在消费者对消费者 (C2C) 的背景下,PSI 已被提议用于防止在线游戏中的作弊,并且最近被提议用于根据 COVID-19 进行联系人追踪。通过本文工作,旨在促进 PSI 在 C2C 上下文中的部署,以进行相互身份验证。
然而,AirDrop 场景带来了一系列独特的挑战:解决方案需要: (a) 在没有任何第三方服务器支持的情况下完全脱机运行,(b) 考虑恶意方对其地址簿条目或自己的联系人 ID 标识,(c) 在能源和计算资源受限的移动设备上运行,以及 (d) 通过不增加明显的身份验证延迟来保持用户体验。
0x02 Background: Apple AirDrop
Apple 的文件共享服务 AirDrop 已集成到所有当前的 iOS 和 macOS 设备中。它使用称为 Apple Wireless Direct Link (AWDL) 的专有 Wi-Fi 链路层与低功耗蓝牙 (BLE) 相结合,完全离线运行。由于没有涉及协议栈的官方文档,本研究首先定义联系人标识符并讨论可用的可发现性设置。然后,描述了完整的技术协议流程并解释了身份验证过程。
A.联系人标识符和地址簿
每个 iOS 或 macOS 设备都有一个地址簿,可通过联系人应用程序访问。此地址簿包含多个联系人条目,这些条目又由多个对象组成,例如姓名或联系人信息。 AirDrop 杠杆将用户自己的联系人标识符及其地址簿条目用于身份验证。特别是,AirDrop 使用电话号码和电子邮件地址来识别联系人。这是可能的,因为每个 Apple 帐户(通常称为 Apple ID 或 iCloud 帐户)都至少分配了一个此类联系人标识符。 Apple 分别使用验证电子邮件和短信验证电子邮件地址或电话号码的所有权,从而确保标识符的正确性。
在本文中将只处理联系人标识符,即电话号码和电子邮件地址,而忽略可能包含多个标识符的“联系人”的概念。假设存在从设备本地到联系人列表条目的联系人标识符的明确映射。使用术语地址簿 (AB) 来指代设备联系人列表中所有联系人条目的联系人标识符集。请注意,AB 由用户控制,未经Apple验证。此外,用户自己的联系人标识符 (ID) 是分配给用户 Apple 帐户的 Apple 验证电话号码和电子邮件地址。使用符号 c 指代地址簿条目,使用 ID 指代 Apple 验证的联系人标识符。
B.设备可发现性
在 iOS 设备上打开共享窗格时,如果附近的设备可被发现,则会出现在用户界面中。特别是,接收器设备可以被每个人发现,也可以只被联系人发现,这是默认设置。在任何一种情况下,AirDrop 发送方都将尝试与响应接收方进行相互认证握手。请注意,文中解决的问题(即在身份验证过程中发送方和接收方的联系人标识符泄漏)会影响这两种设置。
C.完整协议工作流程
AirDrop 协议允许发送方将文件或链接传输到接收方。它由发现、身份验证和数据传输三个阶段组成,在上图中进行了描述:(a)当发送方打开共享窗格时,它开始发出 BLE 广播,其中包含每个联系人标识符的截断哈希。接收者将发送者的哈希联系人标识符与其地址簿中的条目进行比较。如果在仅联系人模式下找到至少一个联系人匹配或者每个人都可以发现,则接收器激活其 AWDL 接口。然后,发件人通过 AWDL 接口搜索具有 DNS 服务发现 (DNS-SD) 的 AirDrop 服务。 (b) 对于每个发现的服务,发送方通过HTTPS 发现请求启动身份验证程序。如果身份验证过程完全成功,接收者的身份将显示在发送者的用户界面中。 (c) 最后,发送方选择接收方并发送两个后续请求: Ask 请求包含有关文件的元数据,包括缩略图。接收者发送他们关于是否接收完整文件的决定。收到肯定响应后,发送方会继续在上传请求中传输完整文件,否则会中止交易。
D.相互认证
只能在具有 Apple ID 且存在于彼此地址簿中的用户之间建立经过身份验证的连接。为了进行身份验证,设备需要证明它已经注册了某个联系人标识符 IDi,例如与其 Apple ID 关联的电话号码或电子邮件地址,而验证设备会检查 IDi 是否是地址簿条目。身份验证涉及多个 Apple 签名的证书和一系列 Apple 运行的证书颁发机构 (CA)。特别是,AirDrop 使用设备特定的证书 σUUID 和验证记录 VRσ,它们都由 Apple 签名。一旦用户登录到他们的 iCloud 帐户,设备就会从 Apple 检索它们。然后它们可以在任何后续的 AirDrop 交易中离线使用。
证书 σUUID 包含帐户特定的通用唯一标识符 (UUID)。该证书在 TLS 连接中用作客户端或服务器证书(取决于角色)。由于证书中的 UUID 不链接任何联系人标识符,AirDrop 使用 Apple 签名的 Apple ID 验证记录 (VRσ)。验证记录包含来自 TLS 证书的 UUID 和所有联系人标识符 SHA-256(ID1),…,SHA-256(IDm),这些标识符以哈希形式使用用户的 Apple ID 注册。此外,VRσ 包括签名和签名 CA σVR 的证书。 形式上定义 VRσ 如下:
其中 sign(σVR,VR) 是证书 σVR 的 VR 签名。在身份验证期间,AirDrop (a) 验证收到的验证记录上的签名,(b) 验证证书中的 UUID 是否与验证记录中的 UUID 匹配,以及 (c) 计算每个正常 ized3 地址的 SHA-256 哈希book entry 并将它们与验证记录中包含的哈希值进行比较。如果所有检查都通过,则身份验证成功。如果接收方的身份验证失败,则接收方中止连接。但是,如果发送方的身份验证失败,AirDrop 会继续交易,但会将连接视为未经身份验证,而对等方视为非联系。 AirDrop 在用户界面中显示带有地址簿中的姓名和图片的联系人。非联系人使用设备名称而不是图片显示。
0x01 Introduction
Apple AirDrop 是一种文件共享服务,集成到全球超过 15 亿终端用户设备,包括 iPhone、iPad 和 Mac 系统,自 2011 年开始运行。AirDrop 完全离线运行,仅在两个设备之间使用直接 Wi-Fi 连接和低功耗蓝牙 (BLE)。本研究在底层身份验证协议中发现了两个严重的隐私漏洞。特别是,这些缺陷允许攻击者了解附近 AirDrop 发送者和接收者的联系人标识符(即电话号码和电子邮件地址)。这些缺陷源于在发现过程中交换此类联系人标识符的哈希值,可以使用暴力或字典攻击轻松破解。
在身份验证期间,两个 AirDrop 设备运行一种联系人发现形式,它们确定它们是否是相互的联系人,即它们是否已将彼此的联系信息存储在其地址簿中。如果结果是肯定的,则连接仅被认为是真实的。保护隐私的联系人发现通常通过文献中的隐私保护集合交集( (PSI) 进行广播。 PSI 协议通常是加密图形协议,它允许两个交互方安全地计算其各自输入集的交集,而不会泄露任何额外的数据。在消费者对消费者 (C2C) 的背景下,PSI 已被提议用于防止在线游戏中的作弊,并且最近被提议用于根据 COVID-19 进行联系人追踪。通过本文工作,旨在促进 PSI 在 C2C 上下文中的部署,以进行相互身份验证。
然而,AirDrop 场景带来了一系列独特的挑战:解决方案需要: (a) 在没有任何第三方服务器支持的情况下完全脱机运行,(b) 考虑恶意方对其地址簿条目或自己的联系人 ID 标识,(c) 在能源和计算资源受限的移动设备上运行,以及 (d) 通过不增加明显的身份验证延迟来保持用户体验。
0x02 Background: Apple AirDrop
Apple 的文件共享服务 AirDrop 已集成到所有当前的 iOS 和 macOS 设备中。它使用称为 Apple Wireless Direct Link (AWDL) 的专有 Wi-Fi 链路层与低功耗蓝牙 (BLE) 相结合,完全离线运行。由于没有涉及协议栈的官方文档,本研究首先定义联系人标识符并讨论可用的可发现性设置。然后,描述了完整的技术协议流程并解释了身份验证过程。
A.联系人标识符和地址簿
每个 iOS 或 macOS 设备都有一个地址簿,可通过联系人应用程序访问。此地址簿包含多个联系人条目,这些条目又由多个对象组成,例如姓名或联系人信息。 AirDrop 杠杆将用户自己的联系人标识符及其地址簿条目用于身份验证。特别是,AirDrop 使用电话号码和电子邮件地址来识别联系人。这是可能的,因为每个 Apple 帐户(通常称为 Apple ID 或 iCloud 帐户)都至少分配了一个此类联系人标识符。 Apple 分别使用验证电子邮件和短信验证电子邮件地址或电话号码的所有权,从而确保标识符的正确性。
在本文中将只处理联系人标识符,即电话号码和电子邮件地址,而忽略可能包含多个标识符的“联系人”的概念。假设存在从设备本地到联系人列表条目的联系人标识符的明确映射。使用术语地址簿 (AB) 来指代设备联系人列表中所有联系人条目的联系人标识符集。请注意,AB 由用户控制,未经Apple验证。此外,用户自己的联系人标识符 (ID) 是分配给用户 Apple 帐户的 Apple 验证电话号码和电子邮件地址。使用符号 c 指代地址簿条目,使用 ID 指代 Apple 验证的联系人标识符。
B.设备可发现性
在 iOS 设备上打开共享窗格时,如果附近的设备可被发现,则会出现在用户界面中。特别是,接收器设备可以被每个人发现,也可以只被联系人发现,这是默认设置。在任何一种情况下,AirDrop 发送方都将尝试与响应接收方进行相互认证握手。请注意,文中解决的问题(即在身份验证过程中发送方和接收方的联系人标识符泄漏)会影响这两种设置。
C.完整协议工作流程
AirDrop 协议允许发送方将文件或链接传输到接收方。它由发现、身份验证和数据传输三个阶段组成,在上图中进行了描述:(a)当发送方打开共享窗格时,它开始发出 BLE 广播,其中包含每个联系人标识符的截断哈希。接收者将发送者的哈希联系人标识符与其地址簿中的条目进行比较。如果在仅联系人模式下找到至少一个联系人匹配或者每个人都可以发现,则接收器激活其 AWDL 接口。然后,发件人通过 AWDL 接口搜索具有 DNS 服务发现 (DNS-SD) 的 AirDrop 服务。 (b) 对于每个发现的服务,发送方通过HTTPS 发现请求启动身份验证程序。如果身份验证过程完全成功,接收者的身份将显示在发送者的用户界面中。 (c) 最后,发送方选择接收方并发送两个后续请求: Ask 请求包含有关文件的元数据,包括缩略图。接收者发送他们关于是否接收完整文件的决定。收到肯定响应后,发送方会继续在上传请求中传输完整文件,否则会中止交易。
D.相互认证
只能在具有 Apple ID 且存在于彼此地址簿中的用户之间建立经过身份验证的连接。为了进行身份验证,设备需要证明它已经注册了某个联系人标识符 IDi,例如与其 Apple ID 关联的电话号码或电子邮件地址,而验证设备会检查 IDi 是否是地址簿条目。身份验证涉及多个 Apple 签名的证书和一系列 Apple 运行的证书颁发机构 (CA)。特别是,AirDrop 使用设备特定的证书 σUUID 和验证记录 VRσ,它们都由 Apple 签名。一旦用户登录到他们的 iCloud 帐户,设备就会从 Apple 检索它们。然后它们可以在任何后续的 AirDrop 交易中离线使用。
证书 σUUID 包含帐户特定的通用唯一标识符 (UUID)。该证书在 TLS 连接中用作客户端或服务器证书(取决于角色)。由于证书中的 UUID 不链接任何联系人标识符,AirDrop 使用 Apple 签名的 Apple ID 验证记录 (VRσ)。验证记录包含来自 TLS 证书的 UUID 和所有联系人标识符 SHA-256(ID1),…,SHA-256(IDm),这些标识符以哈希形式使用用户的 Apple ID 注册。此外,VRσ 包括签名和签名 CA σVR 的证书。 形式上定义 VRσ 如下:
其中 sign(σVR,VR) 是证书 σVR 的 VR 签名。在身份验证期间,AirDrop (a) 验证收到的验证记录上的签名,(b) 验证证书中的 UUID 是否与验证记录中的 UUID 匹配,以及 (c) 计算每个正常 ized3 地址的 SHA-256 哈希book entry 并将它们与验证记录中包含的哈希值进行比较。如果所有检查都通过,则身份验证成功。如果接收方的身份验证失败,则接收方中止连接。但是,如果发送方的身份验证失败,AirDrop 会继续交易,但会将连接视为未经身份验证,而对等方视为非联系。 AirDrop 在用户界面中显示带有地址簿中的姓名和图片的联系人。非联系人使用设备名称而不是图片显示。
AirDrop 利用蓝牙来发现和握手,然后建立点对点的 Wi-Fi 连接来传输。
作用于apple产品生态圈的一种传输技术
既需要蓝牙,也会基于WiFi来传输数据 .
个人猜测可能蓝牙的开启,方便快速定位设备吧.
传输较大文件则仍然是通过WiFi,小文件就直接用蓝牙传输.
和普通蓝牙传输不同,基于iOS或者macos系统之间的 AirDrop,还包含身份信息.
必须允许联系人传输,判定身份,比普通蓝牙要安全
AirDrop隔空投送究竟是什么?它跟蓝牙有什么区别?