根据蓝牙 5.2 手册,第 1641-1642 页,表 2.8,在两个设备都有显示屏的情况下,应使用数字比较配对。作为身份验证的一部分,这些显示屏可用于在两台设备上显示确认是/否提示。 (图 2.3,第 1648 页)。然而,从数字比较的协议消息交换序列的角度来看,即使其中一个设备没有显示 IO,也可以使用数字比较配对。具体地,不是在两个设备上显示密码,而是可以将密码显示在其中一个设备(假设设备A)上,而另一设备(假设设备B)仅通过键盘输入相同的密码。内部生成的相同密码 (Va=Vb) 可与设备 B 上输入的密码匹配,并可在设备 B 上确认是/否提示。其余过程可按照标准方法进行(密钥输入配对,第 1652 页) ,图2.5)。
我的理解有问题吗?与没有显示屏的设备使用数字比较配对是否有任何安全隐患?
Numeric Comparison 和 Just Works 具有类似的配对协议,只是 Just Works 中跳过了一些重要的检查,这导致配对协议生成未经身份验证的链接密钥。
Just Works 和未经身份验证的链接密钥的危险在于它们容易受到所谓的 NiNo MitM(NoInputNoOutput Machine-in-the-Middle)攻击。这是具有现实世界影响的实际攻击。您提出的建议将有效,因为第二台设备没有屏幕,用户无法直观地确认数字。确认数字是蓝牙中重要的安全步骤,因为它使得主动 MitM 攻击仅以 0.000001 的概率成功
DisplayYesNo 和 DisplayOnly 设备
但是这样的设置会使第二个设备更容易受到未经授权的连接的攻击,并且可能允许或简化其他利用步骤(特定于实现)。这就是为什么如果您是开发人员,我敦促您实现规范中所述的协议 - 执行数字比较的两个设备都应该有办法确认或拒绝代码!
另外这里有一个来自Bluetooth SIG网站的表格供您理解: