+++
author = "FlintyLemming"
title = "【转载】iOS 13 上 Find My 工作原理概述"
slug = "d5fdd30556ed48fea630ccb8c7667bf9"
date = "2020-05-31"
description = ""
categories = ["Apple"]
tags = ["iOS"]
image = "https://assets.flinty.moe/blog/posts/2020/05/iOS%2013%20%E4%B8%8A%20Find%20My%20%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86%E6%A6%82%E8%BF%B0/title.avif"
+++

> 原文转载自 ZW Cai 的 Facebook 动态，他的 Facebook 地址是：<https://www.facebook.com/x43x61x69>
> 只做了简繁体转换和必要的排版

今年 WWDC 除了刨起司器之外，最重要的东西应该是隐私保护。其中最让我惊艳的是 Apple 在新的「Find My」系统上所采用的方式。过去「Find My Phone」或「Find My Friends」靠的都是回传使用者的 GPS 位置，这样做有几个缺点：

1. 使用者在传输过程（中间人攻击）或在 Apple 主机（主机被入侵）留存的资料会透露出真实位置资讯。
2. 使用者装置在没有网路的状态下无法回报位置（国外无漫游、被窃后 SIM 卡遭移除等等）。

Apple 对於第二项问题的解决方案是透过周遭其他有网路的 Apple 装置来回传位置（藉由蓝牙），但这样不但不能减少第一项的问题，甚至可能引发更多被追踪的疑虑（扫瞄四周即可知道某装置是否在范围内）？

Apple 采用的方式非常的有趣：

1. 新版的「Find My」前提与以前不同，使用者必须拥有至少两台登入相同 Apple ID 的装置在附近时才能啟用。Apple 会在啟用的装置上產生一把私钥，并透过点对点加密传输储存於其他台装置上，也就是这把私钥只存在你拥有的每一台机器上；每台装置接著会各自產生一系列公钥（对应前一步產生的私钥），透过蓝牙传输的作為识别。这些公钥会定时更换，且不会与先前產生过的相同，但仍可以透过最初的私钥验证。言下之意就是要靠公钥判断装置持有人做定位追踪是行不通的。
2. 假设你的 MacBook/iPad 被窃走并处於闔上、无网路状态，有啟用 Find My 的装置仍会持续透过蓝牙发送现在的公钥，但不传送其他资讯（此时通常你也没有相关资讯）；周围他人有网路连线的 Apple 装置侦测到该公钥后，会将自己的地理位置资讯，透过此公钥加密，连同公钥的 Hash 值传给 Apple。提供位置的装置没有提供自己的识别资讯，又因為公钥不断变换而无法反推公钥持有者身份；不断变换的公钥 Hash 本身无法直接关联使用者，使得 Apple 主机上储存的资料无法逆推回持有人资讯，位置资讯也因为没有私钥而无法被解密。
3. 当你用你的 iPhone 寻找你的 MacBook/iPad 时，手机会将过去一系列公钥的 Hash 上传至 Apple 作為识别（详细方式 Apple 并没有明确说明，但理论上应该是回传过去一定时间内的公钥 Hash）。此时 Apple 会从资料库中寻找对应的加密位置资料并回传给你的 iPhone 并使用储存於装置上的私钥解密位置资讯并显示给你。整个流程中只有你的装置有办法解密这些位置资讯，且只有在你的装置上解密。

所以第一项问题就解决了！比以前有更强大的追踪能力但却又比以前更能保障隐私。你现在知道你的信仰奉纳都投资在哪些地方了吧？
