如何使Firebase实时数据库连接到ESP8266安全



我计划发布一个涉及ESP8266连接到Firebase中的实时数据库的项目。人们将构建项目,将代码上传到他们的ESP8266,并下载一个Flutter Android应用程序作为整个项目的远程控制,Firebase作为后端。

API密钥、数据库URL以及用户名和密码将从Flutter应用程序发送到ESP8266,因此人们可以在不知道API密钥和数据库URL的情况下将代码上传到自己的ESP8266。

这里的问题是,这将是一个非常简单的黑客从ESP8266检索这些数据,并在数据库中创建大量的流量,以我的大账单结束。有一个新东西叫Firebase App Check,但由于ESP8266不是一个应用程序,它是无用的。我该如何预防呢?有没有我没想过的其他方法?或者这真的不值得考虑吗?

问题是如何在ESP8266上安全地存储凭据。我希望有更多的人考虑这类问题。

不幸的是,答案是你不能。ESP8266缺乏安全存储数据所需的硬件。对芯片进行物理访问的攻击者将能够读取芯片无法加密的闪存。

考虑升级到ESP32。ESP32包含许多安全特性,允许您使用不可读的加密密钥对其进行永久编程,以便它只运行签名固件,并加密存储凭据的闪存。这些功能可以防止CPU执行已被篡改的固件,并使敏感的配置信息保密,即使攻击者可以物理访问CPU。

注意一些安全特性是不可逆的。它们是通过改变"熔点"来设定的。在芯片内部,只能更改一次。例如,如果你设置了一个密钥来验证签名固件,芯片将从那时起只能运行由该密钥验证的签名固件,你将无法更改密钥或允许它运行未签名固件。

如果您打算为最终用户提供处理器,您将能够强制执行安全措施。如果你没有,用户提供他们自己的硬件并运行你的固件,你将能够在固件中检测硬件安全是否启用…但是恶意的终端用户可以篡改固件,从而不需要硬件安全。

坚持使用ESP8266,您可以通过加密来使临时攻击者更难以检索凭据,但您仍然必须存储加密密钥。在这种情况下,攻击者不仅可以通过在固件中搜索与凭据相似的字符串来找到凭据,而且还必须反编译固件以找到如何解密凭据并找到密钥。无论如何,这都不是强安全性;它只是增加了成功攻击的努力。

最终只有你能决定你的风险是什么。有多少人会得到这些设备?他们有多值得信任?虽然一个就足够了,但攻击一个的可能性会随着数量的增加而增加。只有你才能对使用这些设备的人群及其行为进行建模。

你也可以通过仔细调整后端权限来限制你的曝光,设置速率限制(即使Firebase不支持这个,你也可以通过你自己的代理来实现)或使用其他后端机制。

最新更新