Нам передали бинарный файл с отключенной точкой доступа. Сам файл не содержит каких-либо строк, позволяющих идентифицировать прошивку, но логотип и надпись в извлеченном веб интерфейсе указывают на Strix Air - оборонный стартап из 404.
1. Радиопрофили и диапазоны частот
Радиопрофили соответствуют стандарту ELRS, при этом исключен профиль BW 500 SF5 200 пакетов/с, и добавлен профиль DUAL 500/812 SF7/SF8 50 пакетов/с.
Диапазон частот выбирается в веб интерфейсе (для DUAL режима - выбираются два диапазона из одного и того же списка), приводим их ниже:
№ Диапазон Ширина Каналов0 2180–2230 50 501 2150–2250 100 802 2200–2280 80 803 2300–2380 80 804 2500–2700 200 805 2600–2700 100 806 2700–2750 50 802. Алгоритм генерации ППРЧ
Алгоритм генерации ППРЧ является производным от стандартного. Напомним, что для 50 каналов стандартный алгоритм сформирует таблицу из 200 элементов, а для 80 - из 240. В Strix Air эти стандартные таблицы дополняются до 256 элементов, то есть длина ППРЧ - всегда 256.
3. Пакет синхронизации (SYNC)
Пакет синхронизации присутствует и обрабатывается на стороне приемника. Формат его изменен: поле номер позиции в таблице ППРЧ расширено с 8 бит до 16 бит - видимо на перспективу, так как 8 бит хватило бы для описания позиций внутри ППРЧ длиной 256. Для расширения этого поля пожертвовали байтом UID[3].
Для контроля целостности используется CRC-14 - такая же, как и в стандарте, с начальным значением, зависящим от UID.
Номер канала, в котором передаются SYNC пакеты - также стандартный.
Стандартность канала, а также наличие в SYNC пакете указателя на позицию ППРЧ позволяет реализовать атаку с рассинхронизацией приемника FPV и пульта/НСУ, но это немного усложняется наличием шифрования - рассмотрим ниже.
4. RC-пакеты
RC-пакета также шифруются. При этом формат их соответствует стандарту. Немного отличается вычисление и проверка CRC-14 - дополнительно присутствует XOR с байтами текущего указателя в таблице ППРЧ. Это такая своеобразная защита от спуфинга, при этом в SYNC пакетах ее нет.
5. Шифрование
Пожалуй, это самое интересное во всей прошивке.
Именно оно, по всей видимости, призвано предотвратить атаки в виде подмены SYNC пакета и рассинхронизации RX/TX. Для шифрования используется алгоритм RAIDEN. В самом RAIDEN 128-битный ключ, но алгоритм его формирования в прошивке таков, что полное пространство формируемых ключей сильно меньше - 2^48. Полный перебор этого ключевого пространства "в лоб" займет несколько суток.
Но мы утверждаем, что данных, полученных из радиоэфира за 30-60 секунд, будет достаточно для восстановления ключа и нужных байтов UID за секунды - это открывает нам дорогу как к поканальному подавлению, так и к рассинхронизации RX/TX путем формирования специального пакета. В данном случае мы даже не реализовывали прототип для проверки нашего утверждения, так как необходимые операции уже проделывали.
Так чем же интересно шифрование в этой прошивке? На наш взгляд, именно выбором алгоритма.
Вряд ли вы ранее слышали о RAIDEN: алгоритм был создан в 2006 году ученым Хулио Эрнандес-Кастро. В 2009 году была опубликована работа по его криптоанализу, по результатам которой стойкость признана неудовлетворительной. Алгоритм не рекомендован для коммерческого использования. Формально отметим, что стойкости алгоритма скорее достаточно для применения в FPV.
Так почему же разработчики Strix Air выбрали этот алгоритм при наличии ряда других, которые и признаны стойкими и вполне легковесны для реализации на целевых платформах? Мы теряемся в догадках, а автор алгоритма продолжает преподавать в Университете Кента (Великобритания).
Вывод: Strix Air - интересно, но слабенько; для него мог бы быть умный РЭБ.
