要解决的其实是两个问题

建立一条可信的跨设备连接,需要同时回答两件事:

你是谁

手机怎么确认自己连上的是那台 Mac,而不是同一个 Wi‑Fi 下伪装成它的另一台机器。

凭什么让你连

Mac 怎么确认来敲门的这台手机是被授权的,而不是随便一台在网络里扫到它的设备。

只解决其中一个都不够。只验证 Mac 的身份而不验证手机,等于谁都能连上你的电脑;只验证手机而不验证 Mac,你可能把文件发给了一台伪装的机器。

二维码里装的是什么

配对时扫的那个二维码不是下载链接,里面装着建立信任所需要的四样东西:

  • 地址与端口——Mac 当前在局域网里的位置。
  • 一次性配对码——用来证明「这台手机看得见这块屏幕」。
  • Mac 的证书——手机后续用它来认人。

其中最关键的是证书。手机把它记下来之后,以后只信这一张证书——不查证书颁发机构,不校验主机名,只做一件事:比对是不是当初记下的那一张。

这种做法叫证书钉扎。在跨设备这个场景里它比常规的证书链校验更强,因为它不依赖任何第三方机构的判断——即使某个受信任的机构签发了一张假证书,也骗不过「这不是我认识的那一张」。

配对码只是入场券,不是长期密码

这是整套设计里最值得说的一点。

一个直觉的做法是:把二维码里的配对码当成长期密码,手机每次连接都出示它。这样做能跑通,但有两个坏处——配对码一旦更换,所有手机都要重新配对;而且所有手机共用同一个秘密,没法单独撤销其中一台。

实际的做法是:配对码只用一次。手机第一次出示它,证明自己看得见那块屏幕——而这正是被授权的条件。验证通过后,Mac 为这台手机单独铸造一份专属凭据,写进自己的设备名册,随握手响应交给手机。手机把它保存下来,取代二维码里的那个码。

此后这台手机出示的都是自己那份凭据。带来的好处很具体:

  • 配对码可以随时更换,已配对的手机不受影响——它们早就不用那个码了。
  • 可以单独撤销某一台手机。把它那份凭据从名册里删掉,这台手机失去访问,其他手机毫发无损。
  • 同一台手机重新扫码会替换它原有的凭据,而不是在名册里多出一行——那是同一台设备回来了,不是新设备。

加密之上还有一道门

TLS 解决的是「内容不被第三方看到」,但它本身不判断对方该不该连。所以在加密之上还有一道业务层的门禁:在凭据被验证通过之前,连接上除了握手消息之外什么都不许通过。

两端都有这道门,缺一不可:Mac 在验证完成前收到任何非握手的数据,会立即丢弃整条连接;手机在收到确认之前,除了握手消息一个字节都不发。

顺带一提,比对凭据时是逐字节全量比较,不提前退出。这是为了避免通过响应时间的细微差异推断出凭据内容——一种叫时序侧信道的攻击方式。这类细节平时看不见,但它是「认真做过」和「能跑就行」之间的分界。

这套机制的边界

诚实地列出它不保护什么:

  • 凭据是持有即信任的。无论是配对码还是专属凭据,拿到它的手机就是被信任的手机。它们只在加密连接里传输、只发给被钉扎的证书,但没有额外的第二重因素。
  • 二维码需要当作秘密对待。不要截图发给别人,不要在公开场合长期展示——看得见屏幕就是入册的条件。
  • 撤销某一台手机会让当前的二维码失效。因为被撤销的那台手机见过那个码。已配对的其他手机不受影响(它们用的是各自的凭据),但一张已经打印或截图的二维码会作废。

需要收回某台设备的访问权时,优先用「撤销这台手机」或在手机端「忘记这台 Mac」;重置整个配对码影响面大得多,应该是最后一招。

关于灵犀互联

让 HarmonyOS 与 Mac,自然接力。

投屏、文字剪贴板、文件与相册,通过一条本地连接协同。

前往下载 →