Неприступных крепостей не бывает. Опасную брешь, точнее бэкдор, недавно обнаружили в шифрованном стандарте радиосвязи TETRA. А ведь он вот уже 25 лет используется военными, экстренными службами и объектами критической инфраструктуры по всему миру. Самое интересное, что на технические детали и контекст этой истории почти никто не обратил внимания.
Мы изучили статьи и доклады исследователей и собрали всю суть. Перед вами подробная история взлома TETRA.
Что такое TETRA и почему этот стандарт важен
Для начала немного занудной справочной информации. TETRA расшифровывается как Terrestrial Trunked Radio. Это стандарт цифровой радиосвязи, аналог и конкурент P25, DMR и TETRAPOL. Разработан в 1995 году Европейским комитетом по стандартизации (ETSI) и предназначен для ручных раций и передатчиков, устанавливаемых в машинах. Оборудование с поддержкой стандарта подключается друг к другу напрямую или работает через базовые станции и усилители.
TETRA способен передавать не только звук, но и разнообразные цифровые данные, сообщения наподобие СМС, а также машинные команды. К тому же это одна из самых популярных радиотехнологий, которую использует полиция в Германии, Великобритании, странах Скандинавии, Восточной Европы, Южной Америки и Азии. С данным стандартом также работают военные, частные охранные фирмы, персонал аэропортов, пожарные, медики, экстренные и спецслужбы.
Применяют TETRA и в сетях SCADA — для передачи машинных команд удаленного управления нефтяными трубопроводами, электрическими подстанциями, железнодорожной сигнализацией и другими элементами критической инфраструктуры.
Популярен стандарт и в России. Его распространенность трудно достоверно оценить, но она явно высокая. В сети можно найти кейсы про внедрение TETRA на нефтегазовых месторождениях, промышленных объектах и даже на Байконуре.
Исследования безопасности TETRA: секретность сыграла злую шутку
Пикантность ситуации в том, что этот распространенный стандарт с открытыми спецификациями полагается на проприетарную криптографию. Аутентификация и шифрование в TETRA реализованы при помощи секретных запатентованных криптографических примитивов. Официальный доступ к ним дают производителям радиооборудования после клятвы на крови строгого отбора и подписания NDA. Секретность протокола охраняли так тщательно, что в течение 28 лет по нему не провели ни одной независимой экспертизы.
Немногочисленные научные работы по безопасности TETRA ограничивались высокоуровневыми обзорами, предложениями по сквозному шифрованию и реализации SIM-карт, попытками клонировать терминалы. В лучшем случае исследовались угрозы, связанные с глушением и пеленгацией радиостанций.
Первым по-настоящему прикоснулся к «запретному плоду» студент из Словении Деян Орниг (Dejan Ornig), который в 2013 году научился расшифровывать TETRA-коммуникации местных госслужб. Тогда инцидент списали на неправильную конфигурацию протокола, а на хакера подали в суд.
Фундаментальные же проблемы TETRA вскрылись недавно, когда за дело взялись трое голландских исследователей: Йос Ветцельс (Jos Wetzels), Воутер Бокслаг (Wouter Bokslag) и Карло Мейер (Carlo Meijer).
Что не так с черным ящиком
Производители раций обязаны держать криптографию TETRA в секрете, но трое наших героев были обеспокоены тем, что безопасность такого распространенного протокола обеспечивается через неясность.
Ветцельс, Бокслаг и Мейер разглядели здесь обычный театр безопасности. Самые высокопоставленные злоумышленники могут получить нужные спецификации, надавив на местных производителей, ловкие — украв их у компаний, а умные — при помощи реверс-инжиниринга конечного продукта.
По всему миру развернуты миллионы устройств TETRA, а значит технические подробности рано или поздно попадут в руки злодеев, если такое уже не произошло. Не зря же так много криптографов исповедуют принцип Керкгоффса, согласно которому криптосистема должна оставаться защищенной, даже если о ней известно буквально все, кроме ключа. Отступление от этой максимы обычно заканчивается плохо, чему есть масса примеров: в секретной проприетарной криптографии GSM, GMR, GPRS, DECT и в различных системах RFID многократно находили уязвимости. Но как ИБ-специалисту оценить реальную надежность криптографического протокола, когда создатель скрывает детали его реализации?
Чтобы напрямую не нарушать условия лицензии и NDA и все-таки изучить криптографию TETRA, исследователям пришлось заняться реверс-инжинирингом. Они обратились в фонд NLnet за финансированием и получили средства на закупку оборудования для исследований.
Выбор устройства для реверсинжиниринга
К закупкам нужно было подойти обдуманно, чтобы избежать лишней работы. Прошивки для некоторых радиостанций TETRA можно найти на форумах радиолюбителей, но ни в одной из них нет криптографических примитивов в незащищенном виде. Зачастую они спрятаны за семью печатями — зашиты на аппаратном уровне, где-то в SoC. Ничего не скажешь, компании-производители изо всех сил заботятся о соблюдении NDA ETSI.
Поскольку аппаратный реверс-инжиниринг и так отнимает массу времени и ресурсов, исследователи решили избегать таких устройств. Они искали радиостанцию, где примитивы хранятся в отдельно зашифрованном разделе прошивки. Выбор пал на Motorola MTM5400. Этот шлюз-ретранслятор TETRA — довольно распространенная модель, которую можно относительно недорого купить онлайн.
MTM5400 построен на базе SoC Texas Instruments OMAP-L138 с ARM-ядром и DSP TI C6748. Чип поддерживает доверенную среду выполнения (TEE). Кроме того, его ставят в радио на базе стандартов DMR и P25, поэтому крайне маловероятно, что алгоритмы здесь реализованы аппаратно.
Подготовка к исследованию радиостанции
Выбор объекта для реверс-инжиниринга и впрямь оказался оптимальным. Прошивка радиостанции была упакована в файл с расширением .rpk. По сути, это простой .zip с кучей зашифрованных внутри файлов .z19, который подходит к любой радиостанции MTM5400. Архив защищен паролем, но утилита для прошивки от Motorola должна уметь его распаковывать. Исследователи без труда нашли в ней пароли для архивов с прошивкой.
Таким образом, наши герои извлекли из архива файлы .s19 (файлы SREC Motorola), а затем распарсили их, выделив компоненты, относящиеся к ядру, файловой системе, чипу основной полосы частот и так далее. Затем исследователи приступили к высокоуровневому анализу кода прошивки ядра DSP.
Здесь нужно взглянуть на график распределения энтропии в прошивке DSP. Слева видна область с высокой энтропией, на которую ссылается куча системных вызовов, связанных с API доверенной среды выполнения — это и есть TEE.
Причем выяснилось, что связанный с вызовом TEE код ссылается на сообщения об ошибках, относящиеся к криптографии TETRA. Совпадение? Не думаю. Модуль TEE явно содержит криптографические примитивы TETRA в зашифрованном виде. Получив подтверждение своих догадок, исследователи приступили к взлому доверенной среды исполнения.
Извлечение криптографии из радиостанции
Сперва нужно было добиться исполнения кода в процессоре приложений (application processor, AP), то есть в ядре ARM. Задача оказалась тем еще квестом. Поскольку процессор использует технологию Secure Boot, Ветцельс, Бокслаг и Мейер не могли просто модифицировать чип памяти, перезаписав его содержимое программатором.
Герои оказались на перекрестке трех альтернативных путей:
-
использовать задний разъем с модемным интерфейсом AT-команд;
-
выполнить модификацию памяти: возможно, получилось бы найти и реализовать эксплойт, связанный с повреждением памяти;
-
задействовать один из периферийных интерфейсов, например, GPS (если связь между ним и процессором окажется доверенной, то с ее помощью теоретически можно добиться исполнения кода).
Затем исследователям требовалось закрепиться на DSP и добиться исполнения кода через DMA или DSP Link Library (библиотеку, передающую сообщения между ядром ARM и DSP). Наконец, им предстояло найти уязвимость в самом TEE.
Начальный доступ
Как следует все прикинув, исследователи решили прорываться через модемный интерфейс для AT-команд, помогающий считывать и изменять некоторые параметры радиостанции. Они проанализировали прошивку и сумели выделить команды, которые принимает модемный интерфейс. Наиболее интересными оказались те из них, что обрабатывают строки переменной длины или задействуют парсинг.
Так, команда AT+MCTGDW используется в Motorola MTM5400 для формирования списка разговорных групп, а AT+CTGL перечисляет этот список. Ветцельс, Бокслаг и Мейер обнаружили, что с такими командами связана классическая уязвимость форматирования строк, позволяющая записывать любые данные по определенному адресу в стеке. С помощью бага можно интерпретировать значение в стеке как указатель и выполнить запись по этому адресу. Если найти способ управлять значением в стеке, то получится записывать что и куда угодно.
Увы, такого метода не нашлось. Зато в прошивке обнаружились указатели фреймов (frame pointer), которые поочередно отсылают друг к другу: первый ко второму, тот к третьему и так далее по цепочке. Исследователи могли записать только один байт в адрес, находящийся в стеке. Но, вмешавшись в первый указатель, они получили возможность изменить младший байт адреса, на который ссылается этот указатель.Таким образом, можно использовать его в качестве курсора для переписывания следующего адреса и контролировать полный адрес.
Теперь исследователи могли напрямую записать шелл-код в кучу, затем переписать один из указателей на исполняемый код, запустить исполнение этого указателя и получить рут-шелл — возможность выполнения произвольного кода на ARM-ядре. Эта уязвимость впоследствии получила обозначение CVE-2022-26941.
Взлом DSP
Теперь предстояло найти способы расширить контроль над устройством и выполнять произвольный код на DSP. Исследователи нацелились на DSPLink — фреймворк, который отвечает за передачу сообщений между ядром ARM и DSP.
Дело в том, что для нормальной работы процессора его ядра должны общаться друг с другом. Обмен информацией реализован через общую внутреннюю RAM и внешнюю DDR-память. Исследователи сдампили конфигурацию memory protection unit (MPU) и уже собирались искать диапазоны, используемые и DSP, и процессором приложений. И тут они обнаружили, что в данном случае сегментация памяти между ядрами не применяется.
Хотя L138 имеет блоки защиты MPU и ввода-вывода (IOPU), которые могут быть настроены для предотвращения записи данных из одного ядра в определенные области памяти другого, производитель почему-то не стал их настраивать. Эта уязвимость получила обозначение CVE-2022- 27813. Выходило, что добиться исполнения кода DSP проще простого: достаточно загрузить модуль ядра, запросить буфер, сопоставляемый с физическим адресом, который должен быть памятью DSP. После остается просто переписать части прошивки DSP в оперативной памяти.
Вскоре Ветцельс, Бокслаг и Мейер написали фреймворк для запуска кода в DSP и несколько модулей ядра, которые перехватывают контроль над DSP, распределяют общий буфер, копируют в него полезную нагрузку, а затем перенаправляют на нее исполнение DSP.
Сделать это уже сложнее, ведь архитектура DSP довольно запутана: в ней есть ветви с отложенным исполнением, варьирующиеся степени конкурентности, множество условных операторов, зато отсутствует поддержка IDA. Исследователям даже пришлось написать собственный дизассемблер.
Чтобы разобраться во всем этом, они также портировали архитектуру на декомпилятор RetDec.
Как работает TEE
Итак, исследователи победили DSP, заставив его выполнять свои команды. Осталось только сломать доверенную среду исполнения. Чтобы понять, как им это удалось, нужно разобраться в реализации TEE в данном конкретном случае.
В DSP TI C6748 есть понятие уровня привилегий: код выполняется либо в режиме пользователя, либо в режиме супервизора. Параллельно система оперирует понятием уровня безопасности. Код выполняется либо в небезопасном, либо в безопасном режиме, где небезопасному коду запрещен доступ к безопасному коду и памяти. Распределение привилегий выполняется при помощи защищенного ядра Secure Kernel, похожего на легковесную библиотеку или операционную систему.
Основная часть кода, выполняемая в DSP, работает в незащищенном режиме и может использовать защищенное ядро, но не может его видеть и взаимодействовать с тем, что происходит в этой доверенной среде исполнения или в другом защищенном контексте.
Если необходимо осуществить действие, требующее выполнения в защищенном режиме, делают API-вызов защищенного ядра. При этом управление передается защищенному ядру, которое работает в защищенном режиме супервизора. Ядро обрабатывает запрос, а затем возвращает управление незащищенному коду.
Незащищенный код может использовать функции наподобие SK_LOAD — это вызов защищенного ядра, позволяющий выполнять загрузку в среде исполнения зашифрованного модуля.Там используется шифрование AES-128. Затем этот модуль копируется в защищенный контекст, зашифровывается при помощи задаваемого производителем ключа шифрования, валидируется при помощи RSA.
Если все в порядке, код продолжает находиться в этом защищенном контексте. Впоследствии этот код, содержащийся в загруженном модуле, можно вызвать с помощью API-вызова SK_ALGOINVOKE. Через этот механизм загружаются и вызываются криптографические примитивы TETRA, за которыми все это время охотились исследователи.
Как работает кэш
Благодаря полученной ранее возможности запускать произвольный код в незащищенном режиме супервизора исследователи могли осуществлять прямые вызовы SK_LOAD и SK_ALGOINVOKE. Но для того, чтобы пробраться в защищенный раздел, этого мало. Еще нужно разобраться в работе кеша.
OMAP-L138 использует двухуровневую архитектуру кэша: у него есть кэш программ и данных первого и второго уровней. Сначала CPU проверяет, есть ли нужные данные в одном из них. Если да, то запрос чтения обслуживается быстрее, чем при обращении к обычной памяти.
Так как Ветцельс, Бокслаг и Мейер научились выполнять на чипе небезопасный код уровня супервизора, они могли манипулировать содержимым кэша. Например, выбрасывать из него отдельные адреса. Оказалось, что это действие затрагивает и безопасные участки адресного пространства.
Кроме того, исследователи получили возможность замораживать кэш. Эта любопытная функция редко встречается в подобных устройствах. Она позволяет переключить кэш в режим read only и обычно используется для ускорения поиска элементов в кэше. Вместе эти функции дают все необходимое для атаки на побочный канал тайминга кэша.
Защищенное ядро и его ахиллесова пята
Защищенное ядро и реализация AES охраняются как кощеева смерть: они находятся в яйце, яйцо в утке в защищенном разделе ПЗУ и не могут быть прочитаны в обычном режиме. Однако при перемещении данных внутрь и наружу из защищенного контекста происходит их шифрование и дешифровка при помощи AES.
Это сложный многоступенчатый процесс, в котором нас интересует один из последних этапов — InverseSubBytes, поиск в таблице под названием sbox. Это 256-байтная таблица, где байт состояния используется в качестве индекса. Она важна для работы чипа и кэшируется в безопасных участках адресного пространства.
Чтобы осуществить атаку на восстановление ключа, сначала нужно найти sbox AES. Исследователи, очевидно, понимали, что таблица должна находиться где-то в защищенном разделе ПЗУ Texas Instruments, но не знали ее точное местоположение. Однако они могли вычислить его косвенным образом — выбрасывая из кэша небольшие фрагменты секретного ПЗУ-кода один за другим. Напомню, это можно было сделать при помощи команд в небезопасном контексте. Каждый раз наши герои замеряли среднее время выполнения запроса SK_LOAD для этого блока в количестве тактов. Затем выбрасывали еще один фрагмент и снова проверяли, как это повлияет на скорость загрузки. В итоге получился график, на котором ясно видна аномалия.
В основном действия исследователей не влияли на скорость исполнения команды, за исключением небольшой области кэша. При удалении этих адресов наблюдалось существенное снижение производительности. Так, совершенно вслепую, исследователи сумели выяснить месторасположение sbox в памяти чипа.
Восстановление ключа
Теперь настало время манипуляций с sbox. Структуру этого раздела можно представить как таблицу 16 на 16 клеток.
В первую очередь исследователи отправили чипу команду, после которой в кеш загрузилась целиком вся таблица. Затем выбросили первые 32 байта из кэша и включили его заморозку. Так они создали ситуацию, когда обращение к первой части sbox вызывает снижение производительности, в то время как остальная таблица по-прежнему обрабатывается быстро.
Почему это важно? Данную ситуацию можно использовать для получения информации об rk — ключе первого раунда, применяемом при расшифровке AES. Еще раз взглянем на схему алгоритма шифрования.
Первый шаг расшифровки AES — AddRoundKey, который берет ct0 и rk10 и сохраняет результат в своем внутреннем состоянии. Следующая стадия — InverseShiftRows, изменяет порядок байтов внутреннего состояния. Наконец, процесс доходит до шага InverseSubBytes, на котором выполняется поиск S-боксов и обращение к таблице.
Атака работает так: обнуляем первый байт зашифрованного текста ct и рандомизируем все остальные, а затем просим защищенное ядро загрузить этот фрагмент данных. Разумеется, фрагмент не пройдет валидацию, но сперва ядро попытается его расшифровать и прогонит через всю описанную цепочку операций.
В этот момент можно проверить, вызывает ли обнуленный первый байт шифротекста снижение производительности. Задержка в выполнении операции появится, если байт попал в первую часть таблицы. А дальше вступает в дело статистика.
Исследователи повторяют этот трюк для всех возможных значений первого байта зашифрованного текста и вычисляют среднее время работы API-функции SK_LOAD по 256 группам шифротекстов с разным значением ct0. Если составить график, то получается, что первые 32 элемента быстрые, следующие 32 элемента существенно медленнее, а остальные снова ускоряются.
Это можно записать, как: 32 < ct0 < 64 или 𝑐𝑡0⊕𝑟𝑘0 < 32 iff 32 ≤ 𝑐𝑡0 < 64, что эквивалентно выражению: (𝑐𝑡0⊕𝑟𝑘0) & 0×E0 = 0 iff 𝑐𝑡0 & 0×E0 = 32. Далее это упрощается до знания раундового ключа: rk0 & 0XE0 = 32.
Таким образом, исследователи восстановили 3 наиболее значимых бита rk0. Далее они применили ту же методику к оставшейся части rk и получили 48 бит из 128-битного раундного ключа.
Это значительный прогресс, но остается еще 80 неизвестных битов. Исследователи пишут, что сумели восстановить их при помощи похожей, но более сложной атаки на втором раунде дешифрования. Здесь уже пришлось учесть сдвиг байтов состояния, влияние rk9 и диффузию по четырем байтам состояния, вызванную InverseMixCols. Они не стали детально расписывать алгоритм действий на этом этапе, но зато продемонстрировали результат — восстановление ключа шифрования AES.
На данном видео исследователи загружают модули ядра процессора приложений, далее — модуль, вызывающий срабатывание Watchdog. Это позволяет им перехватить исполнение DSP. Затем они начинают считывать показания DSP: собирают и сравнивают тайминги, чтобы восстановить байты раундного ключа 10 (rk10). Проходит всего одна минута, и в распоряжении исследователей оказываются все 16 байтов раундного ключа.
Впрочем, возникло еще несколько препятствий. Оказалось, что для расшифровки заголовка и тела модуля используются разные ключи. Второй ключ получили путем повторной атаки, на этот раз направленной на шаг расшифровки тела модуля. Наконец, был еще один, последний слой обфускации, от которого избавились применением побитового XOR для каждого 16-байтового блока с кумулятивным XOR предыдущих блоков. Этого хватило, чтобы обратить алгоритм, который AES использует для смены ключей, и восстановить исходный базовый ключ.
После всех исследований извлечение криптографического ключа из радиостанции Motorola занимает примерно минуту. Эта уязвимость была зарегистрирована под номером CVE-2022-25332.
И вот исследователи добрались до защищенного содержимого чипа, наконец смогли изучить криптографические примитивы, представленные в виде ассемблерных инструкций C674x, и написать эквивалентные реализации на языке C.
Особенности стандарта TETRA
Для понимания того, что произошло дальше, нужно погрузиться в некоторые особенности реализации TETRA на примере сети, которая работает в транкинговом режиме (TMO). На высоком уровне система безопасности TETRA состоит из двух компонентов, каждый из которых хранится в секрете:
-
TAA1 Suite, используемый для аутентификации, управления ключами, шифрования идентификации и удаленного отключения терминалов;
-
TEA (TETRA Encryption Algorithm) Suite, применяемый для шифрования голоса и данных при передаче по воздуху.
TEA Suite состоит из четырех алгоритмов, разделенных по сценариям использования:
-
TEA1 можно экспортировать без ограничений;
-
TEA2 применяется только полицией, аварийными службами и военными Европы;
-
TEA3 предназначен для экстренных служб стран, с которыми у ЕС сложились хорошие отношения;
-
TEA4 также предназначен для общего использования, но практически не получил распространения.
На практике TEA1 используют полиция и экстренные службы во многих странах мира.
Каждая прошивка радиостанций серии MTM5000 содержит не более одного потокового шифра. Исследователи нашли в сети образы прошивок, содержащих TEA1, TEA2 и TEA3, и восстановили все три шифра. TAA1 также пришлось извлечь из прошивки, так как этот компонент нужен для работы аутентификации TETRA. Алгоритм TEA4 получить не удалось — для Motorola MTM5400 нет прошивки с этим вариантом шифрования.
Секретные примитивы TETRA и их защищенность
Согласно спецификации все четыре алгоритма шифрования воздушного интерфейса (TEA1, TEA2, TEA3, TEA4) используют 80-битные ключи, а keystream generator построен на использовании номеров кадров и битов восходящей/нисходящей линии связи.
Взглянем на сканворд схему TEA Keystream Generator для TEA2:
В верхней части показан регистр хранения ключа (80 битов). В нижней — находится регистр состояния, на который влияет регистр хранения ключа. Кажется, что здесь все в полном порядке. Теперь посмотрим на схему генератора потока ключей TEA1.
TEA1 и прославившийся бэкдор
TEA1 имеет ту же структуру, что и TEA2, только сперва ключ проходит через функцию сжатия, и от 80 битов остается 32.. «Это — жжжжж — неспроста!»: налицо преднамеренное ослабление шифра. Зная такой маленький секрет, ключ можно подобрать простым перебором. На графической карте GTX 1080 (2016 года выпуска) подбор занимает меньше минуты.
Чтобы реализовать подобную атаку, необходимо проверить правильность подобранного ключа. Напрашивается простое решение — угадать часть содержимого сообщения на основе его контекста. Метод может сработать, если анализировать, например, сигнал установки вызова.
Существует и более систематический подход. Для повышения надежности передачи некоторые сигнальные сообщения, например, связанные с распределением каналов, передаются несколько раз. Анализ реального трафика TETRA показывает, что такие повторные передачи происходят часто и выявляются путем поиска четырех передаваемых с постоянным интервалом сообщений с одинаковым назначением, MAC-заголовком и длиной. Поскольку повторные сообщения имеют разные временные метки, соответствующие им потоки ключей отличаются. А вот их содержимое после расшифровки идентично. Вычислив потоки ключей для всех повторов сообщения, можно отличить правильные угадывания ключей от неправильных, сравнив расшифровки этих сообщений.
Такая атака может быть проведена пассивно и позволяет полностью расшифровать старый и отправляемый прямо сейчас трафик. Также она дает возможность отправлять собственные зашифрованные поддельные сообщения.
Мнение ETSI и proof of concept
В июле 2023 года журналистка Ким Зеттер (Kim Zetter) взяла интервью у председателя ETSI Брайана Маргатройда (Brian Murgatroyd). Приведем краткий фрагмент беседы.
БМ: Исследователи выяснили, что они могут расшифровывать сообщения при помощи очень мощной графической карты примерно за минуту… Наверное, я могу только сказать, что 25 лет назад длины этого алгоритма, вероятно, было достаточно для защиты от брутфорс-атак.
КЗ: То есть вы хотите сказать, что 25 лет назад 32 бита были безопасны?
БМ: Думаю, да. Я могу лишь предполагать. Я бы сказал, что уязвимость есть, только если вы специалист и имеете достаточно мощное оборудование.
Если вы немного разбираетесь в криптографии, то понимаете, как сомнительно это звучит.
Исследователи не стали спорить с Маргатройдом на словах, а проверили его утверждения на деле. Они раскопали где-то раритетный Toshiba Satellite 4010CDS на базе Pentium II 266 МГц и испытали стойкость TEA1 с его помощью:
И что бы вы думали? Даже с ноутбуком 1998 года на подбор ключей к TEA1 ушло всего чуть больше 12 часов. Как в 90-е годы, так и сейчас TEA1 практически бесполезен против злоумышленника, знающего принцип работы этого шифра.
Недостатки TEA2
Кто-то заметит: пусть в TEA1 и есть бэкдор, но ведь оставшиеся стандарты — они то в порядке? Раз TEA2 используется европейскими правоохранительными органами и другими серьезными организациями, он просто обязан быть надежным. Тем более, алгоритм применяет 80-битный ключ.
Увы, и здесь все не так однозначно. Исследователи нашли уязвимость и на уровне самого протокола. Суть в том, что keystream generator получает на вход не только ключ, но и порцию дополнительных данных. Так как нужно, чтобы каждый новый поток ключей отличался от предыдущих. Притом в генерации потока ключей используются счетчики, значения которых увеличиваются со временем. Это счетчики кадров, мультикадров и слотов.
Как же именно радио узнает время? Сетевое время сообщает инфраструктура при помощи сигнальных сообщений SYNC и SYSINFO. Они вещаются без какого-либо шифрования и гарантии целостности. Нападающий может с легкостью их подменить.
Вкратце атака выглядит так. Допустим, хакер перехватил зашифрованное сообщение в некий момент времени T. Позже он может нацелить свою атаку на мобильную станцию — то же самое или какое-то другое радио, имеющее идентичные ключи. Хакер использует направленную антенну, мощный передатчик или просто подходит поближе, чтобы перебить сигнал инфраструктуры и выдать себя за нее.
После этого он может отправить сигнальные сообщения SYNC и SYSINFO с временем T. Радио примет их без какой-либо проверки и как бы переместится назад во времени. Оно снова начнет использовать старый поток ключей. Немного аналитики и статистики, и этот поток реально вычислить, а затем расшифровать ранее перехваченное сообщение.
Мнение ETSI и proof of concept
Когда исследователи рассказали обо всем ETSI, то услышали в ответ коронное: «не верю!». Дескать, такая атака возможна только в теории, но в действительности реализовать ее не выйдет. Исследователи не собирались сдаваться и попросили базовую станцию, чтобы продемонстрировать, как это работает на практике. Им ответили отказом, вот только наших героев так просто не остановишь.Они раздобыли старую базовую станцию Motorola MBTS, которая весит 75 килограммов и не поддерживает TEA, и серьезно ее модернизировали.
Чтобы появилась возможность вводить собственные консольные команды, исследователи добавили поддержку шифрования и систему загрузки модулей. Затем они все-таки провели атаку.
На этом видео они показывают то, что назвали Decryption Oracle, — восстанавливающую текстовое сообщение атаку. Таким же образом можно расшифровать голос или любые другие данные, переданные через TETRA.
Недостатки TEA3
Что касается третьего типа шифра, то и в нем нашлись странности. S-бокс данного шифра не является перестановкой, что довольно подозрительно. Точные последствия пока неясны, но криптостойкости это точно не добавляет.
Выводы и устранение последствий
К сожалению, на деле уровень безопасности TETRA значительно ниже, чем было принято считать. Не ясно, тестировал ли его вообще кто-нибудь с точки зрения безопасности. Особую тревогу вызывает то, что стандарт используется давно и широко.
Если производители радиооборудования озаботятся, то направленные на протокол атаки получится предотвратить обновлениями прошивок. А вот проблему с бэкдором TEA1 (CVE-2022-24402) так не исправить, поскольку она заложена в самом стандарте.
Возможный выход — перейти на TEA2 или, если это возможно, на TEA3. Правда, переход сети с одного шифра на другой требует либо замены, либо обновления прошивки всех устройств без переходного периода. Во многих сценариях миграция окажется попросту неосуществимой. Альтернативный вариант — попробовать внедрить сквозное шифрование. Для сетей, передающих в основном пакетные данные, можно рассмотреть использование VPN-тунелей, TLS или IPsec.
Раскрытие уязвимостей
Исследователи начали работу над этим проектом в январе 2021 года. Им понадобилось четыре месяца, чтобы извлечь криптографию из радио MTM. В декабре того же года они связались с Национальным центром кибербезопасности Нидерландов, который помог распространить информацию о проблеме среди чиновников.
В январе 2022 исследователи обсуждали проблемы протокола на встрече с полицией Нидерландов и разведслужбами. Они получили первый опыт взаимодействия с ETSI и продолжают общаться с институтом по сей день.
В связи с высокой степенью значимости найденных уязвимостей эмбарго на публикацию исследования первоначально было установлено на год, а затем продлено вплоть до начала 2023-го. И хотя исследователи с самого начала настаивали на полной публикации как самих примитивов, так и обнаруженных уязвимостей, ETSI объявила о том, что выложит алгоритмы TEA 1, 2, 3 и 4 в открытый доступ только 14 ноября 2023.
Формулировка в пресс-релизе размыта, и до конца не ясно, постигнет ли та же судьба разработанные в 2022 году TEA 5, 6 и 7, которые якобы должны защитить радиосвязь даже от квантовых компьютеров. Заканчивается пресс-релиз ETSI фразой, которая в контексте этой истории звучит иронично:
TETRA — один из самых безопасных и надежных стандартов радиосвязи в мире. Поскольку более 120 стран используют выделенные сети TETRA для критически важных для бизнеса коммуникаций, ETSI постоянно оценивает стандарты и процедуры при участии представителей отрасли, чтобы гарантировать, что стандарт TETRA остается надежным перед лицом развивающихся угроз.
Окончательные (или нет?) выводы
Такова история первого серьезного публичного аудита безопасности TETRA, проведенного более чем за 25 лет его существования. Еще одно доказательство того, что для надежной защиты недостаточно одной только безопасности через неясность.
Обнаружен ряд уязвимостей, в том числе бэкдор в алгоритме, который широко используется в критически важной инфраструктуре. Кто и зачем его оставил и как использовал — вопрос открытый. В любом случае тема еще не исчерпана. В свете всего произошедшего новые TEA 5, 6 и 7 также заслуживают тщательного изучения. Информационная безопасность таких систем должна полагаться на открытость и публичные исследования.
Автор: Игорь Santry