基本原理其实非常简单,一个蓝牙设备,有一个内置UTC时钟,会定期广播一个信标,同时会侦听已配对设备的连接请求,连接上了可以更新设备状态、启用高精度测距无线电等等。
但整套系统的实现会比基本原理复杂很多,因为苹果为了实现自己的隐私承诺,对airtag整套系统采用了端对端加密、轮换密钥防止跟踪等等设计,同时这些设计还要尽量在airtag极低的电量以及加入众包的iOS设备也不能大量消耗电池和流量的要求下实现,所以几乎都是单向通信。
Airtag和机主ios设备配对的时候,会对正自己的时钟,并生成一套secret,仅存储于airtag以及ios设备本地,或者以加密方式传输到机主的其他ios设备,这套secret从不会以任何可读的形式暴露给其他任何人,包括苹果自己。
通过这套secret以及时钟,可以生成一组非对称密钥,每15分钟刷新一次。私钥在airtag本地没有什么用,毕竟airtag本身又不通信。Airtag就以每2秒广播一次的方式把公钥广播出去。
周边的ios设备如果加入众包find my network,就会收到广播的密钥,并且定位自己的位置,生成一份位置报告,再用收到的公钥加密这份报告匿名发到苹果,报告的索引标签是公钥的哈希值。
由于私钥没有以任何方式共享,所以除了原机主,其他任何人无法解密这份报告,包括苹果自己。
掌握生成私钥方法的机主,根据当前时间,倒推生成前后一段时间的所有公私钥组合,并且生成公钥的索引标签,发到苹果问有没有收到这些标签的报告。苹果把报告发到机主设备,由机主的私钥解密,于是机主能看到报告里,某一个设备在某一时段在哪里被定位到了。
通过公钥加密机制保证除了机主以外,没有其他任何人能够解密位置报告,通过每15分钟刷新一次密钥,防止静态密钥的轨迹被追踪然后倒推出主人的行踪。
Airtag的另一个功能是用U1近距离精确定位,其实这东西并不是定位,而是测距。
Airtag设备在与机主的ios设备蓝牙连接完成后,可以由机主触发U1芯片定位,此时ios设备要求打开摄像头进入AR模式,通过机身陀螺仪、加速度计、摄像头画面以及新设备有的lidar等等判断自己在空间中的运动状态。当位置运动解算出来后,多在不同的空间点测几次距离,就能解算出airtag的位置并且引导用户走过去。