Где хранить секретные ключи?

esp8266 security

Я хочу сохранить пароль в своей программе ESP8266, но не могу найти способ сделать это недоступным для хакеров. Даже если я зашифрую его, мне все равно нужно будет где-то хранить закрытый ключ для процесса шифрования. У меня есть только две идеи, и обе имеют проблемы:

  1. Как константа в программном коде
    Скомпилированный двоичный файл будет общедоступен, поэтому любой, кто сможет потратить некоторое время на интерпретацию скомпилированного файла, в конечном итоге сможет найти хранящийся в нем пароль.
  2. В EEPROM
    По крайней мере, это безопасно для людей, не являющихся пользователями, но любой пользователь все равно сможет загрузить свою собственную программу и прочитать EEPROM, чтобы найти пароль .

Конечно, это распространенная проблема, особенно в коммерческих продуктах. О каком решении я не думаю?

, 👍0

Обсуждение

Возможно, вам следует рассказать нам, что вы пытаетесь сделать, требуя сохранить пароль., @Rohit Gupta

Если это так важно, то вам, вероятно, понадобится модуль/чип TPM для хранения и использования закрытого ключа. Однако тогда вам следует отправлять пароль только в зашифрованном виде. Если вы просто расшифроваете пароль с помощью TPM, а затем воспользуетесь им напрямую, кто-нибудь сможет его извлечь. Похоже, это вариант использования аутентификации с открытым ключом с использованием TPM., @chrisl


2 ответа


1

ESP8266 не подходит для этого. Внутри него нельзя ничего хранить с защитой от считывания.

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

Если вы примените асимметричное шифрование, например, с помощью ключа от внешнего сервера, вы не сможете помешать хакеру применить тот же алгоритм.

Заключительное замечание: абсолютной безопасности не существует. Достичь какой-то степени можно, но это сложно.

,

1

Как уже сказал @the busybee, ESP8266 — неподходящий чип для таких приложений. Поскольку у вас всегда есть возможность сменить прошивку. Вы можете написать свой собственный загрузчик, который принимает только вашу прошивку, но это сам по себе огромный проект.

Шифрование данных обычно не вызывает проблем, если алгоритм шифрования достаточно надежен.

Но поскольку у вас есть ESP8266, вы также можете передавать данные в зашифрованном виде на облачный сервер, который управляет/хранит данные для вас.

Но с имеющимся у вас оборудованием будет сложно заблокировать или скрыть данные в EEPROM.

С уважением Дарио

,