苹果 find my 原理_find区别

苹果 find my 原理_find区别什么是查我网络?2021年4月21日的苹果发布会发布了一款新的产品:AirTag,防丢器。使用的是BLE+UWB的技术。BLE通过FindMy网络解决了GPS定位的问题;而UWB解决了室内的、厘米级的精准定位问题。二者相互补充,实现了比较精准的定位,为用户提供优秀的物品防丢体验。查我网络(FindMyNetwork)是苹果公司发布的一项应用技术。这项技术比较神奇的一点是,支持这项技术的苹果设备(iPhone,iPad,AirPods,AirTag等),即使本身没有GPS

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

什么是查我网络?


2021年4月21日的苹果发布会发布了一款新的产品:AirTag,防丢器。使用的是 BLE + UWB 的技术。BLE 通过 FindMy 网络解决了 GPS 定位的问题;而 UWB 解决了室内的、厘米级的精准定位问题。二者相互补充,实现了比较精准的定位,为用户提供优秀的物品防丢体验。

img

查我网络( Find My Network)是苹果公司发布的一项应用技术。这项技术比较神奇的一点是,支持这项技术的苹果外设(AirTag),即使本身没有 GPS 模块,也能利用它周围的苹果设备(iPhone,iPad,AirPods,AirTag等)来帮助其定位。

使用 iPhone 打开 Find My APP,可以从地图上看到我所拥有的、所有连入查我网络的设备。APP 界面如下图:

img

让外设并入查我网络


入网要求

非苹果生产的外设能否并入查我网络呢?答案是可以的:

苹果为其它想并入查我网络的外设生产商提供了技术规格,规格书如下:

?Find_My_Network_Accessory_Specification__Developer_Preview_R3.pdf

从规格书中,我们可以详细了解到查我网络的原理、工作流程以及和外设相关技术标准。

github 资源

有一点比较麻烦的是,想并入查我网络的设备的生产厂商,必须过 MFi 认证。github 上有人通过一些反向工程的方法,成功从苹果的服务器上拿到了自己的 BLE 外设的定位数据,链接如下:

https://github.com/seemoo-lab/openhaystack#how-to-track-other-bluetooth-devices

但这个的实用意义并不大。简单来说,它的工作流程是这样的:

  1. 作者在它的苹果电脑上生成了一对密钥对。把其中的 public key 通过有线的方式给到 BLE 外设

  2. BLE 外设按照查我网络规格中关于 beacon 数据的格式,把 public key 不断的向周围广播出去

  3. 周围的苹果设备把这个 public key 结合自身的定位数据,发送到苹果服务器

  4. 作者的苹果电脑、通过一个 mail 插件,把服务器上的定位数据拿下来,显示在地图上。

可见,作者并不是从苹果的 Find My APP 上显示的设备定位,而是通过自己的 mail 插件来显示,并且需要一系列的部署来绕过苹果的门禁机制,实用意义不大。

第三方 Find My 外设

目前,已经有几家第三方公司的产品支持了 Find My 网络,包括:

贝尔金耳机

img

VANMOOF S3电动自行车

img

防丢器

img

开发查我网络外设


想开发查我网络的厂商、必须先拿到 MFi 认证。

具体的说,过了 MFi 认证的厂商,才能进一步拿到以下文档:

  • Works with Apple Find My Identity Guidelines

  • Software Authentication Server Specification

  • Unified Accessory Restore Protocol

在过 MFi 认证之前,苹果也发布了一份规格书,阐述了 查我网络的一些原理和流程,并且详细描述了构建一个 FindMy 外设所需的 BLE 服务。但也仅限于此,其中关于如何标识、加密、验证、OTA 的相关流程,需要过了 MFi 认证之后,拿到上述几个文档才能进一步了解。

这份文档目前(2021/04/20)貌似找不到了。幸亏我下手快,备份了下来:

?Find_My_Network_Accessory_Specification__Developer_Preview_R3.pdf

查我网络核心概念


本章节提及的概念,不包含整个完整的查我网络的技术范围,仅限定在查我网络外设相关的技术范围内。

Find My app

即用户使用查我网络这个功能的软件。iOS 13 之后,是一个默认的应用。可在 iPad 或 iPhone 上直接打开。打开后的界面如文章开头所示。

这个 app 包含以下功能:

  • 和朋友、家人分享你的定位

  • 在地图上显示你的、可被查找的设备

  • 让特定设备播放声音、格式化等

  • 添加新的设备

Transport

传输方式。查我网络外设使用 BLE 作为首要的传输技术、和苹果设备进行交互

Operation

工作流程。如下:

  1. 使用 Find My app 和一个 Find My 外设连接之后,他们之间就协商出了一对秘钥对。Find My app 保存着私钥和公钥;外设保存着公钥。

  2. 外设作为 BLE beacon,不断广播一个变化的秘钥(由公钥衍生而得)

  3. 周围的苹果设备(iPad,iPhone 等,可以是其他人的设备)检测到这个广播后,会把里面的秘钥结合自身的定位数据,打包上传苹果服务器

  4. Find My app 从服务器上拿到这些定位报告,将相关的定位数据解析出来

其中,和定位相关的数据是端对端加、解密的,苹果服务器无法得知。我的理解是,由周围的苹果设备加密(定位数据 + 公钥),再由 app 解密(定位数据 + 私钥)。苹果服务器只负责存储、传输。

Roles

角色。包含以下几种:

Owner device

拥有者设备。你的苹果设备,自然是用你的 Apple ID 进行激活、登录的,把外设和你的苹果设备连接过后(通过 Find My app),这个外设便被绑上了你的 Apple ID。成为 Find My network 的“拥有者设备”角色。当外设通过 Find My app 和某个苹果设备进行连接配对之后,外设便和 Apple ID 进行了关联。具有相同 Apple ID 的苹果设备、外设,便叫。

Accessory

实现了 Find My network 协议的外设。

Find My network

查我网络。当你带着一个支持 Find My 协议的防丢器上街,你所处的环境里,周围人的 iPad、iPhone 等苹果设备(使能了 Find My 功能)构成了一张网络。你的防丢器本身不带 GPS 无法定位,但这张网络中的设备可以提供自己的 GPS 数据、和你的防丢器的 Apple ID 进行关联后,上传到苹果的服务器。

网络中具备扫描广播功能的苹果设备,称为发现者(finder),发现者越多,外设的定位越精准。

有一点需要注意的是,别人的苹果设备也能连上你的防丢器,用于给你的防丢器发送一个警告等功能。

Apple server

苹果服务器。负责接收加密过的定位相关数据并保存。

总结一下,结合 Roles 和 Operation 这两个概念的内容,外设的 Find My network 的工作流程描述如下:

  1. 设备拥有者(owner)通过 Find My app 把 外设(accessory )设为拥有者设备(owner device)

  2. 外设透过查我网络(Find My Network)、借助网络的定位功能,把自身的大概位置上传苹果服务器(Apple Server)。

  3. 设备拥有者通过 Find My app 可以在世界任何地方看到自己的设备

四个角色的关系如下图所示:

img

Features

包含以下几个特性:

Unwanted tracking detection

不必要跟踪监测,简称 UT。我的理解是有这样的应用场景:可以让用户发现不法者放在自己身边的跟踪器。

Lost mode

设备的拥有者可以把外设设置为丢失状态。

Play sound

拥有者的,或者非有拥有者的手机都可以控制外设发出声音。

前者通过连接后的 BLE Play sound—owner control point 特征来控制

后者通过连接后的 BLE Play sound—non-owner control point 特征来控制,只能控制 UT

States

外设的工作流程可以用一个状态机来描述,如下图:

img

Unpaired

未配对状态。外设第一次启动或者设置完成之前必须处于该状态。

在该状态下,外设必须把 Find My Network 服务作为 primary service 以可连接的广播类型发出来。

我的理解:

发出可连接广播,目的在于让拥有者发现、连上该外设,以便对其进行一些初始配置。

后面应该会讲到在配置完成后,发出不可连接的广播(beacon),这个广播就携带了相关配置信息,可以对设备进行定位。

Connected

连接状态。有以下特点:

  1. 配对流程完成之后,外设必须进入连接状态(是废话吗?还不清楚)

  2. 外设配对完成之后,拥有者可能会断开连接(外设多了之后,拥有者没办法对所有设备都保持连接,所以断开?)

  3. 已配对的外设,不再接受另一个苹果设备的配对;除非外设已经走完解配对流程(注意,没说不能连接)

  4. 外设需要能同时支持两个苹果设备同时连接(需要属于同一个 iCloud ID 的苹果设备,为啥要同时支持多个?)

  5. 动作检查和 UT 协议在连接状态下失效(因为没必要)

  6. 配对过的外设,如果在 10s 内不能完成对链路的加密,则应主动断开连接。

我的理解:

连接状态似乎不是外设所处的一个主要的状态。其目的只是为了给外设做一些初始化处理。

Nearby

附近状态。另外还有以下特点:

  • 外设断开连接之后,必须马上进入该状态,并且应该保持 TNEARBY

  • 动作检测和 UT 协议失效(这两玩意儿是 Separated 状态专属的)

  • 广播包带 nearby key

我的理解:

这个状态应该也属于一个过渡的状态。这个状态的目的是为了能够再次连接上?不清楚。

关于外设的状态机,以目前我的理解,Separated 状态才是一个正常应用的外设长期所处的状态。其它状态都是过渡

Separated

分离状态。满足以下条件的外设必须进入该状态:

  1. 外设已经配对。并且经历了初始化流程而启动(例如,复位)
  2. 处于 nearby 状态且已经 TNEARBY 超时

该状态有两个功能:动作检查和 UT 协议

我的理解:

这个状态是正常使用的外设长期处于的状态。

一个刚开箱的外设经过连接、配对之后,就会处于该状态,不断向外发出带有密钥信息的特定广播信号。

要求


前面对 Find My network 外设协议的一些核心概念做了阐述,这个章节会说明一些要求,包括:

  • 硬件要求

  • 加密

  • 软件鉴权

  • 苹果服务器公钥

  • 重启

  • 固件升级

本文只挑一些主要进行说明,具体需要见规格书

硬件要求

蓝牙

蓝牙控制器必须满足以下特性:

  • LE 2M uncoded PHY。
  • Data packet length extension

蓝牙发送功率应该固定在大于等于 +4dBm 的水平,且满足 EIPR(Effective Isotropically Radiated Power ),即天线射频的方向性也要好

更大的发射功率让外设更容易被发现且能获得更频繁的位置更新;相反的,发射功率低则定位更加精确。

低功耗蓝牙外设应该支持:

  • LE advertising extensions 以支持其它服务和载荷信息的发送
  • Random resolvable address 且这些地址可周期性轮转变化

产品规格要求

在 separated 状态下,应该支持“动作触发”的 UT 声音警告:

  • 使用加速度传感器实现“动作触发”
  • 使用喇叭等发声器件实现 UT 警告声的播放

所谓 UT(Unwanted Tracking Detection ),主要目的在于给用户一个声音警告,告知其正携带着一个不是自己的外设。

Find My 标识

每个支持 Find My 的外设都应该在产品上戴有一个用户可见的标识

查找序列号

产品的序列号应该通过一些方式(NRF 或 BLE 连接)可读

Find My network 可禁用

产品应该实现一个机制来禁用 Find My network 功能,如按按键

Find My network 配对模式

产品应该实现一个机制让其进入配对模式,如长按按键 3 秒等

复位

产品应该有个机制来实现恢复出厂设置。恢复出厂设置的产品应该清除掉以下内容之外的所有信息:

• Accessory information service

• Firmware version

• Serial number

• Software authentication token

• Software authentication UUID

• Apple server public keys

– Signature verification key (Q_A)

– Encryption key (Q_E)

时钟精度

苹果设备期望外设达到 200PPM 的计时精度,即每天 17.28s 的误差。

加密

实现外设和拥有者设备的配对和密钥的派生功能,需要以下条件:

  • A cryptographically secure DRBG

  • Modular reduction and addition of big integers

  • An implementation of the SHA-256 cryptographic hash function

  • An implementation of the ANSI x9.63 KDF (see SEC1, 3.6.1 ANSI X9.63 Key Derivation Function)

  • Computations on the NIST P-224 elliptic curve (see FIPS 186-4, D.1.2.2. Curve P-224):

  • ECDSA/ECDH over the NIST P-256 elliptic curve (see FIPS 186-4, D.1.2.3. Curve P-256 and Pairing for more details).

  • AES-128-GCM encryption and decryption

软件鉴权

定义、作用理解中。。。

苹果服务器公钥

定义、作用理解中。。。

断电重启

设备断电重启后应该进入 separated 状态等一些要求

固件升级

外设必须能支持固件升级功能,且包含以下要求:

  • 有一个机制来确保固件的完整性

  • 待升级固件在发布前需要完成 MFi 认证的要求

  • 固件的版本不可以降级

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/200642.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • opnet环境变量设置_类型变量

    opnet环境变量设置_类型变量Objid(对象id)和int(用户id)对象id的变量类型是Objid用户id的变量类型是intObjid是系统分配的对象识别号,全局唯一,整数。userid是节点模型(对象的一种)的一个属性,由用户设置,不唯一。对象分为两种:抽象对象:复合属性具体对象:模块、收信机、发信机、节点、子网lmz:尽管对象id是一个整数,但是又不仅仅是一个整数。可以想象,opnet内部肯

    2022年10月31日
  • linuxiostat命令详解_ifstat命令

    linuxiostat命令详解_ifstat命令Linuxiostat命令详解iostat主要用于监控系统设备的IO负载情况,根据这个可以看出当前系统的写入量和读取量,CPU负载和磁盘负载。1.命令格式:iostat参数时间次数2.命令参数:-C显示CPU使用情况-d显示磁盘使用情况-k以KB为单位显示-m以M为单位显示-N显示磁盘阵列(LVM)信息-n显示NFS使用情况-p[磁盘]显示磁盘和分区的情况-t显示终端和CPU的信息-x显示详细信息-V显示版本信息3.常用

  • Origin绘图后导出图片的方法

    Origin绘图后导出图片的方法在发表论文的时候,期刊要求的图线一般是tif格式的图,而不是Origin格式的。我们用Origin绘制完成一张图后,需要将它导出成图片格式,以满足投稿要求。这一节来介绍一下如何利用Origin导出图片。【注意,导出成图片格式后就不能通过双击图片链接到Origin程序进行编辑了】如下图所示,点击Origin菜单栏上的File—>ExportGraph—>OpenDialog

  • max31865C语言程序,max31865温度传感器通信驱动代码「建议收藏」

    max31865C语言程序,max31865温度传感器通信驱动代码「建议收藏」最近研究maximmax31865温度传感器,贴出通信驱动代码和大牛门一起学习,指点我一二max31865是专门用来测量电阻类温度传感器的,ad分辨率为15位,可以做PT100高精度测量,通信接口为SPI。通过评估板CN7的PC10,PC11,PC12(SPI3)连接芯片模块,PD2做片选。下面贴上驱动代码:1.///////////////////////////////////////…

  • QQ互联登录提示redirect uri is illegal(100010)完美解决方法

    QQ互联登录提示redirect uri is illegal(100010)完美解决方法

  • matlab中矩阵的秩,matlab矩阵的秩

    matlab中矩阵的秩,matlab矩阵的秩如下所示为一方阵在matlab输入矩阵:A=[124;407913];2.2查阅matlabhelp可以知道,利用eig函数可以快速求解矩阵的特征值与特征……Matlab矩阵分析与处理_理学_高等教育_教育专区。1、单位矩阵,随机矩阵,零矩阵和对角阵2、产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及它们……结构数…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号