Как обезопасить скрипты lua внутри Nodemcu - PullRequest
0 голосов
/ 02 марта 2020

Я пишу сценарий, содержащий личные данные пользователя, такие как «Идентификатор пользователя», «Пароль», «Сведения о сервере», 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 ]

0 голосов
/ 08 марта 2020

Обратите внимание, что ничто не поможет против хотя бы наполовину решительного человека. Это тривиально сбросить содержимое fla sh, найти ключи и расшифровать все. Без аппаратной поддержки (существуют дешевые крипто-чипы), невозможно защитить эти устройства.

В зависимости от вашей ситуации, есть альтернативы; например, для домашнего использования я планирую настроить отдельную сеть Wi-Fi с низким уровнем безопасности (без доступа к inte rnet, только устройства IoT), как только я начну развертывать устройства на базе ESP8266. Да, люди могут легко получить учетные данные, но вы будете подключены к практически бесполезной сети.

Безопасность очень ситуативна. От каких злоумышленников вы защищаетесь? Насколько ценно то, что вы защищаете? Трудно дать совет, не зная об этом больше.

0 голосов
/ 02 марта 2020

Можно достичь высокого уровня безопасности, но не 100%. NodeMCU хранит данные во внешнем файле sh, который не защищен от чтения, даже зашифрован.

Вам требуется как минимум прошивка со стандартными модулями шифрования и TLS для базового шифрования c. Без шифрования TLS (как модуль для связи net) вы уязвимы, не касаясь своего устройства.

Лучше использовать модифицированную прошивку с пользовательскими функциями шифрования / дешифрования, используя внутренние уникальные идентификаторы чипа как часть ключа, что усложняет его взлом.

Некоторые интересные идеи: https://bbs.espressif.com/viewtopic.php?t=936

Чтобы защитить ваши скрипты, скомпилируйте их в двоичном виде без сохранения оригинальных скриптов: https://nodemcu.readthedocs.io/en/master/compiling/

Редактировать:

В модуле crypto Вы можете добавить модифицированную версию crypto_encdec() как encryptintern / decryptintern с предопределенным / рассчитанным ключом и iv.

Чтобы получить идентификатор устройства c id для расчета ключа, вы можно использовать MA C адрес с wifi_get_macaddr() и fla sh id с spi_flash_get_id() как предложено: https://bbs.espressif.com/viewtopic.php?t=1303

Для шифрования / дешифрования скомпилированных скриптов вы можете изменить luaL_loadfile (require использует его тоже) для расшифровки файлов и luac.c для шифрования на вашем хосте.

...