美文网首页
AirPods配对

AirPods配对

作者: lucca_x | 来源:发表于2019-03-04 18:43 被阅读0次

AirPods的使用方式与Google Fast Pair看起来比较相似:

  1. 打开盒子开关
  2. 手机显示AirPods的名字,如果配对过就会直接连接上了。
  3. 如果没配对过会在界面询问是否通过icloud配对。用户选择配对。
  4. 如果icloud有配对信息,就会直接连上,如果没有配对信息就会显示需要用户按下盒子背面的按钮。
  5. 用户按下按钮,手机依次显示开始连接,连接完成。
    但是根据air log似乎机制完全不一样。

在第1步中,首先是2只AirPods相互连接上。这个也好理解,因为2只AirPods是分体的,除非2只都与手机相连,不然只能是自己相连才能3者同步。因为这2只AirPods是同一个盒子里的,所以可以出厂完成认证配对,在air log上可以看到都是不需要认证的完成配对。

如果此时是已配对状态,那么AirPods会记住配对手机的信息,自动发起对该手机的连接请求,用以前保留的密钥信息加密连接。同时手机显示连接成功界面。如果此时手机关闭蓝牙功能,IOS会拒绝这个连接。如果此时手机关机,AirPods就不会发起连接请求。

第3步中如果AirPods没有配对过,也会在手机界面显示让用户选择是否配对。这个显示GFP是利用LE的广播机制实现的,但是AirPods的air log里面在这一步似乎并没有看到LE的广播包,所以可能是别的方法通知到手机的。

在选择界面都会让用户默认选择icloud配对,也就是说Apple并不会直接搜索icloud账户自动连接,对于已经配对过的,icloud已经有记录的情况下,还是需要用户点击一下。我认为这是Apple这个协议与Google Fast Pair的第一个体验不同的地方。GFP应该是直接可以自动连接的。不清楚Apple这样设计的原因,可能是已经有一个连接了的情况下防止再次连接?或者是防止误触。

第4步和第5步是首次连接才有的步骤。当用户按下按钮,此时可以从air log上看到AirPods发出的LE的广播包,广播的信息除了制造商是苹果公司以外还有一些附加信息,可能是内部协议。同时AirPods应该进入discoverable模式。

这样可以看来手机需要LE的广播包提供的信息才能发起连接,主要是地址了。那说明之前手机上显示有AirPods需要进行连接的界面显示时,还不知道AirPods的蓝牙地址。而且那时候也没有开始SDP,不清楚是怎么知道附近有AirPods的。相对的GFP是利用LE广播来通知的。Apple既然后续又利用了LE广播信息为什么不一开始的时候盒子打开就广播LE信息,不太明白,可能是担心多个设备同时操作绑定错误?GFP是利用Model ID来避免错误,那看来Apple可能不能区分不同的AirPods。为此我做了个实验,同时打开2个未配对的AirPods盒子,手机上只能显示一个,那看来确实是无法判断了。

然后手机开始向AirPods发起连接,经历一个完整的连接过程。包括交互Pairing Request/Pairing Response和Public Key,根据io capability选择认证方式,完成认证与配对。


根据AirPods配对时的air log,可以看出它并没有让AirPods把自己的io capability信息改成Display/YesNo,依然保持NoInput/NoOutput,这里和GFP不一样。因为没有抓到SMP或者Apple自己定义的协议上的log不能确认AirPods与iPhone是否是经过特殊设置不管io capability的值,依然用通过numeric comparison配对,还是说按io capability来,只是用justworks来配对。如果是后者的话,那Apple的这个配对是不够安全的,不能防止中间人攻击。



iPhone不能识别未配对的AirPods,这让它在复杂环境中可能配对失败或错误,导致用户的困扰,甚至是有安全隐患。

相关文章

网友评论

      本文标题:AirPods配对

      本文链接:https://www.haomeiwen.com/subject/slfwuqtx.html