从不信任传输通道
无线电的安全记录向来不佳。与其争论哪一种足够安全,AirNox 干脆假设没有一种是安全的,把安全建在更高一层。

本页内容
通道不是凭证
蓝牙配对证明两台设备走完了一套配对流程。NFC 近距离接触证明有个东西在读卡器几厘米之内。QR 码证明摄像头看到了一个图案。这些都证明不了对面是谁,而且这三种通道都有过公开的攻击案例:窃听、密钥强度降级、用两部普通手机把一次轻碰中继到城市的另一头。
所以我们把三者都视为敌对的。任何人都可能在监听,任何人都可能注入,任何人都可能中继。通道声称的任何东西,都不会被当作任何事情的证明。

只配对一次
信任只建立一次,就在你配对桌面端和手机的时候。桌面端显示一个 QR 码,手机扫描它。随后两边屏幕上都会显示一个短码,由你来核对。如果一致,两台设备就协商好了一组任何通道都从未见过的密钥,此后彼此都认得对方的身份。如果不一致,说明中间有东西插了进来,你就该停下。
这次核对,是人唯一一次亲自检查信道的时刻,也是真正关键的时刻。此后的一切,都继承了你亲眼确认后建立起来的信任。

会话
配对之后,桌面端与手机之间的每一条消息,都在钱包自己掌控的会话中传输。会话是端到端加密(end-to-end encrypted)的,所以即使通道被监听,泄露出去的也只有噪声。会话是双向认证(mutually authenticated)的,所以每一方都知道消息来自与它配对的那台设备,而不是某个冒充者。会话还与它所运行的通道绑定,所以在一条路径上截获的消息,无法在另一条路径上重放。
这个会话建立在一种经过充分研究的现代握手设计之上,与广泛部署的安全隧道所用的属于同一类。我们不自创密码学。
哪些消息会被丢弃
传输中被篡改的消息无法通过认证,会被丢弃。被重放的消息序号对不上,会被丢弃。乱序到达的消息会被丢弃。来自非配对设备的消息,连握手都过不了。无论哪种情况,手机上都不会出现待签名的内容,因为根本没有有效的东西到达。
这就是为什么 Bluetooth LE 和 NFC 带来的便利,不会以牺牲安全为代价。通道想多弱都行。底层无线电是否安全,是一个我们根本不需要回答的问题。
任何通道之上,都是同一个会话
会话并不知道自己跑在光、无线电还是轻碰之上。你可以用 QR 码完成配对,然后日常用 Bluetooth LE,在终端上用 NFC,全程无需重新配对。切换通道不会改变信任的对象,因为通道从一开始就没有被信任过。
这还算气隙(air gap)吗?
纯粹主义者说,气隙只能是光。我们不在这个词上争论。如果你想要严格的版本,就只用 QR 码,它始终可用。我们在意的是这个词背后的属性:保管密钥的设备没有通往互联网的路径,穿过气隙的只有一个由手机自己解码的请求,和一个由它决定生成的签名。基于 Bluetooth LE 的会话保留了这一属性。它额外带来的是:你会一直用下去。