Финский хакер Уна Райсанен (Oona Räisänen) опубликовала отчет о взломе местного канала автодорожных сообщений (TMC). Ее опыт можно использовать и на других каналах RDS-TMC.
Канал автодорожных сообщений (Traffic Message Channel или TMC) — это цифровой радиоканал с закодированной служебной информацией о пробках и инцидентах на дорогах. В общем, весьма ценная информация, которую используют различные платные и бесплатные навигационные сервисы. Источником дорожной информации, как правило, являются полицейские службы, камеры слежения на дорогах, данные с устройств контроля дорожного трафика и другие. В каждой стране действуют свои собственные коды местоположения и таблицы TMC, сертифицированные в международном сертифицирующем органе.
Сообщения TMC передаются в виде цифровых кодов, с использованием радиосистемы оповещения (FM-RDS). Radio Data System (RDS) — многоцелевой стандарт, который используется для передачи различных информационных сообщений, в том числе на обычные FM-приемники. Например, по RDS передаются названия FM-радиостанций.
Сообщения RDS-TMC можно принять, но нельзя расшифровать обычным приемником, они слегка закодированы. Именно «слегка». В апреле 2007 года на конференции CanSecWest два итальянских хакера, Андреа Баризани (Andrea Barisani) и Даниэле Бьянко (Daniele Bianco) продемонстрировали, как можно легко посылать ложные сообщения в навигационные системы, принимающих по FM-каналу информацию о дорожном движении (доклад в pdf).
Уна Райсанен поставила перед собой более простую задачу: расшифровать сообщения на своем компьютере, используя обычный FM-приемник, не покупая специальный навигатор, не оформляя платную подписку и даже не имея автомобиля (она предпочитает мотоциклы). И у девушки получилось.
Сообщения TMC шифруются с помощью статичного ключа, которые меняется раз в сутки, при этом содержимое сообщений тоже предсказуемо и содержит стандартную структуру с указанием кодов из таблиц TMC, которые находятся в открытом доступе. Каждую ночь выбирается новый ключ из 31-го предварительно сгенерированного варианта, по сети передается только идентификатор ключа: ID (1-31).
Адресное пространство для генерации ключа составляет 216, а алгоритм состоит из трех операций перестановки.
Он настолько прост, что все необходимые операции можно выполнить на листике бумаге.
Чтобы подобрать ключ, можно использовать простой трюк. Многие сообщения повторяются несколько дней и даже недель с одинаковыми координатами и кодом события. Таким образом, содержимое сообщения остается прежним, меняется лишь ключ. К тому же, адресное пространство ключей можно еще больше ограничить, учитывая конкретный регион в радиусе передачи сообщения.
В итоге остается только ждать, когда удастся подобрать один ключ. В дальнейшем подбор ключа на следующий день становится тривиальной задачей, зная текст расшифрованного сообщения.
Вот некоторые зашифрованные данные с FM-приемника.
И простенький Perl-скрипт для расшифровки информации и рендеринга событий на карте.