一点上下文
由于您将 MQTT 与 AWS IoT 结合使用,因此您应该使用 X.509 证书进行身份验证和安全。亚马逊有一些关于如何保护证书的指导,所以我会在这里引用:
证书使非对称密钥能够与设备一起使用。这意味着您可以将私钥刻录到设备上的安全存储中,而无需让敏感的加密材料离开设备。
由于您目前正在使用 STM32 的读出保护(RDP),因此除了最坚定的攻击者之外,所有攻击者都将无法访问您当前方案中的证书:
全局读出保护允许嵌入式固件代码(预加载在闪存中)防止逆向工程、使用调试工具的转储或其他侵入性攻击手段。
- 0 级 - 无保护(默认)
- 级别 1 - 通过调试或 RAM 加载代码的代码转储来保护闪存免于读取
- 级别 2 - 禁用所有调试功能
外部存储会安全吗?
它可能不那么安全。如果您的客户的私钥被盗,攻击者可以发送看似来自您设备的数据,但实际上并非如此。尽管不清楚您发送的是什么数据,但任何不受信任的数据都可能存在安全风险。
我需要保密哪些位?
在 AWS IoT 上创建设备证书时,您应该看到如下图像:
来自AWS IoT 文档的创建和激活设备证书页面的图像。
私钥是您真正需要保留的东西... private,如果可能,绝对应该存储在读保护的内存中。公钥和证书旨在共享,因此如果您的空间不足,您可以安全地将它们移至外部存储。您可以在页面SSL/TLS 是如何工作的?在Wikipedia上的信息安全堆栈交换和公钥密码学。如果我不包含这张图片来解释为什么私钥需要保密,我想我会对你不利:
.
图片来自维基百科,已发布到公共领域。
您设备的公钥是 AWS IoT 用来签署消息以发送到您的设备的密钥(但它不能证明谁在发送消息)。所以,真的,如果有人窃取了公钥,这并不是一场巨大的灾难,因为它并不是秘密。
该私钥是你的设备用来解密的消息,所以这是一个稍微大一点的问题,如果一个攻击者窃取这一点。
您还询问了如果攻击者窃取了 RootCA 证书会发生什么。如果有人窃取了AWS IoT 的私钥,那将是灾难性的,但您设备上的 RootCA 证书并非如此。在RootCA.crt
亚马逊给你的是完全公开的,其目的是让你可以验证你不会被以任何方式攻击(最有可能是人在这方面的中间人故作AWS物联网的服务器)。
被黑客入侵的设备会造成什么损害?
您被盗的设备只能执行策略中列出的操作。尽量遵循最小特权原则;只授予您的设备绝对需要的权限,因此如果最坏的情况确实发生,它不会造成太大破坏。对于您的具体情况:
该事物仅允许发布到连接到数据处理器的 2 个通道(其名称和数据馈送通道),该数据处理器将忽略任何流向它的流氓数据包。
那挺好的。任何攻击都应该隔离在设备可以发布到的两个 MQTT 主题上,这样就不会造成大规模的伤害。