У каждого ПМ-1 своя заводская идентичность
Серийный номер на корпусе недостаточен. Узел получает криптографическую идентичность, которая используется при подготовке, проверке совместимости и установке данных комнаты.
На этапе подготовки узел формирует запрос идентичности и получает подписанный заводской профиль.
Программа прошивки проверяет модель, аппаратную конфигурацию и разрешённое состояние устройства.
Android запоминает конкретный ПМ-1. Замена требует явного действия, а не случайного подключения к соседнему модулю.
Комната принимает только идентичности, входящие в её подписанный состав участников.
Установка корневой идентичности и защищённого пакета комнаты не передаётся обычному BLE-клиенту. Это отделяет повседневное подключение телефона от полномочий выпуска устройства.
Комната является закрытым контуром
Участник получает не общий пароль, который можно переписать на бумаге, а подписанный набор данных комнаты с конкретным составом и правилами.
Точный roster
Система знает допустимые идентичности игроков и узлов. Неизвестное устройство не становится членом группы только потому, что слышит частоту.
Разделение ролей
Игрок, командир, штаб и технический оператор получают разные действия. Радиодоступ не равен административному доступу.
Смена состава
При удалении участника выпускается новое состояние комнаты. Старые данные не дают доступа к последующим событиям.
Fail-closed совместимость
Неизвестный профиль возможностей или несовместимый протокол отклоняется. Система не угадывает, что имел в виду чужой бинарник.
Что происходит при перехвате радиообмена
В радиоэфир не передаётся открытый текст сообщения. Шифрование выполняется в Android-приложении ещё до того, как данные попадут в Полевой Модуль - 1.
Шифрование на телефоне
Приложение преобразует сообщение в зашифрованный пакет до передачи по Bluetooth. Открытый текст остаётся на телефоне отправителя.
Модуль не читает сообщение
Полевой Модуль - 1 получает только зашифрованную полезную нагрузку. Он передаёт её напрямую или ретранслирует дальше без расшифровки содержимого.
Перехват не раскрывает текст
Наблюдатель может записать радиопакет, но в нём нет открытого сообщения. Без данных комнаты перехваченная полезная нагрузка не читается как приказ, координата или текст.
Расшифровка у получателя
После доставки пакет передаётся приложению получателя. Только телефон проверяет его и восстанавливает содержимое для отображения пользователю.
Контроль целостности
Попытка изменить зашифрованный пакет обнаруживается при проверке. Повреждённые или подменённые данные не применяются в приложении.
Защита от повтора
Последовательности и одноразовые значения не позволяют выдать ранее перехваченный приказ, SOS или другое событие за новое.
Шифрование скрывает содержимое, но не сам факт радиообмена. Наблюдатель может видеть время передачи и активность канала, не понимая смысл сообщения.
Прошивка проверяется до запуска
Обновление не является передачей произвольного бинарного файла на ESP32. Перед установкой проверяется цепочка выпуска.
Версия, модель, размер, контрольная сумма и совместимость входят в подписанные данные выпуска.
Устройство не принимает запрещённый откат на старую уязвимую версию.
В производственной конфигурации ESP32 запускает только разрешённый образ.
Содержимое flash не хранится как открытая копия прошивки и долговременных данных.
Передача может возобновляться после обрыва. Активный образ меняется только после полной проверки.
Сервисное восстановление отделено от обычного обновления и требует физического доступа.
Что остаётся физической задачей
Криптография не отменяет глушение. Система обнаруживает ухудшение связи, сохраняет очередь и восстанавливает передачу после освобождения канала.
Android-защита зависит от блокировки экрана, состояния ОС и контроля самого устройства.
Наблюдатель может заметить факт и время передачи, даже не понимая содержимое пакета.
