在嵌入式设备中实现 HTTPS 的最佳实践

信息安全 tls 证书 嵌入式系统
2021-08-20 06:28:35

嵌入式设备,例如路由器、IP 摄像机,通常提供对管理界面的 HTTPS 访问。这些 HTTPS 实现通常存在很多问题(非唯一证书、自签名证书等),导致连接不安全。因此,我正在寻找最佳实践,即嵌入式设备如何以安全的方式实现 HTTPS,从而满足以下要求:

  • 通过 HTTPS(远程和从 LAN)访问设备的浏览器不会向用户显示任何警告。因此,浏览器能够正确验证设备发送的证书。
  • 如果设备的私钥被泄露,攻击者应该无法使用此密钥对另一个设备或另一个网页执行中间人攻击。
  • 如果可能的话,用户不应该在他们的浏览器中安装任何证书或接受任何例外。
3个回答

通过从受信任的 CA 购买证书来解决第 1 点和第 2 点。

至于你的第二点——

如果设备的私钥被泄露,攻击者应该无法使用此密钥对另一台设备执行中间人攻击

如果你能找到办法做到这一点,你会非常富有。

或其他网页。

诶?我不明白。

虽然我过去使用的这种类型的设备在出厂时没有证书,但它们提供了一种将证书(和私钥)部署到设备的方法。当然,除非您将证书发送请求发送给供应商(并保留私钥),否则您不能信任硬件提供的证书。

设备可能会在其制造日期后的几年内保持未售出/未使用状态,并且大多数(如果不是全部)CA 可能不愿意颁发过期日期较长的设备证书,因此直接的解决方案是也许不切实际。

但是,我提出以下替代方案:

  1. 使用替代方法在设备和客户端之间建立初始信任。例如,这可以是具有每设备 PSK 的 IPSec/L2TP VPN。PSK 的带外传输可以防止 MitM(除非攻击者知道 PSK)。

  2. 使用 HTTP(通过 VPN)从设备下载CSR该域可以是由制造商控制/由用户提供的域的随机子域。

  3. 用户/客户端代表设备将 CSR 提交给 CA,并通过 HTTP 将签名证书转发回设备。CA 应遵守不为子域重新颁发证书的规则。

  4. 设备将证书和通信开关应用到 HTTPS。

  5. 当证书即将到期时,设备会向 CA 发送签名更新请求(必要时通过客户端/用户)。

显然,上述“舞蹈”最好由程序自动化。

安全分析

  • 设备的身份是由 PSK 的知识建立的。
  • VPN 协议(使用 PSK)可防止中间人和窃听
  • 由于 CSR 的工作方式,设备的私钥永远不会被泄露(并且可以按需生成,而不是在工厂中编程)
  • 可以使用满足所有要求的有效每台设备证书
  • 随机的、非设备特定的子域可防止冒名顶替者抢先注册证书

解决方案是在工厂为设备配置唯一的可验证证书。但没有人这样做。

此外,您的一些要求是不现实的(如上所述):

如果设备的私钥被泄露,攻击者应该无法使用此密钥对另一个设备或另一个网页执行中间人攻击。

TLS PKI 的工作方式是不可能的。如果(甚至自签名)证书在每个设备上都是唯一的,则可能不是很实用。

如果可能的话,用户不应该在他们的浏览器中安装任何证书或接受任何例外。

好吧,由于 #2 是不可能的,如果出厂时没有配置一个可验证的证书,用户必须安装一个可验证的证书。

这两个其他问题与此有关: