当 MQTT 客户端在 TLS 握手期间不提供公钥证书时,是否存在任何安全问题?



我正在构建一个小型的类似物联网的系统,其中 mqtt 设备(客户端(发送和接收与安全相关的关键信息或命令。

我必须知道,可以选择在没有客户端通过PK证书进行客户端身份验证的情况下构建TLS连接。

通常,mqtt 客户端设备没有足够的资源来支持 PKI,首先它必须存储证书,并在有效期过后或原始证书被吊销时不时使用新颁发的证书更新它。

我认为,这就是为什么许多 mqtt 代理可以选择在 TLS 握手期间配置开/关客户端身份验证的原因。

但是,我担心的是,通过客户端身份验证步骤是否会有任何安全问题,例如,冒充我的设备之一的其他恶意设备可以连接到代理可能会获得这些关键信息和命令。

我的问题是,考虑到设备的约束资源,我可以采取哪些最佳选项和实践来最大程度地降低这种风险。

缺少客户端身份验证意味着包括攻击者在内的每个人都可以声称自己是有效的客户端。在公共服务等用例中,这不是问题,而在其他用例中,服务器希望仅限制对特定已知客户端的访问。

这个问题没有明确的答案,它总是取决于以下因素,只有你作为设计师才能回答它们:

  1. 您正在使用的威胁模型是什么? 例如,你想让谁远离系统,为什么,有人连接 rouge 客户端的后果是什么?
  2. 你准备花多少钱?如果您打算为每个设备部署客户端证书甚至唯一的用户名/密码,它将如何保护?您打算使用的硬件是否支持安全隔区/硬件机密存储?这意味着攻击者从设备中提取客户端用户名/密码或密钥的难度有多大?
  3. 您还采取了哪些其他安全措施?您是否有访问控制列表来保护客户端可以发布/订阅的主题?您是否具有适当的监视来检测来自客户端的恶意操作,以便可以断开连接和禁止它们?

最新更新