如何保护 Nodemcu 中的 lua 脚本安全

我正在编写一个脚本,里面包含用户个人信息,例如“用户 ID”,“密码”,“服务器详细信息”等等。我想要保证这些个人数据的安全。

但是你知道,在 Nodemcu 中的脚本并不安全。任何人都可以下载脚本并复制我的项目。

因此,我想要加密上传到 Nodemcu 中的脚本,这样其他人就不能解密或读取我的脚本。

这在 NodeMCU 上是否可能?

我正在使用 NodeMCU V3(写在 nodemcu 的背面)

初始详细信息:

NodeMCU 定制版本,由 frightanic.com 制作
    分支:1.5.4.1-final
    提交:b9436bdfa452c098d5cb42a352ca124c80b91b25
    SSL:false
    模块:file、gpio、mqtt、net、node、rtctime、tmr、uart、wifi
 创建于 201992117:56
 使用 Lua 5.1.4,在 SDK 1.5.4.1(39cb9a32) 上运行
lua: 无法打开 init.lua
点赞
用户12918181
用户12918181

在一定程度上可以实现高安全等级,但不可能完全做到。NodeMCU将数据存储在外部闪存中,即使加密也无法防止读取。

您需要至少具备标准加密和TLS模块的固件以进行基本加密。如果没有TLS加密(作为网络通信模块),即使您不接触设备,也容易受到攻击。

更好的做法是使用修改后具有自定义加密/解密功能的固件,使用内部唯一芯片ID作为键的一部分,从而使其更难被破解。

一些有趣的想法:https://bbs.espressif.com/viewtopic.php?t=936

为了保护脚本,可以以二进制形式编译,而不存储原始脚本:https://nodemcu.readthedocs.io/en/master/compiling/

编辑:

在模块crypto中,您可以添加一个修改过的版本crypto_encdec(),作为预定义/计算密钥和iv的encryptintern / decryptintern

为了获得用于密钥计算的设备特定ID,您可以使用wifi_get_macaddr()提供的MAC地址和spi_flash_get_id()提供的闪存ID,如建议的那样:https://bbs.espressif.com/viewtopic.php?t=1303

为了加密/解密编译的脚本,您可以修改luaL_loadfilerequire也使用它)以解密文件,并在您的主机上使用luac.c进行加密。

2020-03-02 17:51:54
用户575642
用户575642

注意,对于一个决心坚定的人来说,任何事情都没有用。倒出闪存的内容,找到密钥并解密所有东西很容易。如果没有硬件支持(有便宜的加密芯片可用),则无法保护这些设备。

根据您的情况,有一些替代方案;例如,针对我的家庭使用,我打算设置一个独立的低安全性的 WiFi 网络(无法访问互联网,只用于物联网设备),一旦我开始部署基于 ESP8266 的设备。是的,人们可以轻易获取凭证,但是您将连接到一个大多数无用的网络上。

安全性是非常情境化的。您要保护自己免受哪种攻击者?您所保护的东西有多有价值?如果不知道更多相关信息,很难提出建议。

2020-03-08 17:10:28