假设公共空间中安装了多个设备,并为指定的工人/技术人员广播BLE连接,以便能够与设备通信。可以采取哪些安全措施来防止不需要的用户连接到它们?
唯一想到的解决方案是密码键,但组合数量有限。因此,实际的传递键可能最终会被猜到。
我假设有无限数量的授权用户(没有可以绑定的简短、固定的设备列表(。
此类问题的典型解决方案是基于共享密钥的质询-响应。作为一个例子设计(这个设计有一些缺陷,我将在后面讨论(:
- 客户端和设备共享预先安排的 128 位随机密钥
- 客户端建立未经身份验证的加密("正常工作"(连接
- 设备生成一个随机的 128 位质询,客户端读取该质询
- 客户端使用密钥加密质询并将其返回
- 设备验证加密是否正确,并对连接进行身份验证
对于低安全性的情况,这是不错的,非常容易实现,并且不需要设备或任何额外硬件的大量处理能力。但是,它确实存在问题。
首先,Just Works加密并不难暴力破解和MiTM。如果工作人员经常访问设备,并且攻击者有一些奉献精神,这将失败。
如果设备具有可以屏蔽的显示器,则改进的设计将使用密钥条目来执行初始配对,然后使用质询-响应进行身份验证:
- 设备生成 6 位引脚
- 工作人员在客户端中输入 6 位数字 PIN 码
- 客户端使用带引脚的密钥条目连接到设备
- 继续如上所述,随机质询/响应进行身份验证
如果设备具有 NFC 芯片,则通过使用 NFC 分发配对密钥,然后使用共享密钥进行身份验证,用户可以更轻松地执行此操作。(这称为 OOB 或"带外"配对。
所有这一切的关键点是,您首先要创建尽可能安全的连接,以防止窃听和MiTM。然后,作为一个单独的问题,使用共享密钥对客户端进行身份验证。
此系统的一个可能的缺点是,拥有共享密钥的任何人都可以假装该设备。从您的描述来看,这感觉不是一个大问题,但如果是,您可以通过使用公钥-私钥来避免这种情况,这样设备持有私钥,所有客户端都持有公钥。但是,在这种情况下,公钥是一个秘密。(您可以更进一步,颁发客户端密钥并进行相互身份验证,但这可能矫枉过正,除非您的设备非常强大且网络连接良好。