Конфиденциальность
и безопасность
Информация о том, как TMesh обрабатывает и хранит данные, как работает шифрование сообщений и что рекомендуется для защиты ваших устройств.
Важное предупреждение
Шифрование сообщений
Путь сообщения: Meshtastic → Telegram
Когда устройство Meshtastic отправляет сообщение, оно шифруется по протоколу Meshtastic (PKI для личных сообщений, PSK для каналов). Сообщение передаётся по радио до одного из шлюзов TMesh.
Шлюзы TMesh передают зашифрованные пакеты на MQTT-сервер «как есть». Ключи шифрования хранятся только на сервере TMesh, поэтому шлюзы не могут расшифровать пересылаемые сообщения.
Расшифровка на сервере TMesh
Сервер TMesh расшифровывает сообщения для отправки в Telegram. Это обусловлено ограничениями Telegram Bot API — бот может отправлять в Telegram только открытый текст. Сквозное шифрование между Meshtastic и Telegram невозможно.
Доступ к данным
Администратор сервера TMesh имеет техническую возможность доступа к расшифрованным сообщениям. Администратор не просматривает и не использует содержимое сообщений.
Инфраструктура и защита сервера
Сервер TMesh размещён в Yandex Cloud (Россия). Все порты, кроме MQTT (1883), защищены ограничениями по IP-адресам.
Некоторые устройства Meshtastic (например, Heltec V3) не могут поддерживать стабильное TLS-соединение с MQTT-сервером — через несколько часов работы они зависают и перестают передавать пакеты. Поэтому TMesh использует порт 1883 (MQTT без TLS). Содержимое сообщений при этом зашифровано на уровне протокола Meshtastic — шлюзы передают зашифрованные пакеты, расшифровка происходит только на сервере TMesh.
Данные, хранимые на сервере
TMesh не хранит содержимое сообщений. На сервере хранятся только данные, необходимые для работы сервиса:
Данные Telegram
- Telegram User ID — для идентификации пользователя, зарегистрировавшего устройство или канал
- Telegram Chat ID — идентификатор чата (личного или группового), в котором работает бот
- Telegram Username — имя пользователя, если пользователь выполнил команду
/start(используется для команды/chat @usernameсо стороны Meshtastic)
Данные устройств Meshtastic
- Node Name — имя устройства в сети Meshtastic
- Public Key — публичный ключ устройства для шифрования личных сообщений (PKI)
- Последняя известная позиция — координаты устройства, если оно передавало геопозицию (через публичный канал, приватный канал или личное сообщение)
Данные каналов Meshtastic
- Имя канала — название приватного канала
- PSK (Pre-Shared Key) — ключ шифрования канала, необходим для расшифровки сообщений из этого канала
AQ==) TMesh предупредит, что этот ключ небезопасен — любой участник сети Meshtastic сможет читать сообщения канала. Однако TMesh не блокирует регистрацию такого канала, если пользователь подтвердит, что понимает риски.
Безопасность ключей устройств
Фиксация ключа при регистрации
Когда устройство впервые регистрируется в TMesh через команду /add_device, его публичный ключ и информация об узле фиксируются в базе данных и больше не обновляются автоматически. Это сделано намеренно в целях безопасности.
Без фиксации ключа злоумышленник мог бы подделать Node Info пакет с идентификатором вашего устройства и подменить публичный ключ в базе данных TMesh. После этого он получил бы доступ ко всем одобренным чат-сессиям вашего устройства.
Рекомендации
- Рекомендуется зарегистрировать устройство через
/add_device, чтобы зафиксировать его ключ и предотвратить подмену. - Если вы используете только чат-сессии (
/chat) без регистрации устройства, ключ устройства обновляется при каждом получении Node Info и теоретически может быть подменён.
Что делать при потере или сбросе ключа
Если вы сбросили устройство или изменили ключи шифрования, TMesh больше не сможет отправлять вам сообщения (старый ключ не подходит). В этом случае:
- Выполните
/remove_device_from_all_chats !ваш_id— это удалит устройство из всех чатов и все одобрения. - Заново зарегистрируйте устройство через
/add_device— новый ключ будет зафиксирован.
Безопасность ключей каналов
Ключ по умолчанию (AQ==)
Meshtastic использует ключ AQ== как ключ по умолчанию для канала. Этот ключ известен всем и не обеспечивает защиты — любой участник сети может расшифровать сообщения канала с таким ключом.
При попытке зарегистрировать канал с ключом AQ== TMesh предупредит пользователя о небезопасности ключа и попросит подтверждение. Если пользователь подтвердит, что понимает риски (ответив my key is not secure), регистрация будет завершена.
Исходный код и ссылки
TMesh — открытый проект. Весь исходный код доступен для аудита: