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

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.

4.2 Дешифровка с помощью Kraken


Проект, публично анонсированный в августе 2009 года предоставил способ эффективного взлома шифра A5/1. Имя проекта без особой фантазии тоже было A5/1 [14]. Однако, в июле 2010 года поисковые таблицы для этого проекта были реализованы под именем Kraken. Чтобы избежать любой путаницы с самим шифром, мы будем называть проект A5/1 именем Kraken.


Проект Kraken главным образом состоит в создании больших таблиц в рамках обмена времени на память. Это было предложено ранее [15], но отличительный фактор этого нового проекта в том, чтобы вместо просчёта таблиц в одном месте, кто-угодно в интернете может присоединиться к расчётам и делиться ими с помощью битторрента [16]. Код вычисления этих таблиц может быть загружен и запущен на разных типах графических карт NVIDIA и ATI.


Идея, лежащая в основе этих таблиц, состоит в следующем. Содержимое множества импульсов передачи данных, которые передаются в эфире при включенном шифровании может быть в большей части угадано. Это даёт образцы известного открытого текста. XOR этих образцов открытого текста с текущими полученными шифртекстами даёт образцы гаммы шифрования. Теперь таблицы выступают в роли кодовой книги с 64 битами гаммы, которые связаны с внутренними состояниями A5/1, дающими соответствующие фрагменты гаммы.


Существуют 264 возможных внутренних состояния для A5/1. Это число слишком велико для того, чтобы получить отображение всех внутренних состояний. Вместо того, чтобы просто сохранять все внутренние состояния и соответствующие им 64-битные фрагменты гаммы, выполняется просчёт больших цепочек, в которых каждые 64 бита выхода снова используются как внутреннее состояние. Сохраняются только начальные и конечные точки этих цепочек. Теперь, как только восстановлен фрагмент гаммы, атакующий начинает считать цепочку из этой гаммы и для каждого проверенного звена он проверяет, нет ли полученного значения в таблице. Как только атакующий найдёт совпадение, то он может восстановить внутреннее состояние оригинальной цепочки из сохранённого значения начальной точки — из исходного состояния ключа сессии, который был использован для вычисления текущей коммуникации. Это уменьшает размер таблиц, но время атаки возрастает и таблицы больше не гарантируют, что внутреннее состояние может быть найдено. Но значительно большая проблема состоит в перекрывании цепочек. Множество различных внутренних состояний может дать при вычислении те же самые 64 бита гаммы, что приводит к перекрыванию цепочек и покрывает одинаковую часть ключевого пространства. Это делает таблицы значительно менее эффективными. Для контрмер против некоторых из этих проблем используется комбинация двух техник — одной, увеличивающей время атаки и одной, снижающей число перекрывающихся цепочек. Эти техники состоят соответственно в различающихся точках и радужных таблицах. Комбинирование этих техник было предложено до [17,18].


С учётом слияния цепочек нужно произвести определённое число различных таблиц. Эти таблицы также должны покрывать определённый объём ключевого пространства. Незадолго до написания данной статьи был реализован набор таблиц, названный "Берлинским набором", совместно с утилитой поиска Kraken. Таблицы были распространены через битторент в специальном транспортном формате. Они составили на этот момент 1,5 Тбайта данных. Транспортный формат может быть перекодирован в актуальный формат чтения, занимающий всего 1,7 Тбайт дискового пространства. На тот момент таблицы покрывали 22% ключевого пространства. Если ключ содержится в таблице, то Kraken обычно находит его за несколько минут (в среднем от 1 до 4 минут) на машине с процессором Intel Core2 Quad 2.33 GHz с таблицами, разделёнными на несколько дисков. Использование твёрдотельных накопителей вместо обычных жёстких дисков значительно увеличивает скорость поиска, но повышает затраты.


Значительным недостатком этого решения является требование безошибочного приёма последовательности 64 бит. Единственная невыявляемая ошибка в приёме сделает невозможным получение сессионного ключа из этих таблиц. В GSM шифрование выполняется поверх кодов коррекции ошибок, поэтому коррекция ошибок не может быть применена для поиска ошибок приёма до шага дешифровки. В настоящее время приём с USRP при запущенном AirProbe не обеспечивает безошибочного приёма, необходимого для Kraken.

4.3 Интерпретация с использованием OpenBTS, OpenBSC или AirProbe


После шагов демодуляции и дешифрования импульсов данных, необходимо их интерпретировать. Существует несколько проектов с открытым исходным кодом, которые выполняют по крайней мере часть GSM-стэка. Это проекты OpenBTS [19], OpenBSC [20] и AirProbe [13].


OpenBTS и OpenBSC — это проекты, пытающиеся выполнить функцию GSM-сети с открытыми исходниками. С другой стороны проект AirProbe стремится создать функциональный снифер для GSM-трафика. Так что выбор AirProbe в целях прослушивания выглядит наиболее логичным шагом. Однако, проект AirProbe всё ещё не имеет важной функциональности. Во-первых, решение, какой тип импульса данных должен быть принят, определяется в большей степени основываясь на разделении канала передачи данных, чем на решении, основанном на самом импульсе. Это значит, что результат будет хуже, если сотовая вышка использует нестандартное разделение каналов передачи данных. Также на текущий момент сниффер AirProbe может интерпретировать только некоторые типы импульсов передачи данных. На этот момент требуется масса улилий по разработке AirProbe, необходимых для приёма и интерпретации всех GSM импульсов.


Хотя это наиболее практические вопросы, они относятся к тем, которые будут решены со временем.


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


 
Ваша оценка документа [показать результаты]
-3-2-1 0+1+2+3