Инструменты пользователя

Инструменты сайта


криптоподпись_команды

Это старая версия документа!


В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную команду (например, открытие ворот), можно использовать механизм цифровой подписи команды.

Для задействования режима, необходимо пересобрать прошивку, добавив в приватный файл опций компиляции (пример custom-build-flags/build_flags_lighthub21 для сборки под lighthub21) следующие опции:

-D CRYPT
-D PROTECTED_PINS=16,21
-D SHAREDSECRET=big_secret

Как работает режим:

  • Каждый контроллер, один раз в 30 секунд, передает в MQTT топик <mqtt_root>/<controller_name>/$salt случайное число, полученное с истинного датчика случайных чисел. Данное число (далее <Salt>) должно сохраняться авторизованной стороной и использоваться при создании цифровой подписи.
  • Авторизованная сторона, желающая выполнить команду, вычисляет SHA256 хэш от строки, содержащей <Salt><SHAREDSECRET><Команда>
  • при отправке MQTT команды, авторизованная сторона добавляет в MQTT Payload полученный хэш цифровой подписи ДО команды, отделив подпись от тела команды знаком @
  • Контроллер, получив команду с подписью, производит аналогичную операцию по вычислению подписи и, если значения совпали, запрос считается авторизованным
  • Если команда направлена на управление пином контроллера, из перечня PROTECTED_PINS, заданного при компиляции прошивки, то она будет выполнена только том случае, если является авторизованной
криптоподпись_команды.1697909617.txt.gz · Последнее изменение: 2023/10/21 20:33 — Admin