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

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


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

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
криптоподпись_команды [2023/10/21 20:32]
Admin создано
криптоподпись_команды [2023/10/31 11:34] (текущий)
Admin [Ограничения]
Строка 1: Строка 1:
 В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную команду (например, открытие ворот), можно использовать механизм цифровой подписи команды. В том случае, если надо гарантировать, что, даже получив доступ к локальной сети, MQTT брокеру или HTTP API, потенциальный злоумышленник не сможет выполнить критичную команду (например, открытие ворот), можно использовать механизм цифровой подписи команды.
  
-Для задействования режима, необходимо пересобрать прошивку, добавив в приватный файл опций компиляции (пример custom-build-flags/build_flags_lighthub21 для сборки под lighthub21) следующие опции: +Для задействования режима, необходимо пересобрать прошивку, добавив в приватный файл опций компиляции ([[опции_компиляции]]) (пример custom-build-flags/build_flags_lighthub21 для сборки под lighthub21) следующие опции (приведен пример)
- + <code>
 -D CRYPT -D CRYPT
 -D PROTECTED_PINS=16,21 -D PROTECTED_PINS=16,21
 -D SHAREDSECRET=big_secret -D SHAREDSECRET=big_secret
- +</code> 
-Как работает режим:+====Как работает режим:====
  
   * Каждый контроллер, один раз в 30 секунд, передает в MQTT топик <mqtt_root>/<controller_name>/$salt случайное число, полученное с истинного датчика случайных чисел. Данное число  (далее <Salt>) должно сохраняться авторизованной стороной и использоваться при создании цифровой подписи.   * Каждый контроллер, один раз в 30 секунд, передает в MQTT топик <mqtt_root>/<controller_name>/$salt случайное число, полученное с истинного датчика случайных чисел. Данное число  (далее <Salt>) должно сохраняться авторизованной стороной и использоваться при создании цифровой подписи.
Строка 15: Строка 15:
   * Если команда направлена на управление пином контроллера, из перечня PROTECTED_PINS, заданного при компиляции прошивки, то она будет выполнена только  том случае, если является авторизованной   * Если команда направлена на управление пином контроллера, из перечня PROTECTED_PINS, заданного при компиляции прошивки, то она будет выполнена только  том случае, если является авторизованной
  
 +
 +====Ограничения====
 +
 +Если пин входит в перечень, заданный при компиляции в опции PROTECTED_PINS, то для него действуют следующие ограничения, смысл которых в том, чтобы сделать крайне сложным подачу высокого логического уровня на выход контроллера (открытие мощных ключей) не имея физического доступа к самому устройству:
 +
 +  * Он не будет работать на канале типа термостат (THERMO)
 +  * Для канала типа RELAY вывод работает только в не инверсном режиме. То есть, настройками не получится добиться перевода в состояние с высоким уровнем по-умолчанию, не получив подписанной команды. Настройки команды по умолчанию в файле конфигурации, также, будут проигнорированы. требуется цифровая подпись команде для управления таким каналом
 +
 +  * Восстановление значения канала при перезагрузке контроллера из статусных топиков MQTT не будет работать
 +  * Форсуночный увлажнитель не будет инициализирован, если хотя бы один защищенный пин присутствует в его настройках (насос, клапана)
 +  * Данные пины не работают для управления моторизированными воздушными заслонками (канал MOTOR)
 +  * При использовании защищенных пинов в канале типа PWM требуется цифровая подпись команде для управления таким каналом
 +  * Канал типа RELAYPWM на этом pin работать не будет
 +
 +В качестве дополнительной меры защиты, рекомендуется отключить возможность обновления прошивки по-воздуху (OTA)
  
криптоподпись_команды.1697909571.txt.gz · Последнее изменение: 2023/10/21 20:32 — Admin