Система "Кропива" и защищенная цифровая связь

Система "Кропива" и защищенная цифровая связь

illusionofchaos

Провёл небольшой анализ ВСУшной системы "Кропива" (здесь можно скачать актуальные версии приложений, инструкции и видеоинструкции к ним). Результаты будут в конце этой статьи, а для начала большое вступление про защищенную связь.

Можно ли, имея один мавик, два дешевых аналоговых баофенга и два любых телефона на андроиде, построить такую систему, чтобы после того, как оператор БПЛА замечал цель на экране своего телефона, он один раз касался экрана в этом месте, а через несколько секунд на телефоне артиллериста автоматически появлялись все параметры, необходимые для поражения этой цели, переданные по зашифрованному цифровому каналу? Можно. Примерно это и реализовано в системе "Кропива".

Я видел много постов с жалобами на то, что у наших солдат нет закрытой связи, и большинство из них пользуются китайскими любительскими аналоговыми рациями, купленными за свои деньги (в основном, Baofeng UV-5R) и работающим в диапазонах UHF/VHF (ОВЧ/УВЧ, метровые/дециметровые волны). Эти рации используются для передачи только голоса, при этом не применяется никакого шифрования, и все переговоры слышит противник. Также у многих солдат есть телефоны на базе ОС Андроид, чей функционал практически не используется, и которые постоянно находятся в авиарежиме без подключения к сети. Но эти два устройства можно легко объединить и развернуть на их базе полноценную беспроводную цифровую децентрализованную сеть, работающую по протоколу IP, через которую будут передаваться зашифрованные данные. В общем виде такой способ передачи данных называется пакетным радио. Итак, по пунктам:

1. Баофенг подключается к стандартному 3,5 мм разъему Андроида для наушников и микрофона при помощи двух обычных аудиопроводов соединенных между собой парой резисторов. Детальную схему можно увидеть здесь и альтернативный вариант без печатной платы. Также можно купить готовый кабель. На этом аппаратная часть закончена, всё остальное реализуется исключительно программно внутри приложения для Андроида. Много полезной информации по Baofeng UV-5R можно найти здесь, и вот data sheets одного чипа и другого чипа, которые используются в этой модели.

2. Первый программный уровень - аудиомодем, то есть компонент, который: а) получает с аудиовхода принятый звуковой сигнал и превращает его в двоичные данные, б) преобразовывает отправляемые двоичные данные в аудиосигнал и передает его на аудиовыход. Простая реализация аудиомодема на Питоне здесь, а здесь полноценный TNC, реализующий протокол канального уровня AX.25, широко используемый в любительских сетях пакетной радиосвязи. А вот и подробнейшая инструкция по реализации протокола AX.25 поверх AFSK1200, передающего данные со скоростью 1200 бит/с (150 байт/с) с помощью того самого Baofeng UV-5R - часть 1, часть 2, часть 3, часть 4.

3. В Linux сразу встроена поддержка IP поверх AX.25, но её можно реализовать программно в приложении на Android. На данном этапе у нас уже есть полноценная IP-сеть, через которую можно передавать любые данные, в том числе зашифрованные любыми алгоритмами. Описание того, что делать поверх IP-сети, будет немного дальше по тексту.

4. Следующие программные уровни могут быть любыми, они определяют шифрование, структуру передаваемых данных и всё такое.

Можно вообще выкинуть из описанной выше схемы Baofeng и взять ESP-32 за пару долларов, приделать к нему антенну и примотать изолентой к обычному power bank'у. В результате будет готовое устройство, которое сможет автономно отправлять, принимать, и хранить полученные данные. Подключаться к нему можно с любого устройства через Wi-Fi и Bluetooth. Но о таком надо было думать 8 лет назад, сейчас уже поздно, защищенная связь нужна уже 8 месяцев назад, а разработать физическое устройство, написать для него прошивку, закупить сотни тысяч чипов (с поставкой которых сейчас сложности), выстроить производственную линию, произвести сотни тысяч устройств, протестировать их, провести контроль качества - это долгий труд многих людей и огромные финансовые траты. Поэтому нужно делать систему на базе обычных гражданских андроидов и баофенгов, которые уже у всех есть в огромном количестве.

Есть готовый пример реализации IP и AX.25 поверх технологии LoRa, которая используется для "интернета вещей" и передачи данных на расстояние от 1 до 15 км с минимальным энергопотреблением.

Это всё достаточно простые популярные гражданские/любительские технологии, но они показывают хорошие результаты. На эту тему можно много нагуглить по запросу "IP over UHF/VHF" (IP поверх ОВЧ/УВЧ). Но помимо ОВЧ/УВЧ может применяться и ВЧ-диапазон. Одним из результатов нашлась вот эта статья, где описываются некоторые минусы использования IP поверх ВЧ-радиосетей и преимущества прямого использования протокола STANAG 5066 (к ОВЧ/УВЧ это применимо в меньшей степени). STANAG 5066 - свободно доступный протокол НАТО для передачи данных по ВЧ-сетям. Полный текст доступен здесь (UPD: подсказали, что в актуальной редакции не описан физический уровень, а то, что там было изначально, требует для реализации весьма хороших знаний и навыков в цифровой обработке сигнала). ВЧ сигналы передаются на гораздо большие расстояние по сравнению с ОВЧ/УВЧ (сотни километров), поэтому при наличии ВЧ-радиостанций нет никаких препятствий к тому, чтобы программно реализовать данный протокол по методике, описанной выше. Доступна реализация с открытым исходным кодом. Это настолько древний стандарт, что реализация IP поверх него была описана еще в 2001 году, полный текст статьи здесь.

Несмотря на то, что скорость передачи данных невысока, этого более чем достаточно для передачи текстовых сообщений, а также любых тактических сообщений заранее определенного формата, как например, сообщений серии J, описанных в стандарте TADIL-J/Link-16. В целом, все такие системы связи называются tactical data link. При этом стандарт НАТО TADIL-A/Link 11, описывающий передачу цифровых зашифрованных тактических сообщений по радиосвязи в ВЧ и УВЧ-диапазонах, был написан еще в 1957(!) году. Для передачи зашифрованного голосового сигнала тоже не требуется большая пропускная способность, в прошлом году выпустили кодек Lyra, который передает аудио с достаточно высоким качеством, требуя всего 3 кбит/с (3000 бит/с). Уже давно существует кодек MELP, который НАТО использует для шифрованной голосовой связи, работающий при всего 600 бит/с (некоторые станции передают голосовые сообщения в режиме 300 бит/с).

И здесь меня интересует следующее - почему ничего из вышеописанного у нас не просто не реализовано, об этом даже никто не говорит? Не может же быть такого, что я первый, кто догадался просто погулить это? Или все российские специалисты выступают на стороне врага? Или (что не менее печально) у нас в принципе не осталось специалистов, которые умеют думать и пользоваться гуглом?

Я говорю именно о создании максимально простой системы тактической связи, которой могли бы пользоваться по собственной инициативе на уровне конкретных подразделений, а не о масштабной разработке в интересах МО РФ, потому что, в то время, как доктрина НАТО ещё с 90-х годов предполагает сетецентрическую войну, у нас, судя по всему, уровень мышления большинства военных чинов выражает вот эта известная женщина. При этом замминистра обороны утверждает, что в армии есть всё необходимое оснащение. А контракты на средства защищенной связи настолько прибыльные, что за них идет грязная борьба с привлечением всевозможных ведомств, например, сообщают, что у ООО "Радиотехника" арестовали и хотят уничтожить 4000 плат для защищенных радиостанций под надуманным предлогом, несмотря на множество заключений, которые подтверждают несостоятельность обвинений.

⸺⸺⸺⸺⸺

А теперь переходим непосредственно к комплексу программ "Кропива". Что это такое достаточно подробно описано здесь и продолжение здесь.

Функциональные возможности приложений легко понимаются из содержимого инструкций для них, можно отметить, что приложение Тенета способно объединять устройства в сети и передавать между ними данные и сообщения через IP-сеть поверх ОВЧ/УВЧ радиосвязи, через IP-сеть внутри VPN по Starlink, через закрытые чаты мессенджеров Signal и Telegram (опять Дуров поддерживает войну против России). В приложении FireFly видео с беспилотников стримится через сервис Discord. В приложении Мапа на выбор доступно две тактические системы - советская и НАТО. 

В системе "Кропива" под названием MILCOMBOX понимается радиостанция Motorola (например, модель DM4601e), к которой идёт подключение через Bluetooth c профилем COM-порта, через которую передаются данные по протоколу DMR. Подробную спецификацию протокола можно прочитать здесь. Скорость передачи данных составляет 4420 бит/c, часть из которых тратится на сам протокол и коррекцию ошибок, то есть реально скорость будет ниже. На последнем видео в этом посте показан процесс установления связи в приложении Тенета между двумя устройствами с помощью автомобильных ОВЧ/УВЧ радиостанций Motorola DM4601e, передача текстового сообщения и координат цели.

⸺⸺⸺⸺⸺

А вот и некоторые результаты моего анализа.

Приложения распространяются через репозиторий F-Droid по адресу http://kropyva.nettlecloud.com/repo/. Список доступный для скачивания приложений можно увидеть в файле http://kropyva.nettlecloud.com/repo/index.xml. Сами АPK-файлы, указанные в индексе, можно скачать по ссылкам вида http://kropyva.nettlecloud.com/repo/Kropyva-1.1.7.apk. Оказывается, что это сервер ещё в мае этого года пытались заDDoSить, поэтому сейчас он доступен только с украинских IP-адресов (приходится использовать прокси).

Список приложений, доступных для скачивания с их идентификаторами:

Kropiva (крапива) - org.fdroid.kropiva (приложение для установки и обновления остальных приложений)

Mapa (карта) - ua.mil.armysos.android (оснвное приложение с тактической картой и артиллерийскими калькуляторами)

Teneta (сеть) - ua.mil.armysos.network.networkbridge (объединяет устройства в сеть различными способами и позволяет обмениваться сообщениями)

Teneta Groups - ua.mil.teneta.tenetagroups

Resource Client - ua.kmd.resourceclient (загружает ресурсы с сервера)

Meteo - com.idepositbox.btspp (взаимодействует по Bluetooth с метеостанциями типа Kestrel 5000 и загружает данные с них в сеть)

FireFly (светлячок) - video.zhuker.sancho (управление БПЛА, в том числе в режиме сброса боеприпасов, загрузка координат целей в сеть)

Fast Delete - ua.logika.fastdelete (в одно нажатие удаляет все упомянутые здесь приложения вместе с их данными)

Другие идентификаторы, которые упоминаются, но которые недоступны для скачивания в репозитории:

militarylauncher - ua.com.todd.militarylauncher

azk - ua.kmd.azk7

antpq - ua.kmd.antpq36

rangefinder - ua.kmd.rangefinder

chat - com.kmd.teneta.tacchat

teneta (новая версия) - ua.kmd.teneta.app

teneta_service - ua.kmd.teneta.service

teneta_test - ua.kmd.tenetatest

mmk - ua.kmd.mmkapp

triton - ua.kmd.triton

Последние два приложения, судя по всему, связаны с управлением миномётами, так как в коде одного из других приложений в пакете "mmktriton" содержатся классы с названиями "MortarCommand*" и "MortarControl*" с соответствующим содержанием. 

⸺⸺⸺⸺⸺

По шифрованию локальных данных в приложениях.

Приложение Тенета:

Адресная книга (с позывными и данными контактов) зашифрована SQLCipher с ключом ";ArE5z+e9NwsH7Bt" (без кавычек). Файл базы данных называется "AddressBookEncrypted".

Приложение Мапа:

- данные хранятся на карте памяти в папке "/artmap"

- связка ключей в формате JSON лежит в "/artmap/main.dat"

- идентификатор устройства лежит в "/artmap/androidid"

- файл ключей зашифрован алгоритмом "AES/CBC/PKCS5Padding" с IV равным SHA-256 Digest от первых 32 байтами зашифрованного файла

- ключ дешифровки формируется алгоритмом "PBKDF2WithHmacSHA1" из парольной строки с длиной ключа 256 бит, 1024 итерациями и первыми 32 байтами зашифрованного файла в качестве соли

- парольная строка формируется как пароль, указанный, к которому в конце добавлен идентификатор устройства, написанный заглавными буквами после чего каждый байт получившейся строки по очереди трансформируется в два по следующим формулам: первый = (n + 256) / 16 + 97, второй = (n + 256) / 16 % 97

- после дешифрования связки ключей из него достается значение ключа "UserDataAESkey" и расшифровывается алгоритмом "RSA/ECB/PKCS1Padding" с публичным ключом "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk4tCeG7AkSVbpOsRm6SLC9VRwWmCWdoDXOP0NCvxa4yQf5rYt7hx3dB0PNhUHhTTYqYkG1BZyyLzEWXnQWx64sLP3crHBXELjNkU5U9Um8hdWCLPuKap7rGz67m7vzZ6DYjsxMd68Iwdd0ccwHdUohqoaJx2mj3T0SGqJG1SgeLb+DN7IUca7yqOuM6TY+QU2ssvpkn8SYMIcskM7oVs1MYj2eV4Gx/Qg8qvO57XlcCxu+5SZaAC5AL54HtDmDK7gJGIqueqimEcCDlSq+KGUUJdsKQzyV0Pq0xe6POR5TmGX7FKqSRNlRjfzax79trU5uNrc1A4KKpqHIJ+ZkeagQIDAQAB" (кодирован в Base 64).

- итоговое значение - ключ, которым зашифрованы пользовательские данные.

Все это можно легко посмотреть в пакете "ua.logika.fastdelete.security" кода приложения Fast Delete, там нет никаких попыток обфускации, в отличие от остальных приложений. В других приложениях попытки обфускации присутствуют, некоторые названия методов там специально переименованы в слова типа "else", "do", "assert", но смысла в этом мало, вряд ли этого кого-то остановит.

Говоря простыми словами, имея содержимое папки "/artmap" с устройства, но не имея пароля, есть шанс этот пароль подобрать (если он достаточно простой) и расшифровать данные, хоть и не быстро (на каждую попытку требуется 2048 циклов SHA1). 

⸺⸺⸺⸺⸺

В то время, как ВСУ пользуются всем многофункциональным комплексом программ бесплатно, наши предприимчивые бизнесмены с 2015 года зарабатывают на русских солдатах, наклепав с десяток артблокнотов по одному приложению на каждый вид орудия и продавая лицензию на каждое(!) из них по 1250 рублей. Я не буду давать никаких ссылок, кому нужно, легко найдет всё сам. Возможно, утверждение о том, что любой труд должен быть оплачен, имеет право на жизнь, но в данном случае это не оплата труда, а бизнес. Что мешает хотя бы сделать одно единое приложение и продавать одну лицензию по адекватной цене на все орудия сразу? Почему нельзя предоставлять лицензию бесплатно всем нашим солдатам, взамен получая добровольные пожертвования на оплату труда? Почему нельзя зарабатывать в другом месте, а разработкой этих приложений заниматься безвозмездно в свободное время в качестве помощи нашей армии? Почему все люди как люди, помогают бесплатно, отдают свои кровно заработанные деньги, а программисты поступают полностью наоборот? Когда я читаю о том, как нищий народ отдаёт последние копейки под лозунгом "Всё для фронта! Всё для победы!", а потом фонды, получившие деньги, отчитываются, что они их потратили на закупку лицензий на эти программы, я испытываю исключительно негативные эмоции, понимая, что этими деньгами такие дельцы набивают себе карманы, пользуясь тем, что среди русских Андроид-разработчиков не нашлось ни одного(!), кто бы бескорыстно захотел помочь нашей армии и бесплатно разработал адекватную альтернативу. У меня нет цензурных выражений, которыми я бы мог это описать. И занимаясь реверс-инжинирингом ВСУшных приложений, я задумываюсь, вот, допустим, вытащу я из них данные, алгоритмы и формулы, приведу что-то в доступный для понимания вид, выложу в общий доступ, и что дальше? Кто-то сделает бесплатный аналог? Или этим воспользуются только такие бизнесмены, которые делают что-то исключительно ради своего коммерческого интереса?

Такая ситуация только в среде Анроид-разработчиков или во всём русском айти? Или нет никакого русского айти, а есть только леволиберальная помойка под названием Хабр, которая позиционирует себя как главное русскоязычное айти-сообщество, но где любые пророссийские публикации удаляются администрацией, комментарии пользователей, выражающие пророссийскую позицию минусуются, а самим таким пользователям ограничивают возможности публикаций. В то же время одной из самых популярных статей, получивших больше всего плюсов за 2021 год является статья команды Навального (внесен в РФ в список экстремистов и террористов) о том, как их приложение боролось с Роскомнадзором и обходило блокировки. Лишь недавно, пару месяцев назад, у администрации сработал ген осторожности, и они скрыли эту статью. А с момента начала СВО большое количество наиболее популярных статей содержат призывы покидать страну и советы о том, как и куда сбежать. Таким образом, данный ресурс способствует реализации "утечки мозгов" - одного из пунктов доклада RAND, где описан план по истощению и ослаблению России. 

И если в 150-миллионной стране не нашлось ни одного человека, который бы занимался созданием того, что я описал выше, чтобы при этом такая система была бесплатной для наших солдат, видимо, этим придется заниматься мне, раз больше некому, хотя я не имею никакого отношения к разработке под Андроид.

Report Page