OpenHaystack
OpenHaystack是一个通过Apple庞大的查找网络来追踪个人蓝牙设备的框架。您可以使用它创建自己的追踪标签,将其附加到物理物品上(钥匙圈、背包等),或将其集成到其他具有蓝牙功能的设备中,如笔记本电脑。
目录
什么是OpenHaystack?
OpenHaystack是一个应用程序,允许您创建自己的配件,这些配件可以被Apple的查找网络追踪。您只需要一台Mac和一个BBC micro:bit或任何其他具有蓝牙功能的设备。 通过使用该应用,您可以在地球上的任何地方追踪您的配件,无需蜂窝网络覆盖。附近的iPhone会发现您的配件,并在有网络连接时将它们的位置上传到Apple的服务器。
历史
OpenHaystack是对Apple的查找网络(或离线查找)进行逆向工程和安全分析工作的结果。我们达姆施塔特工业大学的安全移动网络实验室在2019年6月首次公布后开始分析离线查找。通过这项工作,我们确定了Apple设备如何被iPhone设备找到,即使它们处于离线状态。整个系统是蓝牙广播、公钥加密和加密位置报告中央数据库的巧妙组合。我们披露了离线查找封闭部分的规范,并进行了全面的安全和隐私分析。 我们发现了两个明显的漏洞。最严重的一个允许恶意应用程序访问位置数据,已经被Apple修复(CVE-2020-9986)。 有关安全分析的更多信息,请阅读我们的论文。 自发布以来,我们收到了相当多的新闻和媒体报道。
免责声明
OpenHaystack是实验性软件。代码未经测试且不完整。例如,使用我们固件的OpenHaystack配件会广播固定的公钥,因此可能被附近的其他设备追踪(这可能在未来版本中改变)。OpenHaystack与Apple Inc.没有关联,也未得到其认可。
如何使用OpenHaystack?
OpenHaystack由两个组件组成。首先,我们提供了一个macOS应用程序,可以显示个人蓝牙设备的最后报告位置。其次,固件镜像使蓝牙设备能够广播信标,使它们可被iPhone发现。
系统要求
OpenHaystack需要macOS 11(Big Sur)。
安装
OpenHaystack应用程序需要Apple Mail的自定义插件。它用于通过私有API从Apple的服务器下载位置报告(技术解释:插件继承了Apple Mail使用此API所需的授权)。 因此,安装过程略有不同,需要您暂时禁用Gatekeeper。 我们的插件不会访问任何其他私人数据,如电子邮件(参见源代码)。
- 从我们的GitHub页面下载预编译的二进制发布版。
*替代方案:*通过Xcode从源代码构建应用程序。 - 打开OpenHaystack。这将要求您在
~/Library/Mail/Bundle
中安装Mail插件。 - 打开终端并运行
sudo spctl --master-disable
,这将禁用Gatekeeper并允许我们的Apple Mail插件运行。 - 打开Apple Mail。转到偏好设置 → 通用 → 管理插件...,并激活OpenHaystackMail.mailbundle旁边的复选框。
- 如果*管理插件...*按钮没有出现。在终端中运行此命令
sudo defaults write "/Library/Preferences/com.apple.mail" EnableBundles 1
- 如果*管理插件...*按钮没有出现。在终端中运行此命令
- 允许访问并重启Mail。
- 打开终端并输入
sudo spctl --master-enable
,这将重新启用Gatekeeper。
使用方法
添加新配件。 要创建新配件,只需为其输入名称,并可选择选择合适的图标和颜色。然后,应用程序会生成一个新的密钥对,用于加密和解密位置报告。私钥存储在Mac的钥匙串中。
部署到设备。 通过USB将支持的设备连接到Mac,然后点击配件名称旁边的部署按钮,并选择相应的设备。 除了使用OpenHaystack的集成部署,您还可以复制用于广播的公钥(右键点击配件),并手动部署。
显示设备位置。 可能需要30分钟才能在右侧的地图上看到第一个位置报告。地图将始终显示所有物品的最新位置。您可以点击每个物品以查看最后更新的时间。 通过点击刷新按钮,您可以更新位置报告。
Apple的查找网络如何工作?
我们简要解释Apple的离线查找系统(又称查找网络)。更多详细信息请参阅我们的PETS论文和Apple的配件规范。我们提供了一个示意图概述(来自我们的论文),并解释了我们如何在OpenHaystack中整合不同的步骤。
配对(1)
要使用Apple的查找网络,我们在椭圆曲线(P-224)上生成公私密钥对。私钥安全地存储在Mac的钥匙串中,公钥部署在配件上,例如连接的micro:bit。
丢失(2)
简而言之,配件以蓝牙低功耗(BLE)广播的形式广播公钥(参见固件)。 附近的iPhone将无法区分我们的配件和正品Apple设备或认证配件。
发现(3)
当附近的iPhone接收到BLE广播时,iPhone会通过GPS获取其当前位置,使用广播中的公钥加密位置,并将加密的报告上传到Apple的服务器。 所有运行iOS 13或更高版本的iPhone默认都会执行此操作。OpenHaystack不参与此步骤。
搜索(4)
Apple 不知道哪些加密位置属于哪个 Apple 账户或设备。因此,只要知道相应的公钥,任何 Apple 用户都可以下载任何位置报告。这并不是安全问题:所有报告都是端到端加密的,除非知道相应的私钥(存储在钥匙串中),否则无法解密。我们利用这个特性下载 Apple 为我们的 OpenHaystack 配件创建的报告。我们使用私钥解密位置报告,并在地图上显示最新的一个。
Apple 通过要求经过身份验证的 Apple 用户下载位置报告来保护其数据库免受任意访问。 我们使用具有提升权限的 Apple Mail 插件来访问所需的身份验证信息。OpenHaystack 应用程序在下载报告时与插件通信。这就是为什么你在使用 OpenHaystack 时需要保持 Mail 开启的原因。
如何追踪其他蓝牙设备?
原则上,任何蓝牙设备都可以被转换为可通过 Apple 的查找我的网络追踪的 OpenHaystack 配件。 目前,我们为少量嵌入式设备提供了方便的 OpenHaystack 固件部署方法(见下表)。我们还通过通用 HCI 脚本支持 Linux 设备。 欢迎根据我们固件的源代码和论文中的规范,将 OpenHaystack 移植到其他支持蓝牙低功耗的设备上。请与我们分享你的成果!
平台 | 测试设备 | 通过应用部署 | 备注 |
---|---|---|---|
Nordic nRF51 | BBC micro:bit v1 | ✓ | 目前仅支持 nRF51822 (见问题 #6)。 |
Espressif ESP32 | SP32-WROOM, ESP32-WROVER | ✓ | 部署可能需要长达 3 分钟。需要 Python 3。感谢 @fhessel。 |
Linux HCI | 搭载 Raspbian 的树莓派 4 | 应该支持任何 Linux 机器。 |
OpenHaystack 移动版
OpenHaystack 移动版是 OpenHaystack macOS 应用程序针对智能手机的完整重新实现。该应用提供相同的功能来创建和追踪配件,旨在提高可用性,特别是对新用户而言。与 macOS 应用不同,位置报告无法直接在智能手机上获取,因此该应用需要一个托管在 Mac 硬件上的代理服务器来访问查找我的网络。多个用户可以同时通过网络访问代理服务器。
要连接到你的代理服务器,请在以下文件中设置正确的 URL:openhaystack-mobile/lib/findMy/reports_fetcher.dart
OpenHaystack 移动版使用跨平台的 Flutter 框架 构建,目前可在 Android 和 iOS 上运行。有关该应用和使用说明的更多信息可以在此存储库的 openhaystack-mobile 文件夹中找到。
作者
- Alexander Heinrich (@Sn0wfreezeDev, 邮箱)
- Milan Stute (@schmittner, 邮箱, 网站)
参考文献
- Alexander Heinrich, Milan Stute, Tim Kornhuber, Matthias Hollick. 谁能"找到我的"设备?Apple 基于众包的蓝牙位置追踪系统的安全性和隐私性。 隐私增强技术论文集 (PoPETs), 2021。doi:10.2478/popets-2021-0045 📄 论文 📄 预印本。
- Alexander Heinrich, Milan Stute, 和 Matthias Hollick. 演示:OpenHaystack:通过 Apple 庞大的查找我的网络追踪个人蓝牙设备的框架。 第 14 届 ACM 无线和移动安全与隐私会议 (WiSec '21), 2021。
- Tim Kornhuber. Apple 基于众包的位置追踪系统分析。 达姆施塔特工业大学, 硕士论文, 2020。
- Apple Inc. 查找我的网络配件规范 – 开发者预览版 – 版本 R3。 2020。📄 下载。
许可证
OpenHaystack 根据 GNU Affero 通用公共许可证 v3.0 授权。