Как защитить скрипты lua внутри Nodemcu
Я пишу сценарий, содержащий личную информацию пользователя, такую как "Идентификатор пользователя", "Пароль", "Сведения о сервере", Bla bla bla. И я хочу защитить все эти личные данные.
И вы знаете, что скрипт внутри Nodemcu совсем не безопасен. Кто угодно может скачать сценарий и сделать копию моего проекта.
Итак, я хочу зашифровать сценарий, который загружен в Nodemcu, чтобы кто-то другой не мог расшифровать или прочитать мой сценарий.
Возможно ли это в NodeMCU?
Я использую NodeMCU V3(написано на обратной стороне nodemcu).
Начальные сведения:
NodeMCU custom build by frightanic.com
branch: 1.5.4.1-final
commit: b9436bdfa452c098d5cb42a352ca124c80b91b25
SSL: false
modules: file,gpio,mqtt,net,node,rtctime,tmr,uart,wifi
build created on 2019-09-21 17:56
powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32)
lua: cannot open init.lua
2 ответа
Учтите, что ничто не поможет против даже наполовину решительного человека. Сбросить содержимое флэш-памяти, найти ключи и расшифровать все - тривиально. Без аппаратной поддержки (есть дешевые криптографические чипы) защитить эти устройства невозможно.
В зависимости от вашей ситуации есть альтернативы; Например, для домашнего использования я планирую создать отдельную сеть Wi-Fi с низким уровнем безопасности (без доступа к Интернету, только устройства IoT), как только я начну развертывать устройства на базе ESP8266. Да, люди могут легко получить учетные данные, но вы будете подключены к почти бесполезной сети.
Безопасность очень ситуативна. От каких злоумышленников вы защищаетесь? Насколько ценно то, что вы защищаете? Трудно дать совет, не зная об этом больше.
Достичь высокого уровня безопасности можно, но не 100%. NodeMCU хранит данные во внешней флеш-памяти, которая не защищена от чтения, даже в зашифрованном виде.
Вам потребуется как минимум прошивка со стандартными модулями шифрования и TLS для базового шифрования. Без шифрования TLS (в качестве модуля для сетевого взаимодействия) вы уязвимы, не касаясь своего устройства.
Лучше использовать модифицированную прошивку с настраиваемыми функциями шифрования / дешифрования с использованием внутреннего уникального идентификатора чипа как части ключа, что затрудняет взлом.
Несколько интересных идей: https://bbs.espressif.com/viewtopic.php?t=936
Чтобы защитить свои скрипты, скомпилируйте их в двоичной форме без сохранения исходных скриптов: https://nodemcu.readthedocs.io/en/master/compiling/
Редактировать:
В модуле crypto вы можете добавить модифицированную версиюcrypto_encdec()
как encryptintern
/decryptintern
с предопределенным / рассчитанным ключом и iv.
Чтобы получить конкретный идентификатор устройства для расчета ключа, вы можете использовать MAC-адрес с wifi_get_macaddr()
и флэш-идентификатор с spi_flash_get_id()
как предлагается: https://bbs.espressif.com/viewtopic.php?t=1303
Чтобы зашифровать / расшифровать скомпилированные скрипты, вы можете изменить luaL_loadfile
(require
тоже использует его) для расшифровки файлов, и luac.c
для шифрования на вашем хосте.