ПЕРЕЙТИ ДО ЗМІСТУ
Дистанційна ударна група Альфа
EN SV ВИДАННЯ 2026-Q2 АКТИВНА
НЕТАЄМНО
FSG-A // КЛАСТЕР 3 — РЕБ // 3.6

КІБЕРБЕЗПЕКА MAVLINK
ЗАХИСТ ДРОНОВОГО КАНАЛУ ДАНИХ

КЛЮЧОВИЙ ВИСНОВОК
MAVLink 2.0 підтримує підпис повідомлень (SHA-256 HMAC), але більшість розгортань залишають його вимкненим. Без підпису ворог із SDR може впроваджувати фальшиві команди MAVLink — наказувати вашому дрону роззброїтися, змінити waypoints або сісти. Увімкніть підпис MAVLink на кожному лінку. Використовуйте шифрування ELRS (AES-128). Ці два заходи блокують 95 % відомих атак на MAVLink.

БЕЗПЕКА MAVLINK

Підпис MAVLink
SHA-256 HMAC — увімкнути з ключем підпису в ArduPilot
Шифрування ELRS
AES-128 — binding-фраза як ключ шифрування
Атака: введення команди
Ворог надсилає фальшивий MAVLink COMMAND_LONG для роззброєння моторів
Атака: replay
Ворог записує коректні пакети MAVLink і відтворює їх
Захист: підпис
Кожен пакет містить HMAC — фальсифіковані пакети відхиляються
Захист: часова мітка
Підпис MAVLink містить мітку — повторені пакети застарівають

Механізм підпису використовує автентифікацію повідомлень на основі геш-функції SHA-256. Кожен пакет містить часову мітку для запобігання replay-атакам — перехоплена команда не може бути повторно надіслана пізніше, бо мітка застаріє. Автопілот підтримує ковзне вікно прийнятних міток і відхиляє будь-який пакет старше 60 секунд. Цей підхід достатньо обчислювально легкий, щоб працювати на SpeedyBee F405 на частоті 400 Гц без впливу на затримку керування польотом.

Рамка автентифікації поширюється за межі повітряного домену на наземний транспорт і фіксовані командні пункти, інтегровані через Lisa 26. Кожен вузол у бригадній мережі — чи то дрон, UGV, чи батальйонний ноутбук — використовує ту саму інфраструктуру підпису. Розподіл ключів слідує тому ж протоколу USB-при-запуску на всіх платформах, забезпечуючи узгоджений рівень безпеки від взводу до бригади без конфігураційних відмінностей на рівні окремих пристроїв, які могли б створити використовувані неузгодженості у периметрі безпеки.

Механізм підпису — SHA-256 HMAC

Підпис MAVLink 2.0 додає 13-байтний підпис до кожного пакета: 6 байтів часової мітки (48-бітний мікросекундний лічильник) і 6 байтів усіченого HMAC-SHA256, обчисленого над заголовком пакета, корисним навантаженням, CRC, link ID і часовою міткою з використанням 32-байтного секретного ключа. Автопілот підтримує монотонно зростаючий лічильник міток — він відхиляє будь-який пакет із міткою старшою за останню прийняту. Це запобігає replay-атакам: перехоплену команду не можна повторно надіслати пізніше, бо її мітка буде застарілою.

32-байтний ключ генерується випадково (openssl rand -hex 32) і завантажується в польотний контролер дрона через USB під час початкового налаштування. Ключ зберігається в оперативній пам'яті, а не у постійній флеш-пам'яті. При вимкненні живлення ключ зникає — дрон не може бути опитаний щодо ключа після фізичного захоплення. Оператор тримає ключ на USB-носії, який ніколи не залишає його особисто. Кожен дрон у парку може мати унікальний ключ, або всі дрони підрозділу можуть ділити один ключ для спрощеного керування (з компромісом, що компрометація ключа одного дрона компрометує всі).

Сценарії атак і контрзаходи

АтакаБез підписуЗ підписом
Введення DISARMДрон падаєКоманда відхилена
Зміна HOME позиціїДрон летить до ворогаКоманда відхилена
Фальшивий RTLДрон повертається до ворогаКоманда відхилена
Зміна параметраFailsafe вимкненоPARAM_SET відхилено
Replay-атакаПовторна стара командаМітка застаріла — відхилено
Перехоплення телеметріїВорог бачить позиціюПідпис не шифрує — потрібне шифрування

Сценарій 1 — введення DISARM: противник перехоплює телеметричний пакет MAVLink, ідентифікує system ID дрона і передає команду DISARM. Без підпису — мотори дрона зупиняються, апарат падає з неба. З підписом — непідписана команда DISARM тихо відкидається. Противник не отримує зворотного зв'язку — він не знає, чи команду було відхилено, чи обірвано радіолінк. Сценарій 2 — RTL-хайджек: противник надсилає MAV_CMD_NAV_RETURN_TO_LAUNCH з фальсифікованою позицією бази. Без підпису — дрон летить до ворожих координат. З підписом — відхилено.

Сценарій 3 — зміна параметрів: противник надсилає команди PARAM_SET для зміни поведінки failsafe (вимкнути геозонування, встановити висоту RTL на 5 м для легкого захоплення). Без підпису — параметри тихо змінені, дрон вразливий при наступному спрацюванні failsafe. З підписом — кожен PARAM_SET потребує дійсного HMAC. Противник не може змінити жодного параметра без ключа. Саме тому підпис має бути увімкнений ДО того, як дрон потрапляє в спірне електромагнітне середовище — увімкнення після розгортання відкриває передпідписне вікно конфігурації для атаки.

Важливе обмеження: підпис MAVLink забезпечує автентифікацію, але НЕ шифрування. Ворог все одно може читати ваші повідомлення — бачити позицію дрона, стан акумулятора, waypoints. Для повного захисту потрібне шифрування транспортного шару — Silvus MANET забезпечує AES-256 поверх MAVLink.

ПРОСТОЮ МОВОЮ: ЗАХИСТ ВАШОГО ДРОНА ВІД ЗЛАМУ
MAVLink — це мова, якою дрони спілкуються з наземними станціями. За замовчуванням у неї немає паролю — будь-хто з радіоприймачем може слухати дані вашого дрона, а ще гірше — надсилати йому фальшиві команди. Уявіть, що хтось вигукує фальшиві накази вашим бійцям — те саме. Виправлення: увімкнути підпис MAVLink (як цифрова печатка на кожному повідомленні, що доводить походження від вас) і шифрування ELRS (шифрує радіосигнал так, що його може декодувати лише ваш приймач). 5 хвилин налаштування блокують майже всі відомі атаки на дрони.
01
ГЕНЕРАЦІЯ КЛЮЧА
openssl rand -hex 32 > signing_key.txt — генерує 256-бітний випадковий ключ
02
ЗАВАНТАЖЕННЯ КЛЮЧА
Через MAVProxy: signing setup signing_key.txt — завантажує ключ в автопілот через USB
03
АКТИВАЦІЯ
param set BRD_SERIAL_SIGNING 1 — усі непідписані команди тепер відхиляються
04
ПЕРЕВІРКА
З другої GCS (без ключа) надішліть ARM — дрон повинен ігнорувати. Якщо озброюється — підпис не працює.
# MAVLink 2.0 Signing — Anti-Spoofing Protection
# pip install pymavlink
import hashlib, struct, time

def sign_mavlink_packet(packet_bytes, key_bytes, timestamp_us):
    """Sign a MAVLink 2.0 packet with HMAC-SHA256."""
    # MAVLink 2.0 signature: 6 bytes timestamp + 6 bytes signature
    ts_bytes = struct.pack('

Очікувана поведінка: з увімкненим підписом фальшивий COMMAND_LONG (роззброєння моторів), введений з другого радіо, має бути відхилений польотним контролером через відсутність дійсного HMAC. Без підпису та сама атака успішно роззброює мотори. FSG-A верифікувала цю логіку в SITL-симуляції — вона не тестувалась у реальних РЧ-умовах атаки.

Шифрування MANET (Silvus AES-256) забезпечує додатковий шар — навіть якщо підпис MAVLink неправильно налаштований, радіо MANET шифрує весь IP-потік, запобігаючи підслуховуванню та введенню на рівні радіо.

Пов'язані розділи

Демонстрація атаки (SITL)

Відтворіть атаку введення команди в SITL, щоб перевірити працездатність вашого захисту. Запустіть цей тест ДО розгортання будь-якого дрона у спірному середовищі. Якщо команда атакувальника проходить, підпис MAVLink налаштований неправильно. Виправте перед польотом.

Зовнішнє джерело: Kryptering — Wikipedia

Джерела

Нормативні джерела. Специфікація підпису MAVLink 2.0 — mavlink.io/en/. Документація параметрів ArduPilot (BRD_SERIAL_SIGNING, SERIAL_PROTOCOL) — ardupilot.org. SHA-256 HMAC — RFC 2104 (HMAC) плюс FIPS 180-4 (SHA-256). AES-128 (ELRS) і AES-256 (Silvus) — стандартні сертифіковані шифри.

Математично верифіковані оцінки. Обчислювальна інфеасибельність brute-force 256-бітного ключа — валідовано під HMAC_COLLISION_YEARS у provable_claims.py. Розмір підпису 6 + 6 + 1 = 13 байт та поріг replay 60 секунд — відкриті значення зі специфікації MAVLink 2.0.

Операційні оцінки — не верифіковано FSG-A в польових умовах. Заява, що «підпис + шифрування ELRS блокують 95 % відомих атак на MAVLink» — оцінка на основі таксономії опублікованих досліджень атак на MAVLink (Shostack 2023, решта публічних CVE). Це не статистика з реальних польових розгортань FSG-A. Твердження про «обчислювальну легкість 400 Гц на SpeedyBee F405» — з публічних бенчмарків SHA-256, а не виміряне FSG-A на польотному контролері. Час налаштування «5 хвилин» — проєктна ціль процедури, не виміряна секундоміром.

Зовнішні стандарти та джерела. ArduPilot документація. ExpressLRS документація. NATO STANAG 4609 Ed. 4 (метадані motion imagery), STANAG 4671 (льотна придатність UAV) та STANAG 2022 (оцінка розвідки). Аналіз безпеки MAVLink (Shostack, 2023). Специфікація MAVLink 2.0. Публічні звіти про українські операції 2022–2025 (Watling & Reynolds, RUSI 2023; щоденні кампанійні оцінки ISW). FSG-A перевірила підпис у SITL — не в польових умовах.