Безопасность и шифрование 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), на приватных каналах — по ситуации.
Итого: что делать новичку
- Сменить BLE PIN с дефолтного
- Не писать приватное в LongFast — он публичный
- Для группового общения — создать приватный канал с собственным PSK
- Для личного общения — использовать DM (end-to-end)
- Скрыть GPS на публичных каналах
- Если не нужен MQTT — не включать; если нужен — свой брокер