introducing-new-public-key-cryptography-in-v2_5

Meshtastic начался с простой цели: поддерживать связь между друзьями во время походов на природе, когда нет сотовой связи. То, что начиналось как простой проект, выросло благодаря страстному сообществу, раздвигающему границы возможного. Сегодня Meshtastic используется в операциях по поиску и спасению, связи вне сети, восстановлению после катастроф и даже в сценариях отключения энергосистемы. Будь то подготовка к следующему наводнению или торнадо, расширение связи через Интернет с помощью MQTT или просто наслаждение приключением вне сети, Meshtastic стал незаменимым инструментом для многих.

{/ truncate /}

Баланс между шифрованием и практическим использованием

Для многих шифрование Meshtastic является ключевой частью привлекательности. За годы проблема заключалась в поиске баланса: внедрении сильного шифрования без исключения низкомощных платформ IoT или перегрузки ограниченной пропускной способности LoRa. До версии 2.5 шифрование полагалось на статический предварительно общий ключ на канал, который был довольно надежным. Однако у него была одна заметная ограниченность: Прямые сообщения (ПС).

ПС отправлялись с использованием того же общего ключа канала, что означало, что хотя ПС теоретически были приватными, они были доступны любому на том же канале. Система чести была единственной защитой, особенно поскольку стандартная настройка Meshtastic использует публично известный ключ шифрования, оставляя ПС эффективно нешифрованными из коробки.

Проблемы с удаленным администрированием

Удаленное администрирование также представляло препятствия. Конвенциональный метод включал создание канала «admin», позволяющего любому узлу на этом канале управляться удаленно. Этот подход имел недостатки, в частности, что узлы, открытые для администрирования других, также были уязвимы к администрированию самих себя.

Введение публичноключевой криптографии (ПКК) в Meshtastic

В 2022 году пользователь по имени edinnen предложил решение с pull request, вводящим схему публичного/приватного ключа для ПС. Хотя начальная обратная связь была многообещающей, патч устарел со временем. Недавно все сошлось, и мы вернулись к этому патчу, переработали его, сделав основой разработки версии 2.5 Meshtastic.

Наша новая реализация ПКК теперь является основной функцией, предоставляющей каждому узлу уникальный публичный ключ, генерируемый при первом запуске. Этот ключ обеспечивает безопасные зашифрованные соединения между узлами и служит уникальным идентификатором в сетке. Он также решает проблему удаленного администрирования — узлы теперь могут быть идентифицированы и авторизованы как удаленные администраторы через свои публичные ключи.

Значительный шаг вперед в безопасности

С этой новой схемой ПКК Meshtastic предлагает улучшенное шифрование для ПС и безопасное удаленное администрирование для труднодоступных узлов. Хотя мы все еще предостерегаем от полного доверия шифрованию Meshtastic в ситуациях, угрожающих жизни, это обновление представляет значительный прогресс в приватности и безопасности сетки.

Технический разбор: Механика новой системы шифрования Meshtastic

В основе новой системы шифрования Meshtastic лежит обмен ключами Диффи-Хеллмана на эллиптической кривой X25519. Этот процесс состоит из двух ключевых шагов:

  1. Генерация ключей: При первом запуске каждое устройство генерирует случайный приватный ключ и выводит соответствующий публичный ключ с использованием алгоритма X25519. Этот публичный ключ затем транслируется в сетку как часть регулярных объявлений узла.

  2. Безопасная коммуникация: Когда узел инициирует Прямое сообщение (ПС), он завершает обмен ключами X25519, комбинируя свой приватный ключ с публичным ключом получателя. Этот процесс генерирует уникальный общий секрет, который затем используется для шифрования ПС. Получающий узел может независимо вывести тот же общий секрет, используя свой приватный ключ и публичный ключ отправителя, обеспечивая безопасное расшифрование.

Процесс обмена ключами X25519 в Meshtastic Рисунок 1: Визуальное представление процесса обмена ключами X25519 в Meshtastic

Схема шифрования использует AES-CCM (Counter with CBC-MAC), которая обеспечивает как конфиденциальность, так и аутентичность. Заметная особенность — включение короткого кода аутентификации сообщения, проверяющего идентичность отправителя и обеспечивающего целостность сообщения. Для дальнейшего повышения безопасности сообщения ПС включают дополнительные 4 байта случайного nonce, эффективно предотвращая потенциальные компрометации из-за повторного использования nonce.

Удаленное администрирование также претерпело значительные улучшения. Сообщения администрирования теперь включают 8-байтовый ключ сессии, установленный узлом, который администрируется. Этот ключ включается в ответы и должен присутствовать в любом пакете, пытающемся внести изменения. С тайм-аутом в 300 секунд этот механизм обеспечивает надежную защиту от атак повторного воспроизведения захваченного трафика администрирования.

Заключение

Путь Meshtastic от простого инструмента связи для походов к универсальному, безопасному решению для mesh-сетей демонстрирует силу развития, управляемого сообществом. Введение нашей новой схемы публичноключевой криптографии в версии 2.5 представляет значительный прогресс в возможностях безопасности платформы, решая давние проблемы в прямой переписке и удаленном администрировании.

Продолжая совершенствовать и расширять функции Meshtastic, мы остаемся приверженными балансу между надежной безопасностью и практической удобностью. Хотя это обновление значительно улучшает приватность и безопасность платформы, мы призываем пользователей подходить к шифрованию с четким пониманием его сильных и слабых сторон, особенно в критических сценариях.

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