Где хранить секретные ключи?
Я хочу сохранить пароль в своей программе ESP8266, но не могу найти способ сделать это недоступным для хакеров. Даже если я зашифрую его, мне все равно нужно будет где-то хранить закрытый ключ для процесса шифрования. У меня есть только две идеи, и обе имеют проблемы:
- Как константа в программном коде
Скомпилированный двоичный файл будет общедоступен, поэтому любой, кто сможет потратить некоторое время на интерпретацию скомпилированного файла, в конечном итоге сможет найти хранящийся в нем пароль. - В EEPROM
По крайней мере, это безопасно для людей, не являющихся пользователями, но любой пользователь все равно сможет загрузить свою собственную программу и прочитать EEPROM, чтобы найти пароль .
Конечно, это распространенная проблема, особенно в коммерческих продуктах. О каком решении я не думаю?
@Blaine, 👍0
Обсуждение2 ответа
ESP8266 не подходит для этого. Внутри него нельзя ничего хранить с защитой от считывания.
Любое пользовательское программное обеспечение находится во внешней памяти, поэтому даже любители могут его прочитать. Если вы предоставляете двоичный файл для загрузки (из-за обновлений или самостоятельной сборки), это даже упрощает считывание.
Если вы примените асимметричное шифрование, например, с помощью ключа от внешнего сервера, вы не сможете помешать хакеру применить тот же алгоритм.
Заключительное замечание: абсолютной безопасности не существует. Достичь какой-то степени можно, но это сложно.
Как уже сказал @the busybee, ESP8266 — неподходящий чип для таких приложений. Поскольку у вас всегда есть возможность сменить прошивку. Вы можете написать свой собственный загрузчик, который принимает только вашу прошивку, но это сам по себе огромный проект.
Шифрование данных обычно не вызывает проблем, если алгоритм шифрования достаточно надежен.
Но поскольку у вас есть ESP8266, вы также можете передавать данные в зашифрованном виде на облачный сервер, который управляет/хранит данные для вас.
Но с имеющимся у вас оборудованием будет сложно заблокировать или скрыть данные в EEPROM.
С уважением Дарио
- Как читать и записывать EEPROM в ESP8266
- Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
- AT-команда не отвечает на последовательный монитор
- Разница между этими двумя платами NodeMCU?
Возможно, вам следует рассказать нам, что вы пытаетесь сделать, требуя сохранить пароль., @Rohit Gupta
Если это так важно, то вам, вероятно, понадобится модуль/чип TPM для хранения и использования закрытого ключа. Однако тогда вам следует отправлять пароль только в зашифрованном виде. Если вы просто расшифроваете пароль с помощью TPM, а затем воспользуетесь им напрямую, кто-нибудь сможет его извлечь. Похоже, это вариант использования аутентификации с открытым ключом с использованием TPM., @chrisl