id: Гость   вход   регистрация
текущее время 08:57 29/03/2024
создать
просмотр
редакции
ссылки

Это старая редакция страницы Библиотека / Статьи / Eavesdropping On G S M / The Open Source Practical Implementation за 20/01/2011 13:14.


4. Практическое выполнение решения с открытым исходным кодом


Прослушивание GSM возможно — в продаже есть оборудование, способное прослушивать разговоры, шифрованные A5/1 и A5/2, но оно продаётся строго ограниченно правоохранительным органам и военным по высоким ценам. Так что вопрос состоит не в том, можно ли прослушивать GSM, а скорее в том, насколько сложно это сделать при помощи общедоступного оборудования.


Недавно множество проектов с открытым исходным кодом поставило перед собой цель доказать небезопасность GSM или просто выполнить важнейшие элементы GSM на основе открытых решений. Так насколько далеко зашли практические реализации всех трёх шагов из предыдущего раздела, выполненные открытым сообществом? Для каждого из этих шагов возможно использовать проекты с открытыми исходниками. Соответственно:


  1. USRP совместно с GnuRadio и AirProbe для перехвата сигналов.
  2. Kraken, для дешифровки перехваченных сигналов.
  3. OpenBTS, OpenBSC или AirProbe для интерпретации сообщений.

Поскольку проект AirProbe в действительности представляет собой набор утилит, используемых как для перехвата, так и для интерпретации импульсов передачи данных GSM, то он приведён в двух пунктах. Теперь можно детальнее рассмотреть каждый из этих проектов.

4.1 Перехват с использованием USRP совместно с GnuRadio и AirProbe


Перехват сигналов GSM может быть осуществлён путём совместного использования USRP и GNU Radio. Универсальная програмируемая радиопериферия (USRP) — это открытая аппаратура, разработанная Мэттом Эттасом, которую можно заказать через его компанию Ettus Research [11]. Это передатчик, который может быть подсоединён к компьютеру и приспособленный к определённым частотам за счёт дополнения платами расширения. USRP содержит программируемый FPGA (ПЛИС), который может быть использован для выполнения некоторых видов обработки сигналов. В стандартной конфигурации USRP создаёт 16-битные I и Q сэмплы при приёме заданной частоты. Эти комплексные сэмплы с реальной частью (Q) описывают косинус сигнала, а мнимая часть (I) описывает синус сигнала плюс 90 градусов. Таким образом, один сэмпл занимает 32 бита и может быть послан на хост-компьютер через коммуникационный порт для дальнейшей обработки.


На данный момент существует два типа оборудования: USRP и USRP2. USRP (или USRP1) может принимать сигналы в диапазоне шириной 32 MHz и передавать в диапазоне шириной 64 MHz. Он передаёт сэмплы на хост-компьютер через соединение USB2.0, которое имее практически максимальную пропускную способность 32 Мбайта/сек. USRP2 может принимать на диапазоне шириной 50MHz и передавать на диапазоне шириной 200MHz. В сравнении с USRP1, USRP2 также содержит более быструю FPGA (ПЛИС) и гигабитный этернет-порт вместо USB-соединения.


USRP2 содержит внутренний генератор частоты 64 MHz (кристаллический clock-осциллятор), в то время как большинство GSM-телефонов имеют символьный clock-генератор со значительно большей степенью точности. Разумеется, 64 MHz сэмплы могут быть пересэмплированы (как перемноженные или составные от) 13 MHz, однако это внесёт дополнительные вычислительные затраты. При этом USRP-осцилляторы значительно менее аккуратны и могут показывать значительный дрейф по отношению к системным часам GSM, что приводит к плохим результатам приёма. Использование более точных внешних часов позволяет получить импульсы (составные) 13 MHz, которые решают эту проблему.


GNU Radio [12] — это свободная программная утилита под GPL-лицензией для создания программного радио. Она была начата Эриком Блоссом. Она работает для множества различных типов радиоаппаратуры, включая звуковые карты, но в большей степени используется в комбинации с USRP. В основном GNU Radio — это библиотека, содержащая множество стандартных функций обработки сигналов, таких как фильтры и (де)модуляторы.


GNU Radio по умолчанию не содержит специальных средств прослушивания GSM. Однако GNU Radio может быть использовано совместно с другими программными пакетами, такими как AirProbe для выполнения низкоуровневых функций прослушивания GSM, таких как приём и демодуляция. AirProbe [13] — это проект с открытым исходным кодом, пытающийся создать средства интерфейса для GSM (и в будущем возможно 3G) стандартов мобильной связи. Одна из частей проекта работает с приёмом GSM-сигналов (с использованием функций GNU-радио), в то время как другая часть может быть также использована для интерпретации GSM-сигналов, всвязи с чем мы вернёмся к AirProbe в разделе 4.3. В данный момент AirProbe способен прослушивать только обратный линк (сотовая вышка → мобильный телефон) разговора, поэтому всё ещё требуется некоторая дальнейшая разработка.


Основная проблема при приёме состоит в перескоке канала, используемого в большинстве GSM-сетей. Использование программы AIrProbe с опциями по умолчанию позволяет принимать единственную несущую канала обратной связи (сообщения от сотовой вышки к мобильному телефону). В целях перехвата полного разговора при использовании перескока каналов нужен способ получения импульсов сигнала на всех использованных частотах. Есть два основных способа достижения этой цели:


I. Позволить USRP следовать за прыгающей частотой.
II. Перехватить все возможные частоты и пытаться следовать за последовательностью позднее.


Первое решение требует множественных вычислений внутри FPGA USRP. Все параметры для перескакивающей частоты должны быть получены от определённых импульсов данных, затем должна быть вычислена следующая частота перескока для каждого последующего импулься данных. Есть три возможные конфигурации мобильных сетей в отношении передачи параметров последовательности перескока частоты. В одном из них все параметры передаются в открытом виде. В двух других конфигурациях эти параметры передаются после включения шифрования. В наших экспериментах мы всегда наблюдали только сотовые вышки, которые использовали так называемое "раннее присваивание", в котором параметры перескока передавались зашифрованными. Кроме того, сеть всегда могла послать команду на новый перескок частоты под шифрованием, независимо от использованной конфигурации. Это требует очень быстрого взлома шифрования с целью получать значения частот перескока в реальном времени. Пока что это невозможно. USRP FPGA может только сэмплировать отдельные частоты с определённой пропускной способностью и посылать их в компьютер. То есть возможность иметь FPGA (ПЛИС), для дешифровки и интерпретации импульсов данных с целью следования последовательностям перескока частоты потребует множества работ по созданию такого решения. Остаётся под вопросом даже то, что значительно более быстрый FPGA USRP2 сможет дешифровывать сообщения и таким образом вычислять последовательности перескока в реальном времени. Такая задача может потребовать дополнительных FPGA, что увеличит стоимость. Также задержки в настройке аппаратуры USRP (время между коммандой "tune" и моментом, когда USRP получает используемые сэмплы с нужной частоты) выглядят большими на данный момент и должны быть снижены. Однако, при такой постановке задачи всё должно работать для любой сотовой вышке и вне зависимости от объёмов трафика.


Второе решение потребует захвата большого объёма данных, а именно записи всех каналов и определения частоты перескока позднее. Проблема здесь в уменьшении объёма данных, посылаемых от USRP к компьютеру. Прыгающая частота может осуществлять максимальный скачок между 64 несущими частотами. Все эти несущие имеют ширину 200 кГц и могут быть равномерно распределены по всему GSM-спектру. Так что в худшем случае атакующему придётся перехватывать весь GSM-диапазон (для GSM900 это 25 MГц для прямого и обратного линка). Проблема состоит в производительности PC по отношению к обработке данных. Каждый сэмпл USRP представлен двумя 16-битными числами. Для USRP1 с USB2.0 соединением это означает, что максимальный поток данных, который может быть отправлен компьютеру около 8 MГц (8 MГц x 2 x 16 = 256 Мбит/с). В USRP2 соединение GBE может пропускать 100 Mбайт данных (25 МГц х 2 х 16 = 800 Мбит/с) и даже 200 Мбайт/c, для прямой и обратной связи, что слишком много для большинства PC.


Разумеется возможны некоторые оптимизации. Одиночная сотовая вышка никогда не обслуживает весь диапазон GSM-частот. Это значит, что можно сразу отбросить все частоты за пределами верхней и нижней для данной конкретной сотовой вышки. Однако, такое решение не работает для большинства ситуаций, так как максимальное число несущих (64) для одиночной сотовой вышки всё ещё слишком велико для USRP. Также, поскольку USRP может принимать только непрерывный диапазон частот, то верхняя и нижняя частоты слишком далеки друг от друга и эта методика не работает.


Другая оптимизация могла бы быть основана на том, чтобы FPGA отбрасывала все каналы, на которых нет трафика. Конечно, это эффективно только если активно небольшое число телефонов и по ним идут звонки в один период времени. Будет даже лучше, если FPGA интерпретирует импульсы данных так, чтобы отбрасывать те, которые не являются частью разговора, перехватываемого атакующим. Оптимизация позволяет рассматривать эту проблему как вариант первого решения, поскольку это требует массы вычислений в FPGA, хотя и меньше, поскольку во втором решении от FPGA не требуется взламывать A5/1.


Однако, представленные выше возражения не представляют проблемы, если атакуемая сотовая вышка не осуществляет перескока каналов или ведёт передачу только на небольшом числе частот и в узком участке спектра. На таких сотовых вышках прослушивание с помощью USRP выглядит действительно возможным. Неясно сколько на самом деле, если таковые вообще есть, сотовых вышек работают по такому принципу. Это делает сложным оценку риска в текущей ситуации. В ходе этого исследования было изучено только небольшое число вышек и ни одна из них не удовлетворяла условиям, которые бы позволяли проводить прослушивание с использованием USRP.


В настоящий момент второе решение рассматривается как наиболее корректное большинством сообщества AirProbe. По крайней мере, на выходе ожидается больше шансов на успех (хотя бы для части сотовых вышек), хотя программирование FPGA и не означает простой задачи. Такое решение вероятно не будет работать во всех ситуациях, создавая проблемы с пропускной способностью данных на PC, но некоторые работающие системы для некоторых сотовых вышек уже достаточны для того, чтобы сообщество AirProbe продемонстрировало возможность прослушивания GSM.


Назад | Оглавление | Дальше