Безопасность и шифрование Meshtastic

Meshtastic шифрует весь трафик, но уровень защиты зависит от типа общения. Важно понимать разницу между канальным шифрованием и личными сообщениями.

Три уровня общения

1. LongFast (канал 0) — публичный

Дефолтный канал с известным ключом AQ== (AES-128). Любой с Meshtastic-устройством в радиусе видит сообщения. Используется для тестов, пингов и знакомства с mesh-сетью.

Не отправлять в LongFast ничего приватного.

2. Приватный канал — групповой секрет

Канал с собственным PSK (Pre-Shared Key). AES-256 шифрование. Безопасен, пока ключ не скомпрометирован.

# Создать канал с автоматическим ключом
meshtastic --port $PORT --ch-add "MyGroup"
 
# Или задать ключ явно
meshtastic --port $PORT --ch-index 1 --ch-set psk random

Подробнее: Каналы Meshtastic

Риски:

  • Ключ знают все участники канала — компрометация одного устройства раскрывает канал
  • Нет forward secrecy — перехваченный трафик можно расшифровать позже, получив ключ
  • Нет аутентификации отправителя — любой с ключом может писать от чужого имени

3. Личные сообщения (DM) — end-to-end

Firmware 2.5+ использует PKC (Public Key Cryptography). Каждая нода генерирует пару ключей при первом запуске. DM шифруется публичным ключом получателя — расшифровать может только он.

  • Ключи обмениваются автоматически через NodeInfo
  • Не зависят от канального PSK
  • После erase-flash ключи генерируются заново, но другие ноды обновят публичный ключ автоматически

DM — самый безопасный способ общения в Meshtastic.

Индикация шифрования в приложении

Иконка замка рядом с нодой в приложении показывает тип шифрования:

ЗамокЗначение
ЖёлтыйОбщий публичный ключ (например, канал LongFast с дефолтным PSK AQ==)
ЗелёныйШифрование с открытым ключом (PKC) — приватный канал или DM
Красный (зачёркнутый)Несоответствие ключей (key mismatch) — нужно переподключиться или удалить проблемный узел. Ноды обменяются ключами автоматически через некоторое время

Что видят другие ноды

Тип сообщенияСодержимоеМетаданные (отправитель, получатель)
LongFastвидят всевидят все
Приватный каналтолько участникивидят все (node ID в заголовке)
DMтолько получательвидят все (node ID в заголовке)

Метаданные (кто кому пишет) всегда видны всем нодам в радиусе — это особенность mesh-протокола. Шифруется только содержимое.

Bluetooth

Bluetooth-соединение между нодой и телефоном защищено PIN-кодом. Дефолтный 123456 нужно сменить:

meshtastic --port $PORT --set bluetooth.fixed_pin <PIN>

Без PIN злоумышленник в радиусе BLE (~10м) может подключиться к ноде и читать/отправлять сообщения.

MQTT и приватность

При включённом MQTT пакеты из эфира уходят в интернет. На публичном брокере (mqtt.meshtastic.org) всё в открытом доступе.

Для приватности:

  • Свой MQTT-брокер (Mosquitto)
  • lora.ignore_mqtt true — игнорировать пакеты из чужих MQTT-шлюзов
  • lora.config_ok_to_mqtt false — запретить другим пересылать твои пакеты в MQTT

Подробнее: Диагностика Meshtastic

GPS и местоположение

GPS-координаты — отдельный вектор утечки. Управляется через position_precision на каждом канале:

  • 0 — не отправлять координаты
  • 14 — примерно район (~1.4 км)
  • 32 — точные координаты

Рекомендация: на LongFast скрывать (0), на приватных каналах — по ситуации.

Итого: что делать новичку

  1. Сменить BLE PIN с дефолтного
  2. Не писать приватное в LongFast — он публичный
  3. Для группового общения — создать приватный канал с собственным PSK
  4. Для личного общения — использовать DM (end-to-end)
  5. Скрыть GPS на публичных каналах
  6. Если не нужен MQTT — не включать; если нужен — свой брокер

Источники