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